1 /* 2 * Copyright (C) 2008 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.email.activity.setup; 18 19 import com.android.email.Account; 20 import com.android.email.Email; 21 import com.android.email.Preferences; 22 import com.android.email.R; 23 import com.android.email.mail.Store; 24 25 import android.app.Activity; 26 import android.content.Intent; 27 import android.os.Bundle; 28 import android.view.View; 29 import android.view.View.OnClickListener; 30 import android.widget.ArrayAdapter; 31 import android.widget.CheckBox; 32 import android.widget.Spinner; 33 34 public class AccountSetupOptions extends Activity implements OnClickListener { 35 private static final String EXTRA_ACCOUNT = "account"; 36 37 private static final String EXTRA_MAKE_DEFAULT = "makeDefault"; 38 39 private Spinner mCheckFrequencyView; 40 private Spinner mSyncWindowView; 41 42 private CheckBox mDefaultView; 43 44 private CheckBox mNotifyView; 45 46 private Account mAccount; 47 actionOptions(Activity fromActivity, Account account, boolean makeDefault)48 public static void actionOptions(Activity fromActivity, Account account, boolean makeDefault) { 49 Intent i = new Intent(fromActivity, AccountSetupOptions.class); 50 i.putExtra(EXTRA_ACCOUNT, account); 51 i.putExtra(EXTRA_MAKE_DEFAULT, makeDefault); 52 fromActivity.startActivity(i); 53 } 54 55 @Override onCreate(Bundle savedInstanceState)56 public void onCreate(Bundle savedInstanceState) { 57 super.onCreate(savedInstanceState); 58 setContentView(R.layout.account_setup_options); 59 60 mCheckFrequencyView = (Spinner)findViewById(R.id.account_check_frequency); 61 mSyncWindowView = (Spinner) findViewById(R.id.account_sync_window); 62 mDefaultView = (CheckBox)findViewById(R.id.account_default); 63 mNotifyView = (CheckBox)findViewById(R.id.account_notify); 64 65 findViewById(R.id.next).setOnClickListener(this); 66 67 mAccount = (Account)getIntent().getSerializableExtra(EXTRA_ACCOUNT); 68 boolean makeDefault = getIntent().getBooleanExtra(EXTRA_MAKE_DEFAULT, false); 69 70 // Generate spinner entries using XML arrays used by the preferences 71 int frequencyValuesId; 72 int frequencyEntriesId; 73 Store.StoreInfo info = Store.StoreInfo.getStoreInfo(mAccount.getStoreUri(), this); 74 if (info.mPushSupported) { 75 frequencyValuesId = R.array.account_settings_check_frequency_values_push; 76 frequencyEntriesId = R.array.account_settings_check_frequency_entries_push; 77 } else { 78 frequencyValuesId = R.array.account_settings_check_frequency_values; 79 frequencyEntriesId = R.array.account_settings_check_frequency_entries; 80 } 81 CharSequence[] frequencyValues = getResources().getTextArray(frequencyValuesId); 82 CharSequence[] frequencyEntries = getResources().getTextArray(frequencyEntriesId); 83 84 // Now create the array used by the Spinner 85 SpinnerOption[] checkFrequencies = new SpinnerOption[frequencyEntries.length]; 86 for (int i = 0; i < frequencyEntries.length; i++) { 87 checkFrequencies[i] = new SpinnerOption( 88 Integer.valueOf(frequencyValues[i].toString()), frequencyEntries[i].toString()); 89 } 90 91 ArrayAdapter<SpinnerOption> checkFrequenciesAdapter = new ArrayAdapter<SpinnerOption>(this, 92 android.R.layout.simple_spinner_item, checkFrequencies); 93 checkFrequenciesAdapter 94 .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 95 mCheckFrequencyView.setAdapter(checkFrequenciesAdapter); 96 97 if (info.mVisibleLimitDefault == -1) { 98 enableEASSyncWindowSpinner(); 99 } 100 101 if (mAccount.equals(Preferences.getPreferences(this).getDefaultAccount()) || makeDefault) { 102 mDefaultView.setChecked(true); 103 } 104 mNotifyView.setChecked(mAccount.isNotifyNewMail()); 105 SpinnerOption.setSpinnerOptionValue(mCheckFrequencyView, mAccount 106 .getAutomaticCheckIntervalMinutes()); 107 } 108 onDone()109 private void onDone() { 110 mAccount.setDescription(mAccount.getEmail()); 111 mAccount.setNotifyNewMail(mNotifyView.isChecked()); 112 mAccount.setAutomaticCheckIntervalMinutes((Integer)((SpinnerOption)mCheckFrequencyView 113 .getSelectedItem()).value); 114 if (mSyncWindowView.getVisibility() == View.VISIBLE) { 115 int window = (Integer)((SpinnerOption)mSyncWindowView.getSelectedItem()).value; 116 mAccount.setSyncWindow(window); 117 } 118 mAccount.save(Preferences.getPreferences(this)); 119 if (mDefaultView.isChecked()) { 120 Preferences.getPreferences(this).setDefaultAccount(mAccount); 121 } 122 Email.setServicesEnabled(this); 123 AccountSetupNames.actionSetNames(this, mAccount); 124 finish(); 125 } 126 onClick(View v)127 public void onClick(View v) { 128 switch (v.getId()) { 129 case R.id.next: 130 onDone(); 131 break; 132 } 133 } 134 135 /** 136 * Enable an additional spinner using the arrays normally handled by preferences 137 */ enableEASSyncWindowSpinner()138 private void enableEASSyncWindowSpinner() { 139 // Show everything 140 findViewById(R.id.account_sync_window_label).setVisibility(View.VISIBLE); 141 mSyncWindowView.setVisibility(View.VISIBLE); 142 143 // Generate spinner entries using XML arrays used by the preferences 144 CharSequence[] windowValues = getResources().getTextArray( 145 R.array.account_settings_mail_window_values); 146 CharSequence[] windowEntries = getResources().getTextArray( 147 R.array.account_settings_mail_window_entries); 148 149 // Now create the array used by the Spinner 150 SpinnerOption[] windowOptions = new SpinnerOption[windowEntries.length]; 151 for (int i = 0; i < windowEntries.length; i++) { 152 windowOptions[i] = new SpinnerOption( 153 Integer.valueOf(windowValues[i].toString()), windowEntries[i].toString()); 154 } 155 156 ArrayAdapter<SpinnerOption> windowOptionsAdapter = new ArrayAdapter<SpinnerOption>(this, 157 android.R.layout.simple_spinner_item, windowOptions); 158 windowOptionsAdapter 159 .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 160 mSyncWindowView.setAdapter(windowOptionsAdapter); 161 162 SpinnerOption.setSpinnerOptionValue(mSyncWindowView, mAccount.getSyncWindow()); 163 } 164 } 165