diff --git a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java index 6b87a58ce..451dacd65 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java @@ -485,9 +485,9 @@ public final class MainActivity extends StageActivity baseScene.getLayoutInflater(), mRightDrawer, null); if (drawerView != null) { mRightDrawer.addView(drawerView); - mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.RIGHT); + mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.END); } else { - mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT); + mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END); } } } @@ -519,6 +519,13 @@ public final class MainActivity extends StageActivity } } + public Integer getDrawerLockMode(int edgeGravity) { + if (mDrawerLayout != null) { + return mDrawerLayout.getDrawerLockMode(edgeGravity); + } + return null; + } + public void openDrawer(int drawerGravity) { if (mDrawerLayout != null) { mDrawerLayout.openDrawer(drawerGravity); diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java index 5b2364f4c..bd64898fe 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/BaseScene.java @@ -33,6 +33,7 @@ import androidx.annotation.IdRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StringRes; +import androidx.core.view.GravityCompat; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import androidx.core.view.WindowInsetsControllerCompat; @@ -78,6 +79,14 @@ public abstract class BaseScene extends SceneFragment { } } + public Integer getDrawerLockMode(int edgeGravity) { + FragmentActivity activity = getActivity(); + if (activity instanceof MainActivity) { + return ((MainActivity) activity).getDrawerLockMode(edgeGravity); + } + return null; + } + public void openDrawer(int drawerGravity) { FragmentActivity activity = getActivity(); if (activity instanceof MainActivity) { @@ -190,9 +199,9 @@ public abstract class BaseScene extends SceneFragment { // Update left drawer locked state if (needShowLeftDrawer()) { - setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.LEFT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.START); } else { - setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.LEFT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.START); } // Update nav checked item diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java index 78eb4cbf3..8ea75e582 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/DownloadsScene.java @@ -43,6 +43,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.Toolbar; import androidx.core.content.ContextCompat; +import androidx.core.view.GravityCompat; import androidx.core.view.ViewCompat; import androidx.drawerlayout.widget.DrawerLayout; import androidx.recyclerview.widget.ItemTouchHelper; @@ -406,7 +407,7 @@ public class DownloadsScene extends ToolbarScene @Override public void onNavigationClick() { - toggleDrawer(Gravity.LEFT); + toggleDrawer(GravityCompat.START); } @Override @@ -444,10 +445,10 @@ public class DownloadsScene extends ToolbarScene } return true; } else if (id == R.id.action_open_download_labels) { - openDrawer(Gravity.RIGHT); + openDrawer(GravityCompat.END); return true; } else if (id == R.id.action_reset_reading_progress) { - new BaseDialogBuilder(getContext()) + new BaseDialogBuilder(requireContext()) .setMessage(R.string.reset_reading_progress_message) .setNegativeButton(android.R.string.cancel, null) .setPositiveButton(android.R.string.ok, (dialog, which) -> { @@ -566,14 +567,14 @@ public class DownloadsScene extends ToolbarScene @Override public void onStartDragHandler() { // Lock right drawer - setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END); } @Override public void onEndDragHandler() { // Restore right drawer if (null != mRecyclerView && !mRecyclerView.isInCustomChoice()) { - setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.RIGHT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.END); } } @@ -935,7 +936,7 @@ public class DownloadsScene extends ToolbarScene mLabel = label1; updateForLabel(); updateView(); - closeDrawer(Gravity.RIGHT); + closeDrawer(GravityCompat.END); } }); if (position > 0) { @@ -1197,8 +1198,8 @@ public class DownloadsScene extends ToolbarScene mFabLayout.setExpanded(true); } // Lock drawer - setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.LEFT); - setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.START); + setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END); } @Override @@ -1207,8 +1208,8 @@ public class DownloadsScene extends ToolbarScene mFabLayout.setExpanded(false); } // Unlock drawer - setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.LEFT); - setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.RIGHT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.START); + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.END); } @Override 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 7af273654..a0bcc7403 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 @@ -33,6 +33,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.Toolbar; +import androidx.core.view.GravityCompat; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsAnimationCompat; import androidx.drawerlayout.widget.DrawerLayout; @@ -435,21 +436,21 @@ public class FavoritesScene extends SearchBarScene implements @Override public void onStartDragHandler() { // Lock right drawer - setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END); } @Override public void onEndDragHandler() { // Restore right drawer if (null != mRecyclerView && !mRecyclerView.isInCustomChoice()) { - setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.RIGHT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.END); } showSearchBar(); } public boolean onItemClick(int position) { - if (mDrawerLayout != null && mDrawerLayout.isDrawerOpen(Gravity.RIGHT)) { + if (mDrawerLayout != null && mDrawerLayout.isDrawerOpen(GravityCompat.END)) { // Skip if in search mode if (mRecyclerView != null && mRecyclerView.isInCustomChoice()) { return true; @@ -475,7 +476,7 @@ public class FavoritesScene extends SearchBarScene implements updateJumpFab(); mHelper.refresh(); - closeDrawer(Gravity.RIGHT); + closeDrawer(GravityCompat.END); } else { if (mRecyclerView != null && mRecyclerView.isInCustomChoice()) { @@ -673,8 +674,8 @@ public class FavoritesScene extends SearchBarScene implements mHelper.setRefreshLayoutEnable(false); } // Lock drawer - setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.LEFT); - setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.START); + setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END); } @Override @@ -688,8 +689,8 @@ public class FavoritesScene extends SearchBarScene implements mHelper.setRefreshLayoutEnable(true); } // Unlock drawer - setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.LEFT); - setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.RIGHT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.START); + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.END); } @Override 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 5fcd1767e..f8d6a7f34 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 @@ -48,6 +48,7 @@ import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; import androidx.appcompat.widget.Toolbar; import androidx.core.content.ContextCompat; +import androidx.core.view.GravityCompat; import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsAnimationCompat; import androidx.drawerlayout.widget.DrawerLayout; @@ -933,12 +934,12 @@ public final class GalleryListScene extends SearchBarScene } if (expanded) { - setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.LEFT); - setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.START); + setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END); mActionFabDrawable.setDelete(ANIMATE_TIME); } else { - setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.LEFT); - setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.RIGHT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.START); + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.END); mActionFabDrawable.setAdd(ANIMATE_TIME); } } @@ -1237,23 +1238,23 @@ public final class GalleryListScene extends SearchBarScene @Override public void onStartDragHandler() { // Lock right drawer - setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END); } @Override public void onEndDragHandler() { // Restore right drawer - setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.RIGHT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.END); showSearchBar(); } public void onStateChange(int newState) { if (newState == STATE_NORMAL || newState == STATE_SIMPLE_SEARCH) { - setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.LEFT); - setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.RIGHT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.START); + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, GravityCompat.END); } else { - setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.LEFT); - setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.START); + setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, GravityCompat.END); } } @@ -1462,7 +1463,7 @@ public final class GalleryListScene extends SearchBarScene var i = q.name.lastIndexOf("@"); mHelper.goTo(i != -1 ? q.name.substring(i + 1) : null, true); setState(STATE_NORMAL); - closeDrawer(Gravity.RIGHT); + closeDrawer(GravityCompat.END); }); } else { int[] keywords = {11, 12, 13, 15}; @@ -1478,7 +1479,7 @@ public final class GalleryListScene extends SearchBarScene onUpdateUrlBuilder(); mHelper.refresh(); setState(STATE_NORMAL); - closeDrawer(Gravity.RIGHT); + closeDrawer(GravityCompat.END); }); } } diff --git a/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.kt b/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.kt index 0b46d9611..908b701b5 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.kt +++ b/app/src/main/java/com/hippo/ehviewer/ui/scene/HistoryScene.kt @@ -25,6 +25,7 @@ import android.view.* import android.widget.ImageView import android.widget.TextView import androidx.core.content.ContextCompat +import androidx.core.view.GravityCompat import androidx.lifecycle.lifecycleScope import androidx.paging.Pager import androidx.paging.PagingConfig @@ -190,7 +191,7 @@ class HistoryScene : ToolbarScene() { @SuppressLint("RtlHardcoded") override fun onNavigationClick() { - toggleDrawer(Gravity.LEFT) + toggleDrawer(GravityCompat.START) } override fun getMenuResId(): Int { 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 0101482a2..c8a624203 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 @@ -10,7 +10,9 @@ import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.annotation.CallSuper +import androidx.core.view.GravityCompat import androidx.core.widget.addTextChangedListener +import androidx.drawerlayout.widget.DrawerLayout import androidx.lifecycle.lifecycleScope import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView @@ -77,14 +79,35 @@ abstract class SearchBarScene : ToolbarScene() { return view.apply { addView(contentView, 0) } } + private var privLockModeStart: Int? = null + private var privLockModeEnd: Int? = null + @CallSuper open fun onSearchViewExpanded() { + privLockModeStart = getDrawerLockMode(GravityCompat.START) + privLockModeEnd = getDrawerLockMode(GravityCompat.END) + privLockModeStart?.let { + setDrawerLockMode( + DrawerLayout.LOCK_MODE_LOCKED_CLOSED, + GravityCompat.START + ) + } + privLockModeEnd?.let { + setDrawerLockMode( + DrawerLayout.LOCK_MODE_LOCKED_CLOSED, + GravityCompat.END + ) + } (requireActivity() as StageActivity).updateBackPressCallBackStatus() updateSuggestions() } @CallSuper open fun onSearchViewHidden() { + privLockModeStart?.let { setDrawerLockMode(it, GravityCompat.START) } + privLockModeStart = null + privLockModeEnd?.let { setDrawerLockMode(it, GravityCompat.END) } + privLockModeEnd = null (requireActivity() as StageActivity).updateBackPressCallBackStatus() } @@ -311,7 +334,8 @@ abstract class SearchBarScene : ToolbarScene() { val s = text.split(" ".toRegex()).dropLastWhile { it.isEmpty() }.toTypedArray() if (s.isNotEmpty()) { val keyword = s[s.size - 1] - val translate = Settings.getShowTagTranslations() && isTranslatable(requireContext()) + val translate = + Settings.getShowTagTranslations() && isTranslatable(requireContext()) suggestFlow(keyword, translate, true).collect { emit(TagSuggestion(it.first, it.second)) }