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