From b317bc334ebd56594becd706858f9ce5109be9a0 Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Tue, 27 Dec 2022 15:13:44 +0800 Subject: [PATCH] Store GID in quick search name Resolve #447 --- .../ehviewer/ui/scene/GalleryListScene.java | 26 ++++++++++++------- .../java/com/hippo/widget/ContentLayout.java | 5 ++++ 2 files changed, 22 insertions(+), 9 deletions(-) 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 e1ffb15a3..71289c7b1 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 @@ -657,7 +657,7 @@ public final class GalleryListScene extends SearchBarScene final EasyRecyclerView recyclerView, final TextView tip) { Context context = getContext(); final ListUrlBuilder urlBuilder = mUrlBuilder; - if (null == context || null == urlBuilder) { + if (null == context || null == urlBuilder || null == mHelper) { return; } @@ -667,11 +667,17 @@ public final class GalleryListScene extends SearchBarScene return; } + var gi = mHelper.getFirstVisibleItem(); + var next = gi != null ? "@" + (gi.gid + 1) : null; + // Check duplicate for (QuickSearch q : mQuickSearchList) { if (urlBuilder.equalsQuickSearch(q)) { - showTip(getString(R.string.duplicate_quick_search, q.name), LENGTH_LONG); - return; + var i = q.name.lastIndexOf("@"); + if (i != -1 && q.name.substring(i).equals(next)) { + showTip(getString(R.string.duplicate_quick_search, q.name), LENGTH_LONG); + return; + } } } @@ -689,6 +695,10 @@ public final class GalleryListScene extends SearchBarScene return; } + if (next != null) { + text += next; + } + // Check name duplicate for (QuickSearch q : mQuickSearchList) { if (text.equals(q.name)) { @@ -1439,11 +1449,11 @@ public final class GalleryListScene extends SearchBarScene return; } - mUrlBuilder.set(mQuickSearchList.get(position)); - mUrlBuilder.setIndex(null, true); - mUrlBuilder.setJumpTo(null); + var q = mQuickSearchList.get(position); + mUrlBuilder.set(q); onUpdateUrlBuilder(); - mHelper.refresh(); + var i = q.name.lastIndexOf("@"); + mHelper.goTo(i != -1 ? q.name.substring(i + 1) : null, true); setState(STATE_NORMAL); closeDrawer(Gravity.RIGHT); }); @@ -1458,8 +1468,6 @@ public final class GalleryListScene extends SearchBarScene } mUrlBuilder.setKeyword(String.valueOf(keywords[position])); - mUrlBuilder.setIndex(null, true); - mUrlBuilder.setJumpTo(null); onUpdateUrlBuilder(); mHelper.refresh(); setState(STATE_NORMAL); diff --git a/app/src/main/java/com/hippo/widget/ContentLayout.java b/app/src/main/java/com/hippo/widget/ContentLayout.java index 48b198bab..573490b2b 100644 --- a/app/src/main/java/com/hippo/widget/ContentLayout.java +++ b/app/src/main/java/com/hippo/widget/ContentLayout.java @@ -358,6 +358,11 @@ public class ContentLayout extends FrameLayout { } } + @Nullable + public E getFirstVisibleItem() { + return getDataAtEx(LayoutManagerUtils.getFirstVisibleItemPosition(mRecyclerView.getLayoutManager())); + } + public int size() { return mData.size(); }