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