From d463cf2295a681fe0feaa1dd87493a744579f482 Mon Sep 17 00:00:00 2001 From: seven332 Date: Thu, 21 Mar 2019 14:33:28 +0800 Subject: [PATCH] Close #559, add subscription --- .../java/com/hippo/ehviewer/client/EhUrl.java | 14 +++++++++ .../ehviewer/client/data/ListUrlBuilder.java | 15 ++++++++-- .../com/hippo/ehviewer/ui/MainActivity.java | 5 ++++ .../ehviewer/ui/scene/GalleryListScene.java | 9 ++++++ .../drawable/v_eh_subscription_black_x24.xml | 29 +++++++++++++++++++ app/src/main/res/menu/nav_drawer_main.xml | 5 ++++ app/src/main/res/values-zh-rCN/strings.xml | 1 + app/src/main/res/values-zh-rHK/strings.xml | 1 + app/src/main/res/values-zh-rTW/strings.xml | 1 + app/src/main/res/values/pathdata.xml | 1 + app/src/main/res/values/strings.xml | 1 + 11 files changed, 79 insertions(+), 3 deletions(-) create mode 100644 app/src/main/res/drawable/v_eh_subscription_black_x24.xml diff --git a/app/src/main/java/com/hippo/ehviewer/client/EhUrl.java b/app/src/main/java/com/hippo/ehviewer/client/EhUrl.java index f258e6ff5..c655b1388 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/EhUrl.java +++ b/app/src/main/java/com/hippo/ehviewer/client/EhUrl.java @@ -64,6 +64,9 @@ public class EhUrl { public static final String MY_TAGS_E = HOST_E + "mytags"; public static final String MY_TAGS_EX = HOST_EX + "mytags"; + public static final String WATCHED_E = HOST_E + "watched"; + public static final String WATCHED_EX = HOST_EX + "watched"; + private static final String URL_PREFIX_THUMB_E = "https://ul.ehgt.org/"; private static final String URL_PREFIX_THUMB_EX = "https://exhentai.org/t/"; @@ -190,6 +193,17 @@ public class EhUrl { } } + @NonNull + public static String getWatchedUrl() { + switch (Settings.getGallerySite()) { + default: + case SITE_E: + return WATCHED_E; + case SITE_EX: + return WATCHED_EX; + } + } + public static String getThumbUrlPrefix() { switch (Settings.getGallerySite()) { default: diff --git a/app/src/main/java/com/hippo/ehviewer/client/data/ListUrlBuilder.java b/app/src/main/java/com/hippo/ehviewer/client/data/ListUrlBuilder.java index 7b56d0c46..acc5d98af 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/data/ListUrlBuilder.java +++ b/app/src/main/java/com/hippo/ehviewer/client/data/ListUrlBuilder.java @@ -37,7 +37,7 @@ import java.net.URLEncoder; public class ListUrlBuilder implements Cloneable, Parcelable { - @IntDef({MODE_NORMAL, MODE_UPLOADER, MODE_TAG, MODE_WHATS_HOT, MODE_IMAGE_SEARCH}) + @IntDef({MODE_NORMAL, MODE_UPLOADER, MODE_TAG, MODE_WHATS_HOT, MODE_IMAGE_SEARCH, MODE_SUBSCRIPTION}) @Retention(RetentionPolicy.SOURCE) private @interface Mode {} @@ -47,6 +47,7 @@ public class ListUrlBuilder implements Cloneable, Parcelable { public static final int MODE_TAG = 0x2; public static final int MODE_WHATS_HOT = 0x3; public static final int MODE_IMAGE_SEARCH = 0x4; + public static final int MODE_SUBSCRIPTION = 0x5; public static final int DEFAULT_ADVANCE = AdvanceSearchTable.SNAME | AdvanceSearchTable.STAGS; public static final int DEFAULT_MIN_RATING = 2; @@ -442,8 +443,16 @@ public class ListUrlBuilder implements Cloneable, Parcelable { public String build() { switch (mMode) { default: - case MODE_NORMAL: { - UrlBuilder ub = new UrlBuilder(EhUrl.getHost()); + case MODE_NORMAL: + case MODE_SUBSCRIPTION: { + String url; + if (mMode == MODE_NORMAL) { + url = EhUrl.getHost(); + } else { + url = EhUrl.getWatchedUrl(); + } + + UrlBuilder ub = new UrlBuilder(url); if (mCategory != EhUtils.NONE) { ub.addQuery("f_cats", (~mCategory) & EhConfig.ALL_CATEGORY); } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java index ae1d3d5c9..c671b6e33 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java @@ -695,6 +695,11 @@ public final class MainActivity extends StageActivity args.putString(GalleryListScene.KEY_ACTION, GalleryListScene.ACTION_HOMEPAGE); startSceneFirstly(new Announcer(GalleryListScene.class) .setArgs(args)); + } else if (id == R.id.nav_subscription) { + Bundle args = new Bundle(); + args.putString(GalleryListScene.KEY_ACTION, GalleryListScene.ACTION_SUBSCRIPTION); + startSceneFirstly(new Announcer(GalleryListScene.class) + .setArgs(args)); } else if (id == R.id.nav_whats_hot) { Bundle args = new Bundle(); args.putString(GalleryListScene.KEY_ACTION, GalleryListScene.ACTION_WHATS_HOT); diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java index a80a52c55..0394435fc 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryListScene.java @@ -119,6 +119,7 @@ public final class GalleryListScene extends BaseScene public final static String KEY_ACTION = "action"; public final static String ACTION_HOMEPAGE = "action_homepage"; + public final static String ACTION_SUBSCRIPTION = "action_subscription"; public final static String ACTION_WHATS_HOT = "action_whats_hot"; public final static String ACTION_LIST_URL_BUILDER = "action_list_url_builder"; @@ -232,7 +233,11 @@ public final class GalleryListScene extends BaseScene String action = args.getString(KEY_ACTION); if (ACTION_HOMEPAGE.equals(action)) { mUrlBuilder.reset(); + } else if (ACTION_SUBSCRIPTION.equals(action)) { + mUrlBuilder.reset(); + mUrlBuilder.setMode(ListUrlBuilder.MODE_SUBSCRIPTION); } else if (ACTION_WHATS_HOT.equals(action)) { + mUrlBuilder.reset(); mUrlBuilder.setMode(ListUrlBuilder.MODE_WHATS_HOT); } else if (ACTION_LIST_URL_BUILDER.equals(action)) { ListUrlBuilder builder = args.getParcelable(KEY_LIST_URL_BUILDER); @@ -416,6 +421,8 @@ public final class GalleryListScene extends BaseScene EhUtils.NONE == category && TextUtils.isEmpty(keyword)) { return resources.getString(appName ? R.string.app_name : R.string.homepage); + } else if (ListUrlBuilder.MODE_SUBSCRIPTION == urlBuilder.getMode()) { + return resources.getString(R.string.subscription); } else if (ListUrlBuilder.MODE_WHATS_HOT == urlBuilder.getMode()) { return resources.getString(R.string.whats_hot); } else if (!TextUtils.isEmpty(keyword)) { @@ -459,6 +466,8 @@ public final class GalleryListScene extends BaseScene EhUtils.NONE == category && TextUtils.isEmpty(keyword)) { checkedItemId = R.id.nav_homepage; + } else if (ListUrlBuilder.MODE_SUBSCRIPTION == builder.getMode()) { + checkedItemId = R.id.nav_subscription; } else if (ListUrlBuilder.MODE_WHATS_HOT == builder.getMode()) { checkedItemId = R.id.nav_whats_hot; } else { diff --git a/app/src/main/res/drawable/v_eh_subscription_black_x24.xml b/app/src/main/res/drawable/v_eh_subscription_black_x24.xml new file mode 100644 index 000000000..020119277 --- /dev/null +++ b/app/src/main/res/drawable/v_eh_subscription_black_x24.xml @@ -0,0 +1,29 @@ + + + + + + + + diff --git a/app/src/main/res/menu/nav_drawer_main.xml b/app/src/main/res/menu/nav_drawer_main.xml index 36dfd94ac..fa3875518 100644 --- a/app/src/main/res/menu/nav_drawer_main.xml +++ b/app/src/main/res/menu/nav_drawer_main.xml @@ -23,6 +23,11 @@ android:title="@string/homepage" android:icon="@drawable/v_homepage_black_x24"/> + + 黑色主题 主页 + 订阅 热门 收藏 历史 diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index f3a5c33ac..881fcd37e 100755 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -25,6 +25,7 @@ 黑色主題 主頁 + 訂閲 熱門 收藏 歷史 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index f3c705284..c2ebcd4b7 100755 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -25,6 +25,7 @@ 黑色主題 首頁 + 訂閱 熱門 收藏 歷史 diff --git a/app/src/main/res/values/pathdata.xml b/app/src/main/res/values/pathdata.xml index ad1ffc187..e704bad03 100644 --- a/app/src/main/res/values/pathdata.xml +++ b/app/src/main/res/values/pathdata.xml @@ -63,6 +63,7 @@ M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z M3,15H21V13H3V15M3,19H21V17H3V19M3,11H21V9H3V11M3,5V7H21V5H3Z M13,9H18.5L13,3.5V9M6,2H14L20,8V20A2,2 0 0,1 18,22H6C4.89,22 4,21.1 4,20V4C4,2.89 4.89,2 6,2M6,20H15L18,20V12L14,16L12,14L6,20M8,9A2,2 0 0,0 6,11A2,2 0 0,0 8,13A2,2 0 0,0 10,11A2,2 0 0,0 8,9Z + M20,8H4V6h16V8 M18,2H6v2h12V2 M20,10H4c-1.1,0-2,0.9-2,2v8c0,1.1,0.9,2,2,2h16c1.1,0,2-0.9,2-2v-8C22,10.9,21.1,10,20,10zM11,14H7v1h4v2H7v1h4v2H5v-8h6V14z M19,20h-2v-3h-2v3h-2v-8h2v3h2v-3h2V20z M12.88,2H4V11L14.97,22.14L24,13.1L12.88,2ZM7.26,5.26C7.96,4.58,9.06,4.58,9.74,5.26C10.42,5.96,10.42,7.06,9.74,7.74S7.94,8.42,7.26,7.74S6.58,5.94,7.26,5.26ZM14.98,19.3L8.76,12.95L14.88,6.83L21.18,13.11L14.98,19.31ZM11.6,21.56L10.23,23L0,12.74V5H2V11.9L11.6,21.56Z M20.46,14.65C21.86,16.15,20.31,18.6,18.32,17.87C19.78,17.57,20.79,16.37,20.46,14.65ZM4.32,17.87C6.32,18.6,7.86,16.17,6.46,14.65C6.79,16.38,5.78,17.55,4.32,17.87ZM16.87,4.3C16.6,3.56,15.87,3,15,3C13.7,3,12.7,4.24,13.1,5.58C14.2,5.18,15.44,4.48,16.87,4.31ZM24,16C24,18.76,21.76,21,19,21C14.96,21,14.84,16.88,12,16.88S9.04,21,5,21C2.24,21,0,18.76,0,16C0,13.87,1.53,11.43,3.94,7.18C5.84,3.81,8.69,5.92,10.76,6.58C11.54,6.85,12.41,6.88,13.24,6.58C15.3,5.92,18.14,3.81,20.06,7.18C22.46,11.43,24,13.88,24,16ZM8,16C8,14.35,6.65,13,5,13S2,14.35,2,16S3.35,19,5,19S8,17.65,8,16ZM13,14C13,13.45,12.55,13,12,13S11,13.45,11,14S11.45,15,12,15S13,14.55,13,14ZM22,16C22,14.35,20.65,13,19,13S16,14.35,16,16S17.35,19,19,19S22,17.65,22,16ZM9,3C8.14,3,7.4,3.55,7.13,4.3C8.56,4.48,9.79,5.2,10.9,5.58C11.3,4.24,10.3,3,9,3Z diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index db777006d..28df16f25 100755 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -40,6 +40,7 @@ MISC Homepage + Subscription What\'s hot Favourite History