AccountSetupOptions.java revision 9197f428946d5c77613b64a50c93a46e2acf62dc
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;
242b0c619f1edd9fd89dc06bf35d99ece91f415f1eAndy Stadler
2596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.app.Activity;
2696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.content.Intent;
2796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.os.Bundle;
2896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.view.View;
2996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.view.View.OnClickListener;
3096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.widget.ArrayAdapter;
3196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.widget.CheckBox;
3296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectimport android.widget.Spinner;
3396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
3496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Projectpublic class AccountSetupOptions extends Activity implements OnClickListener {
3596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    private static final String EXTRA_ACCOUNT = "account";
3696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
3796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    private static final String EXTRA_MAKE_DEFAULT = "makeDefault";
3896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
3996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    private Spinner mCheckFrequencyView;
409197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    private Spinner mSyncWindowView;
4196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
4296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    private CheckBox mDefaultView;
4396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
4496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    private CheckBox mNotifyView;
4596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
4696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    private Account mAccount;
4796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
482b0c619f1edd9fd89dc06bf35d99ece91f415f1eAndy Stadler    public static void actionOptions(Activity fromActivity, Account account, boolean makeDefault) {
492b0c619f1edd9fd89dc06bf35d99ece91f415f1eAndy Stadler        Intent i = new Intent(fromActivity, AccountSetupOptions.class);
5096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        i.putExtra(EXTRA_ACCOUNT, account);
5196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        i.putExtra(EXTRA_MAKE_DEFAULT, makeDefault);
522b0c619f1edd9fd89dc06bf35d99ece91f415f1eAndy Stadler        fromActivity.startActivity(i);
5396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
5496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
5596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    @Override
5696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void onCreate(Bundle savedInstanceState) {
5796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        super.onCreate(savedInstanceState);
5896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        setContentView(R.layout.account_setup_options);
5996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
6096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mCheckFrequencyView = (Spinner)findViewById(R.id.account_check_frequency);
619197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        mSyncWindowView = (Spinner) findViewById(R.id.account_sync_window);
6296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mDefaultView = (CheckBox)findViewById(R.id.account_default);
6396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mNotifyView = (CheckBox)findViewById(R.id.account_notify);
6496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
6596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        findViewById(R.id.next).setOnClickListener(this);
6696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
67ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        mAccount = (Account)getIntent().getSerializableExtra(EXTRA_ACCOUNT);
68ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        boolean makeDefault = getIntent().getBooleanExtra(EXTRA_MAKE_DEFAULT, false);
69ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler
70ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        // Generate spinner entries using XML arrays used by the preferences
71ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        int frequencyValuesId;
72ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        int frequencyEntriesId;
73ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        Store.StoreInfo info = Store.StoreInfo.getStoreInfo(mAccount.getStoreUri(), this);
74ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        if (info.mPushSupported) {
75ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler            frequencyValuesId = R.array.account_settings_check_frequency_values_push;
76ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler            frequencyEntriesId = R.array.account_settings_check_frequency_entries_push;
77ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        } else {
78ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler            frequencyValuesId = R.array.account_settings_check_frequency_values;
79ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler            frequencyEntriesId = R.array.account_settings_check_frequency_entries;
80ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        }
81ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        CharSequence[] frequencyValues = getResources().getTextArray(frequencyValuesId);
82ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        CharSequence[] frequencyEntries = getResources().getTextArray(frequencyEntriesId);
83ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler
84ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        // Now create the array used by the Spinner
85ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        SpinnerOption[] checkFrequencies = new SpinnerOption[frequencyEntries.length];
86ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        for (int i = 0; i < frequencyEntries.length; i++) {
87ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler            checkFrequencies[i] = new SpinnerOption(
88ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler                    Integer.valueOf(frequencyValues[i].toString()), frequencyEntries[i].toString());
89ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        }
9096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
9196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        ArrayAdapter<SpinnerOption> checkFrequenciesAdapter = new ArrayAdapter<SpinnerOption>(this,
9296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                android.R.layout.simple_spinner_item, checkFrequencies);
9396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        checkFrequenciesAdapter
9496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
9596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mCheckFrequencyView.setAdapter(checkFrequenciesAdapter);
969197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler
979197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        if (info.mVisibleLimitDefault == -1) {
989197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler            enableEASSyncWindowSpinner();
999197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        }
10096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
10196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        if (mAccount.equals(Preferences.getPreferences(this).getDefaultAccount()) || makeDefault) {
10296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project            mDefaultView.setChecked(true);
10396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        }
10496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mNotifyView.setChecked(mAccount.isNotifyNewMail());
10596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        SpinnerOption.setSpinnerOptionValue(mCheckFrequencyView, mAccount
10696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                .getAutomaticCheckIntervalMinutes());
10796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
10896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
10996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    private void onDone() {
11096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mAccount.setDescription(mAccount.getEmail());
11196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mAccount.setNotifyNewMail(mNotifyView.isChecked());
11296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mAccount.setAutomaticCheckIntervalMinutes((Integer)((SpinnerOption)mCheckFrequencyView
11396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                .getSelectedItem()).value);
1149197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        if (mSyncWindowView.getVisibility() == View.VISIBLE) {
1159197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler            int window = (Integer)((SpinnerOption)mSyncWindowView.getSelectedItem()).value;
1169197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler            mAccount.setSyncWindow(window);
1179197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        }
11896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mAccount.save(Preferences.getPreferences(this));
11996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        if (mDefaultView.isChecked()) {
12096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project            Preferences.getPreferences(this).setDefaultAccount(mAccount);
12196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        }
12296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        Email.setServicesEnabled(this);
12396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        AccountSetupNames.actionSetNames(this, mAccount);
12496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        finish();
12596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
12696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
12796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void onClick(View v) {
12896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        switch (v.getId()) {
12996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project            case R.id.next:
13096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                onDone();
13196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                break;
13296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        }
13396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
1349197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler
1359197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    /**
1369197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler     * Enable an additional spinner using the arrays normally handled by preferences
1379197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler     */
1389197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    private void enableEASSyncWindowSpinner() {
1399197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        // Show everything
1409197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        findViewById(R.id.account_sync_window_label).setVisibility(View.VISIBLE);
1419197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        mSyncWindowView.setVisibility(View.VISIBLE);
1429197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler
1439197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        // Generate spinner entries using XML arrays used by the preferences
1449197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        CharSequence[] windowValues = getResources().getTextArray(
1459197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler                R.array.account_settings_mail_window_values);
1469197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        CharSequence[] windowEntries = getResources().getTextArray(
1479197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler                R.array.account_settings_mail_window_entries);
1489197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler
1499197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        // Now create the array used by the Spinner
1509197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        SpinnerOption[] windowOptions = new SpinnerOption[windowEntries.length];
1519197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        for (int i = 0; i < windowEntries.length; i++) {
1529197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler            windowOptions[i] = new SpinnerOption(
1539197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler                    Integer.valueOf(windowValues[i].toString()), windowEntries[i].toString());
1549197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        }
1559197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler
1569197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        ArrayAdapter<SpinnerOption> windowOptionsAdapter = new ArrayAdapter<SpinnerOption>(this,
1579197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler                android.R.layout.simple_spinner_item, windowOptions);
1589197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        windowOptionsAdapter
1599197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
1609197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        mSyncWindowView.setAdapter(windowOptionsAdapter);
1619197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler
1629197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler        SpinnerOption.setSpinnerOptionValue(mSyncWindowView, mAccount.getSyncWindow());
1639197f428946d5c77613b64a50c93a46e2acf62dcAndy Stadler    }
16496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project}
165