From 867bf43c68cc455a2e8311fd13f5f1a0c24b8e00 Mon Sep 17 00:00:00 2001 From: NekoInverter <42698724+NekoInverter@users.noreply.github.com> Date: Tue, 20 Oct 2020 17:02:59 +0800 Subject: [PATCH] Long click favourite to select slot --- .../hippo/ehviewer/ui/CommonOperations.java | 7 ++++++- .../ehviewer/ui/scene/GalleryDetailScene.java | 20 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/CommonOperations.java b/app/src/main/java/com/hippo/ehviewer/ui/CommonOperations.java index d092cbbd6..9a7c8659f 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/CommonOperations.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/CommonOperations.java @@ -62,12 +62,17 @@ public final class CommonOperations { public static void addToFavorites(final Activity activity, final GalleryInfo galleryInfo, final EhClient.Callback listener) { + addToFavorites(activity, galleryInfo, listener, false); + } + + public static void addToFavorites(final Activity activity, final GalleryInfo galleryInfo, + final EhClient.Callback listener, boolean select) { int slot = Settings.getDefaultFavSlot(); String[] items = new String[11]; items[0] = activity.getString(R.string.local_favorites); String[] favCat = Settings.getFavCat(); System.arraycopy(favCat, 0, items, 1, 10); - if (slot >= -1 && slot <= 9) { + if (!select && slot >= -1 && slot <= 9) { String newFavoriteName = slot >= 0 ? items[slot + 1] : null; doAddToFavorites(activity, galleryInfo, slot, new DelegateFavoriteCallback(listener, galleryInfo, newFavoriteName, slot)); } else { diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java index 2f5e06ff4..605cca08a 100755 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryDetailScene.java @@ -559,6 +559,7 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene mSearchCover = (TextView) ViewUtils.$$(mActions, R.id.search_cover); mNewerVersion.setOnClickListener(this); mHeartGroup.setOnClickListener(this); + mHeartGroup.setOnLongClickListener(this); mTorrent.setOnClickListener(this); mArchive.setOnClickListener(this); mShare.setOnClickListener(this); @@ -1443,6 +1444,25 @@ public class GalleryDetailScene extends BaseScene implements View.OnClickListene CommonOperations.startDownload(activity, galleryInfo, true); } return true; + } else if (mHeartGroup == v) { + if (mGalleryDetail != null && !mModifingFavorites) { + boolean remove = false; + if (EhDB.containLocalFavorites(mGalleryDetail.gid) || mGalleryDetail.isFavorited) { + mModifingFavorites = true; + CommonOperations.removeFromFavorites(activity, mGalleryDetail, + new ModifyFavoritesListener(activity, + activity.getStageId(), getTag(), true)); + remove = true; + } + if (!remove) { + mModifingFavorites = true; + CommonOperations.addToFavorites(activity, mGalleryDetail, + new ModifyFavoritesListener(activity, + activity.getStageId(), getTag(), false), true); + } + // Update UI + updateFavoriteDrawable(); + } } else { String tag = (String) v.getTag(R.id.tag); if (null != tag) {