1 /* 2 * Copyright (C) 2010 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 android.os.Bundle; 20 import android.preference.ListPreference; 21 import android.preference.Preference; 22 import android.preference.PreferenceCategory; 23 import android.preference.Preference.OnPreferenceChangeListener; 24 import android.preference.PreferenceFragment; 25 import android.preference.PreferenceScreen; 26 import android.widget.Toast; 27 28 import com.android.email.Preferences; 29 import com.android.email.R; 30 import com.android.email.activity.UiUtilities; 31 32 public class GeneralPreferences extends PreferenceFragment implements OnPreferenceChangeListener { 33 34 private static final String PREFERENCE_CATEGORY_KEY = "category_general_preferences"; 35 36 private static final String PREFERENCE_KEY_AUTO_ADVANCE = "auto_advance"; 37 private static final String PREFERENCE_KEY_TEXT_ZOOM = "text_zoom"; 38 private static final String PREFERENCE_KEY_REPLY_ALL = Preferences.REPLY_ALL; 39 private static final String PREFERENCE_KEY_CLEAR_TRUSTED_SENDERS = "clear_trusted_senders"; 40 41 private Preferences mPreferences; 42 private ListPreference mAutoAdvance; 43 private ListPreference mTextZoom; 44 45 CharSequence[] mSizeSummaries; 46 47 @Override onCreate(Bundle savedInstanceState)48 public void onCreate(Bundle savedInstanceState) { 49 super.onCreate(savedInstanceState); 50 51 getPreferenceManager().setSharedPreferencesName(Preferences.PREFERENCES_FILE); 52 53 // Load the preferences from an XML resource 54 addPreferencesFromResource(R.xml.general_preferences); 55 56 if (UiUtilities.useTwoPane(getActivity())) { 57 // "Reply All" should only be shown on phones 58 PreferenceCategory pc = (PreferenceCategory) findPreference(PREFERENCE_CATEGORY_KEY); 59 pc.removePreference(findPreference(PREFERENCE_KEY_REPLY_ALL)); 60 } 61 } 62 63 @Override onResume()64 public void onResume() { 65 loadSettings(); 66 super.onResume(); 67 } 68 69 @Override onPreferenceChange(Preference preference, Object newValue)70 public boolean onPreferenceChange(Preference preference, Object newValue) { 71 String key = preference.getKey(); 72 73 if (PREFERENCE_KEY_AUTO_ADVANCE.equals(key)) { 74 mPreferences.setAutoAdvanceDirection(mAutoAdvance.findIndexOfValue((String) newValue)); 75 return true; 76 } else if (PREFERENCE_KEY_TEXT_ZOOM.equals(key)) { 77 mPreferences.setTextZoom(mTextZoom.findIndexOfValue((String) newValue)); 78 reloadDynamicSummaries(); 79 return true; 80 } 81 return false; 82 } 83 84 @Override onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference)85 public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { 86 if (getActivity() == null) { 87 // Guard against monkeys. 88 return false; 89 } 90 91 String key = preference.getKey(); 92 if (key.equals(PREFERENCE_KEY_CLEAR_TRUSTED_SENDERS)) { 93 mPreferences.clearTrustedSenders(); 94 Toast.makeText( 95 getActivity(), R.string.trusted_senders_cleared, Toast.LENGTH_SHORT).show(); 96 return true; 97 } 98 99 return false; 100 } 101 loadSettings()102 private void loadSettings() { 103 mPreferences = Preferences.getPreferences(getActivity()); 104 mAutoAdvance = (ListPreference) findPreference(PREFERENCE_KEY_AUTO_ADVANCE); 105 mAutoAdvance.setValueIndex(mPreferences.getAutoAdvanceDirection()); 106 mAutoAdvance.setOnPreferenceChangeListener(this); 107 108 mTextZoom = (ListPreference) findPreference(PREFERENCE_KEY_TEXT_ZOOM); 109 mTextZoom.setValueIndex(mPreferences.getTextZoom()); 110 mTextZoom.setOnPreferenceChangeListener(this); 111 112 reloadDynamicSummaries(); 113 } 114 115 /** 116 * Reload any preference summaries that are updated dynamically 117 */ reloadDynamicSummaries()118 private void reloadDynamicSummaries() { 119 int textZoomIndex = mPreferences.getTextZoom(); 120 // Update summary - but only load the array once 121 if (mSizeSummaries == null) { 122 mSizeSummaries = getActivity().getResources() 123 .getTextArray(R.array.general_preference_text_zoom_summary_array); 124 } 125 CharSequence summary = null; 126 if (textZoomIndex >= 0 && textZoomIndex < mSizeSummaries.length) { 127 summary = mSizeSummaries[textZoomIndex]; 128 } 129 mTextZoom.setSummary(summary); 130 } 131 } 132