17c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal/* 27c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * Copyright (C) 2012 Google Inc. 37c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * Licensed to The Android Open Source Project. 47c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * 57c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * Licensed under the Apache License, Version 2.0 (the "License"); 67c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * you may not use this file except in compliance with the License. 77c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * You may obtain a copy of the License at 87c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * 97c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * http://www.apache.org/licenses/LICENSE-2.0 107c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * 117c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * Unless required by applicable law or agreed to in writing, software 127c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * distributed under the License is distributed on an "AS IS" BASIS, 137c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 147c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * See the License for the specific language governing permissions and 157c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * limitations under the License. 167c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal */ 177c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal 187c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwalpackage com.android.mail.ui; 197c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal 200f73d905c5e935a5280f8eb647cc924c2854b7deRohan Shahimport android.database.DataSetObservable; 217c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwalimport android.database.DataSetObserver; 22feb5b1ef0c9489c1ea727177f8bd423250b64990Scott Kennedyimport android.widget.ListView; 237c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal 247c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwalimport com.android.mail.providers.Account; 257c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwalimport com.android.mail.providers.AccountObserver; 26a1b59dcb4a8aaef821aa2f5c996f715ef130c985Vikram Aggarwalimport com.android.mail.providers.Folder; 2777ee0ceaefaa9be699a20bfbe162f4c0ef83c6e1Vikram Aggarwalimport com.android.mail.providers.FolderWatcher; 2869a6cdff8afde77ec9bcd75a5651ee212344019eVikram Aggarwalimport com.android.mail.utils.VeiledAddressMatcher; 297c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal 307c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal/** 317c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * This class consolidates account-specific actions taken by a mail activity. 327c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal */ 337c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwalpublic interface AccountController { 347c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal /** 357c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * Registers to receive changes to the current account, and obtain the current account. 367c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal */ 377c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal void registerAccountObserver(DataSetObserver observer); 387c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal 397c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal /** 407c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * Removes a listener from receiving current account changes. 417c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal */ 427c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal void unregisterAccountObserver(DataSetObserver observer); 437c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal 447c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal /** 457c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * Returns the current account in use by the controller. Instead of calling this method, 467c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * consider registering for account changes using 477c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * {@link AccountObserver#initialize(AccountController)}, which not only provides the current 487c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal * account, but also updates to the account, in case of settings changes. 497c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal */ 507c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal Account getAccount(); 5169a6cdff8afde77ec9bcd75a5651ee212344019eVikram Aggarwal 5207dbaa6989ea5c63ecf79b5ce7ec3a6a18a1ff35Vikram Aggarwal 5307dbaa6989ea5c63ecf79b5ce7ec3a6a18a1ff35Vikram Aggarwal /** 5407dbaa6989ea5c63ecf79b5ce7ec3a6a18a1ff35Vikram Aggarwal * Registers to receive changes to the list of accounts, and obtain the current list. 5507dbaa6989ea5c63ecf79b5ce7ec3a6a18a1ff35Vikram Aggarwal */ 5607dbaa6989ea5c63ecf79b5ce7ec3a6a18a1ff35Vikram Aggarwal void registerAllAccountObserver(DataSetObserver observer); 5707dbaa6989ea5c63ecf79b5ce7ec3a6a18a1ff35Vikram Aggarwal 5807dbaa6989ea5c63ecf79b5ce7ec3a6a18a1ff35Vikram Aggarwal /** 5907dbaa6989ea5c63ecf79b5ce7ec3a6a18a1ff35Vikram Aggarwal * Removes a listener from receiving account list changes. 6007dbaa6989ea5c63ecf79b5ce7ec3a6a18a1ff35Vikram Aggarwal */ 6107dbaa6989ea5c63ecf79b5ce7ec3a6a18a1ff35Vikram Aggarwal void unregisterAllAccountObserver(DataSetObserver observer); 6207dbaa6989ea5c63ecf79b5ce7ec3a6a18a1ff35Vikram Aggarwal 6307dbaa6989ea5c63ecf79b5ce7ec3a6a18a1ff35Vikram Aggarwal /** Returns a list of all accounts currently known. */ 6407dbaa6989ea5c63ecf79b5ce7ec3a6a18a1ff35Vikram Aggarwal Account[] getAllAccounts(); 6507dbaa6989ea5c63ecf79b5ce7ec3a6a18a1ff35Vikram Aggarwal 6669a6cdff8afde77ec9bcd75a5651ee212344019eVikram Aggarwal /** 6769a6cdff8afde77ec9bcd75a5651ee212344019eVikram Aggarwal * Returns an object that can check veiled addresses. 6869a6cdff8afde77ec9bcd75a5651ee212344019eVikram Aggarwal * @return 6969a6cdff8afde77ec9bcd75a5651ee212344019eVikram Aggarwal */ 7069a6cdff8afde77ec9bcd75a5651ee212344019eVikram Aggarwal VeiledAddressMatcher getVeiledAddressMatcher(); 7107dbaa6989ea5c63ecf79b5ce7ec3a6a18a1ff35Vikram Aggarwal 7207dbaa6989ea5c63ecf79b5ce7ec3a6a18a1ff35Vikram Aggarwal /** 734cbb0da3cd701ee0c06237ded965648d68c663c8Andrew Sapperstein * Handles selecting the currently active account from within 744cbb0da3cd701ee0c06237ded965648d68c663c8Andrew Sapperstein * the {@link FolderListFragment}. 754cbb0da3cd701ee0c06237ded965648d68c663c8Andrew Sapperstein */ 764cbb0da3cd701ee0c06237ded965648d68c663c8Andrew Sapperstein void switchToDefaultInboxOrChangeAccount(Account account); 770f73d905c5e935a5280f8eb647cc924c2854b7deRohan Shah 780f73d905c5e935a5280f8eb647cc924c2854b7deRohan Shah /** 790f73d905c5e935a5280f8eb647cc924c2854b7deRohan Shah * Registers to receive changes upon drawer closing when a changeAccount is called. 800f73d905c5e935a5280f8eb647cc924c2854b7deRohan Shah */ 8154022ee4c98f02401ca567e643f24ed42aebe203Tony Mantler void registerFolderOrAccountChangedObserver(final DataSetObserver observer); 820f73d905c5e935a5280f8eb647cc924c2854b7deRohan Shah 830f73d905c5e935a5280f8eb647cc924c2854b7deRohan Shah /** 840f73d905c5e935a5280f8eb647cc924c2854b7deRohan Shah * Removes a listener from receiving current account changes. 850f73d905c5e935a5280f8eb647cc924c2854b7deRohan Shah */ 8654022ee4c98f02401ca567e643f24ed42aebe203Tony Mantler void unregisterFolderOrAccountChangedObserver(final DataSetObserver observer); 870f73d905c5e935a5280f8eb647cc924c2854b7deRohan Shah 880f73d905c5e935a5280f8eb647cc924c2854b7deRohan Shah /** 890f73d905c5e935a5280f8eb647cc924c2854b7deRohan Shah * When the {@link FolderListFragment} has a new account ready for changing to, 900f73d905c5e935a5280f8eb647cc924c2854b7deRohan Shah * close the drawer and then wait for {@link DataSetObservable#notifyChanged()}. 918bcb7c5c37ffd5a1a0c5f4efbcab084830d5e033Rohan Shah * @param hasNewFolderOrAccount true if we need to load conversations for a different folder 928bcb7c5c37ffd5a1a0c5f4efbcab084830d5e033Rohan Shah * or account, false otherwise. 930f73d905c5e935a5280f8eb647cc924c2854b7deRohan Shah */ 94a1b59dcb4a8aaef821aa2f5c996f715ef130c985Vikram Aggarwal void closeDrawer(boolean hasNewFolderOrAccount, Account nextAccount, Folder nextFolder); 9577ee0ceaefaa9be699a20bfbe162f4c0ef83c6e1Vikram Aggarwal 9677ee0ceaefaa9be699a20bfbe162f4c0ef83c6e1Vikram Aggarwal /** 9777ee0ceaefaa9be699a20bfbe162f4c0ef83c6e1Vikram Aggarwal * Set the folderWatcher 9877ee0ceaefaa9be699a20bfbe162f4c0ef83c6e1Vikram Aggarwal */ 9977ee0ceaefaa9be699a20bfbe162f4c0ef83c6e1Vikram Aggarwal void setFolderWatcher(FolderWatcher watcher); 1008a72b8590d9166ada55f69eeb083d2b8c5c915c9Scott Kennedy 1018a72b8590d9166ada55f69eeb083d2b8c5c915c9Scott Kennedy /** 1028a72b8590d9166ada55f69eeb083d2b8c5c915c9Scott Kennedy * @return <code>true</code> if the drawer pull action is enabled, <code>false</code> otherwise 1038a72b8590d9166ada55f69eeb083d2b8c5c915c9Scott Kennedy */ 1048a72b8590d9166ada55f69eeb083d2b8c5c915c9Scott Kennedy boolean isDrawerPullEnabled(); 105feb5b1ef0c9489c1ea727177f8bd423250b64990Scott Kennedy 106feb5b1ef0c9489c1ea727177f8bd423250b64990Scott Kennedy /** 107feb5b1ef0c9489c1ea727177f8bd423250b64990Scott Kennedy * @return the choice mode to use in the {@link ListView} in the default folder list (subclasses 108feb5b1ef0c9489c1ea727177f8bd423250b64990Scott Kennedy * of {@link FolderListFragment} may override this 109feb5b1ef0c9489c1ea727177f8bd423250b64990Scott Kennedy */ 110feb5b1ef0c9489c1ea727177f8bd423250b64990Scott Kennedy int getFolderListViewChoiceMode(); 1117c401b7896910c00e6234e8774aab0be45740d32Vikram Aggarwal} 112