OnePaneController.java revision fbe4019a262f6b1934a44e598009ae63dc5745ee
1a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal/*******************************************************************************
2a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal *      Copyright (C) 2012 Google Inc.
3a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal *      Licensed to The Android Open Source Project.
4a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal *
5a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal *      Licensed under the Apache License, Version 2.0 (the "License");
6a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal *      you may not use this file except in compliance with the License.
7a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal *      You may obtain a copy of the License at
8a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal *
9a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal *           http://www.apache.org/licenses/LICENSE-2.0
10a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal *
11a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal *      Unless required by applicable law or agreed to in writing, software
12a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal *      distributed under the License is distributed on an "AS IS" BASIS,
13a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal *      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal *      See the License for the specific language governing permissions and
15a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal *      limitations under the License.
16a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal *******************************************************************************/
17a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal
18a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwalpackage com.android.mail.ui;
19a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal
20d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwalimport android.app.Fragment;
21d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwalimport android.app.FragmentTransaction;
22fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereiraimport android.database.Cursor;
23559c3b3d302b3f6d2c2cb43a909069d942652e34Mindy Pereiraimport android.net.Uri;
241ddcf0f2bf44d3c9db89112ef52510d9b2433ac4Vikram Aggarwalimport android.os.Bundle;
25fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereiraimport android.view.MenuItem;
261ddcf0f2bf44d3c9db89112ef52510d9b2433ac4Vikram Aggarwal
27d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwalimport com.android.mail.ConversationListContext;
281ddcf0f2bf44d3c9db89112ef52510d9b2433ac4Vikram Aggarwalimport com.android.mail.R;
29cd09f5e9bf55e6f4310e8dc9408132b9c88e87c3Vikram Aggarwalimport com.android.mail.providers.Account;
309b87568c9e9f1c32a9672b315229866a58a1e757Mindy Pereiraimport com.android.mail.providers.Conversation;
313982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereiraimport com.android.mail.providers.Folder;
32fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereiraimport com.android.mail.providers.Settings;
33fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereiraimport com.android.mail.providers.UIProvider;
34fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereiraimport com.android.mail.providers.UIProvider.AutoAdvance;
35fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereiraimport com.android.mail.providers.UIProvider.ConversationColumns;
36fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereiraimport com.android.mail.utils.LogUtils;
37fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira
38fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereiraimport java.util.ArrayList;
39fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereiraimport java.util.Collections;
40a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal
41a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal/**
42a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * Controller for one-pane Mail activity. One Pane is used for phones, where screen real estate is
43d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal * limited. This controller also does the layout, since the layout is simpler in the one pane case.
44a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal */
45a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal
46a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal// Called OnePaneActivityController in Gmail.
471ddcf0f2bf44d3c9db89112ef52510d9b2433ac4Vikram Aggarwalpublic final class OnePaneController extends AbstractActivityController {
483982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    private static final String FOLDER_LIST_TRANSACTION_KEY = "folder-list-transaction";
493982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    private static final String CONVERSATION_LIST_TRANSACTION_KEY = "conversation-list-transaction";
503982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    private static final String CONVERSATION_TRANSACTION_KEY = "conversation-transaction";
513982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    private static final int INVALID_ID = -1;
522175d0a93263672d4498458c81b404b0999134baVikram Aggarwal    private boolean mConversationListVisible = false;
533982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    private int mLastConversationListTransactionId = INVALID_ID;
543982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    private int mLastConversationTransactionId = INVALID_ID;
553982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    private int mLastFolderListTransactionId = INVALID_ID;
563982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    private Folder mInbox;
57cd09f5e9bf55e6f4310e8dc9408132b9c88e87c3Vikram Aggarwal    /** Whether a conversation list for this account has ever been shown.*/
58cd09f5e9bf55e6f4310e8dc9408132b9c88e87c3Vikram Aggarwal    private boolean mConversationListNeverShown = true;
59cd09f5e9bf55e6f4310e8dc9408132b9c88e87c3Vikram Aggarwal
60fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira
61fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira    private final ActionCompleteListener mDeleteListener = new OnePaneDestructiveActionListener(
62fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            R.id.delete);
63fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira    private final ActionCompleteListener mArchiveListener = new OnePaneDestructiveActionListener(
64fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            R.id.archive);
65fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira    private final ActionCompleteListener mMuteListener = new OnePaneDestructiveActionListener(
66fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            R.id.mute);
67fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira    private final ActionCompleteListener mSpamListener = new OnePaneDestructiveActionListener(
68fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            R.id.report_spam);
69fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira
70a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal    /**
71a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal     * @param activity
72a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal     * @param viewMode
73a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal     */
74a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal    public OnePaneController(MailActivity activity, ViewMode viewMode) {
75a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal        super(activity, viewMode);
76a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal    }
77a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal
781ddcf0f2bf44d3c9db89112ef52510d9b2433ac4Vikram Aggarwal    @Override
793982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    protected void restoreState(Bundle inState) {
803982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        super.restoreState(inState);
813982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        // TODO(mindyp) handle saved state.
823982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        if (inState != null) {
833982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira            mLastFolderListTransactionId = inState.getInt(FOLDER_LIST_TRANSACTION_KEY, INVALID_ID);
843982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira            mLastConversationListTransactionId = inState.getInt(CONVERSATION_LIST_TRANSACTION_KEY,
853982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira                    INVALID_ID);
863982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira            mLastConversationTransactionId = inState.getInt(CONVERSATION_TRANSACTION_KEY,
873982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira                    INVALID_ID);
883982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        }
893982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    }
903982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira
913982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    @Override
923982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    public void onSaveInstanceState(Bundle outState) {
933982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        super.onSaveInstanceState(outState);
943982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        // TODO(mindyp) handle saved state.
953982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        outState.putInt(FOLDER_LIST_TRANSACTION_KEY, mLastFolderListTransactionId);
963982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        outState.putInt(CONVERSATION_LIST_TRANSACTION_KEY, mLastConversationListTransactionId);
973982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        outState.putInt(CONVERSATION_TRANSACTION_KEY, mLastConversationTransactionId);
983982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    }
993982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira
1003982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    @Override
101d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal    public void resetActionBarIcon() {
102d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal        final int mode = mViewMode.getMode();
103559c3b3d302b3f6d2c2cb43a909069d942652e34Mindy Pereira        // If the settings aren't loaded yet, we may not know what the default
104559c3b3d302b3f6d2c2cb43a909069d942652e34Mindy Pereira        // inbox is, so err toward this being the account inbox.
105559c3b3d302b3f6d2c2cb43a909069d942652e34Mindy Pereira        if ((mCachedSettings != null && mConvListContext != null && !inInbox())
10668f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira                || mode == ViewMode.SEARCH_RESULTS_LIST
10768f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira                || mode == ViewMode.SEARCH_RESULTS_CONVERSATION
10868f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira                || mode == ViewMode.CONVERSATION
10968f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira                || mode == ViewMode.FOLDER_LIST) {
110d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal            mActionBarView.setBackButton();
111d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal        } else {
112d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal            mActionBarView.removeBackButton();
113d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal        }
114d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal    }
115d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal
1163982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    private boolean inInbox() {
117559c3b3d302b3f6d2c2cb43a909069d942652e34Mindy Pereira        Uri inboxUri = mCachedSettings != null ? mCachedSettings.defaultInbox : null;
118559c3b3d302b3f6d2c2cb43a909069d942652e34Mindy Pereira        return mConvListContext != null && mConvListContext.folder != null ? (!mConvListContext
119559c3b3d302b3f6d2c2cb43a909069d942652e34Mindy Pereira                .isSearchResult() && mConvListContext.folder.uri.equals(inboxUri)) : false;
1203982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    }
1213982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira
122d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal    @Override
123cd09f5e9bf55e6f4310e8dc9408132b9c88e87c3Vikram Aggarwal    public void onAccountChanged(Account account) {
124cd09f5e9bf55e6f4310e8dc9408132b9c88e87c3Vikram Aggarwal        super.onAccountChanged(account);
125cd09f5e9bf55e6f4310e8dc9408132b9c88e87c3Vikram Aggarwal        mConversationListNeverShown = true;
126cd09f5e9bf55e6f4310e8dc9408132b9c88e87c3Vikram Aggarwal    }
127cd09f5e9bf55e6f4310e8dc9408132b9c88e87c3Vikram Aggarwal
128cd09f5e9bf55e6f4310e8dc9408132b9c88e87c3Vikram Aggarwal    @Override
129d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal    public boolean onCreate(Bundle savedInstanceState) {
1301ddcf0f2bf44d3c9db89112ef52510d9b2433ac4Vikram Aggarwal        // Set 1-pane content view.
1311ddcf0f2bf44d3c9db89112ef52510d9b2433ac4Vikram Aggarwal        mActivity.setContentView(R.layout.one_pane_activity);
132d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal        // The parent class sets the correct viewmode and starts the application off.
133d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal        return super.onCreate(savedInstanceState);
1341ddcf0f2bf44d3c9db89112ef52510d9b2433ac4Vikram Aggarwal    }
1351ddcf0f2bf44d3c9db89112ef52510d9b2433ac4Vikram Aggarwal
1361ddcf0f2bf44d3c9db89112ef52510d9b2433ac4Vikram Aggarwal    @Override
1371ddcf0f2bf44d3c9db89112ef52510d9b2433ac4Vikram Aggarwal    protected boolean isConversationListVisible() {
1382175d0a93263672d4498458c81b404b0999134baVikram Aggarwal        return mConversationListVisible;
1391ddcf0f2bf44d3c9db89112ef52510d9b2433ac4Vikram Aggarwal    }
140d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal
141d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal    @Override
142d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal    public void onViewModeChanged(int newMode) {
143d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal        super.onViewModeChanged(newMode);
144d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal    }
145d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal
146d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal    @Override
1479b87568c9e9f1c32a9672b315229866a58a1e757Mindy Pereira    public void showConversationList(ConversationListContext listContext) {
1483982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        // TODO(viki): Check if the account has been changed since the previous
1493982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        // time.
15068f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira        if (listContext != null && listContext.isSearchResult()) {
15168f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira            mViewMode.enterSearchResultsListMode();
15268f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira        } else {
15368f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira            mViewMode.enterConversationListMode();
15468f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira        }
1559b87568c9e9f1c32a9672b315229866a58a1e757Mindy Pereira        // TODO(viki): This account transition looks strange in two pane mode.
1562175d0a93263672d4498458c81b404b0999134baVikram Aggarwal        // Revisit as the app is coming together and improve the look and feel.
157cd09f5e9bf55e6f4310e8dc9408132b9c88e87c3Vikram Aggarwal        final int transition = mConversationListNeverShown
158cd09f5e9bf55e6f4310e8dc9408132b9c88e87c3Vikram Aggarwal                ? FragmentTransaction.TRANSIT_FRAGMENT_FADE
1599b87568c9e9f1c32a9672b315229866a58a1e757Mindy Pereira                : FragmentTransaction.TRANSIT_FRAGMENT_OPEN;
16001668eb393deaf8c8b8abf86be46109614a98631Mindy Pereira        Fragment conversationListFragment = ConversationListFragment.newInstance(listContext);
1613982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        if (!inInbox()) {
1623982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira            // Maintain fragment transaction history so we can get back to the
1633982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira            // fragment used to launch this list.
1643982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira            replaceFragment(conversationListFragment, transition);
1653982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        } else {
1663982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira            // If going to the inbox, clear the folder list transaction history.
1673982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira            mInbox = listContext.folder;
1683982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira            mLastConversationListTransactionId = replaceFragment(conversationListFragment,
1693982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira                    transition);
1703982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira            mLastFolderListTransactionId = INVALID_ID;
1713982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        }
1722175d0a93263672d4498458c81b404b0999134baVikram Aggarwal        mConversationListVisible = true;
173cd09f5e9bf55e6f4310e8dc9408132b9c88e87c3Vikram Aggarwal        mConversationListNeverShown = false;
17428d5f72e0ad0db75b6243ee8125bfe3aadbdcb85Mindy Pereira    }
17528d5f72e0ad0db75b6243ee8125bfe3aadbdcb85Mindy Pereira
17628d5f72e0ad0db75b6243ee8125bfe3aadbdcb85Mindy Pereira    @Override
1779b87568c9e9f1c32a9672b315229866a58a1e757Mindy Pereira    public void showConversation(Conversation conversation) {
178ec5cbf79b825c6f96d45e85015319c66470b7e57Vikram Aggarwal        super.showConversation(conversation);
17968f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira        if (mConvListContext != null && mConvListContext.isSearchResult()) {
18068f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira            mViewMode.enterSearchResultsConversationMode();
18168f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira        } else {
18268f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira            mViewMode.enterConversationMode();
18368f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira        }
1843982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        mLastConversationTransactionId = replaceFragment(
1853982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira                ConversationViewFragment.newInstance(mAccount, conversation),
1862175d0a93263672d4498458c81b404b0999134baVikram Aggarwal                FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
1872175d0a93263672d4498458c81b404b0999134baVikram Aggarwal        mConversationListVisible = false;
1889b87568c9e9f1c32a9672b315229866a58a1e757Mindy Pereira    }
1899b87568c9e9f1c32a9672b315229866a58a1e757Mindy Pereira
1909b87568c9e9f1c32a9672b315229866a58a1e757Mindy Pereira    @Override
1919b87568c9e9f1c32a9672b315229866a58a1e757Mindy Pereira    public void showFolderList() {
19201668eb393deaf8c8b8abf86be46109614a98631Mindy Pereira        mViewMode.enterFolderListMode();
1933982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        mLastFolderListTransactionId = replaceFragment(
1943982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira                FolderListFragment.newInstance(this, mAccount.folderListUri),
1952175d0a93263672d4498458c81b404b0999134baVikram Aggarwal                FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
1962175d0a93263672d4498458c81b404b0999134baVikram Aggarwal        mConversationListVisible = false;
1979b87568c9e9f1c32a9672b315229866a58a1e757Mindy Pereira    }
1989b87568c9e9f1c32a9672b315229866a58a1e757Mindy Pereira
1993982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    private int replaceFragment(Fragment fragment, int transition) {
200d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal        FragmentTransaction fragmentTransaction = mActivity.getFragmentManager().beginTransaction();
201d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal        fragmentTransaction.addToBackStack(null);
202d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal        fragmentTransaction.setTransition(transition);
2039b87568c9e9f1c32a9672b315229866a58a1e757Mindy Pereira        fragmentTransaction.replace(R.id.content_pane, fragment);
2043982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        int transactionId = fragmentTransaction.commitAllowingStateLoss();
205d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal        resetActionBarIcon();
2063982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        return transactionId;
207d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal    }
20801668eb393deaf8c8b8abf86be46109614a98631Mindy Pereira
2093982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    /**
2103982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira     * Back works as follows:
2113982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira     * 1) If the user is in the folder list view, go back
2123982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira     * to the account default inbox.
2133982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira     * 2) If the user is in a conversation list
2143982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira     * that is not the inbox AND:
2153982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira     *  a) they got there by going through the folder
2163982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira     *  list view, go back to the folder list view.
2173982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira     *  b) they got there by using some other means (account dropdown), go back to the inbox.
2183982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira     * 3) If the user is in a conversation, go back to the conversation list they were last in.
2193982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira     * 4) If the user is in the conversation list for the default account inbox,
2203982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira     * back exits the app.
2213982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira     */
22201668eb393deaf8c8b8abf86be46109614a98631Mindy Pereira    @Override
22301668eb393deaf8c8b8abf86be46109614a98631Mindy Pereira    public boolean onBackPressed() {
22401668eb393deaf8c8b8abf86be46109614a98631Mindy Pereira        int mode = mViewMode.getMode();
2253982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        if (mode == ViewMode.FOLDER_LIST) {
2263982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira            mLastFolderListTransactionId = INVALID_ID;
2273982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira            transitionToInbox();
22868f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira        } else if (mode == ViewMode.SEARCH_RESULTS_LIST) {
22968f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira            mActivity.finish();
2303982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        } else if (mode == ViewMode.CONVERSATION_LIST && !inInbox()) {
2313982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira            if (isTransactionIdValid(mLastFolderListTransactionId)) {
23230fd47bf1947da5ad813cb957b6cbe569dce563aMindy Pereira                // Go back to previous folder list.
2333982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira                mViewMode.enterFolderListMode();
2343982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira                mActivity.getFragmentManager().popBackStack(mLastFolderListTransactionId, 0);
2353982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira            } else {
2363982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira                // Go back to Inbox.
2373982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira                transitionToInbox();
2383982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira            }
23968f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira        } else if (mode == ViewMode.CONVERSATION || mode == ViewMode.SEARCH_RESULTS_CONVERSATION) {
240f5acda4a4b7c9e8ecacb41cb7d570ef426b6d4fcMindy Pereira            transitionBackToConversationListMode();
2413982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        } else {
2423982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira            mActivity.finish();
2433982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        }
2443982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        return true;
2453982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    }
2463982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira
2473982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    private void transitionToInbox() {
2488690e2b71e1a3dd812ce418c9607e21f3a88ab54Mindy Pereira        mViewMode.enterConversationListMode();
249f6acdade010b2d0f49fd425b33e7f7b376286490Mindy Pereira        if (mInbox == null) {
250f6acdade010b2d0f49fd425b33e7f7b376286490Mindy Pereira            loadInbox();
2513982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        } else {
252f6acdade010b2d0f49fd425b33e7f7b376286490Mindy Pereira            ConversationListContext listContext = ConversationListContext.forFolder(mContext,
253f6acdade010b2d0f49fd425b33e7f7b376286490Mindy Pereira                    mAccount, mInbox);
254f6acdade010b2d0f49fd425b33e7f7b376286490Mindy Pereira            // Set the correct context for what the conversation view will be now.
255f6acdade010b2d0f49fd425b33e7f7b376286490Mindy Pereira            onFolderChanged(mInbox);
256f6acdade010b2d0f49fd425b33e7f7b376286490Mindy Pereira            if (isTransactionIdValid(mLastConversationListTransactionId)) {
257f6acdade010b2d0f49fd425b33e7f7b376286490Mindy Pereira               // showConversationList(listContext);
258f6acdade010b2d0f49fd425b33e7f7b376286490Mindy Pereira                mActivity.getFragmentManager().popBackStack(mLastConversationListTransactionId, 0);
259f6acdade010b2d0f49fd425b33e7f7b376286490Mindy Pereira                resetActionBarIcon();
260f6acdade010b2d0f49fd425b33e7f7b376286490Mindy Pereira            } else {
261f6acdade010b2d0f49fd425b33e7f7b376286490Mindy Pereira                showConversationList(listContext);
262f6acdade010b2d0f49fd425b33e7f7b376286490Mindy Pereira            }
26301668eb393deaf8c8b8abf86be46109614a98631Mindy Pereira        }
26401668eb393deaf8c8b8abf86be46109614a98631Mindy Pereira    }
265f5acda4a4b7c9e8ecacb41cb7d570ef426b6d4fcMindy Pereira
2663982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    private boolean isTransactionIdValid(int id) {
2673982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira        return id >= 0;
2683982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    }
2693982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira
2703982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira    /**
2713982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira     * Up works as follows:
2723982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira     * 1) If the user is in a conversation list that is not the default account inbox,
2733982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira     * a conversation, or the folder list, up follows the rules of back.
2743982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira     * 2) If the user is in search results, up exits search
2753982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira     * mode and returns the user to whatever view they were in when they began search.
2763982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira     * 3) If the user is in the inbox, there is no up.
2773982e236fb2dd36d460df4dbf24e07e8ba55b3bdMindy Pereira     */
278f5acda4a4b7c9e8ecacb41cb7d570ef426b6d4fcMindy Pereira    @Override
279f5acda4a4b7c9e8ecacb41cb7d570ef426b6d4fcMindy Pereira    public boolean onUpPressed() {
280f5acda4a4b7c9e8ecacb41cb7d570ef426b6d4fcMindy Pereira        int mode = mViewMode.getMode();
28168f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira        if (mode == ViewMode.SEARCH_RESULTS_LIST) {
28268f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira            mActivity.finish();
28368f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira        } else if ((!inInbox() && mode == ViewMode.CONVERSATION_LIST)
28468f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira                || mode == ViewMode.CONVERSATION
28568f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira                || mode == ViewMode.FOLDER_LIST
28668f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira                || mode == ViewMode.SEARCH_RESULTS_CONVERSATION) {
287f5acda4a4b7c9e8ecacb41cb7d570ef426b6d4fcMindy Pereira            // Same as go back.
288f5acda4a4b7c9e8ecacb41cb7d570ef426b6d4fcMindy Pereira            mActivity.onBackPressed();
289f5acda4a4b7c9e8ecacb41cb7d570ef426b6d4fcMindy Pereira        }
290f5acda4a4b7c9e8ecacb41cb7d570ef426b6d4fcMindy Pereira        return true;
291f5acda4a4b7c9e8ecacb41cb7d570ef426b6d4fcMindy Pereira    }
292f5acda4a4b7c9e8ecacb41cb7d570ef426b6d4fcMindy Pereira
293f5acda4a4b7c9e8ecacb41cb7d570ef426b6d4fcMindy Pereira    private void transitionBackToConversationListMode() {
29468f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira        int mode = mViewMode.getMode();
29568f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira        if (mode == ViewMode.SEARCH_RESULTS_CONVERSATION) {
29668f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira            mViewMode.enterSearchResultsListMode();
29768f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira        } else {
29868f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira            mViewMode.enterConversationListMode();
29968f2e222b4ffccd9f67f02b3a9cfdb3841a7eb43Mindy Pereira        }
30021ab490d4919985d611bc36ae2d8aea86a911499Mindy Pereira        if (isTransactionIdValid(mLastConversationListTransactionId)) {
30121ab490d4919985d611bc36ae2d8aea86a911499Mindy Pereira            mActivity.getFragmentManager().popBackStack(mLastConversationListTransactionId, 0);
30221ab490d4919985d611bc36ae2d8aea86a911499Mindy Pereira            resetActionBarIcon();
30321ab490d4919985d611bc36ae2d8aea86a911499Mindy Pereira        } else {
30421ab490d4919985d611bc36ae2d8aea86a911499Mindy Pereira            ConversationListContext listContext = ConversationListContext.forFolder(mContext,
30521ab490d4919985d611bc36ae2d8aea86a911499Mindy Pereira                    mAccount, mInbox);
30621ab490d4919985d611bc36ae2d8aea86a911499Mindy Pereira            // Set the correct context for what the conversation view will be now.
30721ab490d4919985d611bc36ae2d8aea86a911499Mindy Pereira            onFolderChanged(mInbox);
30821ab490d4919985d611bc36ae2d8aea86a911499Mindy Pereira            showConversationList(listContext);
30921ab490d4919985d611bc36ae2d8aea86a911499Mindy Pereira        }
310f5acda4a4b7c9e8ecacb41cb7d570ef426b6d4fcMindy Pereira        resetActionBarIcon();
311f5acda4a4b7c9e8ecacb41cb7d570ef426b6d4fcMindy Pereira    }
312b849dfbda3c917f078a5c09f03906886c27ecbecMindy Pereira
313b849dfbda3c917f078a5c09f03906886c27ecbecMindy Pereira    @Override
314b849dfbda3c917f078a5c09f03906886c27ecbecMindy Pereira    public boolean shouldShowFirstConversation() {
315b849dfbda3c917f078a5c09f03906886c27ecbecMindy Pereira        return false;
316b849dfbda3c917f078a5c09f03906886c27ecbecMindy Pereira    }
317fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira
318fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira    @Override
319fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira    public boolean onOptionsItemSelected(MenuItem item) {
320fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira        boolean handled = true;
321fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira        final int id = item.getItemId();
322fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira        switch (id) {
323fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            case R.id.y_button: {
324fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                final Settings settings = mActivity.getSettings();
325fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                final boolean showDialog = (settings != null && settings.confirmArchive);
326fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                confirmAndDelete(showDialog, R.plurals.confirm_archive_conversation,
327fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                        mArchiveListener);
328fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                break;
329fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            }
330fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            case R.id.delete: {
331fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                final Settings settings = mActivity.getSettings();
332fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                final boolean showDialog = (settings != null && settings.confirmDelete);
333fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                confirmAndDelete(showDialog,
334fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                        R.plurals.confirm_delete_conversation, mDeleteListener);
335fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                break;
336fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            }
337fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            case R.id.change_folders:
338fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                new FoldersSelectionDialog(mActivity.getActivityContext(), mAccount, this,
339fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                        Collections.singletonList(mCurrentConversation)).show();
340fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                break;
341fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            case R.id.inside_conversation_unread:
342fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                updateCurrentConversation(ConversationColumns.READ, false);
343fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                break;
344fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            case R.id.mark_important:
345fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                updateCurrentConversation(ConversationColumns.PRIORITY,
346fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                        UIProvider.ConversationPriority.HIGH);
347fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                break;
348fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            case R.id.mark_not_important:
349fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                updateCurrentConversation(ConversationColumns.PRIORITY,
350fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                        UIProvider.ConversationPriority.LOW);
351fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                break;
352fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            case R.id.mute:
353fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                mConversationListFragment.requestDelete(mMuteListener);
354fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                break;
355fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            case R.id.report_spam:
356fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                mConversationListFragment.requestDelete(mSpamListener);
357fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                break;
358fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            default:
359fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                handled = false;
360fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                break;
361fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira        }
362fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira        return handled || super.onOptionsItemSelected(item);
363fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira    }
364fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira
365fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira    private class OnePaneDestructiveActionListener extends DestructiveActionListener {
366fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira        public OnePaneDestructiveActionListener(int action) {
367fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            super(action);
368fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira        }
369fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira
370fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira        @Override
371fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira        public void onActionComplete() {
372fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            Conversation next = null;
373fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            final ArrayList<Conversation> single = new ArrayList<Conversation>();
374fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            single.add(mCurrentConversation);
375fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            int mode = mViewMode.getMode();
376fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            if (mode == ViewMode.CONVERSATION) {
377fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                next = getNextConversation();
378fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            } else {
379fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                mConversationListFragment.onActionComplete();
380fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                mConversationListFragment.onUndoAvailable(new UndoOperation(1, mAction));
381fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            }
382fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            performConversationAction(single);
383fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            mConversationListFragment.requestListRefresh();
384fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            if (mode == ViewMode.CONVERSATION && next != null) {
385fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                showConversation(next);
386fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            } else {
387fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                onBackPressed();
388fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            }
389fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira        }
390fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira    }
391fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira
392fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira    protected void requestDelete(final ActionCompleteListener listener) {
393fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira        int pref = getAutoAdvanceSetting(mActivity);
394fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira        boolean canMove = false;
395fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira        int position = mCurrentConversation.position;
396fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            switch (pref) {
397fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                case AutoAdvance.NEWER:
398fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                    canMove = position - 1 >= 0;
399fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                    break;
400fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                case AutoAdvance.OLDER:
401fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                    Cursor c = mConversationListFragment.getConversationListCursor();
402fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                    if (c != null) {
403fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                        canMove = position + 1 < c.getCount();
404fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                    }
405fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                    break;
406fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            }
407fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira        if (pref == AutoAdvance.LIST || !canMove) {
408fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            onBackPressed();
409fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            mHandler.post(new Runnable() {
410fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira
411fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                @Override
412fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                public void run() {
413fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                    mConversationListFragment.requestDelete(listener);
414fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira                }
415fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira
416fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            });
417fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira        } else {
418fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira            mConversationListFragment.requestDelete(listener);
419fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira        }
420fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira    }
421fbe4019a262f6b1934a44e598009ae63dc5745eeMindy Pereira
422a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal}
423