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