10f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki/* 20f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki * Copyright (C) 2010 The Android Open Source Project 30f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki * 40f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki * Licensed under the Apache License, Version 2.0 (the "License"); 50f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki * you may not use this file except in compliance with the License. 60f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki * You may obtain a copy of the License at 70f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki * 80f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki * http://www.apache.org/licenses/LICENSE-2.0 90f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki * 100f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki * Unless required by applicable law or agreed to in writing, software 110f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki * distributed under the License is distributed on an "AS IS" BASIS, 120f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 130f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki * See the License for the specific language governing permissions and 140f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki * limitations under the License. 150f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki */ 160f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki 170f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onukipackage com.android.email.activity.setup; 180f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki 190f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onukiimport android.os.Bundle; 200f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onukiimport android.preference.ListPreference; 21ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadlerimport android.preference.Preference; 22bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport android.preference.PreferenceCategory; 23ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadlerimport android.preference.Preference.OnPreferenceChangeListener; 24bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport android.preference.PreferenceFragment; 25e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komaloimport android.preference.PreferenceScreen; 26e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komaloimport android.widget.Toast; 27e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komalo 28e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komaloimport com.android.email.Preferences; 29e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komaloimport com.android.email.R; 30bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookimport com.android.email.activity.UiUtilities; 310f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki 32bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrookpublic class GeneralPreferences extends PreferenceFragment implements OnPreferenceChangeListener { 33652a907672165b63d715817ceb08bd010489dab2Paul Westbrook 34bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook private static final String PREFERENCE_CATEGORY_KEY = "category_general_preferences"; 35bfbf0dd853182bd5d644a88363414a4287616781Michael Chan 36ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler private static final String PREFERENCE_KEY_AUTO_ADVANCE = "auto_advance"; 37ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler private static final String PREFERENCE_KEY_TEXT_ZOOM = "text_zoom"; 38bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook private static final String PREFERENCE_KEY_REPLY_ALL = Preferences.REPLY_ALL; 39e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komalo private static final String PREFERENCE_KEY_CLEAR_TRUSTED_SENDERS = "clear_trusted_senders"; 400f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki 410f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki private Preferences mPreferences; 420f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki private ListPreference mAutoAdvance; 43ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler private ListPreference mTextZoom; 44ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler 45ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler CharSequence[] mSizeSummaries; 460f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki 470f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki @Override 480f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki public void onCreate(Bundle savedInstanceState) { 490f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki super.onCreate(savedInstanceState); 500f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki 51bfbf0dd853182bd5d644a88363414a4287616781Michael Chan getPreferenceManager().setSharedPreferencesName(Preferences.PREFERENCES_FILE); 52bfbf0dd853182bd5d644a88363414a4287616781Michael Chan 530f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki // Load the preferences from an XML resource 540f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki addPreferencesFromResource(R.xml.general_preferences); 55bfbf0dd853182bd5d644a88363414a4287616781Michael Chan 56bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (UiUtilities.useTwoPane(getActivity())) { 57bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook // "Reply All" should only be shown on phones 58bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook PreferenceCategory pc = (PreferenceCategory) findPreference(PREFERENCE_CATEGORY_KEY); 59bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook pc.removePreference(findPreference(PREFERENCE_KEY_REPLY_ALL)); 60652a907672165b63d715817ceb08bd010489dab2Paul Westbrook } 610f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki } 620f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki 630f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki @Override 640f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki public void onResume() { 650f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki loadSettings(); 660f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki super.onResume(); 670f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki } 680f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki 690f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki @Override 70ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler public boolean onPreferenceChange(Preference preference, Object newValue) { 71ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler String key = preference.getKey(); 72bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 73ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler if (PREFERENCE_KEY_AUTO_ADVANCE.equals(key)) { 74ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler mPreferences.setAutoAdvanceDirection(mAutoAdvance.findIndexOfValue((String) newValue)); 75ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler return true; 76ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler } else if (PREFERENCE_KEY_TEXT_ZOOM.equals(key)) { 77ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler mPreferences.setTextZoom(mTextZoom.findIndexOfValue((String) newValue)); 78ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler reloadDynamicSummaries(); 79ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler return true; 80ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler } 81ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler return false; 820f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki } 830f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki 84e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komalo @Override 85e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komalo public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { 86e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komalo if (getActivity() == null) { 87e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komalo // Guard against monkeys. 88e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komalo return false; 89e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komalo } 90bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 91e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komalo String key = preference.getKey(); 92e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komalo if (key.equals(PREFERENCE_KEY_CLEAR_TRUSTED_SENDERS)) { 93e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komalo mPreferences.clearTrustedSenders(); 94e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komalo Toast.makeText( 95e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komalo getActivity(), R.string.trusted_senders_cleared, Toast.LENGTH_SHORT).show(); 96e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komalo return true; 97e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komalo } 98bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook 99e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komalo return false; 100e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komalo } 101e05f511a4ea9ae28841b385987531d8be1d2d87fBen Komalo 1020f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki private void loadSettings() { 1030f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki mPreferences = Preferences.getPreferences(getActivity()); 104ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler mAutoAdvance = (ListPreference) findPreference(PREFERENCE_KEY_AUTO_ADVANCE); 1050f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki mAutoAdvance.setValueIndex(mPreferences.getAutoAdvanceDirection()); 106ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler mAutoAdvance.setOnPreferenceChangeListener(this); 107ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler 108ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler mTextZoom = (ListPreference) findPreference(PREFERENCE_KEY_TEXT_ZOOM); 109bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook mTextZoom.setValueIndex(mPreferences.getTextZoom()); 110bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook mTextZoom.setOnPreferenceChangeListener(this); 111ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler 112ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler reloadDynamicSummaries(); 1130f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki } 1140f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki 115ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler /** 116ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler * Reload any preference summaries that are updated dynamically 117ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler */ 118ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler private void reloadDynamicSummaries() { 119bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook int textZoomIndex = mPreferences.getTextZoom(); 120bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook // Update summary - but only load the array once 121bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (mSizeSummaries == null) { 122bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook mSizeSummaries = getActivity().getResources() 123bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook .getTextArray(R.array.general_preference_text_zoom_summary_array); 124bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook } 125bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook CharSequence summary = null; 126bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook if (textZoomIndex >= 0 && textZoomIndex < mSizeSummaries.length) { 127bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook summary = mSizeSummaries[textZoomIndex]; 128ba0b1bbc8d7cd546d548cea1e4f097462e1fb324Andrew Stadler } 129bc47398187c6ffd132435e51d8d61e6ec79a79dbPaul Westbrook mTextZoom.setSummary(summary); 1300f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki } 1310f52e546ef662e126b7360ad69c8c8f838789ef3Makoto Onuki} 132