From b387560384d38e3280090176a0f3b2cf8b1f9ab5 Mon Sep 17 00:00:00 2001 From: Andrew Stadler Date: Wed, 1 Sep 2010 14:24:32 -0700 Subject: [PATCH] Move Add Account button to new Footer position Change-Id: I662f6cbfd8db80f4b383e6204afcf460764f4d4c --- res/menu/account_settings_option.xml | 23 -------- .../activity/setup/AccountSettingsXL.java | 58 ++++++++----------- 2 files changed, 25 insertions(+), 56 deletions(-) delete mode 100644 res/menu/account_settings_option.xml diff --git a/res/menu/account_settings_option.xml b/res/menu/account_settings_option.xml deleted file mode 100644 index bba543811..000000000 --- a/res/menu/account_settings_option.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - diff --git a/src/com/android/email/activity/setup/AccountSettingsXL.java b/src/com/android/email/activity/setup/AccountSettingsXL.java index 117b72517..d8a4f046e 100644 --- a/src/com/android/email/activity/setup/AccountSettingsXL.java +++ b/src/com/android/email/activity/setup/AccountSettingsXL.java @@ -37,8 +37,9 @@ import android.preference.PreferenceActivity; import android.preference.PreferenceFragment; import android.util.Log; import android.view.KeyEvent; -import android.view.Menu; -import android.view.MenuItem; +import android.view.View; +import android.view.View.OnClickListener; +import android.widget.Button; import java.util.List; @@ -49,14 +50,13 @@ import java.util.List; * TODO: Incorporate entry point & other stuff to support launch from AccountManager * TODO: In Account settings in Phone UI, change title * TODO: Rework all remaining calls to DB from UI thread - * TODO: (When available in PreferenceActivity) use a dedicated "add account" button * TODO: Delete account - on single-pane view (phone UX) the account list doesn't update properly * TODO: Handle dynamic changes to the account list (exit if necessary). It probably makes * sense to use a loader for the accounts list, because it would provide better support for * dealing with accounts being added/deleted and triggering the header reload. */ public class AccountSettingsXL extends PreferenceActivity - implements AccountSettingsFragment.OnAttachListener { + implements AccountSettingsFragment.OnAttachListener, OnClickListener { private static final String EXTRA_ACCOUNT_ID = "AccountSettingsXL.account_id"; private static final String EXTRA_ENABLE_DEBUG = "AccountSettingsXL.enable_debug"; @@ -80,6 +80,7 @@ public class AccountSettingsXL extends PreferenceActivity private Fragment mCurrentFragment; private long mDeletingAccountId = -1; private boolean mShowDebugMenu; + private Button mAddAccountButton; // Async Tasks private LoadAccountListTask mLoadAccountListTask; @@ -114,6 +115,17 @@ public class AccountSettingsXL extends PreferenceActivity Intent i = getIntent(); mRequestedAccountId = i.getLongExtra(EXTRA_ACCOUNT_ID, -1); mShowDebugMenu = i.getBooleanExtra(EXTRA_ENABLE_DEBUG, false); + + // Add Account as header list footer + // TODO: This probably should be some sort of themed layout with a button in it + if (hasHeaders()) { + mAddAccountButton = new Button(this); + mAddAccountButton.setText(R.string.add_account_action); + mAddAccountButton.setOnClickListener(this); + mAddAccountButton.setEnabled(false); + setListFooter(mAddAccountButton); + } + } @Override @@ -129,33 +141,6 @@ public class AccountSettingsXL extends PreferenceActivity mLoadAccountListTask = null; } - /** - * Only show "add account" when header showing and not in a sub-fragment (like incoming) - * - * TODO: it might make more sense to do this by having fragments add the items, except for - * this problem: How do we add items that are shown in single pane headers-only mode? - */ - @Override - public boolean onCreateOptionsMenu(Menu menu) { - super.onCreateOptionsMenu(menu); - if (shouldShowNewAccount()) { - getMenuInflater().inflate(R.menu.account_settings_option, menu); - } - return true; - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case R.id.add_new_account: - onAddNewAccount(); - break; - default: - return super.onOptionsItemSelected(item); - } - return true; - } - /** * Listen for secret sequence and, if heard, enable debug menu */ @@ -173,6 +158,13 @@ public class AccountSettingsXL extends PreferenceActivity return super.onKeyDown(keyCode, event); } + @Override + public void onClick(View v) { + if (v == mAddAccountButton) { + onAddNewAccount(); + } + } + private void enableDebugMenu() { mShowDebugMenu = true; invalidateHeaders(); @@ -375,8 +367,8 @@ public class AccountSettingsXL extends PreferenceActivity } else if (f instanceof AccountSetupExchangeFragment) { // TODO } - // Since we're changing fragments, reset the options menu (not all choices are shown) - invalidateOptionsMenu(); + // Since we're changing fragments, enable/disable the add account button + mAddAccountButton.setEnabled(shouldShowNewAccount()); } /**