diff options
author | Scott Kennedy <skennedy@google.com> | 2013-07-10 17:33:57 -0700 |
---|---|---|
committer | Scott Kennedy <skennedy@google.com> | 2013-07-10 17:38:13 -0700 |
commit | 0eaef6fb257f220687434cda763354ec5f8cb5bc (patch) | |
tree | 28bb5037b76430404a0113ac6bc97796181c071b /src/com/android/mail/ui/OnePaneController.java | |
parent | 2b254dc9185d903f7ae01db4fac4eb060bb68f6f (diff) | |
download | android_packages_apps_UnifiedEmail-0eaef6fb257f220687434cda763354ec5f8cb5bc.tar.gz android_packages_apps_UnifiedEmail-0eaef6fb257f220687434cda763354ec5f8cb5bc.tar.bz2 android_packages_apps_UnifiedEmail-0eaef6fb257f220687434cda763354ec5f8cb5bc.zip |
Up button should go up
Previously, it was always opening the drawer, even if it showed the
up caret.
Bug: 9761890
Change-Id: I337c84683207e2dcb22cb55a66f9e79087016e2e
Diffstat (limited to 'src/com/android/mail/ui/OnePaneController.java')
-rw-r--r-- | src/com/android/mail/ui/OnePaneController.java | 40 |
1 files changed, 38 insertions, 2 deletions
diff --git a/src/com/android/mail/ui/OnePaneController.java b/src/com/android/mail/ui/OnePaneController.java index b18ddb6d8..df198aeb9 100644 --- a/src/com/android/mail/ui/OnePaneController.java +++ b/src/com/android/mail/ui/OnePaneController.java @@ -21,7 +21,9 @@ import android.app.Fragment; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.app.LoaderManager.LoaderCallbacks; +import android.database.Cursor; import android.net.Uri; +import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.widget.DrawerLayout; import android.widget.ListView; @@ -407,6 +409,33 @@ public final class OnePaneController extends AbstractActivityController { // onFolderSelected(current.parent); } + private void navigateUp() { + new AsyncTask<Void, Void, Folder>() { + @Override + protected Folder doInBackground(final Void... params) { + final Folder folder; + + final Cursor cursor = mContext.getContentResolver().query(mFolder.parent, + UIProvider.FOLDERS_PROJECTION, null, null, null); + + if (cursor == null) { + folder = mInbox; + } else { + cursor.moveToFirst(); + folder = new Folder(cursor); + cursor.close(); + } + + return folder; + } + + @Override + protected void onPostExecute(final Folder result) { + onFolderSelected(result); + } + }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, (Void[]) null); + } + /** * Switch to the Inbox by creating a new conversation list context that loads the inbox. */ @@ -447,8 +476,15 @@ public final class OnePaneController extends AbstractActivityController { } if (mode == ViewMode.CONVERSATION_LIST || mode == ViewMode.WAITING_FOR_ACCOUNT_INITIALIZATION) { - // Up affordance: show the drawer. - toggleFolderListState(); + final boolean isTopLevel = (mFolder == null) || (mFolder.parent == Uri.EMPTY); + + if (isTopLevel) { + // Show the drawer. + toggleFolderListState(); + } else { + navigateUp(); + } + return true; } if (mode == ViewMode.CONVERSATION |