Support jump to last page

Resolve #466
This commit is contained in:
FooIbar authored and tarsin committed 2022-12-20 21:03:43 +08:00
1 parent 323d258bc2
commit 145b7049a8
5 files changed
+91 -47

No files matched your search

@@ -582,17 +582,16 @@ public class FavoritesScene extends SearchBarScene implements
if (!mRecyclerView.isInCustomChoice()) {
switch (position) {
case 0: // Open right
openDrawer(Gravity.RIGHT);
break;
case 1: // Go to
if (mHelper.canGoTo()) {
showGoToDialog();
}
break;
case 2: // Refresh
mHelper.refresh();
break;
// Open right
case 0 -> openDrawer(Gravity.RIGHT);
// Go to
case 1 -> {
if (mHelper.canGoTo()) showGoToDialog();
}
// Refresh
case 2 -> mHelper.refresh();
// Last page
case 3 -> mHelper.goToPage(Integer.MAX_VALUE - 1);
}
view.setExpanded(false);
return;
@@ -1141,7 +1140,10 @@ public class FavoritesScene extends SearchBarScene implements
SimpleHandler.getInstance().post(() -> onGetFavoritesLocal(keyword, taskId));
} else {
String prev = null, next = null;
if (jumpTo != null) {
if (page == Integer.MAX_VALUE - 1) {
prev = "1-0";
jumpTo = null;
} else if (jumpTo != null) {
next = Integer.toString(minGid);
operation = 0;
} else if (page != 0 && mHelper != null) {
@@ -150,7 +150,7 @@ public final class GalleryListScene extends SearchBarScene
private EasyRecyclerView mRecyclerView;
@Nullable
private SearchLayout mSearchLayout;
ActivityResultLauncher<PickVisualMediaRequest> selectImageLauncher = registerForActivityResult(
final ActivityResultLauncher<PickVisualMediaRequest> selectImageLauncher = registerForActivityResult(
new ActivityResultContracts.PickVisualMedia(),
result -> mSearchLayout.setImageUri(result));
@Nullable
@@ -474,23 +474,27 @@ public final class GalleryListScene extends SearchBarScene
String keyword = builder.getKeyword();
int category = builder.getCategory();
boolean isTopList = builder.getMode() == ListUrlBuilder.MODE_TOPLIST;
var mode = builder.getMode();
boolean isPopular = mode == ListUrlBuilder.MODE_WHATS_HOT;
boolean isTopList = mode == ListUrlBuilder.MODE_TOPLIST;
if (isTopList != mIsTopList) {
mIsTopList = isTopList;
recreateDrawerView();
mFabLayout.getSecondaryFabAt(0).setImageResource(isTopList ? R.drawable.ic_baseline_format_list_numbered_24 : R.drawable.v_magnify_x24);
}
mFabLayout.setSecondaryFabVisibilityAt(1, ListUrlBuilder.MODE_WHATS_HOT != builder.getMode());
// Update fab visibility
mFabLayout.setSecondaryFabVisibilityAt(1, !isPopular);
mFabLayout.setSecondaryFabVisibilityAt(3, !isTopList && !isPopular);
// Update normal search mode
mSearchLayout.setNormalSearchMode(builder.getMode() == ListUrlBuilder.MODE_SUBSCRIPTION
mSearchLayout.setNormalSearchMode(mode == ListUrlBuilder.MODE_SUBSCRIPTION
? R.id.search_subscription_search
: R.id.search_normal_search);
// Update search edit text
if (!TextUtils.isEmpty(keyword) && !mIsTopList) {
if (builder.getMode() == ListUrlBuilder.MODE_TAG) {
if (mode == ListUrlBuilder.MODE_TAG) {
keyword = wrapTagKeyword(keyword);
}
setSearchBarText(keyword);
@@ -505,19 +509,16 @@ public final class GalleryListScene extends SearchBarScene
// Update nav checked item
int checkedItemId;
if (ListUrlBuilder.MODE_NORMAL == builder.getMode() &&
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 if (ListUrlBuilder.MODE_TOPLIST == builder.getMode()) {
checkedItemId = R.id.nav_toplist;
} else {
checkedItemId = 0;
}
checkedItemId = switch (mode) {
case ListUrlBuilder.MODE_NORMAL ->
EhUtils.NONE == category && TextUtils.isEmpty(keyword) ? R.id.nav_homepage : 0;
case ListUrlBuilder.MODE_SUBSCRIPTION -> R.id.nav_subscription;
case ListUrlBuilder.MODE_WHATS_HOT -> R.id.nav_whats_hot;
case ListUrlBuilder.MODE_TOPLIST -> R.id.nav_toplist;
case ListUrlBuilder.MODE_TAG, ListUrlBuilder.MODE_UPLOADER, ListUrlBuilder.MODE_IMAGE_SEARCH ->
0;
default -> throw new IllegalStateException("Unexpected value: " + mode);
};
setNavCheckedItem(checkedItemId);
mNavCheckedId = checkedItemId;
}
@@ -797,14 +798,14 @@ public final class GalleryListScene extends SearchBarScene
}
}
public boolean onItemClick(int position) {
public void onItemClick(int position) {
if (null == mHelper || null == mRecyclerView) {
return false;
return;
}
GalleryInfo gi = mHelper.getDataAtEx(position);
if (gi == null) {
return true;
return;
}
Bundle args = new Bundle();
@@ -812,7 +813,6 @@ public final class GalleryListScene extends SearchBarScene
args.putParcelable(GalleryDetailScene.KEY_GALLERY_INFO, gi);
Announcer announcer = new Announcer(GalleryDetailScene.class).setArgs(args);
startScene(announcer);
return true;
}
@Override
@@ -890,17 +890,16 @@ public final class GalleryListScene extends SearchBarScene
}
switch (position) {
case 0: // Open right
openDrawer(Gravity.RIGHT);
break;
case 1: // Go to
if (mHelper.canGoTo()) {
showGoToDialog();
}
break;
case 2: // Refresh
mHelper.refresh();
break;
// Open right
case 0 -> openDrawer(Gravity.RIGHT);
// Go to
case 1 -> {
if (mHelper.canGoTo()) showGoToDialog();
}
// Refresh
case 2 -> mHelper.refresh();
// Last page
case 3 -> mHelper.goToPage(Integer.MAX_VALUE - 1);
}
view.setExpanded(false);
@@ -1607,6 +1606,9 @@ public final class GalleryListScene extends SearchBarScene
} else {
nextGid = page;
}
} else if (page == Integer.MAX_VALUE - 1) {
prevGid = 1;
jumpTo = null;
} else if (jumpTo != null) {
nextGid = minGid;
} else if (page != 0) {