AccountSetupOptions.java revision ea6fea9bb22368c10083d5dce52adae86e51a243
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;
4096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
4196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    private CheckBox mDefaultView;
4296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
4396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    private CheckBox mNotifyView;
4496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
4596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    private Account mAccount;
4696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
472b0c619f1edd9fd89dc06bf35d99ece91f415f1eAndy Stadler    public static void actionOptions(Activity fromActivity, Account account, boolean makeDefault) {
482b0c619f1edd9fd89dc06bf35d99ece91f415f1eAndy Stadler        Intent i = new Intent(fromActivity, AccountSetupOptions.class);
4996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        i.putExtra(EXTRA_ACCOUNT, account);
5096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        i.putExtra(EXTRA_MAKE_DEFAULT, makeDefault);
512b0c619f1edd9fd89dc06bf35d99ece91f415f1eAndy Stadler        fromActivity.startActivity(i);
5296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
5396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
5496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    @Override
5596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void onCreate(Bundle savedInstanceState) {
5696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        super.onCreate(savedInstanceState);
5796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        setContentView(R.layout.account_setup_options);
5896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
5996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mCheckFrequencyView = (Spinner)findViewById(R.id.account_check_frequency);
6096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mDefaultView = (CheckBox)findViewById(R.id.account_default);
6196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mNotifyView = (CheckBox)findViewById(R.id.account_notify);
6296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
6396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        findViewById(R.id.next).setOnClickListener(this);
6496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
65ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        mAccount = (Account)getIntent().getSerializableExtra(EXTRA_ACCOUNT);
66ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        boolean makeDefault = getIntent().getBooleanExtra(EXTRA_MAKE_DEFAULT, false);
67ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler
68ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        // Generate spinner entries using XML arrays used by the preferences
69ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        int frequencyValuesId;
70ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        int frequencyEntriesId;
71ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        Store.StoreInfo info = Store.StoreInfo.getStoreInfo(mAccount.getStoreUri(), this);
72ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        if (info.mPushSupported) {
73ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler            frequencyValuesId = R.array.account_settings_check_frequency_values_push;
74ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler            frequencyEntriesId = R.array.account_settings_check_frequency_entries_push;
75ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        } else {
76ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler            frequencyValuesId = R.array.account_settings_check_frequency_values;
77ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler            frequencyEntriesId = R.array.account_settings_check_frequency_entries;
78ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        }
79ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        CharSequence[] frequencyValues = getResources().getTextArray(frequencyValuesId);
80ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        CharSequence[] frequencyEntries = getResources().getTextArray(frequencyEntriesId);
81ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler
82ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        // Now create the array used by the Spinner
83ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        SpinnerOption[] checkFrequencies = new SpinnerOption[frequencyEntries.length];
84ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        for (int i = 0; i < frequencyEntries.length; i++) {
85ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler            checkFrequencies[i] = new SpinnerOption(
86ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler                    Integer.valueOf(frequencyValues[i].toString()), frequencyEntries[i].toString());
87ea6fea9bb22368c10083d5dce52adae86e51a243Andy Stadler        }
8896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
8996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        ArrayAdapter<SpinnerOption> checkFrequenciesAdapter = new ArrayAdapter<SpinnerOption>(this,
9096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                android.R.layout.simple_spinner_item, checkFrequencies);
9196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        checkFrequenciesAdapter
9296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
9396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mCheckFrequencyView.setAdapter(checkFrequenciesAdapter);
9496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
9596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        if (mAccount.equals(Preferences.getPreferences(this).getDefaultAccount()) || makeDefault) {
9696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project            mDefaultView.setChecked(true);
9796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        }
9896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mNotifyView.setChecked(mAccount.isNotifyNewMail());
9996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        SpinnerOption.setSpinnerOptionValue(mCheckFrequencyView, mAccount
10096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                .getAutomaticCheckIntervalMinutes());
10196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
10296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
10396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    private void onDone() {
10496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mAccount.setDescription(mAccount.getEmail());
10596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mAccount.setNotifyNewMail(mNotifyView.isChecked());
10696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mAccount.setAutomaticCheckIntervalMinutes((Integer)((SpinnerOption)mCheckFrequencyView
10796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                .getSelectedItem()).value);
10896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        mAccount.save(Preferences.getPreferences(this));
10996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        if (mDefaultView.isChecked()) {
11096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project            Preferences.getPreferences(this).setDefaultAccount(mAccount);
11196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        }
11296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        Email.setServicesEnabled(this);
11396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        AccountSetupNames.actionSetNames(this, mAccount);
11496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        finish();
11596c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
11696c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project
11796c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    public void onClick(View v) {
11896c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        switch (v.getId()) {
11996c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project            case R.id.next:
12096c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                onDone();
12196c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project                break;
12296c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project        }
12396c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project    }
12496c5af40d639d629267794f4f0338a267ff94ce5The Android Open Source Project}
125