From 76d50b56ee75acb39b171a5a8780df5a547171a3 Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Thu, 22 Dec 2022 09:32:30 +0800 Subject: [PATCH] Show progress on goTo --- .../client/parser/GalleryListParser.java | 9 +++-- .../ehviewer/ui/scene/FavoritesScene.java | 23 ------------ .../widget/GalleryInfoContentHelper.kt | 10 +---- .../java/com/hippo/widget/ContentLayout.java | 37 +++++-------------- 4 files changed, 15 insertions(+), 64 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryListParser.java b/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryListParser.java index 033a1362e..548f2b62e 100644 --- a/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryListParser.java +++ b/app/src/main/java/com/hippo/ehviewer/client/parser/GalleryListParser.java @@ -50,8 +50,9 @@ public class GalleryListParser { private static final Pattern PATTERN_THUMB_SIZE = Pattern.compile("height:(\\d+)px;width:(\\d+)px"); private static final Pattern PATTERN_FAVORITE_SLOT = Pattern.compile("background-color:rgba\\((\\d+),(\\d+),(\\d+),"); private static final Pattern PATTERN_PAGES = Pattern.compile("(\\d+) page"); - private static final Pattern PATTERN_PREV_PAGE = Pattern.compile("prev=(\\d+(-\\d+)?)"); - private static final Pattern PATTERN_NEXT_PAGE = Pattern.compile("next=(\\d+(-\\d+)?)"); + private static final Pattern PATTERN_NEXT_PAGE = Pattern.compile("p=(\\d+)"); + private static final Pattern PATTERN_PREV = Pattern.compile("prev=(\\d+(-\\d+)?)"); + private static final Pattern PATTERN_NEXT = Pattern.compile("next=(\\d+(-\\d+)?)"); private static final String[][] FAVORITE_SLOT_RGB = new String[][]{ new String[]{"0", "0", "0"}, @@ -292,8 +293,8 @@ public class GalleryListParser { Element next = d.getElementById("unext"); assert prev != null; assert next != null; - Matcher matcherPrev = PATTERN_PREV_PAGE.matcher(prev.attr("href")); - Matcher matcherNext = PATTERN_NEXT_PAGE.matcher(next.attr("href")); + Matcher matcherPrev = PATTERN_PREV.matcher(prev.attr("href")); + Matcher matcherNext = PATTERN_NEXT.matcher(next.attr("href")); if (matcherPrev.find()) result.prev = matcherPrev.group(1); if (matcherNext.find()) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java index 856769ee3..984a8fdcf 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/FavoritesScene.java @@ -22,7 +22,6 @@ import android.content.Context; import android.content.DialogInterface; import android.content.res.Resources; import android.os.Bundle; -import android.os.Parcelable; import android.text.TextUtils; import android.util.SparseBooleanArray; import android.view.Gravity; @@ -1170,27 +1169,5 @@ public class FavoritesScene extends SearchBarScene implements showSearchBar(); } } - - @Override - protected void onClearData() { - super.onClearData(); - } - - @Override - protected void beforeRefresh() { - super.beforeRefresh(); - } - - @NonNull - @Override - protected Parcelable saveInstanceState(@NonNull Parcelable superState) { - return (Bundle) super.saveInstanceState(superState); - } - - @NonNull - @Override - protected Parcelable restoreInstanceState(@NonNull Parcelable state) { - return super.restoreInstanceState(state); - } } } diff --git a/app/src/main/java/com/hippo/ehviewer/widget/GalleryInfoContentHelper.kt b/app/src/main/java/com/hippo/ehviewer/widget/GalleryInfoContentHelper.kt index 8a1a610b8..77cf15669 100644 --- a/app/src/main/java/com/hippo/ehviewer/widget/GalleryInfoContentHelper.kt +++ b/app/src/main/java/com/hippo/ehviewer/widget/GalleryInfoContentHelper.kt @@ -50,10 +50,6 @@ abstract class GalleryInfoContentHelper : ContentHelper() { EhApplication.favouriteStatusRouter.removeListener(listener) } - override fun onAddData(data: GalleryInfo?) { - data?.let { map[data.gid] = data } - } - override fun onAddData(data: List) { for (info in data) { info?.let { @@ -62,10 +58,6 @@ abstract class GalleryInfoContentHelper : ContentHelper() { } } - override fun onRemoveData(data: GalleryInfo?) { - data?.let { map.remove(data.gid) } - } - override fun onRemoveData(data: List) { for (info in data) { info?.let { map.remove(info.gid) } @@ -103,7 +95,7 @@ abstract class GalleryInfoContentHelper : ContentHelper() { val formatter = DateTimeFormatter .ofPattern("yyyy-MM-dd", Locale.US).withZone(ZoneOffset.UTC) jumpTo = formatter.format(Instant.ofEpochMilli(time)) - doRefresh() + goTo(null, true) jumpTo = null } diff --git a/app/src/main/java/com/hippo/widget/ContentLayout.java b/app/src/main/java/com/hippo/widget/ContentLayout.java index a11558804..676662525 100644 --- a/app/src/main/java/com/hippo/widget/ContentLayout.java +++ b/app/src/main/java/com/hippo/widget/ContentLayout.java @@ -237,15 +237,11 @@ public class ContentLayout extends FrameLayout { private final SwipeRefreshLayout.OnRefreshListener mOnRefreshListener = new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { - if (mPrev != null) { - mCurrentTaskId = mIdGenerator.nextId(); - mCurrentTaskType = TYPE_PRE_PAGE_KEEP_POS; - getPageData(mCurrentTaskId, mCurrentTaskType, mCurrentTaskPage, mPrev, false); - } else if (mStartPage > 0) { + if (mPrev != null || mStartPage > 0) { mCurrentTaskId = mIdGenerator.nextId(); mCurrentTaskType = TYPE_PRE_PAGE_KEEP_POS; mCurrentTaskPage = mStartPage - 1; - getPageData(mCurrentTaskId, mCurrentTaskType, mCurrentTaskPage, null, true); + getPageData(mCurrentTaskId, mCurrentTaskType, mCurrentTaskPage, mPrev, false); } else { doRefresh(); } @@ -259,11 +255,7 @@ public class ContentLayout extends FrameLayout { if (!mRefreshLayout.isRefreshing() && !recyclerView.canScrollVertically(1)) { // Get next page mBottomProgress.show(); - if (mNext != null) { - mCurrentTaskId = mIdGenerator.nextId(); - mCurrentTaskType = TYPE_NEXT_PAGE_KEEP_POS; - getPageData(mCurrentTaskId, mCurrentTaskType, mCurrentTaskPage, mNext, true); - } else if (mEndPage < mPages) { + if (mNext != null || mEndPage < mPages) { // Get next page // Fill pages before NextPage with empty list while (mNextPage > mEndPage && mEndPage < mPages) { @@ -275,7 +267,7 @@ public class ContentLayout extends FrameLayout { mCurrentTaskId = mIdGenerator.nextId(); mCurrentTaskType = TYPE_NEXT_PAGE_KEEP_POS; mCurrentTaskPage = mEndPage; - getPageData(mCurrentTaskId, mCurrentTaskType, mCurrentTaskPage, null, true); + getPageData(mCurrentTaskId, mCurrentTaskType, mCurrentTaskPage, mNext, true); } else if (mEndPage == mPages) { // Refresh last page mCurrentTaskId = mIdGenerator.nextId(); @@ -397,15 +389,9 @@ public class ContentLayout extends FrameLayout { } } - protected void onAddData(E data) { - } - protected void onAddData(List data) { } - protected void onRemoveData(E data) { - } - protected void onRemoveData(List data) { } @@ -674,10 +660,6 @@ public class ContentLayout extends FrameLayout { mViewTransition.showView(0); } - protected void beforeRefresh() { - - } - private boolean isContentShowing() { return mViewTransition.getShownViewIndex() == 0; } @@ -699,8 +681,7 @@ public class ContentLayout extends FrameLayout { showText(mEmptyString); } - protected void doRefresh() { - beforeRefresh(); + private void doRefresh() { mCurrentTaskId = mIdGenerator.nextId(); mCurrentTaskType = TYPE_REFRESH; mCurrentTaskPage = 0; @@ -777,7 +758,7 @@ public class ContentLayout extends FrameLayout { LayoutManagerUtils.scrollToPositionWithOffset(mRecyclerView.getLayoutManager(), position, 0); onScrollToPosition(position); } else if (page == mStartPage - 1) { - mRefreshLayout.setRefreshing(false); + mRefreshLayout.setRefreshing(true); mBottomProgress.hide(); mCurrentTaskId = mIdGenerator.nextId(); @@ -786,14 +767,14 @@ public class ContentLayout extends FrameLayout { getPageData(mCurrentTaskId, mCurrentTaskType, mCurrentTaskPage, null, true); } else if (page == mEndPage) { mRefreshLayout.setRefreshing(false); - mBottomProgress.hide(); + mBottomProgress.show(); mCurrentTaskId = mIdGenerator.nextId(); mCurrentTaskType = TYPE_NEXT_PAGE; mCurrentTaskPage = page; getPageData(mCurrentTaskId, mCurrentTaskType, mCurrentTaskPage, null, true); } else { - mRefreshLayout.setRefreshing(false); + mRefreshLayout.setRefreshing(true); mBottomProgress.hide(); mCurrentTaskId = mIdGenerator.nextId(); @@ -804,7 +785,7 @@ public class ContentLayout extends FrameLayout { } public void goTo(String index, boolean isNext) { - mRefreshLayout.setRefreshing(false); + mRefreshLayout.setRefreshing(true); mBottomProgress.hide(); mCurrentTaskId = mIdGenerator.nextId(); mCurrentTaskType = TYPE_SOMEWHERE;