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