From d9959bbcb2b02011c3844557353a4ff8267e4dcf Mon Sep 17 00:00:00 2001 From: tarsin Date: Mon, 2 Jan 2023 10:47:41 +0800 Subject: [PATCH] Remove onBackPressed support on scene --- .../ui/scene/GalleryCommentsScene.java | 2 +- .../ehviewer/ui/scene/GalleryListScene.java | 5 --- .../hippo/ehviewer/ui/scene/SearchBarScene.kt | 2 -- .../java/com/hippo/scene/SceneFragment.java | 5 --- .../java/com/hippo/scene/StageActivity.java | 34 ++++++------------- 5 files changed, 11 insertions(+), 37 deletions(-) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java index 6fbfa8cc4..2c9da996b 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/GalleryCommentsScene.java @@ -268,7 +268,7 @@ public final class GalleryCommentsScene extends ToolbarScene @Override public void onNavigationClick() { - onBackPressed(); + requireActivity().getOnBackPressedDispatcher().onBackPressed(); } private void showFilterCommenterDialog(String commenter, int position) { 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 d61c29f0c..2ce14ae73 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 @@ -783,10 +783,6 @@ public final class GalleryListScene extends SearchBarScene return view; } - public boolean isBackpressCanPreviewLauncherStatus() { - return mState == STATE_NORMAL && getStackIndex() == 0; - } - public void onItemClick(int position) { if (null == mHelper || null == mRecyclerView) { return; @@ -1166,7 +1162,6 @@ public final class GalleryListScene extends SearchBarScene break; } } - ((StageActivity) requireActivity()).updateBackPressCallBackStatus(); } @Override diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/SearchBarScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/SearchBarScene.kt index bde37e434..cfed766d6 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/SearchBarScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/SearchBarScene.kt @@ -106,7 +106,6 @@ abstract class SearchBarScene : ToolbarScene() { GravityCompat.END ) } - (requireActivity() as StageActivity).updateBackPressCallBackStatus() updateSuggestions() } @@ -116,7 +115,6 @@ abstract class SearchBarScene : ToolbarScene() { privLockModeStart = null privLockModeEnd?.let { setDrawerLockMode(it, GravityCompat.END) } privLockModeEnd = null - (requireActivity() as StageActivity).updateBackPressCallBackStatus() } fun setSearchBarHint(hint: String?) { diff --git a/app/src/main/java/com/hippo/scene/SceneFragment.java b/app/src/main/java/com/hippo/scene/SceneFragment.java index ccf5e8da8..68e721e97 100644 --- a/app/src/main/java/com/hippo/scene/SceneFragment.java +++ b/app/src/main/java/com/hippo/scene/SceneFragment.java @@ -61,7 +61,6 @@ public class SceneFragment extends Fragment { FragmentActivity activity = getActivity(); if (activity instanceof StageActivity) { ((StageActivity) activity).startScene(announcer, horizontal); - ((StageActivity) activity).updateBackPressCallBackStatus(); } } @@ -98,10 +97,6 @@ public class SceneFragment extends Fragment { } } - public void onBackPressed() { - finish(); - } - public void onProvideAssistContent(AssistContent outContent) { } diff --git a/app/src/main/java/com/hippo/scene/StageActivity.java b/app/src/main/java/com/hippo/scene/StageActivity.java index a00042219..4154b95d2 100644 --- a/app/src/main/java/com/hippo/scene/StageActivity.java +++ b/app/src/main/java/com/hippo/scene/StageActivity.java @@ -31,7 +31,6 @@ import androidx.fragment.app.FragmentTransaction; import com.hippo.ehviewer.R; import com.hippo.ehviewer.ui.EhActivity; -import com.hippo.ehviewer.ui.scene.GalleryListScene; import com.hippo.yorozuya.AssertUtils; import com.hippo.yorozuya.IntIdGenerator; @@ -58,7 +57,7 @@ public abstract class StageActivity extends EhActivity { private final SceneViewComparator mSceneViewComparator = new SceneViewComparator(); private int mStageId = IntIdGenerator.INVALID_ID; - private OnBackPressedCallback callback; + private OnBackPressedCallback callback = new BackPressCallBack(); public static void registerLaunchMode(Class clazz, @SceneFragment.LaunchMode int launchMode) { if (launchMode != SceneFragment.LAUNCH_MODE_STANDARD && @@ -141,8 +140,6 @@ public abstract class StageActivity extends EhActivity { @Override protected final void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); - - callback = new BackPressCallBack(false); getOnBackPressedDispatcher().addCallback(callback); if (savedInstanceState != null) { mStageId = savedInstanceState.getInt(KEY_STAGE_ID, IntIdGenerator.INVALID_ID); @@ -252,10 +249,14 @@ public abstract class StageActivity extends EhActivity { public void startScene(Announcer announcer) { startScene(announcer, false); - updateBackPressCallBackStatus(); } public void startScene(Announcer announcer, boolean horizontal) { + startSceneInternal(announcer, horizontal); + updateBackPressCallBackStatus(); + } + + public void startSceneInternal(Announcer announcer, boolean horizontal) { Class clazz = announcer.clazz; Bundle args = announcer.args; FragmentManager fragmentManager = getSupportFragmentManager(); @@ -565,23 +566,8 @@ public abstract class StageActivity extends EhActivity { updateBackPressCallBackStatus(); } - private boolean shouldEnableBackPressCallBack() { - if (mSceneTagList.size() > 1) - return true; - if (mSceneTagList.size() == 0) - return false; - String tag = mSceneTagList.get(0); - Fragment fragment = getSupportFragmentManager().findFragmentByTag(tag); - if (fragment instanceof GalleryListScene) - return !((GalleryListScene) fragment).isBackpressCanPreviewLauncherStatus(); - return false; - } - public void updateBackPressCallBackStatus() { - var isEnabled = callback.isEnabled(); - var shouldEnable = shouldEnableBackPressCallBack(); - if (isEnabled != shouldEnable) - callback.setEnabled(shouldEnable); + callback.setEnabled(mSceneTagList.size() > 1); } @Override @@ -627,8 +613,8 @@ public abstract class StageActivity extends EhActivity { } class BackPressCallBack extends OnBackPressedCallback { - public BackPressCallBack(boolean enabled) { - super(enabled); + public BackPressCallBack() { + super(false); } @Override @@ -647,7 +633,7 @@ public abstract class StageActivity extends EhActivity { } scene = (SceneFragment) fragment; - scene.onBackPressed(); + finishScene(scene); } }