diff --git a/Clover/app/src/main/java/org/floens/chan/chan/ChanUrls.java b/Clover/app/src/main/java/org/floens/chan/chan/ChanUrls.java
deleted file mode 100644
index e7379e71..00000000
--- a/Clover/app/src/main/java/org/floens/chan/chan/ChanUrls.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Clover - 4chan browser https://github.com/Floens/Clover/
- * Copyright (C) 2014 Floens
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-package org.floens.chan.chan;
-
-import org.floens.chan.core.settings.ChanSettings;
-
-@Deprecated
-public class ChanUrls {
- @Deprecated
- public static String getCaptchaSiteKey() {
- return "6Ldp2bsSAAAAAAJ5uyx_lx34lJeEpTLVkP5k04qc";
- }
-
- @Deprecated
- public static String getBoardUrlDesktop(String board) {
- return scheme() + "://boards.4chan.org/" + board + "/";
- }
-
- @Deprecated
- public static String getThreadUrlDesktop(String board, int no) {
- return scheme() + "://boards.4chan.org/" + board + "/thread/" + no;
- }
-
- @Deprecated
- public static String getThreadUrlDesktop(String board, int no, int postNo) {
- return scheme() + "://boards.4chan.org/" + board + "/thread/" + no + "#p" + postNo;
- }
-
- @Deprecated
- public static String getCatalogUrlDesktop(String board) {
- return scheme() + "://boards.4chan.org/" + board + "/catalog";
- }
-
- @Deprecated
- private static String scheme() {
- return ChanSettings.networkHttps.get() ? "https" : "http";
- }
-}
diff --git a/Clover/app/src/main/java/org/floens/chan/core/di/AppModule.java b/Clover/app/src/main/java/org/floens/chan/core/di/AppModule.java
index 7d77283b..5ecc180b 100644
--- a/Clover/app/src/main/java/org/floens/chan/core/di/AppModule.java
+++ b/Clover/app/src/main/java/org/floens/chan/core/di/AppModule.java
@@ -6,7 +6,7 @@ import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import org.floens.chan.ChanApplication;
-import org.floens.chan.chan.ChanLoader;
+import org.floens.chan.core.site.loader.ChanLoader;
import org.floens.chan.core.cache.FileCache;
import org.floens.chan.core.database.DatabaseManager;
import org.floens.chan.core.database.LoadableProvider;
diff --git a/Clover/app/src/main/java/org/floens/chan/core/manager/WatchManager.java b/Clover/app/src/main/java/org/floens/chan/core/manager/WatchManager.java
index e362516e..31675916 100644
--- a/Clover/app/src/main/java/org/floens/chan/core/manager/WatchManager.java
+++ b/Clover/app/src/main/java/org/floens/chan/core/manager/WatchManager.java
@@ -27,7 +27,7 @@ import android.os.Message;
import android.os.PowerManager;
import org.floens.chan.Chan;
-import org.floens.chan.chan.ChanLoader;
+import org.floens.chan.core.site.loader.ChanLoader;
import org.floens.chan.core.database.DatabaseManager;
import org.floens.chan.core.database.DatabasePinManager;
import org.floens.chan.core.exception.ChanLoaderException;
diff --git a/Clover/app/src/main/java/org/floens/chan/core/pool/ChanLoaderFactory.java b/Clover/app/src/main/java/org/floens/chan/core/pool/ChanLoaderFactory.java
index 0555e56b..5d0e6a6e 100644
--- a/Clover/app/src/main/java/org/floens/chan/core/pool/ChanLoaderFactory.java
+++ b/Clover/app/src/main/java/org/floens/chan/core/pool/ChanLoaderFactory.java
@@ -19,7 +19,7 @@ package org.floens.chan.core.pool;
import android.util.LruCache;
-import org.floens.chan.chan.ChanLoader;
+import org.floens.chan.core.site.loader.ChanLoader;
import org.floens.chan.core.model.orm.Loadable;
import java.util.HashMap;
@@ -30,7 +30,7 @@ import javax.inject.Singleton;
/**
* ChanLoaderFactory is a factory for ChanLoaders. ChanLoaders for threads are cached.
- *
Each reference to a loader is a {@link org.floens.chan.chan.ChanLoader.ChanLoaderCallback}, these
+ *
Each reference to a loader is a {@link ChanLoader.ChanLoaderCallback}, these
* references can be obtained with {@link #obtain(Loadable, ChanLoader.ChanLoaderCallback)}} and released
* with {@link #release(ChanLoader, ChanLoader.ChanLoaderCallback)}.
*/
diff --git a/Clover/app/src/main/java/org/floens/chan/core/presenter/ThreadPresenter.java b/Clover/app/src/main/java/org/floens/chan/core/presenter/ThreadPresenter.java
index fef4f3aa..f6bfabf1 100644
--- a/Clover/app/src/main/java/org/floens/chan/core/presenter/ThreadPresenter.java
+++ b/Clover/app/src/main/java/org/floens/chan/core/presenter/ThreadPresenter.java
@@ -21,8 +21,7 @@ import android.text.TextUtils;
import org.floens.chan.Chan;
import org.floens.chan.R;
-import org.floens.chan.chan.ChanLoader;
-import org.floens.chan.chan.ChanUrls;
+import org.floens.chan.core.site.loader.ChanLoader;
import org.floens.chan.core.database.DatabaseManager;
import org.floens.chan.core.exception.ChanLoaderException;
import org.floens.chan.core.manager.WatchManager;
@@ -513,20 +512,16 @@ public class ThreadPresenter implements ChanLoader.ChanLoaderCallback, PostAdapt
Loadable pinLoadable = databaseManager.getDatabaseLoadableManager().get(Loadable.forThread(loadable.site, post.board, post.no));
watchManager.createPin(pinLoadable, post);
break;
- case POST_OPTION_OPEN_BROWSER:
- AndroidUtils.openLink(
- post.isOP ?
- ChanUrls.getThreadUrlDesktop(post.boardId, post.no) :
- ChanUrls.getThreadUrlDesktop(post.boardId, loadable.no, post.no)
- );
+ case POST_OPTION_OPEN_BROWSER: {
+ String url = loadable.site.desktopUrl(loadable, post.isOP ? null : post);
+ AndroidUtils.openLink(url);
break;
- case POST_OPTION_SHARE:
- AndroidUtils.shareLink(
- post.isOP ?
- ChanUrls.getThreadUrlDesktop(post.boardId, post.no) :
- ChanUrls.getThreadUrlDesktop(post.boardId, loadable.no, post.no)
- );
+ }
+ case POST_OPTION_SHARE: {
+ String url = loadable.site.desktopUrl(loadable, post.isOP ? null : post);
+ AndroidUtils.shareLink(url);
break;
+ }
case POST_OPTION_HIDE:
threadPresenterCallback.hideThread(post);
}
diff --git a/Clover/app/src/main/java/org/floens/chan/chan/ImageSearch.java b/Clover/app/src/main/java/org/floens/chan/core/site/ImageSearch.java
similarity index 98%
rename from Clover/app/src/main/java/org/floens/chan/chan/ImageSearch.java
rename to Clover/app/src/main/java/org/floens/chan/core/site/ImageSearch.java
index 315857cf..f79686d0 100644
--- a/Clover/app/src/main/java/org/floens/chan/chan/ImageSearch.java
+++ b/Clover/app/src/main/java/org/floens/chan/core/site/ImageSearch.java
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.floens.chan.chan;
+package org.floens.chan.core.site;
import java.util.ArrayList;
import java.util.List;
diff --git a/Clover/app/src/main/java/org/floens/chan/core/site/Sites.java b/Clover/app/src/main/java/org/floens/chan/core/site/Sites.java
index 673d6b9c..87b2a67e 100644
--- a/Clover/app/src/main/java/org/floens/chan/core/site/Sites.java
+++ b/Clover/app/src/main/java/org/floens/chan/core/site/Sites.java
@@ -40,9 +40,6 @@ public class Sites {
return ALL_SITES;
}
- @Deprecated
- private static Site defaultSite;
-
public static Site forId(int id) {
// TODO: better datastructure
for (Site site : ALL_SITES) {
@@ -54,13 +51,7 @@ public class Sites {
return null;
}
- @Deprecated
- public static Site defaultSite() {
- return defaultSite;
- }
-
static void initialize(List sites) {
- Sites.defaultSite = sites.isEmpty() ? null : sites.get(0);
Sites.ALL_SITES = Collections.unmodifiableList(new ArrayList<>(sites));
}
}
diff --git a/Clover/app/src/main/java/org/floens/chan/core/site/common/ChanReaderRequest.java b/Clover/app/src/main/java/org/floens/chan/core/site/common/ChanReaderRequest.java
index 34fa06cf..9fe2582a 100644
--- a/Clover/app/src/main/java/org/floens/chan/core/site/common/ChanReaderRequest.java
+++ b/Clover/app/src/main/java/org/floens/chan/core/site/common/ChanReaderRequest.java
@@ -19,8 +19,8 @@ package org.floens.chan.core.site.common;
import android.util.JsonReader;
-import org.floens.chan.chan.ChanLoaderRequestParams;
-import org.floens.chan.chan.ChanLoaderResponse;
+import org.floens.chan.core.site.loader.ChanLoaderRequestParams;
+import org.floens.chan.core.site.loader.ChanLoaderResponse;
import org.floens.chan.core.database.DatabaseManager;
import org.floens.chan.core.database.DatabaseSavedReplyManager;
import org.floens.chan.core.manager.FilterEngine;
diff --git a/Clover/app/src/main/java/org/floens/chan/chan/ChanLoader.java b/Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanLoader.java
similarity index 99%
rename from Clover/app/src/main/java/org/floens/chan/chan/ChanLoader.java
rename to Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanLoader.java
index 2e58000f..0b8ea957 100644
--- a/Clover/app/src/main/java/org/floens/chan/chan/ChanLoader.java
+++ b/Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanLoader.java
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.floens.chan.chan;
+package org.floens.chan.core.site.loader;
import android.text.TextUtils;
diff --git a/Clover/app/src/main/java/org/floens/chan/chan/ChanLoaderRequest.java b/Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanLoaderRequest.java
similarity index 96%
rename from Clover/app/src/main/java/org/floens/chan/chan/ChanLoaderRequest.java
rename to Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanLoaderRequest.java
index 8df98937..951a1fcd 100644
--- a/Clover/app/src/main/java/org/floens/chan/chan/ChanLoaderRequest.java
+++ b/Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanLoaderRequest.java
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.floens.chan.chan;
+package org.floens.chan.core.site.loader;
import com.android.volley.Request;
diff --git a/Clover/app/src/main/java/org/floens/chan/chan/ChanLoaderRequestParams.java b/Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanLoaderRequestParams.java
similarity index 97%
rename from Clover/app/src/main/java/org/floens/chan/chan/ChanLoaderRequestParams.java
rename to Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanLoaderRequestParams.java
index 6a7b8b52..3bd1b86d 100644
--- a/Clover/app/src/main/java/org/floens/chan/chan/ChanLoaderRequestParams.java
+++ b/Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanLoaderRequestParams.java
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.floens.chan.chan;
+package org.floens.chan.core.site.loader;
import com.android.volley.Response;
diff --git a/Clover/app/src/main/java/org/floens/chan/chan/ChanLoaderResponse.java b/Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanLoaderResponse.java
similarity index 96%
rename from Clover/app/src/main/java/org/floens/chan/chan/ChanLoaderResponse.java
rename to Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanLoaderResponse.java
index d13a7f62..e45e6c68 100644
--- a/Clover/app/src/main/java/org/floens/chan/chan/ChanLoaderResponse.java
+++ b/Clover/app/src/main/java/org/floens/chan/core/site/loader/ChanLoaderResponse.java
@@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
-package org.floens.chan.chan;
+package org.floens.chan.core.site.loader;
import org.floens.chan.core.model.Post;
diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java
index 438aedf9..5f20d341 100644
--- a/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java
+++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/BrowseController.java
@@ -25,7 +25,6 @@ import android.view.animation.DecelerateInterpolator;
import android.widget.ImageView;
import org.floens.chan.R;
-import org.floens.chan.chan.ChanUrls;
import org.floens.chan.core.model.orm.Board;
import org.floens.chan.core.model.orm.Loadable;
import org.floens.chan.core.model.orm.Pin;
@@ -217,7 +216,8 @@ public class BrowseController extends ThreadController implements ToolbarMenuIte
private void handleShareAndOpenInBrowser(ThreadPresenter presenter, Integer id) {
if (presenter.isBound()) {
- String link = ChanUrls.getCatalogUrlDesktop(presenter.getLoadable().boardCode);
+ Loadable loadable = presenter.getLoadable();
+ String link = loadable.site.desktopUrl(loadable, null);
if (id == SHARE_ID) {
AndroidUtils.shareLink(link);
diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/ImageViewerController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/ImageViewerController.java
index a5a653d5..bf9753c1 100644
--- a/Clover/app/src/main/java/org/floens/chan/ui/controller/ImageViewerController.java
+++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/ImageViewerController.java
@@ -46,7 +46,7 @@ import com.android.volley.toolbox.ImageLoader;
import com.davemorrissey.labs.subscaleview.ImageViewState;
import org.floens.chan.R;
-import org.floens.chan.chan.ImageSearch;
+import org.floens.chan.core.site.ImageSearch;
import org.floens.chan.controller.Controller;
import org.floens.chan.core.model.PostImage;
import org.floens.chan.core.presenter.ImageViewerPresenter;
diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/ThemeSettingsController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/ThemeSettingsController.java
index 20e6ce41..c7f2aff9 100644
--- a/Clover/app/src/main/java/org/floens/chan/ui/controller/ThemeSettingsController.java
+++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/ThemeSettingsController.java
@@ -63,18 +63,28 @@ import org.floens.chan.utils.Time;
import java.util.ArrayList;
import java.util.List;
-import static org.floens.chan.Chan.getGraph;
import static org.floens.chan.utils.AndroidUtils.dp;
import static org.floens.chan.utils.AndroidUtils.getAttrColor;
import static org.floens.chan.utils.AndroidUtils.getString;
public class ThemeSettingsController extends Controller implements View.OnClickListener {
- private PostCell.PostCellCallback DUMMY_POST_CALLBACK = new PostCell.PostCellCallback() {
- private Loadable loadable = Loadable.forThread(Sites.defaultSite(), new Board(Sites.defaultSite(), "a", "a", false, false), 1234);
+ private Board dummyBoard;
+ {
+ dummyBoard = new Board();
+ dummyBoard.name = "name";
+ dummyBoard.code = "code";
+ }
+
+ private Loadable dummyLoadable;
+ {
+ dummyLoadable = Loadable.emptyLoadable();
+ dummyLoadable.mode = Loadable.Mode.THREAD;
+ }
+ private PostCell.PostCellCallback dummyPostCallback = new PostCell.PostCellCallback() {
@Override
public Loadable getLoadable() {
- return loadable;
+ return dummyLoadable;
}
@Override
@@ -247,7 +257,7 @@ public class ThemeSettingsController extends Controller implements View.OnClickL
Context themeContext = new ContextThemeWrapper(context, theme.resValue);
Post.Builder builder = new Post.Builder()
- .board(new Board(Sites.defaultSite(), "a", "a", false, false))
+ .board(dummyBoard)
.id(123456789)
.opId(1)
.setUnixTimestampSeconds((Time.get() - (30 * 60 * 1000)) / 1000)
@@ -325,7 +335,7 @@ public class ThemeSettingsController extends Controller implements View.OnClickL
themeContext.getResources().getDimensionPixelSize(R.dimen.toolbar_height)));
PostCell postCell = (PostCell) LayoutInflater.from(themeContext).inflate(R.layout.cell_post, null);
- postCell.setPost(theme, post, DUMMY_POST_CALLBACK, false, false, false, -1, true, ChanSettings.PostViewMode.LIST);
+ postCell.setPost(theme, post, dummyPostCallback, false, false, false, -1, true, ChanSettings.PostViewMode.LIST);
linearLayout.addView(postCell, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
return linearLayout;
diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/ThreadController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/ThreadController.java
index 36c94cca..0300147d 100644
--- a/Clover/app/src/main/java/org/floens/chan/ui/controller/ThreadController.java
+++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/ThreadController.java
@@ -28,14 +28,13 @@ import android.view.LayoutInflater;
import org.floens.chan.Chan;
import org.floens.chan.R;
-import org.floens.chan.chan.ChanUrls;
import org.floens.chan.controller.Controller;
import org.floens.chan.core.manager.FilterType;
+import org.floens.chan.core.model.Post;
+import org.floens.chan.core.model.PostImage;
import org.floens.chan.core.model.orm.Filter;
import org.floens.chan.core.model.orm.Loadable;
import org.floens.chan.core.model.orm.Pin;
-import org.floens.chan.core.model.Post;
-import org.floens.chan.core.model.PostImage;
import org.floens.chan.core.settings.ChanSettings;
import org.floens.chan.ui.helper.RefreshUIMessage;
import org.floens.chan.ui.layout.ThreadLayout;
@@ -141,11 +140,7 @@ public abstract class ThreadController extends Controller implements ThreadLayou
NdefMessage message = null;
if (loadable != null) {
- if (loadable.isThreadMode()) {
- url = ChanUrls.getThreadUrlDesktop(loadable.boardCode, loadable.no);
- } else if (loadable.isCatalogMode()) {
- url = ChanUrls.getCatalogUrlDesktop(loadable.boardCode);
- }
+ url = loadable.site.desktopUrl(loadable, null);
}
if (url != null) {
diff --git a/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java b/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java
index 8b0c0d3b..d01a0beb 100644
--- a/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java
+++ b/Clover/app/src/main/java/org/floens/chan/ui/controller/ViewThreadController.java
@@ -23,7 +23,6 @@ import android.content.DialogInterface;
import android.support.v7.app.AlertDialog;
import org.floens.chan.R;
-import org.floens.chan.chan.ChanUrls;
import org.floens.chan.controller.Controller;
import org.floens.chan.controller.NavigationController;
import org.floens.chan.core.manager.WatchManager;
@@ -204,7 +203,7 @@ public class ViewThreadController extends ThreadController implements ThreadLayo
case SHARE_ID:
case OPEN_BROWSER_ID:
Loadable loadable = threadLayout.getPresenter().getLoadable();
- String link = ChanUrls.getThreadUrlDesktop(loadable.boardCode, loadable.no);
+ String link = loadable.site.desktopUrl(loadable, null);
if (id == SHARE_ID) {
AndroidUtils.shareLink(link);
diff --git a/Clover/app/src/main/res/values/strings.xml b/Clover/app/src/main/res/values/strings.xml
index 75b99d6d..3d88b63e 100644
--- a/Clover/app/src/main/res/values/strings.xml
+++ b/Clover/app/src/main/res/values/strings.xml
@@ -367,7 +367,7 @@ Re-enable this permission in the app settings if you permanently disabled it."
Browsing
Theme
- Swipe to change the theme.\nTap the toolbar to change its color.\n
+ Swipe to change the theme.\nTap the toolbar menu to change its color.\n
Click here to change the FAB color
Layout mode
Auto