summaryrefslogtreecommitdiffstats
path: root/src/com/android/mail
diff options
context:
space:
mode:
authorRohan Shah <shahrk@google.com>2013-04-28 13:18:54 -0700
committerRohan Shah <shahrk@google.com>2013-04-29 13:46:53 -0700
commit8bcb7c5c37ffd5a1a0c5f4efbcab084830d5e033 (patch)
tree7f1f9c9597f06d42c7dfb39ab401e40e45f3dfad /src/com/android/mail
parent5e28eef439fce8ac57c4f7fc97ce8f5aa2ca5469 (diff)
downloadandroid_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.java4
-rw-r--r--src/com/android/mail/ui/AbstractActivityController.java2
-rw-r--r--src/com/android/mail/ui/AccountController.java4
-rw-r--r--src/com/android/mail/ui/FolderListFragment.java11
-rw-r--r--src/com/android/mail/ui/FolderSelectionActivity.java2
-rw-r--r--src/com/android/mail/ui/OnePaneController.java12
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();