AccountSetupOptions.java revision a3c6c6ed294d5a1fb0662fdacc1388944487fdf2
196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project/* 296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * 496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * you may not use this file except in compliance with the License. 696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * You may obtain a copy of the License at 796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * 896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * 1096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * See the License for the specific language governing permissions and 1496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project * limitations under the License. 1596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project */ 1696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 1796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectpackage com.android.email.activity.setup; 1896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 192b0c619f1edd9fd89dc06bf35d99ece91f415f1eAndy Stadlerimport com.android.email.Email; 202b0c619f1edd9fd89dc06bf35d99ece91f415f1eAndy Stadlerimport com.android.email.R; 21ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadlerimport com.android.email.mail.Store; 22948c36f47ac5bb3c47c85cd6269b188a82f458c3Marc Blankimport com.android.email.mail.store.ExchangeStore; 23a290f503f14432163f74548a5e5d1dc5003ad049Marc Blankimport com.android.email.provider.EmailContent; 242b0c619f1edd9fd89dc06bf35d99ece91f415f1eAndy Stadler 25a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blankimport android.accounts.AccountManagerCallback; 26a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blankimport android.accounts.AccountManagerFuture; 27a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blankimport android.accounts.AuthenticatorException; 28a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blankimport android.accounts.OperationCanceledException; 2996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.app.Activity; 30a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blankimport android.app.AlertDialog; 31a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blankimport android.content.DialogInterface; 3296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.content.Intent; 3396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.os.Bundle; 34a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blankimport android.os.Handler; 35a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blankimport android.util.Log; 3696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.view.View; 3796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.view.View.OnClickListener; 3896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.widget.ArrayAdapter; 3996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.widget.CheckBox; 4096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.widget.Spinner; 4196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 42a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blankimport java.io.IOException; 43a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank 4496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectpublic class AccountSetupOptions extends Activity implements OnClickListener { 4596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 46294a4fd0c6b15c1f8f41ca03be66ed95e16e5a6dAndrew Stadler private static final String EXTRA_ACCOUNT = "account"; 4796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project private static final String EXTRA_MAKE_DEFAULT = "makeDefault"; 48bcff14acf25d3a999b7448e317604e694c204f47Andrew Stadler private static final String EXTRA_EAS_FLOW = "easFlow"; 4996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 5096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project private Spinner mCheckFrequencyView; 519197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler private Spinner mSyncWindowView; 5296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project private CheckBox mDefaultView; 5396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project private CheckBox mNotifyView; 54bcff14acf25d3a999b7448e317604e694c204f47Andrew Stadler private CheckBox mSyncContactsView; 55a290f503f14432163f74548a5e5d1dc5003ad049Marc Blank private EmailContent.Account mAccount; 56bcff14acf25d3a999b7448e317604e694c204f47Andrew Stadler private boolean mEasFlowMode; 57a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank private Handler mHandler = new Handler(); 589019315b2642d58691cf09d32c07c0cf902f0a41Andrew Stadler 59a290f503f14432163f74548a5e5d1dc5003ad049Marc Blank public static void actionOptions(Activity fromActivity, EmailContent.Account account, 60bcff14acf25d3a999b7448e317604e694c204f47Andrew Stadler boolean makeDefault, boolean easFlowMode) { 619019315b2642d58691cf09d32c07c0cf902f0a41Andrew Stadler Intent i = new Intent(fromActivity, AccountSetupOptions.class); 629019315b2642d58691cf09d32c07c0cf902f0a41Andrew Stadler i.putExtra(EXTRA_ACCOUNT, account); 639019315b2642d58691cf09d32c07c0cf902f0a41Andrew Stadler i.putExtra(EXTRA_MAKE_DEFAULT, makeDefault); 64bcff14acf25d3a999b7448e317604e694c204f47Andrew Stadler i.putExtra(EXTRA_EAS_FLOW, easFlowMode); 659019315b2642d58691cf09d32c07c0cf902f0a41Andrew Stadler fromActivity.startActivity(i); 6696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 6796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 6896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project @Override 6996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void onCreate(Bundle savedInstanceState) { 7096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project super.onCreate(savedInstanceState); 7196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project setContentView(R.layout.account_setup_options); 7296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 7396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project mCheckFrequencyView = (Spinner)findViewById(R.id.account_check_frequency); 749197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler mSyncWindowView = (Spinner) findViewById(R.id.account_sync_window); 7596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project mDefaultView = (CheckBox)findViewById(R.id.account_default); 7696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project mNotifyView = (CheckBox)findViewById(R.id.account_notify); 77bcff14acf25d3a999b7448e317604e694c204f47Andrew Stadler mSyncContactsView = (CheckBox) findViewById(R.id.account_sync_contacts); 7896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 7996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project findViewById(R.id.next).setOnClickListener(this); 8096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 81a290f503f14432163f74548a5e5d1dc5003ad049Marc Blank mAccount = (EmailContent.Account) getIntent().getParcelableExtra(EXTRA_ACCOUNT); 82ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler boolean makeDefault = getIntent().getBooleanExtra(EXTRA_MAKE_DEFAULT, false); 83a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank 84ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler // Generate spinner entries using XML arrays used by the preferences 85ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler int frequencyValuesId; 86ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler int frequencyEntriesId; 87294a4fd0c6b15c1f8f41ca03be66ed95e16e5a6dAndrew Stadler Store.StoreInfo info = Store.StoreInfo.getStoreInfo(mAccount.getStoreUri(this), this); 88ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler if (info.mPushSupported) { 89ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler frequencyValuesId = R.array.account_settings_check_frequency_values_push; 90ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler frequencyEntriesId = R.array.account_settings_check_frequency_entries_push; 91ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler } else { 92ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler frequencyValuesId = R.array.account_settings_check_frequency_values; 93ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler frequencyEntriesId = R.array.account_settings_check_frequency_entries; 94ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler } 95ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler CharSequence[] frequencyValues = getResources().getTextArray(frequencyValuesId); 96ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler CharSequence[] frequencyEntries = getResources().getTextArray(frequencyEntriesId); 97a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank 98ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler // Now create the array used by the Spinner 99ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler SpinnerOption[] checkFrequencies = new SpinnerOption[frequencyEntries.length]; 100ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler for (int i = 0; i < frequencyEntries.length; i++) { 101ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler checkFrequencies[i] = new SpinnerOption( 102ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler Integer.valueOf(frequencyValues[i].toString()), frequencyEntries[i].toString()); 103ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler } 10496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 10596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project ArrayAdapter<SpinnerOption> checkFrequenciesAdapter = new ArrayAdapter<SpinnerOption>(this, 10696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project android.R.layout.simple_spinner_item, checkFrequencies); 10796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project checkFrequenciesAdapter 10896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 10996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project mCheckFrequencyView.setAdapter(checkFrequenciesAdapter); 110a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank 1119197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler if (info.mVisibleLimitDefault == -1) { 1129197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler enableEASSyncWindowSpinner(); 1139197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler } 11496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 11554c1f2bf9a6574240b7c9af253f83a2b566442abAndrew Stadler // Note: It is OK to use mAccount.mIsDefault here *only* because the account 11654c1f2bf9a6574240b7c9af253f83a2b566442abAndrew Stadler // has not been written to the DB yet. Ordinarily, call Account.getDefaultAccountId(). 117294a4fd0c6b15c1f8f41ca03be66ed95e16e5a6dAndrew Stadler if (mAccount.mIsDefault || makeDefault) { 11896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project mDefaultView.setChecked(true); 11996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 120294a4fd0c6b15c1f8f41ca03be66ed95e16e5a6dAndrew Stadler mNotifyView.setChecked( 121a290f503f14432163f74548a5e5d1dc5003ad049Marc Blank (mAccount.getFlags() & EmailContent.Account.FLAGS_NOTIFY_NEW_MAIL) != 0); 12296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project SpinnerOption.setSpinnerOptionValue(mCheckFrequencyView, mAccount 1239e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857Andrew Stadler .getSyncInterval()); 124bcff14acf25d3a999b7448e317604e694c204f47Andrew Stadler 125bcff14acf25d3a999b7448e317604e694c204f47Andrew Stadler // Setup any additional items to support EAS & EAS flow mode 126bcff14acf25d3a999b7448e317604e694c204f47Andrew Stadler mEasFlowMode = getIntent().getBooleanExtra(EXTRA_EAS_FLOW, false); 127bcff14acf25d3a999b7448e317604e694c204f47Andrew Stadler if ("eas".equals(info.mScheme)) { 128bcff14acf25d3a999b7448e317604e694c204f47Andrew Stadler // "also sync contacts" == "true" 129bcff14acf25d3a999b7448e317604e694c204f47Andrew Stadler mSyncContactsView.setVisibility(View.VISIBLE); 130bcff14acf25d3a999b7448e317604e694c204f47Andrew Stadler mSyncContactsView.setChecked(true); 131bcff14acf25d3a999b7448e317604e694c204f47Andrew Stadler } 13296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 13396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 134a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank AccountManagerCallback<Bundle> mAccountManagerCallback = new AccountManagerCallback<Bundle>() { 135a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank public void run(AccountManagerFuture<Bundle> future) { 136a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank try { 137a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank Bundle bundle = future.getResult(); 138a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank bundle.keySet(); 139a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank mHandler.post(new Runnable() { 140a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank public void run() { 141a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank finishOnDone(); 142a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank } 143a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank }); 144a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank return; 145a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank } catch (OperationCanceledException e) { 146a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank Log.d(Email.LOG_TAG, "addAccount was canceled"); 147a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank } catch (IOException e) { 148a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank Log.d(Email.LOG_TAG, "addAccount failed: " + e); 149a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank } catch (AuthenticatorException e) { 150a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank Log.d(Email.LOG_TAG, "addAccount failed: " + e); 151a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank } 152a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank showErrorDialog(R.string.account_setup_failed_dlg_auth_message, 153a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank R.string.system_account_create_failed); 154a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank } 155a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank }; 156a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank 157a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank private void showErrorDialog(final int msgResId, final Object... args) { 158a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank mHandler.post(new Runnable() { 159a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank public void run() { 160a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank new AlertDialog.Builder(AccountSetupOptions.this) 161a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank .setIcon(android.R.drawable.ic_dialog_alert) 162a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank .setTitle(getString(R.string.account_setup_failed_dlg_title)) 163a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank .setMessage(getString(msgResId, args)) 164a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank .setCancelable(true) 165a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank .setPositiveButton( 166a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank getString(R.string.account_setup_failed_dlg_edit_details_action), 167a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank new DialogInterface.OnClickListener() { 168a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank public void onClick(DialogInterface dialog, int which) { 169a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank finish(); 170a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank } 171a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank }) 172a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank .show(); 173a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank } 174a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank }); 175a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank } 176a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank private void finishOnDone() { 177a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank AccountSettingsUtils.commitSettings(this, mAccount); 178a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank Email.setServicesEnabled(this); 179a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank AccountSetupNames.actionSetNames(this, mAccount.mId, mEasFlowMode); 180a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank finish(); 181a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank } 182a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank 18396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project private void onDone() { 1849e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857Andrew Stadler mAccount.setDisplayName(mAccount.getEmailAddress()); 185a290f503f14432163f74548a5e5d1dc5003ad049Marc Blank int newFlags = mAccount.getFlags() & ~(EmailContent.Account.FLAGS_NOTIFY_NEW_MAIL); 186294a4fd0c6b15c1f8f41ca03be66ed95e16e5a6dAndrew Stadler if (mNotifyView.isChecked()) { 187a290f503f14432163f74548a5e5d1dc5003ad049Marc Blank newFlags |= EmailContent.Account.FLAGS_NOTIFY_NEW_MAIL; 188294a4fd0c6b15c1f8f41ca03be66ed95e16e5a6dAndrew Stadler } 189294a4fd0c6b15c1f8f41ca03be66ed95e16e5a6dAndrew Stadler mAccount.setFlags(newFlags); 1909e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857Andrew Stadler mAccount.setSyncInterval((Integer)((SpinnerOption)mCheckFrequencyView 19196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project .getSelectedItem()).value); 1929197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler if (mSyncWindowView.getVisibility() == View.VISIBLE) { 1939197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler int window = (Integer)((SpinnerOption)mSyncWindowView.getSelectedItem()).value; 1949e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857Andrew Stadler mAccount.setSyncLookback(window); 1959197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler } 196294a4fd0c6b15c1f8f41ca03be66ed95e16e5a6dAndrew Stadler mAccount.setDefaultAccount(mDefaultView.isChecked()); 197bcff14acf25d3a999b7448e317604e694c204f47Andrew Stadler 198bcff14acf25d3a999b7448e317604e694c204f47Andrew Stadler // Call EAS to store account information for use by AccountManager 199bcff14acf25d3a999b7448e317604e694c204f47Andrew Stadler if (!mAccount.isSaved() 200bcff14acf25d3a999b7448e317604e694c204f47Andrew Stadler && mAccount.mHostAuthRecv != null 201948c36f47ac5bb3c47c85cd6269b188a82f458c3Marc Blank && mAccount.mHostAuthRecv.mProtocol.equals("eas")) { 202bcff14acf25d3a999b7448e317604e694c204f47Andrew Stadler boolean alsoSyncContacts = mEasFlowMode && mSyncContactsView.isChecked(); 203a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank ExchangeStore.addSystemAccount(this, mAccount, 204a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank alsoSyncContacts, mAccountManagerCallback); 205a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank } else { 206a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank finishOnDone(); 207a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank } 20896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 20996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project 21096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project public void onClick(View v) { 21196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project switch (v.getId()) { 21296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project case R.id.next: 21396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project onDone(); 21496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project break; 21596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 21696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project } 217a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank 2189197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler /** 2199197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler * Enable an additional spinner using the arrays normally handled by preferences 2209197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler */ 2219197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler private void enableEASSyncWindowSpinner() { 2229197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler // Show everything 2239197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler findViewById(R.id.account_sync_window_label).setVisibility(View.VISIBLE); 2249197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler mSyncWindowView.setVisibility(View.VISIBLE); 2259197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler 2269197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler // Generate spinner entries using XML arrays used by the preferences 2279197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler CharSequence[] windowValues = getResources().getTextArray( 2289197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler R.array.account_settings_mail_window_values); 2299197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler CharSequence[] windowEntries = getResources().getTextArray( 2309197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler R.array.account_settings_mail_window_entries); 231a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank 2329197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler // Now create the array used by the Spinner 2339197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler SpinnerOption[] windowOptions = new SpinnerOption[windowEntries.length]; 2349197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler for (int i = 0; i < windowEntries.length; i++) { 2359197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler windowOptions[i] = new SpinnerOption( 2369197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler Integer.valueOf(windowValues[i].toString()), windowEntries[i].toString()); 2379197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler } 2389197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler 2399197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler ArrayAdapter<SpinnerOption> windowOptionsAdapter = new ArrayAdapter<SpinnerOption>(this, 2409197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler android.R.layout.simple_spinner_item, windowOptions); 2419197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler windowOptionsAdapter 2429197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 2439197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler mSyncWindowView.setAdapter(windowOptionsAdapter); 244a3c6c6ed294d5a1fb0662fdacc1388944487fdf2Marc Blank 2459e2c6bd5f21f2d19eef7ebfe30e6fdf94ede0857Andrew Stadler SpinnerOption.setSpinnerOptionValue(mSyncWindowView, mAccount.getSyncLookback()); 2469197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler } 24796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project} 248