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 4d4cfddd9..44a71d6b3 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java @@ -310,6 +310,14 @@ public final class MainActivity extends StageActivity } } + public int getDrawerLockMode(int edgeGravity) { + if (mDrawerLayout != null) { + return mDrawerLayout.getDrawerLockMode(edgeGravity); + } else { + return DrawerLayout.LOCK_MODE_UNLOCKED; + } + } + public void setDrawerLockMode(int lockMode, int edgeGravity) { if (mDrawerLayout != null) { mDrawerLayout.setDrawerLockMode(lockMode, edgeGravity); 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 db6631c61..ebae38f6e 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 @@ -41,6 +41,15 @@ public abstract class BaseScene extends SceneFragment { } } + public int getDrawerLockMode(int edgeGravity) { + FragmentActivity activity = getActivity(); + if (activity instanceof MainActivity) { + return ((MainActivity) activity).getDrawerLockMode(edgeGravity); + } else { + return DrawerLayout.LOCK_MODE_UNLOCKED; + } + } + public void openDrawer(int drawerGravity) { FragmentActivity activity = getActivity(); if (activity instanceof MainActivity) { 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 b121528ee..67646e9bf 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 @@ -90,7 +90,7 @@ public class DownloadsScene extends ToolbarScene implements DownloadManager.DownloadInfoListener, EasyRecyclerView.OnItemClickListener, EasyRecyclerView.OnItemLongClickListener, - FabLayout.OnClickFabListener { + FabLayout.OnClickFabListener, FastScroller.OnDragHandlerListener { public static final String KEY_ACTION = "action"; private static final String KEY_LABEL = "label"; @@ -237,6 +237,7 @@ public class DownloadsScene extends ToolbarScene HandlerDrawable drawable = new HandlerDrawable(); drawable.setColor(ResourcesUtils.getAttrColor(getContext(), R.attr.colorAccent)); fastScroller.setHandlerDrawable(drawable); + fastScroller.setOnDragHandlerListener(this); mFabLayout.setExpanded(false, false); mFabLayout.setHidePrimaryFab(true); @@ -404,6 +405,20 @@ public class DownloadsScene extends ToolbarScene } } + @Override + public void onStartDragHandler() { + // Lock right drawer + setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT); + } + + @Override + public void onEndDragHandler() { + // Restore right drawer + if (null != mRecyclerView && !mRecyclerView.isInCustomChoice()) { + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.RIGHT); + } + } + @Override public boolean onItemClick(EasyRecyclerView parent, View view, int position, long id) { EasyRecyclerView recyclerView = mRecyclerView; @@ -1009,8 +1024,8 @@ public class DownloadsScene extends ToolbarScene mFabLayout.setExpanded(true); } // Lock drawer - setDrawerLockMode(Gravity.LEFT, DrawerLayout.LOCK_MODE_LOCKED_CLOSED); - setDrawerLockMode(Gravity.RIGHT, DrawerLayout.LOCK_MODE_LOCKED_CLOSED); + setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.LEFT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT); } @Override @@ -1022,8 +1037,8 @@ public class DownloadsScene extends ToolbarScene mFabLayout.setExpanded(false); } // Unlock drawer - setDrawerLockMode(Gravity.LEFT, DrawerLayout.LOCK_MODE_UNLOCKED); - setDrawerLockMode(Gravity.RIGHT, DrawerLayout.LOCK_MODE_UNLOCKED); + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.LEFT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.RIGHT); } @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 60357c989..2fac02cd3 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 @@ -146,7 +146,6 @@ public class FavoritesScene extends BaseScene implements @WholeLifeCircle private FavListUrlBuilder mUrlBuilder; - public int[] countArray; // Size 10 public int current; // -1 for error public int limit; // -1 for error @@ -453,11 +452,18 @@ public class FavoritesScene extends BaseScene implements @Override @Implemented(FastScroller.OnDragHandlerListener.class) public void onStartDragHandler() { + // Lock right drawer + setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT); } @Override @Implemented(FastScroller.OnDragHandlerListener.class) public void onEndDragHandler() { + // Restore right drawer + if (null != mRecyclerView && !mRecyclerView.isInCustomChoice()) { + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.RIGHT); + } + if (mSearchBarMover != null) { mSearchBarMover.returnSearchBarPosition(); } @@ -654,8 +660,8 @@ public class FavoritesScene extends BaseScene implements mHelper.setRefreshLayoutEnable(false); } // Lock drawer - setDrawerLockMode(Gravity.LEFT, DrawerLayout.LOCK_MODE_LOCKED_CLOSED); - setDrawerLockMode(Gravity.RIGHT, DrawerLayout.LOCK_MODE_LOCKED_CLOSED); + setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.LEFT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT); } @Override @@ -668,8 +674,8 @@ public class FavoritesScene extends BaseScene implements mHelper.setRefreshLayoutEnable(true); } // Unlock drawer - setDrawerLockMode(Gravity.LEFT, DrawerLayout.LOCK_MODE_UNLOCKED); - setDrawerLockMode(Gravity.RIGHT, DrawerLayout.LOCK_MODE_UNLOCKED); + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.LEFT); + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.RIGHT); } @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 18dde77a9..5f0c72dc5 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 @@ -30,6 +30,7 @@ import android.support.annotation.Nullable; import android.support.design.widget.FloatingActionButton; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; +import android.support.v4.widget.DrawerLayout; import android.support.v7.app.AlertDialog; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; @@ -653,10 +654,16 @@ public final class GalleryListScene extends BaseScene } @Override - public void onStartDragHandler() {} + public void onStartDragHandler() { + // Lock right drawer + setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED, Gravity.RIGHT); + } @Override public void onEndDragHandler() { + // Restore right drawer + setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED, Gravity.RIGHT); + mSearchBarMover.returnSearchBarPosition(); }