diff options
author | Rohan Shah <shahrk@google.com> | 2013-04-28 13:18:54 -0700 |
---|---|---|
committer | Rohan Shah <shahrk@google.com> | 2013-04-29 13:46:53 -0700 |
commit | 8bcb7c5c37ffd5a1a0c5f4efbcab084830d5e033 (patch) | |
tree | 7f1f9c9597f06d42c7dfb39ab401e40e45f3dfad /src/com/android/mail | |
parent | 5e28eef439fce8ac57c4f7fc97ce8f5aa2ca5469 (diff) | |
download | android_packages_apps_UnifiedEmail-8bcb7c5c37ffd5a1a0c5f4efbcab084830d5e033.tar.gz android_packages_apps_UnifiedEmail-8bcb7c5c37ffd5a1a0c5f4efbcab084830d5e033.tar.bz2 android_packages_apps_UnifiedEmail-8bcb7c5c37ffd5a1a0c5f4efbcab084830d5e033.zip |
Close drawer when not changing folders
Drawer should close upon clicking the currently
selected folder or clicking the current account
while viewing the inbox.
Change-Id: I1f4827e9386289172ea3b1137c393dd1d6fc587c
Diffstat (limited to 'src/com/android/mail')
-rw-r--r-- | src/com/android/mail/adapter/DrawerItem.java | 4 | ||||
-rw-r--r-- | src/com/android/mail/ui/AbstractActivityController.java | 2 | ||||
-rw-r--r-- | src/com/android/mail/ui/AccountController.java | 4 | ||||
-rw-r--r-- | src/com/android/mail/ui/FolderListFragment.java | 11 | ||||
-rw-r--r-- | src/com/android/mail/ui/FolderSelectionActivity.java | 2 | ||||
-rw-r--r-- | src/com/android/mail/ui/OnePaneController.java | 12 |
6 files changed, 24 insertions, 11 deletions
diff --git a/src/com/android/mail/adapter/DrawerItem.java b/src/com/android/mail/adapter/DrawerItem.java index 6b9a2bc22..adfb00d3e 100644 --- a/src/com/android/mail/adapter/DrawerItem.java +++ b/src/com/android/mail/adapter/DrawerItem.java @@ -264,8 +264,8 @@ public class DrawerItem { // Folders are always enabled. return true; case VIEW_ACCOUNT: - // Accounts are only enabled if they are not the current account. - return !mIsSelected; + // Accounts are always enabled. + return true; case VIEW_WAITING_FOR_SYNC: // Waiting for sync cannot be tapped, so never enabled. return false; diff --git a/src/com/android/mail/ui/AbstractActivityController.java b/src/com/android/mail/ui/AbstractActivityController.java index 523024c55..ea2e82e90 100644 --- a/src/com/android/mail/ui/AbstractActivityController.java +++ b/src/com/android/mail/ui/AbstractActivityController.java @@ -626,7 +626,7 @@ public abstract class AbstractActivityController implements ActivityController { * is no drawer. */ @Override - public void closeDrawerForNewList() { + public void closeDrawer(final boolean hasNewFolderOrAccount) { mDrawerObservers.notifyChanged(); } diff --git a/src/com/android/mail/ui/AccountController.java b/src/com/android/mail/ui/AccountController.java index 951a9bcde..32465c838 100644 --- a/src/com/android/mail/ui/AccountController.java +++ b/src/com/android/mail/ui/AccountController.java @@ -92,6 +92,8 @@ public interface AccountController { /** * When the {@link FolderListFragment} has a new account ready for changing to, * close the drawer and then wait for {@link DataSetObservable#notifyChanged()}. + * @param hasNewFolderOrAccount true if we need to load conversations for a different folder + * or account, false otherwise. */ - void closeDrawerForNewList(); + void closeDrawer(boolean hasNewFolderOrAccount); } diff --git a/src/com/android/mail/ui/FolderListFragment.java b/src/com/android/mail/ui/FolderListFragment.java index cdba655f7..370bac872 100644 --- a/src/com/android/mail/ui/FolderListFragment.java +++ b/src/com/android/mail/ui/FolderListFragment.java @@ -466,16 +466,18 @@ public class FolderListFragment extends ListFragment implements final Account account = drawerItem.mAccount; if (account != null && account.settings.defaultInbox.equals(mSelectedFolderUri)) { - // We're already in the default inbox for the same account, just re-check item. + // We're already in the default inbox for account, just re-check item ... final int defaultInboxPosition = position + 1; if (mListView.getChildAt(defaultInboxPosition) != null) { mListView.setItemChecked(defaultInboxPosition, true); } + // ... and close the drawer (no new target folders/accounts) + mAccountChanger.closeDrawer(false /* hasNewFolderOrAccount */); } else { // Switching accounts takes you to the inbox, which is always a system folder. mSelectedFolderType = DrawerItem.FOLDER_SYSTEM; mNextAccount = account; - mAccountChanger.closeDrawerForNewList(); + mAccountChanger.closeDrawer(true /* hasNewFolderOrAccount */); } } else if (itemType == DrawerItem.VIEW_FOLDER) { // Folder type, so change folders only. @@ -507,7 +509,10 @@ public class FolderListFragment extends ListFragment implements // Go to the conversation list for this folder. if (!folder.uri.equals(mSelectedFolderUri)) { mNextFolder = folder; - mAccountChanger.closeDrawerForNewList(); + mAccountChanger.closeDrawer(true /* hasNewFolderOrAccount */); + } else { + // Clicked on same folder, just close drawer + mAccountChanger.closeDrawer(false /* hasNewFolderOrAccount */); } } } diff --git a/src/com/android/mail/ui/FolderSelectionActivity.java b/src/com/android/mail/ui/FolderSelectionActivity.java index 4b66e0985..71a7e40ae 100644 --- a/src/com/android/mail/ui/FolderSelectionActivity.java +++ b/src/com/android/mail/ui/FolderSelectionActivity.java @@ -133,7 +133,7 @@ public class FolderSelectionActivity extends Activity implements OnClickListener * Since there is no drawer to wait for, notifyChanged to the observers. */ @Override - public void closeDrawerForNewList() { + public void closeDrawer(final boolean hasNewFolderOrAccount) { mDrawerObservers.notifyChanged(); } }; diff --git a/src/com/android/mail/ui/OnePaneController.java b/src/com/android/mail/ui/OnePaneController.java index 92b45d9f7..c619f1ae8 100644 --- a/src/com/android/mail/ui/OnePaneController.java +++ b/src/com/android/mail/ui/OnePaneController.java @@ -804,10 +804,10 @@ public final class OnePaneController extends AbstractActivityController { /** * The default behavior calls mDrawerObserver's notifyChanged(). So, to notify the consumer of * the observer that the drawer is closed, we simply make a call to - * {@link AbstractActivityController#closeDrawerForNewList()}. + * {@link AbstractActivityController#closeDrawer(boolean)}. */ public void notifyDrawerClosed() { - super.closeDrawerForNewList(); + super.closeDrawer(true); } /** @@ -816,7 +816,13 @@ public final class OnePaneController extends AbstractActivityController { * or put in an idle state. */ @Override - public void closeDrawerForNewList() { + public void closeDrawer(final boolean hasNewFolderOrAccount) { + // If there are no new folders or accounts to switch to, just close the drawer + if (!hasNewFolderOrAccount) { + mDrawerContainer.closeDrawers(); + return; + } + final ConversationListFragment conversationList = getConversationListFragment(); if (conversationList != null) { mListViewForAnimating = conversationList.getListView(); |