AccountSetupOptions.java revision 9019315b2642d58691cf09d32c07c0cf902f0a41
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.Account;
202b0c619f1edd9fd89dc06bf35d99ece91f415f1eAndy Stadlerimport com.android.email.Email;
212b0c619f1edd9fd89dc06bf35d99ece91f415f1eAndy Stadlerimport com.android.email.Preferences;
222b0c619f1edd9fd89dc06bf35d99ece91f415f1eAndy Stadlerimport com.android.email.R;
23ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadlerimport com.android.email.mail.Store;
249019315b2642d58691cf09d32c07c0cf902f0a41Andrew Stadlerimport com.android.email.provider.EmailStore;
252b0c619f1edd9fd89dc06bf35d99ece91f415f1eAndy Stadler
2696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.app.Activity;
2796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.content.Intent;
2896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.os.Bundle;
2996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.view.View;
3096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.view.View.OnClickListener;
3196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.widget.ArrayAdapter;
3296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.widget.CheckBox;
3396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.widget.Spinner;
3496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
3596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectpublic class AccountSetupOptions extends Activity implements OnClickListener {
3696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    private static final String EXTRA_ACCOUNT = "account";
3796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
3896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    private static final String EXTRA_MAKE_DEFAULT = "makeDefault";
3996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
4096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    private Spinner mCheckFrequencyView;
419197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    private Spinner mSyncWindowView;
4296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
4396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    private CheckBox mDefaultView;
4496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
4596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    private CheckBox mNotifyView;
4696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
4796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    private Account mAccount;
4896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
499019315b2642d58691cf09d32c07c0cf902f0a41Andrew Stadler    @Deprecated
502b0c619f1edd9fd89dc06bf35d99ece91f415f1eAndy Stadler    public static void actionOptions(Activity fromActivity, Account account, boolean makeDefault) {
512b0c619f1edd9fd89dc06bf35d99ece91f415f1eAndy Stadler        Intent i = new Intent(fromActivity, AccountSetupOptions.class);
5296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        i.putExtra(EXTRA_ACCOUNT, account);
5396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        i.putExtra(EXTRA_MAKE_DEFAULT, makeDefault);
542b0c619f1edd9fd89dc06bf35d99ece91f415f1eAndy Stadler        fromActivity.startActivity(i);
559019315b2642d58691cf09d32c07c0cf902f0a41Andrew Stadler    }
569019315b2642d58691cf09d32c07c0cf902f0a41Andrew Stadler
579019315b2642d58691cf09d32c07c0cf902f0a41Andrew Stadler    public static void actionOptions(Activity fromActivity, EmailStore.Account account,
589019315b2642d58691cf09d32c07c0cf902f0a41Andrew Stadler            boolean makeDefault) {
599019315b2642d58691cf09d32c07c0cf902f0a41Andrew Stadler        Intent i = new Intent(fromActivity, AccountSetupOptions.class);
609019315b2642d58691cf09d32c07c0cf902f0a41Andrew Stadler        i.putExtra(EXTRA_ACCOUNT, account);
619019315b2642d58691cf09d32c07c0cf902f0a41Andrew Stadler        i.putExtra(EXTRA_MAKE_DEFAULT, makeDefault);
629019315b2642d58691cf09d32c07c0cf902f0a41Andrew Stadler        fromActivity.startActivity(i);
6396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
6496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
6596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    @Override
6696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void onCreate(Bundle savedInstanceState) {
6796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        super.onCreate(savedInstanceState);
6896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        setContentView(R.layout.account_setup_options);
6996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
7096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mCheckFrequencyView = (Spinner)findViewById(R.id.account_check_frequency);
719197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        mSyncWindowView = (Spinner) findViewById(R.id.account_sync_window);
7296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mDefaultView = (CheckBox)findViewById(R.id.account_default);
7396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mNotifyView = (CheckBox)findViewById(R.id.account_notify);
7496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
7596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        findViewById(R.id.next).setOnClickListener(this);
7696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
77ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        mAccount = (Account)getIntent().getSerializableExtra(EXTRA_ACCOUNT);
78ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        boolean makeDefault = getIntent().getBooleanExtra(EXTRA_MAKE_DEFAULT, false);
79ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler
80ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        // Generate spinner entries using XML arrays used by the preferences
81ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        int frequencyValuesId;
82ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        int frequencyEntriesId;
83ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        Store.StoreInfo info = Store.StoreInfo.getStoreInfo(mAccount.getStoreUri(), this);
84ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        if (info.mPushSupported) {
85ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler            frequencyValuesId = R.array.account_settings_check_frequency_values_push;
86ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler            frequencyEntriesId = R.array.account_settings_check_frequency_entries_push;
87ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        } else {
88ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler            frequencyValuesId = R.array.account_settings_check_frequency_values;
89ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler            frequencyEntriesId = R.array.account_settings_check_frequency_entries;
90ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        }
91ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        CharSequence[] frequencyValues = getResources().getTextArray(frequencyValuesId);
92ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        CharSequence[] frequencyEntries = getResources().getTextArray(frequencyEntriesId);
93ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler
94ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        // Now create the array used by the Spinner
95ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        SpinnerOption[] checkFrequencies = new SpinnerOption[frequencyEntries.length];
96ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        for (int i = 0; i < frequencyEntries.length; i++) {
97ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler            checkFrequencies[i] = new SpinnerOption(
98ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler                    Integer.valueOf(frequencyValues[i].toString()), frequencyEntries[i].toString());
99ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        }
10096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
10196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        ArrayAdapter<SpinnerOption> checkFrequenciesAdapter = new ArrayAdapter<SpinnerOption>(this,
10296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                android.R.layout.simple_spinner_item, checkFrequencies);
10396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        checkFrequenciesAdapter
10496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
10596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mCheckFrequencyView.setAdapter(checkFrequenciesAdapter);
1069197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler
1079197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        if (info.mVisibleLimitDefault == -1) {
1089197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler            enableEASSyncWindowSpinner();
1099197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        }
11096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
11196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        if (mAccount.equals(Preferences.getPreferences(this).getDefaultAccount()) || makeDefault) {
11296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project            mDefaultView.setChecked(true);
11396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        }
11496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mNotifyView.setChecked(mAccount.isNotifyNewMail());
11596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        SpinnerOption.setSpinnerOptionValue(mCheckFrequencyView, mAccount
11696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                .getAutomaticCheckIntervalMinutes());
11796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
11896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
11996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    private void onDone() {
12096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mAccount.setDescription(mAccount.getEmail());
12196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mAccount.setNotifyNewMail(mNotifyView.isChecked());
12296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mAccount.setAutomaticCheckIntervalMinutes((Integer)((SpinnerOption)mCheckFrequencyView
12396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                .getSelectedItem()).value);
1249197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        if (mSyncWindowView.getVisibility() == View.VISIBLE) {
1259197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler            int window = (Integer)((SpinnerOption)mSyncWindowView.getSelectedItem()).value;
1269197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler            mAccount.setSyncWindow(window);
1279197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        }
12896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mAccount.save(Preferences.getPreferences(this));
12996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        if (mDefaultView.isChecked()) {
13096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project            Preferences.getPreferences(this).setDefaultAccount(mAccount);
13196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        }
13296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        Email.setServicesEnabled(this);
13396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        AccountSetupNames.actionSetNames(this, mAccount);
13496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        finish();
13596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
13696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
13796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void onClick(View v) {
13896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        switch (v.getId()) {
13996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project            case R.id.next:
14096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                onDone();
14196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                break;
14296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        }
14396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
1449197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler
1459197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    /**
1469197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler     * Enable an additional spinner using the arrays normally handled by preferences
1479197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler     */
1489197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    private void enableEASSyncWindowSpinner() {
1499197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        // Show everything
1509197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        findViewById(R.id.account_sync_window_label).setVisibility(View.VISIBLE);
1519197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        mSyncWindowView.setVisibility(View.VISIBLE);
1529197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler
1539197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        // Generate spinner entries using XML arrays used by the preferences
1549197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        CharSequence[] windowValues = getResources().getTextArray(
1559197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler                R.array.account_settings_mail_window_values);
1569197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        CharSequence[] windowEntries = getResources().getTextArray(
1579197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler                R.array.account_settings_mail_window_entries);
1589197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler
1599197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        // Now create the array used by the Spinner
1609197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        SpinnerOption[] windowOptions = new SpinnerOption[windowEntries.length];
1619197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        for (int i = 0; i < windowEntries.length; i++) {
1629197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler            windowOptions[i] = new SpinnerOption(
1639197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler                    Integer.valueOf(windowValues[i].toString()), windowEntries[i].toString());
1649197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        }
1659197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler
1669197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        ArrayAdapter<SpinnerOption> windowOptionsAdapter = new ArrayAdapter<SpinnerOption>(this,
1679197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler                android.R.layout.simple_spinner_item, windowOptions);
1689197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        windowOptionsAdapter
1699197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
1709197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        mSyncWindowView.setAdapter(windowOptionsAdapter);
1719197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler
1729197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        SpinnerOption.setSpinnerOptionValue(mSyncWindowView, mAccount.getSyncWindow());
1739197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    }
17496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project}
175