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 20a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwalimport android.app.Dialog; 21a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwalimport android.content.Intent; 2257246a4bf94e8b440c0597fa4a8e4f4e8a46532aPaul Westbrookimport android.content.res.Configuration; 23a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwalimport android.os.Bundle; 2474470048daf58bc4e14130e9c8adec2db78c8163Tony Mantlerimport android.support.annotation.LayoutRes; 25a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwalimport android.view.KeyEvent; 26a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwalimport android.view.Menu; 27a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwalimport android.view.MenuItem; 28a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwalimport android.view.MotionEvent; 2953de448d6c67e56df4e3bcefb3e2d84c810e2e89Andrew Sappersteinimport android.view.View; 30a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal 31531488ed848766708252a5fdc01c4ecf0fd167d1Vikram Aggarwalimport com.android.mail.browse.ConversationCursor.ConversationListener; 324969e0c5f8ab837e1b0d29ea56d220e6404e9250Paul Westbrookimport com.android.mail.browse.ConversationListFooterView; 33acf6039a23382f18c35f6b487d90d53cb67b5858Mindy Pereiraimport com.android.mail.providers.Folder; 34bf232c3735f65b1a4746943e4a134e59e36f0bdePaul Westbrookimport com.android.mail.ui.ViewMode.ModeChangeListener; 35a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal 36a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal/** 37a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * An Activity controller knows how to combine views and listeners into a functioning activity. 38a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * ActivityControllers are delegates that implement methods by calling underlying views to modify, 39a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * or respond to user action. 40aa941d7e107f7ce09838bd4daf295259d126dfa2Vikram Aggarwal * 41aa941d7e107f7ce09838bd4daf295259d126dfa2Vikram Aggarwal * There are two ways of adding methods to this interface: 42aa941d7e107f7ce09838bd4daf295259d126dfa2Vikram Aggarwal * <ul> 43aa941d7e107f7ce09838bd4daf295259d126dfa2Vikram Aggarwal * <li>When the methods pertain to a single logical grouping: consider adding a new 44aa941d7e107f7ce09838bd4daf295259d126dfa2Vikram Aggarwal * interface and putting all the methods in that interface. As an example, 45aa941d7e107f7ce09838bd4daf295259d126dfa2Vikram Aggarwal * look at {@link AccountController}. The controller implements this, 46aa941d7e107f7ce09838bd4daf295259d126dfa2Vikram Aggarwal * and returns itself in 47aa941d7e107f7ce09838bd4daf295259d126dfa2Vikram Aggarwal * {@link com.android.mail.ui.ControllableActivity#getAccountController()}. This allows 48aa941d7e107f7ce09838bd4daf295259d126dfa2Vikram Aggarwal * for account-specific methods to be added without creating new methods in this interface 49aa941d7e107f7ce09838bd4daf295259d126dfa2Vikram Aggarwal * .</li> 50aa941d7e107f7ce09838bd4daf295259d126dfa2Vikram Aggarwal * <li>Methods that relate to an activity can be added directly. As an example, 51aa941d7e107f7ce09838bd4daf295259d126dfa2Vikram Aggarwal * look at {@link #onActivityResult(int, int, android.content.Intent)} which is identical to 52aa941d7e107f7ce09838bd4daf295259d126dfa2Vikram Aggarwal * its declaration in {@link android.app.Activity}.</li> 53aa941d7e107f7ce09838bd4daf295259d126dfa2Vikram Aggarwal * <li>Everything else. As an example, look at {@link #isDrawerEnabled()}. Try to avoid 54aa941d7e107f7ce09838bd4daf295259d126dfa2Vikram Aggarwal * this path because an implementation has to provided in many classes: 55aa941d7e107f7ce09838bd4daf295259d126dfa2Vikram Aggarwal * {@link MailActivity}, {@link FolderSelectionActivity}, and the controllers.</li> 56aa941d7e107f7ce09838bd4daf295259d126dfa2Vikram Aggarwal * </ul> 57a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal */ 585895f7b0e5fa921f6d46bbaf6d8c7b1a8ebc7804Andy Huangpublic interface ActivityController extends LayoutListener, 59531488ed848766708252a5fdc01c4ecf0fd167d1Vikram Aggarwal ModeChangeListener, ConversationListCallbacks, 60405a344937675f57fc9c6988b2b124410a270f13Jin Cao ConversationSetObserver, ConversationListener, FolderSelector, 61a57da3c151ae174bc8621af79f3f09392ed90953Ray Chen UndoListener, ConversationUpdater, ErrorListener, FolderController, AccountController, 6258cad2eea744d41a11c0124e91308e38108d242eVikram Aggarwal ConversationPositionTracker.Callbacks, ConversationListFooterView.FooterViewClickListener, 630b69338a45faa422ccba8faf64c9816c55d33e4aJin Cao RecentFolderController, FragmentLauncher, KeyboardNavigationController { 64a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal 65a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal // As far as possible, the methods here that correspond to Activity lifecycle have the same name 66a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal // as their counterpart in the Activity lifecycle. 67a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal 68a799795e91b2a8049914c4559fa2a89fc0133faaVikram Aggarwal 69a799795e91b2a8049914c4559fa2a89fc0133faaVikram Aggarwal /** 70a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @see android.app.Activity#onActivityResult 71a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @param requestCode 72a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @param resultCode 73a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @param data 74a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal */ 75a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal void onActivityResult(int requestCode, int resultCode, Intent data); 76a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal 77a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal /** 781ddcf0f2bf44d3c9db89112ef52510d9b2433ac4Vikram Aggarwal * Called by the Mail activity when the back button is pressed. Returning true consumes the 791ddcf0f2bf44d3c9db89112ef52510d9b2433ac4Vikram Aggarwal * event and disallows the calling method from trying to handle the back button any other way. 801ddcf0f2bf44d3c9db89112ef52510d9b2433ac4Vikram Aggarwal * 81a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @see android.app.Activity#onBackPressed() 821ddcf0f2bf44d3c9db89112ef52510d9b2433ac4Vikram Aggarwal * @return true if the back press was handled and the event was consumed. Return false if the 831ddcf0f2bf44d3c9db89112ef52510d9b2433ac4Vikram Aggarwal * event was not consumed. 84a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal */ 85a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal boolean onBackPressed(); 86a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal 87a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal /** 88a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * Called when the root activity calls onCreate. Any initialization needs to 89d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal * be done here. Subclasses need to call their parents' onCreate method, since it performs 90d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal * valuable initialization common to all subclasses. 91d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal * 92d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal * This was called initialize in Gmail. 93a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * 94a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @see android.app.Activity#onCreate 95a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @param savedState 96a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal */ 9787a8982af83168453b6dc219fe984bff68047bebAndy Huang void onCreate(Bundle savedState); 98a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal 99a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal /** 10057246a4bf94e8b440c0597fa4a8e4f4e8a46532aPaul Westbrook * @see android.app.Activity#onPostCreate 10157246a4bf94e8b440c0597fa4a8e4f4e8a46532aPaul Westbrook */ 10257246a4bf94e8b440c0597fa4a8e4f4e8a46532aPaul Westbrook void onPostCreate(Bundle savedState); 10357246a4bf94e8b440c0597fa4a8e4f4e8a46532aPaul Westbrook 10457246a4bf94e8b440c0597fa4a8e4f4e8a46532aPaul Westbrook /** 10557246a4bf94e8b440c0597fa4a8e4f4e8a46532aPaul Westbrook * @see android.app.Activity#onConfigurationChanged 10657246a4bf94e8b440c0597fa4a8e4f4e8a46532aPaul Westbrook */ 10757246a4bf94e8b440c0597fa4a8e4f4e8a46532aPaul Westbrook void onConfigurationChanged(Configuration newConfig); 10857246a4bf94e8b440c0597fa4a8e4f4e8a46532aPaul Westbrook 10957246a4bf94e8b440c0597fa4a8e4f4e8a46532aPaul Westbrook /** 1101ee96b2b100546b5b69ad42c5bc3755a4293d1a3Andy Huang * @see android.app.Activity#onStart 1111ee96b2b100546b5b69ad42c5bc3755a4293d1a3Andy Huang */ 1121ee96b2b100546b5b69ad42c5bc3755a4293d1a3Andy Huang void onStart(); 1131ee96b2b100546b5b69ad42c5bc3755a4293d1a3Andy Huang 1141ee96b2b100546b5b69ad42c5bc3755a4293d1a3Andy Huang /** 11500179f19e413461498599ab7e6eb6914cc5c3671Andrew Sapperstein * Called when the the root activity calls onRestart 11600179f19e413461498599ab7e6eb6914cc5c3671Andrew Sapperstein * @see android.app.Activity#onRestart 11700179f19e413461498599ab7e6eb6914cc5c3671Andrew Sapperstein */ 11800179f19e413461498599ab7e6eb6914cc5c3671Andrew Sapperstein void onRestart(); 11900179f19e413461498599ab7e6eb6914cc5c3671Andrew Sapperstein 12000179f19e413461498599ab7e6eb6914cc5c3671Andrew Sapperstein /** 121a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @see android.app.Activity#onCreateDialog(int, Bundle) 122a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @param id 123a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @param bundle 124a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @return 125a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal */ 126a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal Dialog onCreateDialog(int id, Bundle bundle); 127a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal 128a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal /** 129a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @see android.app.Activity#onCreateOptionsMenu(Menu) 130a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @param menu 131a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @return 132a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal */ 133a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal boolean onCreateOptionsMenu(Menu menu); 134a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal 135a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal /** 136a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @see android.app.Activity#onKeyDown(int, KeyEvent) 137a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @param keyCode 138a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @param event 139a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @return 140a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal */ 141a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal boolean onKeyDown(int keyCode, KeyEvent event); 142a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal 143a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal /** 144a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * Called by Mail activity when menu items are selected 145a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @see android.app.Activity#onOptionsItemSelected(MenuItem) 146a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @param item 147a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @return 148a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal */ 149a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal boolean onOptionsItemSelected(MenuItem item); 150a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal 151a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal /** 152a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * Called by the Mail activity on Activity pause. 153a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @see android.app.Activity#onPause 154a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal */ 155a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal void onPause(); 156a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal 157a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal /** 158632721e6b3a9ba8c476456f2e0fb1b564561e0b5Andy Huang * @see android.app.Activity#onDestroy 159632721e6b3a9ba8c476456f2e0fb1b564561e0b5Andy Huang */ 160632721e6b3a9ba8c476456f2e0fb1b564561e0b5Andy Huang void onDestroy(); 161632721e6b3a9ba8c476456f2e0fb1b564561e0b5Andy Huang 162632721e6b3a9ba8c476456f2e0fb1b564561e0b5Andy Huang /** 163a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @see android.app.Activity#onPrepareDialog 164a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @param id 165a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @param dialog 166a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @param bundle 167a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal */ 168a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal void onPrepareDialog(int id, Dialog dialog, Bundle bundle); 169a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal 170a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal /** 171a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * Called by the Mail activity when menu items need to be prepared. 172a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @see android.app.Activity#onPrepareOptionsMenu(Menu) 173a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @param menu 174a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @return 175a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal */ 17687a8982af83168453b6dc219fe984bff68047bebAndy Huang void onPrepareOptionsMenu(Menu menu); 177a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal 178a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal /** 179a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * Called by the Mail activity on Activity resume. 180a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @see android.app.Activity#onResume 181a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal */ 182a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal void onResume(); 183a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal 184a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal /** 185b1c34dc418e31ae0bfe1b73b6642ed42f5dad67bAndy Huang * @see android.app.Activity#onRestoreInstanceState 186b1c34dc418e31ae0bfe1b73b6642ed42f5dad67bAndy Huang */ 187b1c34dc418e31ae0bfe1b73b6642ed42f5dad67bAndy Huang void onRestoreInstanceState(Bundle savedInstanceState); 188b1c34dc418e31ae0bfe1b73b6642ed42f5dad67bAndy Huang 189b1c34dc418e31ae0bfe1b73b6642ed42f5dad67bAndy Huang /** 190a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @see android.app.Activity#onSaveInstanceState 191a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @param outState 192a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal */ 193a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal void onSaveInstanceState(Bundle outState); 194a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal 195a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal /** 196313ac13095a386be366bd25f8106fbb34b4a7098Andy Huang * Begin a search with the given query string. 197a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal */ 198313ac13095a386be366bd25f8106fbb34b4a7098Andy Huang void executeSearch(String query); 199a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal 200a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal /** 201a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * Called by the Mail activity on Activity stop. 202a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @see android.app.Activity#onStop 203a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal */ 204a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal void onStop(); 205a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal 206a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal /** 207a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * Called by the Mail activity when window focus changes. 208a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @see android.app.Activity#onWindowFocusChanged(boolean) 209a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal * @param hasFocus 210a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal */ 211a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal void onWindowFocusChanged(boolean hasFocus); 212a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal 213d7a12cd5b5c2639b653d8c671b04844ef02ee01dVikram Aggarwal /** 214674afa42682908640167fc6109b76f6f843e6fbeMindy Pereira * Handle a touch event. 215674afa42682908640167fc6109b76f6f843e6fbeMindy Pereira */ 216674afa42682908640167fc6109b76f6f843e6fbeMindy Pereira void onTouchEvent(MotionEvent event); 217efe3d25aa19da172fd5c3ec39539cdd91f29e927Mindy Pereira 218efe3d25aa19da172fd5c3ec39539cdd91f29e927Mindy Pereira /** 219b849dfbda3c917f078a5c09f03906886c27ecbecMindy Pereira * Returns whether the first conversation in the conversation list should be 220b849dfbda3c917f078a5c09f03906886c27ecbecMindy Pereira * automatically selected and shown. 221b849dfbda3c917f078a5c09f03906886c27ecbecMindy Pereira */ 222b849dfbda3c917f078a5c09f03906886c27ecbecMindy Pereira boolean shouldShowFirstConversation(); 223967ede63e059810d9d4d425c50111d606014c893Mindy Pereira 22448b2a6c5fe209f0603fdf85d35cf399f7f7d462eVikram Aggarwal /** 22548b2a6c5fe209f0603fdf85d35cf399f7f7d462eVikram Aggarwal * Get the selected set of conversations. Guaranteed to return non-null, this should return 22648b2a6c5fe209f0603fdf85d35cf399f7f7d462eVikram Aggarwal * an empty set if no conversation is currently selected. 22748b2a6c5fe209f0603fdf85d35cf399f7f7d462eVikram Aggarwal * @return 22848b2a6c5fe209f0603fdf85d35cf399f7f7d462eVikram Aggarwal */ 229ec0fa48764bede0772e9c711f3e33361b62f3608Jin Cao public ConversationCheckedSet getCheckedSet(); 230fd0c2974af56ad244006faab2651e054974a4b7bMindy Pereira 231fd0c2974af56ad244006faab2651e054974a4b7bMindy Pereira /** 232fd0c2974af56ad244006faab2651e054974a4b7bMindy Pereira * Start search mode if the account being view supports the search capability. 233fd0c2974af56ad244006faab2651e054974a4b7bMindy Pereira */ 234fd0c2974af56ad244006faab2651e054974a4b7bMindy Pereira void startSearch(); 235acf6039a23382f18c35f6b487d90d53cb67b5858Mindy Pereira 236acf6039a23382f18c35f6b487d90d53cb67b5858Mindy Pereira /** 23723aadfd1c83e08b6723d4cb9357b2908cc464a86Mindy Pereira * Return the folder currently being viewed by the activity. 23823aadfd1c83e08b6723d4cb9357b2908cc464a86Mindy Pereira */ 239c975e8416b64a1ebdec6adee7e65dd1d0928e8d4Mindy Pereira public Folder getHierarchyFolder(); 240c975e8416b64a1ebdec6adee7e65dd1d0928e8d4Mindy Pereira 241c975e8416b64a1ebdec6adee7e65dd1d0928e8d4Mindy Pereira /** 242cff1aeaff92efb9f7a03203d9f757a2820b87686Paul Westbrook * Handles the animation end of the animated adapter. 243cff1aeaff92efb9f7a03203d9f757a2820b87686Paul Westbrook */ 244cff1aeaff92efb9f7a03203d9f757a2820b87686Paul Westbrook void onAnimationEnd(AnimatedAdapter animatedAdapter); 2455390fcabb7baf683fc14bd68d8612913dac70a81mindyp 2465390fcabb7baf683fc14bd68d8612913dac70a81mindyp /** 247ca87de41285bde382a894b6cb2d13c112c5d7a2fmindyp * Called when Accessibility is enabled or disabled. 248ca87de41285bde382a894b6cb2d13c112c5d7a2fmindyp */ 249ca87de41285bde382a894b6cb2d13c112c5d7a2fmindyp void onAccessibilityStateChanged(); 2508c887ef97607ad5c2c94d1d3b902afe6d5ef95a0Paul Westbrook 2518c887ef97607ad5c2c94d1d3b902afe6d5ef95a0Paul Westbrook /** 2528c887ef97607ad5c2c94d1d3b902afe6d5ef95a0Paul Westbrook * Called to determine if the drawer is enabled for this controller/activity instance. 2538c887ef97607ad5c2c94d1d3b902afe6d5ef95a0Paul Westbrook * Note: the value returned should not change for this controller instance. 2548c887ef97607ad5c2c94d1d3b902afe6d5ef95a0Paul Westbrook */ 2558c887ef97607ad5c2c94d1d3b902afe6d5ef95a0Paul Westbrook boolean isDrawerEnabled(); 2565747e152fa606c20261b18431f4a9f0ff3be7b5aAndrew Sapperstein 2575747e152fa606c20261b18431f4a9f0ff3be7b5aAndrew Sapperstein /** 2585747e152fa606c20261b18431f4a9f0ff3be7b5aAndrew Sapperstein * Called to determine if menu items in the action bar should be hidden. 2595747e152fa606c20261b18431f4a9f0ff3be7b5aAndrew Sapperstein * Currently this is used for when the drawer is open to hide certain 2605747e152fa606c20261b18431f4a9f0ff3be7b5aAndrew Sapperstein * items that are not applicable while the drawer is open. 2615747e152fa606c20261b18431f4a9f0ff3be7b5aAndrew Sapperstein */ 26253de448d6c67e56df4e3bcefb3e2d84c810e2e89Andrew Sapperstein boolean shouldHideMenuItems(); 26361f26c2d1c1d3735cf883b58fe7e45550bb1a54cAndy Huang 26461f26c2d1c1d3735cf883b58fe7e45550bb1a54cAndy Huang DrawerController getDrawerController(); 26574470048daf58bc4e14130e9c8adec2db78c8163Tony Mantler 26674470048daf58bc4e14130e9c8adec2db78c8163Tony Mantler /** 26774470048daf58bc4e14130e9c8adec2db78c8163Tony Mantler * Called to determine the layout resource to use for the activity's content view. 26874470048daf58bc4e14130e9c8adec2db78c8163Tony Mantler * @return Resource ID 26974470048daf58bc4e14130e9c8adec2db78c8163Tony Mantler */ 27074470048daf58bc4e14130e9c8adec2db78c8163Tony Mantler @LayoutRes int getContentViewResource(); 27153de448d6c67e56df4e3bcefb3e2d84c810e2e89Andrew Sapperstein 27253de448d6c67e56df4e3bcefb3e2d84c810e2e89Andrew Sapperstein View.OnClickListener getNavigationViewClickListener(); 273c6801eb828627c37b8992584767c095dfe11df62Jin Cao 274090ea0188eec1cd29d84d5890cbba6aebfa6b6ceJin Cao /** 275090ea0188eec1cd29d84d5890cbba6aebfa6b6ceJin Cao * If the search bar should always be visible on top of the screen (e.g. search result list). 2767b45ff8538067edafe6b3d445e3880cd4858d267Jin Cao * @param viewMode the new view mode. This is passed as a parameter because we don't know 2777b45ff8538067edafe6b3d445e3880cd4858d267Jin Cao * which onViewModeChanged callback gets called first, so the view modes might differ. 278090ea0188eec1cd29d84d5890cbba6aebfa6b6ceJin Cao */ 2797b45ff8538067edafe6b3d445e3880cd4858d267Jin Cao boolean shouldShowSearchBarByDefault(int viewMode); 280090ea0188eec1cd29d84d5890cbba6aebfa6b6ceJin Cao 281090ea0188eec1cd29d84d5890cbba6aebfa6b6ceJin Cao /** 282090ea0188eec1cd29d84d5890cbba6aebfa6b6ceJin Cao * If we should show the search menu item. 283090ea0188eec1cd29d84d5890cbba6aebfa6b6ceJin Cao */ 284090ea0188eec1cd29d84d5890cbba6aebfa6b6ceJin Cao boolean shouldShowSearchMenuItem(); 285090ea0188eec1cd29d84d5890cbba6aebfa6b6ceJin Cao 286090ea0188eec1cd29d84d5890cbba6aebfa6b6ceJin Cao /** 287090ea0188eec1cd29d84d5890cbba6aebfa6b6ceJin Cao * Attach layout listener so our custom toolbar can listen to thread list layout events. 288090ea0188eec1cd29d84d5890cbba6aebfa6b6ceJin Cao */ 289524ded5f9d27dda75c53d256922a39c867857575Jin Cao void addConversationListLayoutListener(TwoPaneLayout.ConversationListLayoutListener listener); 290a55b36cb6b75ce8096812183651e89115300975aVikram Aggarwal} 291