diff options
author | Vikram Aggarwal <viki@google.com> | 2013-07-03 14:39:31 -0700 |
---|---|---|
committer | Vikram Aggarwal <viki@google.com> | 2013-07-08 12:50:48 -0700 |
commit | dfbc6985e44c05e37fd8addce65a063ff57a3dc1 (patch) | |
tree | 5b7f0b614683c47f28505363a8fe63e0c70bb08e | |
parent | 89682d3669300a6a2c33a3af61586104d7a8bc19 (diff) | |
download | android_packages_apps_UnifiedEmail-dfbc6985e44c05e37fd8addce65a063ff57a3dc1.tar.gz android_packages_apps_UnifiedEmail-dfbc6985e44c05e37fd8addce65a063ff57a3dc1.tar.bz2 android_packages_apps_UnifiedEmail-dfbc6985e44c05e37fd8addce65a063ff57a3dc1.zip |
Disable drawer for child folders
Bug: 9696028 Disable drawer for child folders
Change-Id: Iba2353e71c9b4789611737173db874fc37981b05
-rw-r--r-- | src/com/android/mail/ui/AbstractActivityController.java | 61 |
1 files changed, 42 insertions, 19 deletions
diff --git a/src/com/android/mail/ui/AbstractActivityController.java b/src/com/android/mail/ui/AbstractActivityController.java index cf3884347..7a03ee326 100644 --- a/src/com/android/mail/ui/AbstractActivityController.java +++ b/src/com/android/mail/ui/AbstractActivityController.java @@ -825,6 +825,15 @@ public abstract class AbstractActivityController implements ActivityController, @Override public void onFolderChanged(Folder folder) { + /** If the folder doesn't exist, or its parent URI is empty, + * this is not a child folder */ + final boolean isTopLevel = (folder == null) || (folder.parent == Uri.EMPTY); + final int mode = mViewMode.getMode(); + mDrawerToggle.setDrawerIndicatorEnabled( + getShouldShowDrawerIndicator(mode, isTopLevel)); + mDrawerContainer.setDrawerLockMode(getShouldAllowDrawerPull(mode, isTopLevel) + ? DrawerLayout.LOCK_MODE_UNLOCKED : DrawerLayout.LOCK_MODE_LOCKED_CLOSED); + mDrawerContainer.closeDrawers(); changeFolder(folder, null); } @@ -2089,33 +2098,46 @@ public abstract class AbstractActivityController implements ActivityController, } if (isDrawerEnabled()) { - mDrawerToggle.setDrawerIndicatorEnabled(getShouldShowDrawerIndicator(newMode)); - mDrawerContainer.setDrawerLockMode(getShouldAllowDrawerPull(newMode) + /** If the folder doesn't exist, or its parent URI is empty, + * this is not a child folder */ + final boolean isTopLevel = (mFolder == null) || (mFolder.parent == Uri.EMPTY); + mDrawerToggle.setDrawerIndicatorEnabled( + getShouldShowDrawerIndicator(newMode, isTopLevel)); + mDrawerContainer.setDrawerLockMode(getShouldAllowDrawerPull(newMode, isTopLevel) ? DrawerLayout.LOCK_MODE_UNLOCKED : DrawerLayout.LOCK_MODE_LOCKED_CLOSED); closeDrawerIfOpen(); } } - private static boolean getShouldShowDrawerIndicator(final int viewMode) { - // if search list/conv mode, disable indicator - // only allow indicator at top level of app - if (ViewMode.isSearchMode(viewMode)) { - return false; - } else { - return viewMode == ViewMode.CONVERSATION_LIST || viewMode == ViewMode.FOLDER_LIST; - } + /** + * Returns true if the drawer icon is shown + * @param viewMode the current view mode + * @param isTopLevel true if the current folder is not a child + * @return whether the drawer indicator is shown + */ + private static boolean getShouldShowDrawerIndicator(final int viewMode, + final boolean isTopLevel) { + // If search list/conv mode: disable indicator + // Indicator is enabled either in conversation list or folder list mode. + return !ViewMode.isSearchMode(viewMode) + && (viewMode == ViewMode.FOLDER_LIST + || (viewMode == ViewMode.CONVERSATION_LIST && isTopLevel)); } - private static boolean getShouldAllowDrawerPull(final int viewMode) { + /** + * Returns true if the left-screen swipe action (or Home icon tap) should pull a drawer out. + * @param viewMode the current view mode. + * @param isTopLevel true if the current folder is not a child + * @return whether the drawer can be opened using a swipe action or action bar tap. + */ + private static boolean getShouldAllowDrawerPull(final int viewMode, final boolean isTopLevel) { // if search list/conv mode, disable drawer pull // allow drawer pull everywhere except conversation mode where the list is hidden - if (ViewMode.isSearchMode(viewMode)) { - return false; - } else { - return !(ViewMode.isConversationMode(viewMode) - // TODO(ath): get this to work to allow drawer pull in 2-pane conv mode. - /* && !isConversationListVisible() */); - } + return !ViewMode.isSearchMode(viewMode) && !(ViewMode.isConversationMode(viewMode)) + && isTopLevel; + + // TODO(ath): get this to work to allow drawer pull in 2-pane conv mode. + /* && !isConversationListVisible() */ } public void disablePagerUpdates() { @@ -4179,7 +4201,8 @@ public abstract class AbstractActivityController implements ActivityController, @Override public boolean isDrawerPullEnabled() { - return getShouldAllowDrawerPull(mViewMode.getMode()); + final boolean notChild = (mFolder == null || mFolder.parent == Uri.EMPTY); + return getShouldAllowDrawerPull(mViewMode.getMode(), notChild); } @Override |