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