172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project/* 272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Copyright (C) 2007-2008 Esmertec AG. 372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Copyright (C) 2007-2008 The Android Open Source Project 472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * you may not use this file except in compliance with the License. 772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * You may obtain a copy of the License at 872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 1072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * 1172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * See the License for the specific language governing permissions and 1572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * limitations under the License. 1672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 1772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 1872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectpackage com.android.mms.ui; 1972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 208447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylorimport com.android.mms.MmsApp; 21c555f86a3f5b2f19244cc9c282f49cb834de12e8Tom Taylorimport com.android.mms.MmsConfig; 2272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport com.android.mms.R; 2372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 243c4edf4c2b63078cb7aae9806b7ed7b2faa50d9eTom Taylorimport android.app.ActionBar; 258447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylorimport android.app.AlertDialog; 268447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylorimport android.app.Dialog; 27d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylorimport android.content.Context; 288447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylorimport android.content.DialogInterface; 294c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylorimport android.content.Intent; 309258283a430fdf030785c96380c2628603ea7e20Jim Shumaimport android.content.SharedPreferences; 3172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.os.Bundle; 32d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylorimport android.preference.CheckBoxPreference; 339258283a430fdf030785c96380c2628603ea7e20Jim Shumaimport android.preference.ListPreference; 3453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylorimport android.preference.Preference; 3572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.preference.PreferenceActivity; 364c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylorimport android.preference.PreferenceCategory; 3772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.preference.PreferenceManager; 3853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylorimport android.preference.PreferenceScreen; 3992bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylorimport android.preference.Preference.OnPreferenceChangeListener; 40f114492537753bc68640d4a0d403861387296bcbMark Wagnerimport android.provider.SearchRecentSuggestions; 4172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.Menu; 4272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.MenuItem; 433239889e9a417617b755d4cde22070843e5c070bTom Taylor 443239889e9a417617b755d4cde22070843e5c070bTom Taylorimport com.android.mms.util.Recycler; 4572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 4672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project/** 4772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * With this activity, users can set preferences for MMS and SMS and 4872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * can access and manipulate SMS messages stored on the SIM. 4972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */ 5092bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylorpublic class MessagingPreferenceActivity extends PreferenceActivity 5192bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor implements OnPreferenceChangeListener { 5272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project // Symbolic names for the keys used for preference lookup 5372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public static final String MMS_DELIVERY_REPORT_MODE = "pref_key_mms_delivery_reports"; 5472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public static final String EXPIRY_TIME = "pref_key_mms_expiry"; 5572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public static final String PRIORITY = "pref_key_mms_priority"; 5672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public static final String READ_REPORT_MODE = "pref_key_mms_read_reports"; 5772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public static final String SMS_DELIVERY_REPORT_MODE = "pref_key_sms_delivery_reports"; 5872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public static final String NOTIFICATION_ENABLED = "pref_key_enable_notifications"; 5972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public static final String NOTIFICATION_VIBRATE = "pref_key_vibrate"; 60006d49271549ed639ffcd70d94c7650bb3514796Jim Shuma public static final String NOTIFICATION_VIBRATE_WHEN= "pref_key_vibrateWhen"; 6172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public static final String NOTIFICATION_RINGTONE = "pref_key_ringtone"; 6272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public static final String AUTO_RETRIEVAL = "pref_key_mms_auto_retrieval"; 6372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public static final String RETRIEVAL_DURING_ROAMING = "pref_key_mms_retrieval_during_roaming"; 643239889e9a417617b755d4cde22070843e5c070bTom Taylor public static final String AUTO_DELETE = "pref_key_auto_delete"; 6572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 6672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project // Menu entries 6772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project private static final int MENU_RESTORE_DEFAULTS = 1; 6872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 6953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor private Preference mSmsLimitPref; 70b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin private Preference mSmsDeliveryReportPref; 7153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor private Preference mMmsLimitPref; 72b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin private Preference mMmsDeliveryReportPref; 73b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin private Preference mMmsReadReportPref; 744c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylor private Preference mManageSimPref; 758447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor private Preference mClearHistoryPref; 769258283a430fdf030785c96380c2628603ea7e20Jim Shuma private ListPreference mVibrateWhenPref; 77d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor private CheckBoxPreference mEnableNotificationsPref; 7853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor private Recycler mSmsRecycler; 7953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor private Recycler mMmsRecycler; 808447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor private static final int CONFIRM_CLEAR_SEARCH_HISTORY_DIALOG = 3; 8192bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor private CharSequence[] mVibrateEntries; 8292bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor private CharSequence[] mVibrateValues; 8353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 8472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project @Override 8572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project protected void onCreate(Bundle icicle) { 8672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project super.onCreate(icicle); 87dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor 88dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor loadPrefs(); 89dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor 90dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor ActionBar actionBar = getActionBar(); 91dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor actionBar.setDisplayHomeAsUpEnabled(true); 92dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor } 93dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor 94dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor @Override 95dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor protected void onResume() { 96dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor super.onResume(); 97dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor 98dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor // Since the enabled notifications pref can be changed outside of this activity, 99dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor // we have to reload it whenever we resume. 100dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor setEnabledNotificationsPref(); 101b7eb6357e0884b7423a81ae3fed008e8e07c14e1Jean-Baptiste Queru registerListeners(); 102dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor } 103dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor 104dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor private void loadPrefs() { 10572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project addPreferencesFromResource(R.xml.preferences); 10653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 1074c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylor mManageSimPref = findPreference("pref_key_manage_sim_messages"); 10853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mSmsLimitPref = findPreference("pref_key_sms_delete_limit"); 109b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin mSmsDeliveryReportPref = findPreference("pref_key_sms_delivery_reports"); 110b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin mMmsDeliveryReportPref = findPreference("pref_key_mms_delivery_reports"); 111b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin mMmsReadReportPref = findPreference("pref_key_mms_read_reports"); 11253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mMmsLimitPref = findPreference("pref_key_mms_delete_limit"); 1138447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor mClearHistoryPref = findPreference("pref_key_mms_clear_history"); 114d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor mEnableNotificationsPref = (CheckBoxPreference) findPreference(NOTIFICATION_ENABLED); 1159258283a430fdf030785c96380c2628603ea7e20Jim Shuma mVibrateWhenPref = (ListPreference) findPreference(NOTIFICATION_VIBRATE_WHEN); 11653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 11792bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor mVibrateEntries = getResources().getTextArray(R.array.prefEntries_vibrateWhen); 11892bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor mVibrateValues = getResources().getTextArray(R.array.prefValues_vibrateWhen); 11992bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor 120d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor setMessagePreferences(); 121d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor } 122d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor 123dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor private void restoreDefaultPreferences() { 124dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor PreferenceManager.getDefaultSharedPreferences(this).edit().clear().apply(); 125dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor setPreferenceScreen(null); 126dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor loadPrefs(); 127dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor 128dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor // NOTE: After restoring preferences, the auto delete function (i.e. message recycler) 129dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor // will be turned off by default. However, we really want the default to be turned on. 130dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor // Because all the prefs are cleared, that'll cause: 131dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor // ConversationList.runOneTimeStorageLimitCheckForLegacyMessages to get executed the 132dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor // next time the user runs the Messaging app and it will either turn on the setting 133dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor // by default, or if the user is over the limits, encourage them to turn on the setting 134dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor // manually. 135d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor } 136d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor 137d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor private void setMessagePreferences() { 138bb8edcae15a50b3651261db70791afc668aae294Tom Taylor if (!MmsApp.getApplication().getTelephonyManager().hasIccCard()) { 1394c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylor // No SIM card, remove the SIM-related prefs 1404c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylor PreferenceCategory smsCategory = 1414c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylor (PreferenceCategory)findPreference("pref_key_sms_settings"); 1424c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylor smsCategory.removePreference(mManageSimPref); 1434c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylor } 144b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin 145602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor if (!MmsConfig.getSMSDeliveryReportsEnabled()) { 146b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin PreferenceCategory smsCategory = 147b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin (PreferenceCategory)findPreference("pref_key_sms_settings"); 148b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin smsCategory.removePreference(mSmsDeliveryReportPref); 149b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin if (!MmsApp.getApplication().getTelephonyManager().hasIccCard()) { 150b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin getPreferenceScreen().removePreference(smsCategory); 151b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin } 152b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin } 153b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin 154c555f86a3f5b2f19244cc9c282f49cb834de12e8Tom Taylor if (!MmsConfig.getMmsEnabled()) { 155c555f86a3f5b2f19244cc9c282f49cb834de12e8Tom Taylor // No Mms, remove all the mms-related preferences 156c555f86a3f5b2f19244cc9c282f49cb834de12e8Tom Taylor PreferenceCategory mmsOptions = 157c555f86a3f5b2f19244cc9c282f49cb834de12e8Tom Taylor (PreferenceCategory)findPreference("pref_key_mms_settings"); 158c555f86a3f5b2f19244cc9c282f49cb834de12e8Tom Taylor getPreferenceScreen().removePreference(mmsOptions); 159c555f86a3f5b2f19244cc9c282f49cb834de12e8Tom Taylor 160c555f86a3f5b2f19244cc9c282f49cb834de12e8Tom Taylor PreferenceCategory storageOptions = 161c555f86a3f5b2f19244cc9c282f49cb834de12e8Tom Taylor (PreferenceCategory)findPreference("pref_key_storage_settings"); 162c555f86a3f5b2f19244cc9c282f49cb834de12e8Tom Taylor storageOptions.removePreference(findPreference("pref_key_mms_delete_limit")); 163b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin } else { 164602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor if (!MmsConfig.getMMSDeliveryReportsEnabled()) { 165b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin PreferenceCategory mmsOptions = 166b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin (PreferenceCategory)findPreference("pref_key_mms_settings"); 167b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin mmsOptions.removePreference(mMmsDeliveryReportPref); 168b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin } 169602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor if (!MmsConfig.getMMSReadReportsEnabled()) { 170b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin PreferenceCategory mmsOptions = 171b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin (PreferenceCategory)findPreference("pref_key_mms_settings"); 172b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin mmsOptions.removePreference(mMmsReadReportPref); 173b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin } 174c555f86a3f5b2f19244cc9c282f49cb834de12e8Tom Taylor } 1754c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylor 176d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor setEnabledNotificationsPref(); 177d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor 1789258283a430fdf030785c96380c2628603ea7e20Jim Shuma // If needed, migrate vibration setting from a previous version 1799258283a430fdf030785c96380c2628603ea7e20Jim Shuma SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 1809258283a430fdf030785c96380c2628603ea7e20Jim Shuma if (!sharedPreferences.contains(NOTIFICATION_VIBRATE_WHEN) && 1819258283a430fdf030785c96380c2628603ea7e20Jim Shuma sharedPreferences.contains(NOTIFICATION_VIBRATE)) { 1829258283a430fdf030785c96380c2628603ea7e20Jim Shuma int stringId = sharedPreferences.getBoolean(NOTIFICATION_VIBRATE, false) ? 1839258283a430fdf030785c96380c2628603ea7e20Jim Shuma R.string.prefDefault_vibrate_true : 1849258283a430fdf030785c96380c2628603ea7e20Jim Shuma R.string.prefDefault_vibrate_false; 1859258283a430fdf030785c96380c2628603ea7e20Jim Shuma mVibrateWhenPref.setValue(getString(stringId)); 1869258283a430fdf030785c96380c2628603ea7e20Jim Shuma } 1879258283a430fdf030785c96380c2628603ea7e20Jim Shuma 18853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mSmsRecycler = Recycler.getSmsRecycler(); 18953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mMmsRecycler = Recycler.getMmsRecycler(); 19053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 1913239889e9a417617b755d4cde22070843e5c070bTom Taylor // Fix up the recycler's summary with the correct values 19253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor setSmsDisplayLimit(); 19353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor setMmsDisplayLimit(); 19492bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor 19592bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor adjustVibrateSummary(mVibrateWhenPref.getValue()); 19653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor } 19753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 198d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor private void setEnabledNotificationsPref() { 199d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor // The "enable notifications" setting is really stored in our own prefs. Read the 200d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor // current value and set the checkbox to match. 201d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor mEnableNotificationsPref.setChecked(getNotificationEnabled(this)); 202d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor } 203d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor 20453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor private void setSmsDisplayLimit() { 20553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mSmsLimitPref.setSummary( 20653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor getString(R.string.pref_summary_delete_limit, 20753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mSmsRecycler.getMessageLimit(this))); 20853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor } 20953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 21053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor private void setMmsDisplayLimit() { 21153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mMmsLimitPref.setSummary( 21253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor getString(R.string.pref_summary_delete_limit, 21353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mMmsRecycler.getMessageLimit(this))); 21472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 21572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 21672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public boolean onCreateOptionsMenu(Menu menu) { 21772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project super.onCreateOptionsMenu(menu); 21872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project menu.clear(); 21972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project menu.add(0, MENU_RESTORE_DEFAULTS, 0, R.string.restore_default); 22072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return true; 22172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 22272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project 22372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project @Override 22472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project public boolean onOptionsItemSelected(MenuItem item) { 22572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project switch (item.getItemId()) { 22672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project case MENU_RESTORE_DEFAULTS: 22772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project restoreDefaultPreferences(); 22872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return true; 2293c4edf4c2b63078cb7aae9806b7ed7b2faa50d9eTom Taylor 2303c4edf4c2b63078cb7aae9806b7ed7b2faa50d9eTom Taylor case android.R.id.home: 2313c4edf4c2b63078cb7aae9806b7ed7b2faa50d9eTom Taylor // The user clicked on the Messaging icon in the action bar. Take them back from 2323c4edf4c2b63078cb7aae9806b7ed7b2faa50d9eTom Taylor // wherever they came from 2333c4edf4c2b63078cb7aae9806b7ed7b2faa50d9eTom Taylor finish(); 2343c4edf4c2b63078cb7aae9806b7ed7b2faa50d9eTom Taylor return true; 23572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 23672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project return false; 23772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project } 23853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 23953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor @Override 24053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, 24153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor Preference preference) { 24253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor if (preference == mSmsLimitPref) { 24353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor new NumberPickerDialog(this, 24453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mSmsLimitListener, 24553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mSmsRecycler.getMessageLimit(this), 24653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mSmsRecycler.getMessageMinLimit(), 24753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mSmsRecycler.getMessageMaxLimit(), 24853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor R.string.pref_title_sms_delete).show(); 24953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor } else if (preference == mMmsLimitPref) { 25053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor new NumberPickerDialog(this, 25153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mMmsLimitListener, 25253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mMmsRecycler.getMessageLimit(this), 25353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mMmsRecycler.getMessageMinLimit(), 25453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mMmsRecycler.getMessageMaxLimit(), 25553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor R.string.pref_title_mms_delete).show(); 2564c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylor } else if (preference == mManageSimPref) { 2574c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylor startActivity(new Intent(this, ManageSimMessages.class)); 2588447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor } else if (preference == mClearHistoryPref) { 2598447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor showDialog(CONFIRM_CLEAR_SEARCH_HISTORY_DIALOG); 2608447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor return true; 261d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor } else if (preference == mEnableNotificationsPref) { 262d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor // Update the actual "enable notifications" value that is stored in secure settings. 263d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor enableNotifications(mEnableNotificationsPref.isChecked(), this); 26453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor } 26553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 26653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor return super.onPreferenceTreeClick(preferenceScreen, preference); 26753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor } 26853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 26953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 27053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor NumberPickerDialog.OnNumberSetListener mSmsLimitListener = 27153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor new NumberPickerDialog.OnNumberSetListener() { 27253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor public void onNumberSet(int limit) { 27353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mSmsRecycler.setMessageLimit(MessagingPreferenceActivity.this, limit); 27453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor setSmsDisplayLimit(); 27553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor } 27653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor }; 27753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor 27853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor NumberPickerDialog.OnNumberSetListener mMmsLimitListener = 27953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor new NumberPickerDialog.OnNumberSetListener() { 28053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor public void onNumberSet(int limit) { 28153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor mMmsRecycler.setMessageLimit(MessagingPreferenceActivity.this, limit); 28253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor setMmsDisplayLimit(); 28353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor } 28453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor }; 2858447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor 2868447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor @Override 2878447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor protected Dialog onCreateDialog(int id) { 2888447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor switch (id) { 2898447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor case CONFIRM_CLEAR_SEARCH_HISTORY_DIALOG: 2908447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor return new AlertDialog.Builder(MessagingPreferenceActivity.this) 2918447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor .setTitle(R.string.confirm_clear_search_title) 2928447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor .setMessage(R.string.confirm_clear_search_text) 2938447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor .setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() { 2948447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor public void onClick(DialogInterface dialog, int which) { 295f114492537753bc68640d4a0d403861387296bcbMark Wagner SearchRecentSuggestions recent = 296f114492537753bc68640d4a0d403861387296bcbMark Wagner ((MmsApp)getApplication()).getRecentSuggestions(); 297f114492537753bc68640d4a0d403861387296bcbMark Wagner if (recent != null) { 298f114492537753bc68640d4a0d403861387296bcbMark Wagner recent.clearHistory(); 299f114492537753bc68640d4a0d403861387296bcbMark Wagner } 300c4a34a0ccd414e2bba937e8abd105a0383afff35Tom Taylor dialog.dismiss(); 3018447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor } 3028447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor }) 3038447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor .setNegativeButton(android.R.string.cancel, null) 3048447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor .setIcon(android.R.drawable.ic_dialog_alert) 3058447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor .create(); 3068447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor } 3078447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor return super.onCreateDialog(id); 3088447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor } 3098447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor 310d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor public static boolean getNotificationEnabled(Context context) { 311d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); 312d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor boolean notificationsEnabled = 313d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor prefs.getBoolean(MessagingPreferenceActivity.NOTIFICATION_ENABLED, true); 314d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor return notificationsEnabled; 315d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor } 316d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor 317d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor public static void enableNotifications(boolean enabled, Context context) { 318d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor // Store the value of notifications in SharedPreferences 319d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor SharedPreferences.Editor editor = 320d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor PreferenceManager.getDefaultSharedPreferences(context).edit(); 321d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor 322d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor editor.putBoolean(MessagingPreferenceActivity.NOTIFICATION_ENABLED, enabled); 323d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor 324d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor editor.apply(); 325d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor } 32692bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor 32792bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor private void registerListeners() { 32892bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor mVibrateWhenPref.setOnPreferenceChangeListener(this); 32992bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor } 33092bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor 33192bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor public boolean onPreferenceChange(Preference preference, Object newValue) { 33292bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor boolean result = false; 33392bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor if (preference == mVibrateWhenPref) { 33492bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor adjustVibrateSummary((String)newValue); 33592bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor result = true; 33692bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor } 33792bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor return result; 33892bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor } 33992bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor 34092bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor private void adjustVibrateSummary(String value) { 34192bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor int len = mVibrateValues.length; 34292bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor for (int i = 0; i < len; i++) { 34392bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor if (mVibrateValues[i].equals(value)) { 34492bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor mVibrateWhenPref.setSummary(mVibrateEntries[i]); 34592bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor return; 34692bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor } 34792bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor } 34892bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor mVibrateWhenPref.setSummary(null); 34992bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor } 35072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project} 351