EmailPreferenceActivity.java revision 8c03e2af9f439c6e0c6abb38b0c371da7ccdb72a
12ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler/*
22ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler * Copyright (C) 2010 The Android Open Source Project
32ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler *
42ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler * Licensed under the Apache License, Version 2.0 (the "License");
52ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler * you may not use this file except in compliance with the License.
62ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler * You may obtain a copy of the License at
72ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler *
82ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler *      http://www.apache.org/licenses/LICENSE-2.0
92ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler *
102ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler * Unless required by applicable law or agreed to in writing, software
112ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler * distributed under the License is distributed on an "AS IS" BASIS,
122ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler * See the License for the specific language governing permissions and
142ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler * limitations under the License.
152ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler */
162ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler
172ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadlerpackage com.android.email.activity.setup;
182ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler
1938089f6c4222ab56582899f1f228966c5ebf75e8Makoto Onukiimport android.app.ActionBar;
202ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadlerimport android.app.Fragment;
212ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadlerimport android.content.Intent;
22308ce9284793b597797994dfb1fb25155cbe0b20Makoto Onukiimport android.net.Uri;
232ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadlerimport android.os.Bundle;
2457f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadlerimport android.view.KeyEvent;
2597874770fc7cbe6a89a6ea706658fb42dff77a95Andy Stadlerimport android.view.Menu;
2697874770fc7cbe6a89a6ea706658fb42dff77a95Andy Stadlerimport android.view.MenuItem;
272ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler
2835b0e95ca795e17b6dc8dd98c7ab847d65d9aa0cMarc Blankimport com.android.email.R;
290e6a521747970d5427f10c25cdc070d2341dc93aBen Komaloimport com.android.emailcommon.utility.IntentUtilities;
30f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blankimport com.android.mail.providers.Folder;
31f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blankimport com.android.mail.providers.UIProvider.EditSettingsExtras;
327b9f7ff76fd9812d7e3ae4dd42c1ba97b6e347e7Tony Mantlerimport com.android.mail.ui.settings.MailPreferenceActivity;
3338f22dbf08664b885b4cf063ea665c02edfb1c32Paul Westbrookimport com.android.mail.utils.Utils;
3435b0e95ca795e17b6dc8dd98c7ab847d65d9aa0cMarc Blank
352ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadlerimport java.util.List;
362ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler
372ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler/**
38fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler * Handles account preferences, using multi-pane arrangement when possible.
39fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler *
40fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler * This activity uses the following fragments:
41fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler *   AccountSettingsFragment
42fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler *   GeneralPreferences
43fd14496c494a0d38c35c3788c9cc55f1984592e4Andrew Stadler *   DebugFragment
442ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler *
452ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler */
4606415a635f5f01d8e1620b29f44d68dc4dfdf435Tony Mantlerpublic class AccountSettings extends MailPreferenceActivity {
47308ce9284793b597797994dfb1fb25155cbe0b20Makoto Onuki    /*
48308ce9284793b597797994dfb1fb25155cbe0b20Makoto Onuki     * Intent to open account settings for account=1
49308ce9284793b597797994dfb1fb25155cbe0b20Makoto Onuki        adb shell am start -a android.intent.action.EDIT \
50308ce9284793b597797994dfb1fb25155cbe0b20Makoto Onuki            -d '"content://ui.email.android.com/settings?ACCOUNT_ID=1"'
51308ce9284793b597797994dfb1fb25155cbe0b20Makoto Onuki     */
52308ce9284793b597797994dfb1fb25155cbe0b20Makoto Onuki
539c65c146f3d8e60f35f46c815d4121749ad13abdAndrew Stadler    // Intent extras for our internal activity launch
543955f6794f23c1380749d4470b5f2264d2109adcBen Komalo    private static final String EXTRA_ENABLE_DEBUG = "AccountSettings.enable_debug";
552c26bb3b09700ce2531eedbe66d389d21107a416Martin Hibdon    // STOPSHIP: Do not ship with the debug menu allowed.
562c26bb3b09700ce2531eedbe66d389d21107a416Martin Hibdon    private static final boolean DEBUG_MENU_ALLOWED = false;
5757f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler
589c65c146f3d8e60f35f46c815d4121749ad13abdAndrew Stadler    // Intent extras for launch directly from system account manager
599c65c146f3d8e60f35f46c815d4121749ad13abdAndrew Stadler    // NOTE: This string must match the one in res/xml/account_preferences.xml
60fb9deb96c3af56bf422e28e8ae3b7b838f343155Tony Mantler    private static String INTENT_ACCOUNT_MANAGER_ENTRY;
615a3888f35b669ffb3cc785d7dfe4862879a3896cJorge Lugo
6257f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler    // Key codes used to open a debug settings fragment.
6357f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler    private static final int[] SECRET_KEY_CODES = {
6457f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler            KeyEvent.KEYCODE_D, KeyEvent.KEYCODE_E, KeyEvent.KEYCODE_B, KeyEvent.KEYCODE_U,
6557f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler            KeyEvent.KEYCODE_G
6657f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler            };
6757f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler    private int mSecretKeyCodeIndex = 0;
6857f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler
699c65c146f3d8e60f35f46c815d4121749ad13abdAndrew Stadler    // When the user taps "Email Preferences" 10 times in a row, we'll enable the debug settings.
7057f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler    private int mNumGeneralHeaderClicked = 0;
712ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler
7257f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler    private boolean mShowDebugMenu;
73dbb8b75a4bd201f8472a511ef77ca2ed05bd808bPaul Westbrook    private Uri mFeedbackUri;
74dbb8b75a4bd201f8472a511ef77ca2ed05bd808bPaul Westbrook    private MenuItem mFeedbackMenuItem;
752ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler
76c4d139c4f4d924eae0307e8349ae977441dabbedAlon Albert    @Override
77c4d139c4f4d924eae0307e8349ae977441dabbedAlon Albert    public Intent getIntent() {
78c4d139c4f4d924eae0307e8349ae977441dabbedAlon Albert        final Intent intent = super.getIntent();
79c4d139c4f4d924eae0307e8349ae977441dabbedAlon Albert        final long accountId = IntentUtilities.getAccountIdFromIntent(intent);
80c4d139c4f4d924eae0307e8349ae977441dabbedAlon Albert        if (accountId < 0) {
81c4d139c4f4d924eae0307e8349ae977441dabbedAlon Albert            return intent;
82c4d139c4f4d924eae0307e8349ae977441dabbedAlon Albert        }
83c4d139c4f4d924eae0307e8349ae977441dabbedAlon Albert        Intent modIntent = new Intent(intent);
84c4d139c4f4d924eae0307e8349ae977441dabbedAlon Albert        modIntent.putExtra(EXTRA_SHOW_FRAGMENT, AccountSettingsFragment.class.getCanonicalName());
85c4d139c4f4d924eae0307e8349ae977441dabbedAlon Albert        modIntent.putExtra(
86c4d139c4f4d924eae0307e8349ae977441dabbedAlon Albert                EXTRA_SHOW_FRAGMENT_ARGUMENTS,
87c4d139c4f4d924eae0307e8349ae977441dabbedAlon Albert                AccountSettingsFragment.buildArguments(
8806415a635f5f01d8e1620b29f44d68dc4dfdf435Tony Mantler                        IntentUtilities.getAccountNameFromIntent(intent)));
89c4d139c4f4d924eae0307e8349ae977441dabbedAlon Albert        modIntent.putExtra(EXTRA_NO_HEADERS, true);
90c4d139c4f4d924eae0307e8349ae977441dabbedAlon Albert        return modIntent;
91c4d139c4f4d924eae0307e8349ae977441dabbedAlon Albert    }
92c4d139c4f4d924eae0307e8349ae977441dabbedAlon Albert
932ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler    @Override
942ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler    public void onCreate(Bundle savedInstanceState) {
952ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler        super.onCreate(savedInstanceState);
962ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler
97f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank        final Intent i = getIntent();
98a2cc46c810eb802c172a4af8ecc67fca53dd584fDianne Hackborn        if (savedInstanceState == null) {
99a2cc46c810eb802c172a4af8ecc67fca53dd584fDianne Hackborn            // If we are not restarting from a previous instance, we need to
100a2cc46c810eb802c172a4af8ecc67fca53dd584fDianne Hackborn            // figure out the initial prefs to show.  (Otherwise, we want to
101a2cc46c810eb802c172a4af8ecc67fca53dd584fDianne Hackborn            // continue showing whatever the user last selected.)
102fb9deb96c3af56bf422e28e8ae3b7b838f343155Tony Mantler            if (INTENT_ACCOUNT_MANAGER_ENTRY == null) {
103fb9deb96c3af56bf422e28e8ae3b7b838f343155Tony Mantler                INTENT_ACCOUNT_MANAGER_ENTRY = getString(R.string.intent_account_manager_entry);
10474c79a50432fcbf127fbfeadc1a461263ea92135Marc Blank            }
105fb9deb96c3af56bf422e28e8ae3b7b838f343155Tony Mantler            if (INTENT_ACCOUNT_MANAGER_ENTRY.equals(i.getAction())) {
10606415a635f5f01d8e1620b29f44d68dc4dfdf435Tony Mantler                // This case occurs if we're changing account settings from Settings -> Accounts.
10706415a635f5f01d8e1620b29f44d68dc4dfdf435Tony Mantler                // We get an account object in the intent, but it's not actually useful to us since
10806415a635f5f01d8e1620b29f44d68dc4dfdf435Tony Mantler                // it's always just the first account of that type. The user can't specify which
10906415a635f5f01d8e1620b29f44d68dc4dfdf435Tony Mantler                // account they wish to view from within the settings UI, so just dump them at the
11006415a635f5f01d8e1620b29f44d68dc4dfdf435Tony Mantler                // main screen.
11106415a635f5f01d8e1620b29f44d68dc4dfdf435Tony Mantler                // android.accounts.Account acct = i.getParcelableExtra("account");
112f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank            } else if (i.hasExtra(EditSettingsExtras.EXTRA_FOLDER)) {
113f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank                launchMailboxSettings(i);
114f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank                return;
115a2cc46c810eb802c172a4af8ecc67fca53dd584fDianne Hackborn            } else {
116f4894131427ec7562fcb05388b9f3aa094e388bcAndy Stadler                // Otherwise, we're called from within the Email app and look for our extras
11706415a635f5f01d8e1620b29f44d68dc4dfdf435Tony Mantler                final long accountId = IntentUtilities.getAccountIdFromIntent(i);
11806415a635f5f01d8e1620b29f44d68dc4dfdf435Tony Mantler                if (accountId != -1) {
1198c03e2af9f439c6e0c6abb38b0c371da7ccdb72aTony Mantler                    final Bundle args = AccountSettingsFragment.buildArguments(accountId);
12006415a635f5f01d8e1620b29f44d68dc4dfdf435Tony Mantler                    startPreferencePanel(AccountSettingsFragment.class.getName(), args,
12106415a635f5f01d8e1620b29f44d68dc4dfdf435Tony Mantler                            0, null, null, 0);
122f4894131427ec7562fcb05388b9f3aa094e388bcAndy Stadler                }
123a2cc46c810eb802c172a4af8ecc67fca53dd584fDianne Hackborn            }
1249c65c146f3d8e60f35f46c815d4121749ad13abdAndrew Stadler        }
12557f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler        mShowDebugMenu = i.getBooleanExtra(EXTRA_ENABLE_DEBUG, false);
12638089f6c4222ab56582899f1f228966c5ebf75e8Makoto Onuki
12738089f6c4222ab56582899f1f228966c5ebf75e8Makoto Onuki        getActionBar().setDisplayOptions(
12838089f6c4222ab56582899f1f228966c5ebf75e8Makoto Onuki                ActionBar.DISPLAY_HOME_AS_UP, ActionBar.DISPLAY_HOME_AS_UP);
129b7d137bfb6b59b1a4da4b14eb6022ce0df7cf637Ben Komalo
130dbb8b75a4bd201f8472a511ef77ca2ed05bd808bPaul Westbrook        mFeedbackUri = Utils.getValidUri(getString(R.string.email_feedback_uri));
1312ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler    }
1322ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler
1332ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler    /**
13457f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler     * Listen for secret sequence and, if heard, enable debug menu
13557f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler     */
13657f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler    @Override
13757f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler    public boolean onKeyDown(int keyCode, KeyEvent event) {
13857f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler        if (event.getKeyCode() == SECRET_KEY_CODES[mSecretKeyCodeIndex]) {
13957f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler            mSecretKeyCodeIndex++;
14057f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler            if (mSecretKeyCodeIndex == SECRET_KEY_CODES.length) {
14157f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler                mSecretKeyCodeIndex = 0;
14257f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler                enableDebugMenu();
14357f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler            }
14457f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler        } else {
14557f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler            mSecretKeyCodeIndex = 0;
14657f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler        }
14757f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler        return super.onKeyDown(keyCode, event);
14857f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler    }
14957f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler
150b387560384d38e3280090176a0f3b2cf8b1f9ab5Andrew Stadler    @Override
15197874770fc7cbe6a89a6ea706658fb42dff77a95Andy Stadler    public boolean onCreateOptionsMenu(Menu menu) {
15297874770fc7cbe6a89a6ea706658fb42dff77a95Andy Stadler        super.onCreateOptionsMenu(menu);
153525e8ad321967b3f4b15cadf63efb3deafc216abPaul Westbrook        getMenuInflater().inflate(R.menu.settings_menu, menu);
154dbb8b75a4bd201f8472a511ef77ca2ed05bd808bPaul Westbrook
155dbb8b75a4bd201f8472a511ef77ca2ed05bd808bPaul Westbrook        mFeedbackMenuItem = menu.findItem(R.id.feedback_menu_item);
15697874770fc7cbe6a89a6ea706658fb42dff77a95Andy Stadler        return true;
15797874770fc7cbe6a89a6ea706658fb42dff77a95Andy Stadler    }
15897874770fc7cbe6a89a6ea706658fb42dff77a95Andy Stadler
15997874770fc7cbe6a89a6ea706658fb42dff77a95Andy Stadler    @Override
160dbb8b75a4bd201f8472a511ef77ca2ed05bd808bPaul Westbrook    public boolean onPrepareOptionsMenu(Menu menu) {
161dbb8b75a4bd201f8472a511ef77ca2ed05bd808bPaul Westbrook        super.onPrepareOptionsMenu(menu);
162dbb8b75a4bd201f8472a511ef77ca2ed05bd808bPaul Westbrook
163dbb8b75a4bd201f8472a511ef77ca2ed05bd808bPaul Westbrook        if (mFeedbackMenuItem != null) {
164dbb8b75a4bd201f8472a511ef77ca2ed05bd808bPaul Westbrook            // We only want to enable the feedback menu item, if there is a valid feedback uri
165dbb8b75a4bd201f8472a511ef77ca2ed05bd808bPaul Westbrook            mFeedbackMenuItem.setVisible(!Uri.EMPTY.equals(mFeedbackUri));
166dbb8b75a4bd201f8472a511ef77ca2ed05bd808bPaul Westbrook        }
167dbb8b75a4bd201f8472a511ef77ca2ed05bd808bPaul Westbrook        return true;
168dbb8b75a4bd201f8472a511ef77ca2ed05bd808bPaul Westbrook    }
169dbb8b75a4bd201f8472a511ef77ca2ed05bd808bPaul Westbrook
170dbb8b75a4bd201f8472a511ef77ca2ed05bd808bPaul Westbrook
171dbb8b75a4bd201f8472a511ef77ca2ed05bd808bPaul Westbrook    @Override
17297874770fc7cbe6a89a6ea706658fb42dff77a95Andy Stadler    public boolean onOptionsItemSelected(MenuItem item) {
17397874770fc7cbe6a89a6ea706658fb42dff77a95Andy Stadler        switch (item.getItemId()) {
17438089f6c4222ab56582899f1f228966c5ebf75e8Makoto Onuki            case android.R.id.home:
17538089f6c4222ab56582899f1f228966c5ebf75e8Makoto Onuki                // The app icon on the action bar is pressed.  Just emulate a back press.
17638089f6c4222ab56582899f1f228966c5ebf75e8Makoto Onuki                // TODO: this should navigate to the main screen, even if a sub-setting is open.
17738089f6c4222ab56582899f1f228966c5ebf75e8Makoto Onuki                // But we shouldn't just finish(), as we want to show "discard changes?" dialog
17838089f6c4222ab56582899f1f228966c5ebf75e8Makoto Onuki                // when necessary.
17938089f6c4222ab56582899f1f228966c5ebf75e8Makoto Onuki                onBackPressed();
18038089f6c4222ab56582899f1f228966c5ebf75e8Makoto Onuki                break;
18138f22dbf08664b885b4cf063ea665c02edfb1c32Paul Westbrook            case R.id.feedback_menu_item:
182dbb8b75a4bd201f8472a511ef77ca2ed05bd808bPaul Westbrook                Utils.sendFeedback(this, mFeedbackUri, false /* reportingProblem */);
18338f22dbf08664b885b4cf063ea665c02edfb1c32Paul Westbrook                break;
18497874770fc7cbe6a89a6ea706658fb42dff77a95Andy Stadler            default:
18597874770fc7cbe6a89a6ea706658fb42dff77a95Andy Stadler                return super.onOptionsItemSelected(item);
186b387560384d38e3280090176a0f3b2cf8b1f9ab5Andrew Stadler        }
18797874770fc7cbe6a89a6ea706658fb42dff77a95Andy Stadler        return true;
188b387560384d38e3280090176a0f3b2cf8b1f9ab5Andrew Stadler    }
189b387560384d38e3280090176a0f3b2cf8b1f9ab5Andrew Stadler
1903955f6794f23c1380749d4470b5f2264d2109adcBen Komalo    @Override
19106415a635f5f01d8e1620b29f44d68dc4dfdf435Tony Mantler    public boolean isValidFragment(String fragmentName) {
19206415a635f5f01d8e1620b29f44d68dc4dfdf435Tony Mantler        // This activity is not exported, so we can allow any fragment
19306415a635f5f01d8e1620b29f44d68dc4dfdf435Tony Mantler        return true;
194983e1ad53b3ca3105655bf6d961713c61060a7f8Andy Stadler    }
195983e1ad53b3ca3105655bf6d961713c61060a7f8Andy Stadler
196f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank    private void launchMailboxSettings(Intent intent) {
19726cd5e024c6af8ff9c8558325dd0930c9aacb370Tony Mantler        final Folder folder = intent.getParcelableExtra(EditSettingsExtras.EXTRA_FOLDER);
198f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank
199f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank        // TODO: determine from the account if we should navigate to the mailbox settings.
200f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank        // See bug 6242668
201f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank
202f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank        // Get the mailbox id from the folder
203281c6365fb95037ca284dd8c910538639e8b3dcbScott Kennedy        final long mailboxId =
204281c6365fb95037ca284dd8c910538639e8b3dcbScott Kennedy                Long.parseLong(folder.folderUri.fullUri.getPathSegments().get(1));
205f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank
206f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank        MailboxSettings.start(this, mailboxId);
207f419287f22ae44f25e1ba1f757ec33c7941bbfa8Marc Blank        finish();
20803cd72805dab0379ed255d151f1c17cc60655fc3Marc Blank    }
20903cd72805dab0379ed255d151f1c17cc60655fc3Marc Blank
21057f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler    private void enableDebugMenu() {
21157f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler        mShowDebugMenu = true;
21257f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler        invalidateHeaders();
21357f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler    }
21457f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler
215a14a24a5bc2ffa426f7ef8e5e6938cffe3f35829Andrew Stadler    private void onAddNewAccount() {
21676472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler        final Intent setupIntent = AccountSetupFinal.actionNewAccountIntent(this);
21776472ae40cd55d17edb0420e8fc2a7bae60c50deTony Mantler        startActivity(setupIntent);
218a14a24a5bc2ffa426f7ef8e5e6938cffe3f35829Andrew Stadler    }
219a14a24a5bc2ffa426f7ef8e5e6938cffe3f35829Andrew Stadler
2202ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler    @Override
22106415a635f5f01d8e1620b29f44d68dc4dfdf435Tony Mantler    public void onBuildExtraHeaders(List<Header> target) {
22206415a635f5f01d8e1620b29f44d68dc4dfdf435Tony Mantler        super.onBuildExtraHeaders(target);
22357f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler        // finally, if debug header is enabled, show it
2242c26bb3b09700ce2531eedbe66d389d21107a416Martin Hibdon        if (DEBUG_MENU_ALLOWED) {
2252c26bb3b09700ce2531eedbe66d389d21107a416Martin Hibdon            if (mShowDebugMenu) {
2262c26bb3b09700ce2531eedbe66d389d21107a416Martin Hibdon                // setup lightweight header for debugging
2272c26bb3b09700ce2531eedbe66d389d21107a416Martin Hibdon                final Header debugHeader = new Header();
2282c26bb3b09700ce2531eedbe66d389d21107a416Martin Hibdon                debugHeader.title = getText(R.string.debug_title);
2292c26bb3b09700ce2531eedbe66d389d21107a416Martin Hibdon                debugHeader.summary = null;
2302c26bb3b09700ce2531eedbe66d389d21107a416Martin Hibdon                debugHeader.iconRes = 0;
2312c26bb3b09700ce2531eedbe66d389d21107a416Martin Hibdon                debugHeader.fragment = DebugFragment.class.getCanonicalName();
2322c26bb3b09700ce2531eedbe66d389d21107a416Martin Hibdon                debugHeader.fragmentArguments = null;
2332c26bb3b09700ce2531eedbe66d389d21107a416Martin Hibdon                target.add(debugHeader);
2342c26bb3b09700ce2531eedbe66d389d21107a416Martin Hibdon            }
23557f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler        }
2362ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler    }
2372ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler
2382ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler    /**
2392ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler     * Called when the user selects an item in the header list.  Handles save-data cases as needed
2402ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler     *
2412ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler     * @param header The header that was selected.
2422ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler     * @param position The header's position in the list.
2432ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler     */
2442ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler    @Override
2452ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler    public void onHeaderClick(Header header, int position) {
2461a5e1e159352f6e21bde878eebca3e3a1896045cAndrew Stadler        // Secret keys:  Click 10x to enable debug settings
24757f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler        if (position == 0) {
24857f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler            mNumGeneralHeaderClicked++;
24957f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler            if (mNumGeneralHeaderClicked == 10) {
25057f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler                enableDebugMenu();
25157f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler            }
25257f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler        } else {
25357f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler            mNumGeneralHeaderClicked = 0;
25457f125a01b5fbb5860b144b3057153a50d07ddd1Andrew Stadler        }
2551a5e1e159352f6e21bde878eebca3e3a1896045cAndrew Stadler
2561a5e1e159352f6e21bde878eebca3e3a1896045cAndrew Stadler        // Process header click normally
2572ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler        super.onHeaderClick(header, position);
2582ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler    }
2592ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler
2603955f6794f23c1380749d4470b5f2264d2109adcBen Komalo    @Override
2613955f6794f23c1380749d4470b5f2264d2109adcBen Komalo    public void onAttachFragment(Fragment f) {
2623955f6794f23c1380749d4470b5f2264d2109adcBen Komalo        super.onAttachFragment(f);
2631a5e1e159352f6e21bde878eebca3e3a1896045cAndrew Stadler        // When we're changing fragments, enable/disable the add account button
26472a24f12a2a0a48528cf0f826397e2348fe8ace2Ben Komalo        invalidateOptionsMenu();
2652ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler    }
2662ae2a12d6b049a4347c0781bd4daa17229bf1340Andrew Stadler}
267