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
203c4edf4c2b63078cb7aae9806b7ed7b2faa50d9eTom Taylorimport android.app.ActionBar;
218447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylorimport android.app.AlertDialog;
228447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylorimport android.app.Dialog;
23d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylorimport android.content.Context;
248447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylorimport android.content.DialogInterface;
254c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylorimport android.content.Intent;
269258283a430fdf030785c96380c2628603ea7e20Jim Shumaimport android.content.SharedPreferences;
2790e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylorimport android.media.Ringtone;
2890e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylorimport android.media.RingtoneManager;
2990e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylorimport android.net.Uri;
3072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.os.Bundle;
31d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylorimport android.preference.CheckBoxPreference;
3253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylorimport android.preference.Preference;
33d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport android.preference.Preference.OnPreferenceChangeListener;
3472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.preference.PreferenceActivity;
354c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylorimport android.preference.PreferenceCategory;
3672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.preference.PreferenceManager;
3753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylorimport android.preference.PreferenceScreen;
3890e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylorimport android.preference.RingtonePreference;
39f114492537753bc68640d4a0d403861387296bcbMark Wagnerimport android.provider.SearchRecentSuggestions;
4041ae031d70cbb9973d283fa2bff1643f08999e3cTom Taylorimport android.text.TextUtils;
4172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.Menu;
4272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Projectimport android.view.MenuItem;
433239889e9a417617b755d4cde22070843e5c070bTom Taylor
44d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.MmsApp;
45d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.MmsConfig;
46d64419030e1fec1e751695dab3bd7236e2fb0214Roger Chenimport com.android.mms.R;
4756e8095ef2e82f8db5fd4a04fa0a67c91cc7fbd3Tom Taylorimport com.android.mms.transaction.TransactionService;
483239889e9a417617b755d4cde22070843e5c070bTom Taylorimport com.android.mms.util.Recycler;
4972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
5072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project/**
5172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * With this activity, users can set preferences for MMS and SMS and
5272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project * can access and manipulate SMS messages stored on the SIM.
5372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project */
5492bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylorpublic class MessagingPreferenceActivity extends PreferenceActivity
5592bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor            implements OnPreferenceChangeListener {
5672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    // Symbolic names for the keys used for preference lookup
5772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public static final String MMS_DELIVERY_REPORT_MODE = "pref_key_mms_delivery_reports";
5872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public static final String EXPIRY_TIME              = "pref_key_mms_expiry";
5972735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public static final String PRIORITY                 = "pref_key_mms_priority";
6072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public static final String READ_REPORT_MODE         = "pref_key_mms_read_reports";
6172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public static final String SMS_DELIVERY_REPORT_MODE = "pref_key_sms_delivery_reports";
6272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public static final String NOTIFICATION_ENABLED     = "pref_key_enable_notifications";
6372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public static final String NOTIFICATION_VIBRATE     = "pref_key_vibrate";
64006d49271549ed639ffcd70d94c7650bb3514796Jim Shuma    public static final String NOTIFICATION_VIBRATE_WHEN= "pref_key_vibrateWhen";
6572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public static final String NOTIFICATION_RINGTONE    = "pref_key_ringtone";
6672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public static final String AUTO_RETRIEVAL           = "pref_key_mms_auto_retrieval";
6772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public static final String RETRIEVAL_DURING_ROAMING = "pref_key_mms_retrieval_during_roaming";
683239889e9a417617b755d4cde22070843e5c070bTom Taylor    public static final String AUTO_DELETE              = "pref_key_auto_delete";
699889006f9d29d0509c1c036987ce028de43ac96eTom Taylor    public static final String GROUP_MMS_MODE           = "pref_key_mms_group_mms";
7072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
7172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    // Menu entries
7272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    private static final int MENU_RESTORE_DEFAULTS    = 1;
7372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
74991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun    // Preferences for enabling and disabling SMS
75991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun    private Preference mSmsDisabledPref;
76991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun    private Preference mSmsEnabledPref;
77991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun
784ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun    private PreferenceCategory mStoragePrefCategory;
794ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun    private PreferenceCategory mSmsPrefCategory;
804ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun    private PreferenceCategory mMmsPrefCategory;
814ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun    private PreferenceCategory mNotificationPrefCategory;
824ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun
8353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    private Preference mSmsLimitPref;
84b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin    private Preference mSmsDeliveryReportPref;
8553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    private Preference mMmsLimitPref;
86b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin    private Preference mMmsDeliveryReportPref;
879889006f9d29d0509c1c036987ce028de43ac96eTom Taylor    private Preference mMmsGroupMmsPref;
88b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin    private Preference mMmsReadReportPref;
894c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylor    private Preference mManageSimPref;
908447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor    private Preference mClearHistoryPref;
9190e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor    private CheckBoxPreference mVibratePref;
92d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor    private CheckBoxPreference mEnableNotificationsPref;
9356e8095ef2e82f8db5fd4a04fa0a67c91cc7fbd3Tom Taylor    private CheckBoxPreference mMmsAutoRetrievialPref;
9490e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor    private RingtonePreference mRingtonePref;
9553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    private Recycler mSmsRecycler;
9653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    private Recycler mMmsRecycler;
978447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor    private static final int CONFIRM_CLEAR_SEARCH_HISTORY_DIALOG = 3;
9853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor
99991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun    // Whether or not we are currently enabled for SMS. This field is updated in onResume to make
100991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun    // sure we notice if the user has changed the default SMS app.
101991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun    private boolean mIsSmsEnabled;
102991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun
10372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    @Override
10472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    protected void onCreate(Bundle icicle) {
10572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        super.onCreate(icicle);
106dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor
107dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor        loadPrefs();
108dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor
109dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor        ActionBar actionBar = getActionBar();
110dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor        actionBar.setDisplayHomeAsUpEnabled(true);
111dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor    }
112dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor
113dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor    @Override
114dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor    protected void onResume() {
115dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor        super.onResume();
116991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun        boolean isSmsEnabled = MmsConfig.isSmsEnabled(this);
117991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun        if (isSmsEnabled != mIsSmsEnabled) {
118991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun            mIsSmsEnabled = isSmsEnabled;
119991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun            invalidateOptionsMenu();
120991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun        }
121dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor
122dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor        // Since the enabled notifications pref can be changed outside of this activity,
123dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor        // we have to reload it whenever we resume.
124dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor        setEnabledNotificationsPref();
125b7eb6357e0884b7423a81ae3fed008e8e07c14e1Jean-Baptiste Queru        registerListeners();
126991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun        updateSmsEnabledState();
127991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun    }
128991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun
129991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun    private void updateSmsEnabledState() {
130991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun        // Show the right pref (SMS Disabled or SMS Enabled)
131991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun        PreferenceScreen prefRoot = (PreferenceScreen)findPreference("pref_key_root");
132991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun        if (!mIsSmsEnabled) {
133991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun            prefRoot.addPreference(mSmsDisabledPref);
134991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun            prefRoot.removePreference(mSmsEnabledPref);
135991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun        } else {
136991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun            prefRoot.removePreference(mSmsDisabledPref);
137991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun            prefRoot.addPreference(mSmsEnabledPref);
138991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun        }
139991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun
140991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun        // Enable or Disable the settings as appropriate
1414ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun        mStoragePrefCategory.setEnabled(mIsSmsEnabled);
1424ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun        mSmsPrefCategory.setEnabled(mIsSmsEnabled);
1434ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun        mMmsPrefCategory.setEnabled(mIsSmsEnabled);
1444ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun        mNotificationPrefCategory.setEnabled(mIsSmsEnabled);
145dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor    }
146dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor
147dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor    private void loadPrefs() {
14872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        addPreferencesFromResource(R.xml.preferences);
14953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor
150991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun        mSmsDisabledPref = findPreference("pref_key_sms_disabled");
151991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun        mSmsEnabledPref = findPreference("pref_key_sms_enabled");
152991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun
1534ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun        mStoragePrefCategory = (PreferenceCategory)findPreference("pref_key_storage_settings");
1544ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun        mSmsPrefCategory = (PreferenceCategory)findPreference("pref_key_sms_settings");
1554ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun        mMmsPrefCategory = (PreferenceCategory)findPreference("pref_key_mms_settings");
1564ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun        mNotificationPrefCategory =
1574ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun                (PreferenceCategory)findPreference("pref_key_notification_settings");
1584ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun
1594c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylor        mManageSimPref = findPreference("pref_key_manage_sim_messages");
16053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor        mSmsLimitPref = findPreference("pref_key_sms_delete_limit");
161b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin        mSmsDeliveryReportPref = findPreference("pref_key_sms_delivery_reports");
162b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin        mMmsDeliveryReportPref = findPreference("pref_key_mms_delivery_reports");
1639889006f9d29d0509c1c036987ce028de43ac96eTom Taylor        mMmsGroupMmsPref = findPreference("pref_key_mms_group_mms");
164b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin        mMmsReadReportPref = findPreference("pref_key_mms_read_reports");
16553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor        mMmsLimitPref = findPreference("pref_key_mms_delete_limit");
1668447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor        mClearHistoryPref = findPreference("pref_key_mms_clear_history");
167d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor        mEnableNotificationsPref = (CheckBoxPreference) findPreference(NOTIFICATION_ENABLED);
16856e8095ef2e82f8db5fd4a04fa0a67c91cc7fbd3Tom Taylor        mMmsAutoRetrievialPref = (CheckBoxPreference) findPreference(AUTO_RETRIEVAL);
16990e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor        mVibratePref = (CheckBoxPreference) findPreference(NOTIFICATION_VIBRATE);
17090e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor        mRingtonePref = (RingtonePreference) findPreference(NOTIFICATION_RINGTONE);
17192bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor
172d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor        setMessagePreferences();
173d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor    }
174d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor
175dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor    private void restoreDefaultPreferences() {
176dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor        PreferenceManager.getDefaultSharedPreferences(this).edit().clear().apply();
177dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor        setPreferenceScreen(null);
178dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor        loadPrefs();
179991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun        updateSmsEnabledState();
180dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor
181dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor        // NOTE: After restoring preferences, the auto delete function (i.e. message recycler)
182dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor        // will be turned off by default. However, we really want the default to be turned on.
183dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor        // Because all the prefs are cleared, that'll cause:
184dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor        // ConversationList.runOneTimeStorageLimitCheckForLegacyMessages to get executed the
185dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor        // next time the user runs the Messaging app and it will either turn on the setting
186dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor        // by default, or if the user is over the limits, encourage them to turn on the setting
187dd52c9d19bbc089d69d86811f49fead9b52be507Tom Taylor        // manually.
188d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor    }
189d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor
190d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor    private void setMessagePreferences() {
191bb8edcae15a50b3651261db70791afc668aae294Tom Taylor        if (!MmsApp.getApplication().getTelephonyManager().hasIccCard()) {
1924c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylor            // No SIM card, remove the SIM-related prefs
1934ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun            mSmsPrefCategory.removePreference(mManageSimPref);
1944c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylor        }
195b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin
196602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor        if (!MmsConfig.getSMSDeliveryReportsEnabled()) {
1974ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun            mSmsPrefCategory.removePreference(mSmsDeliveryReportPref);
198b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin            if (!MmsApp.getApplication().getTelephonyManager().hasIccCard()) {
1994ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun                getPreferenceScreen().removePreference(mSmsPrefCategory);
200b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin            }
201b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin        }
202b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin
203c555f86a3f5b2f19244cc9c282f49cb834de12e8Tom Taylor        if (!MmsConfig.getMmsEnabled()) {
204c555f86a3f5b2f19244cc9c282f49cb834de12e8Tom Taylor            // No Mms, remove all the mms-related preferences
2054ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun            getPreferenceScreen().removePreference(mMmsPrefCategory);
206c555f86a3f5b2f19244cc9c282f49cb834de12e8Tom Taylor
2074ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun            mStoragePrefCategory.removePreference(findPreference("pref_key_mms_delete_limit"));
208b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin        } else {
2099889006f9d29d0509c1c036987ce028de43ac96eTom Taylor            if (!MmsConfig.getMMSDeliveryReportsEnabled()) {
2104ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun                mMmsPrefCategory.removePreference(mMmsDeliveryReportPref);
211b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin            }
212602025862f535f493bb348dc2a6cc9a1fe150fb1Tom Taylor            if (!MmsConfig.getMMSReadReportsEnabled()) {
2134ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun                mMmsPrefCategory.removePreference(mMmsReadReportPref);
214b264ea0a6b212e90b4736d0a8ffde69c15293ee3Soojung Shin            }
21541ae031d70cbb9973d283fa2bff1643f08999e3cTom Taylor            // If the phone's SIM doesn't know it's own number, disable group mms.
21641ae031d70cbb9973d283fa2bff1643f08999e3cTom Taylor            if (!MmsConfig.getGroupMmsEnabled() ||
21741ae031d70cbb9973d283fa2bff1643f08999e3cTom Taylor                    TextUtils.isEmpty(MessageUtils.getLocalNumber())) {
2184ad70c5cfe23791f67cc368c579fd0b8a84936f3David Braun                mMmsPrefCategory.removePreference(mMmsGroupMmsPref);
2199889006f9d29d0509c1c036987ce028de43ac96eTom Taylor            }
220c555f86a3f5b2f19244cc9c282f49cb834de12e8Tom Taylor        }
2214c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylor
222d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor        setEnabledNotificationsPref();
223d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor
22490e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor        // If needed, migrate vibration setting from the previous tri-state setting stored in
22590e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor        // NOTIFICATION_VIBRATE_WHEN to the boolean setting stored in NOTIFICATION_VIBRATE.
2269258283a430fdf030785c96380c2628603ea7e20Jim Shuma        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
22790e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor        if (sharedPreferences.contains(NOTIFICATION_VIBRATE_WHEN)) {
22890e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor            String vibrateWhen = sharedPreferences.
22990e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor                    getString(MessagingPreferenceActivity.NOTIFICATION_VIBRATE_WHEN, null);
23090e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor            boolean vibrate = "always".equals(vibrateWhen);
23190e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor            SharedPreferences.Editor prefsEditor = sharedPreferences.edit();
23290e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor            prefsEditor.putBoolean(NOTIFICATION_VIBRATE, vibrate);
23390e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor            prefsEditor.remove(NOTIFICATION_VIBRATE_WHEN);  // remove obsolete setting
23490e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor            prefsEditor.apply();
23590e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor            mVibratePref.setChecked(vibrate);
2369258283a430fdf030785c96380c2628603ea7e20Jim Shuma        }
2379258283a430fdf030785c96380c2628603ea7e20Jim Shuma
23853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor        mSmsRecycler = Recycler.getSmsRecycler();
23953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor        mMmsRecycler = Recycler.getMmsRecycler();
24053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor
2413239889e9a417617b755d4cde22070843e5c070bTom Taylor        // Fix up the recycler's summary with the correct values
24253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor        setSmsDisplayLimit();
24353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor        setMmsDisplayLimit();
24492bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor
24590e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor        String soundValue = sharedPreferences.getString(NOTIFICATION_RINGTONE, null);
24690e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor        setRingtoneSummary(soundValue);
24790e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor    }
24890e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor
24990e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor    private void setRingtoneSummary(String soundValue) {
25090e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor        Uri soundUri = TextUtils.isEmpty(soundValue) ? null : Uri.parse(soundValue);
25190e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor        Ringtone tone = soundUri != null ? RingtoneManager.getRingtone(this, soundUri) : null;
25290e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor        mRingtonePref.setSummary(tone != null ? tone.getTitle(this)
25390e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor                : getResources().getString(R.string.silent_ringtone));
25453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    }
25553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor
256d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor    private void setEnabledNotificationsPref() {
257d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor        // The "enable notifications" setting is really stored in our own prefs. Read the
258d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor        // current value and set the checkbox to match.
259d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor        mEnableNotificationsPref.setChecked(getNotificationEnabled(this));
260d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor    }
261d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor
26253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    private void setSmsDisplayLimit() {
26353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor        mSmsLimitPref.setSummary(
26453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                getString(R.string.pref_summary_delete_limit,
26553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                        mSmsRecycler.getMessageLimit(this)));
26653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    }
26753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor
26853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    private void setMmsDisplayLimit() {
26953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor        mMmsLimitPref.setSummary(
27053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                getString(R.string.pref_summary_delete_limit,
27153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                        mMmsRecycler.getMessageLimit(this)));
27272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
27372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
27472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public boolean onCreateOptionsMenu(Menu menu) {
27572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        super.onCreateOptionsMenu(menu);
27672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        menu.clear();
277991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun        if (mIsSmsEnabled) {
278991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun            menu.add(0, MENU_RESTORE_DEFAULTS, 0, R.string.restore_default);
279991a1f3a31bd749573b4d780a3e4d01e6c1c293fDavid Braun        }
28072735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        return true;
28172735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
28272735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project
28372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    @Override
28472735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    public boolean onOptionsItemSelected(MenuItem item) {
28572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        switch (item.getItemId()) {
28672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project            case MENU_RESTORE_DEFAULTS:
28772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                restoreDefaultPreferences();
28872735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project                return true;
2893c4edf4c2b63078cb7aae9806b7ed7b2faa50d9eTom Taylor
2903c4edf4c2b63078cb7aae9806b7ed7b2faa50d9eTom Taylor            case android.R.id.home:
2913c4edf4c2b63078cb7aae9806b7ed7b2faa50d9eTom Taylor                // The user clicked on the Messaging icon in the action bar. Take them back from
2923c4edf4c2b63078cb7aae9806b7ed7b2faa50d9eTom Taylor                // wherever they came from
2933c4edf4c2b63078cb7aae9806b7ed7b2faa50d9eTom Taylor                finish();
2943c4edf4c2b63078cb7aae9806b7ed7b2faa50d9eTom Taylor                return true;
29572735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        }
29672735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project        return false;
29772735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project    }
29853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor
29953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    @Override
30053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
30153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor            Preference preference) {
30253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor        if (preference == mSmsLimitPref) {
30353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor            new NumberPickerDialog(this,
30453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                    mSmsLimitListener,
30553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                    mSmsRecycler.getMessageLimit(this),
30653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                    mSmsRecycler.getMessageMinLimit(),
30753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                    mSmsRecycler.getMessageMaxLimit(),
30853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                    R.string.pref_title_sms_delete).show();
30953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor        } else if (preference == mMmsLimitPref) {
31053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor            new NumberPickerDialog(this,
31153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                    mMmsLimitListener,
31253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                    mMmsRecycler.getMessageLimit(this),
31353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                    mMmsRecycler.getMessageMinLimit(),
31453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                    mMmsRecycler.getMessageMaxLimit(),
31553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                    R.string.pref_title_mms_delete).show();
3164c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylor        } else if (preference == mManageSimPref) {
3174c93cf90a87725e0b6958f933b20e149e6c074f0Tom Taylor            startActivity(new Intent(this, ManageSimMessages.class));
3188447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor        } else if (preference == mClearHistoryPref) {
3198447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor            showDialog(CONFIRM_CLEAR_SEARCH_HISTORY_DIALOG);
3208447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor            return true;
321d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor        } else if (preference == mEnableNotificationsPref) {
322d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor            // Update the actual "enable notifications" value that is stored in secure settings.
323d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor            enableNotifications(mEnableNotificationsPref.isChecked(), this);
32456e8095ef2e82f8db5fd4a04fa0a67c91cc7fbd3Tom Taylor        } else if (preference == mMmsAutoRetrievialPref) {
32556e8095ef2e82f8db5fd4a04fa0a67c91cc7fbd3Tom Taylor            if (mMmsAutoRetrievialPref.isChecked()) {
32656e8095ef2e82f8db5fd4a04fa0a67c91cc7fbd3Tom Taylor                startMmsDownload();
32756e8095ef2e82f8db5fd4a04fa0a67c91cc7fbd3Tom Taylor            }
32853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor        }
32953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor
33053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor        return super.onPreferenceTreeClick(preferenceScreen, preference);
33153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    }
33253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor
33356e8095ef2e82f8db5fd4a04fa0a67c91cc7fbd3Tom Taylor    /**
33456e8095ef2e82f8db5fd4a04fa0a67c91cc7fbd3Tom Taylor     * Trigger the TransactionService to download any outstanding messages.
33556e8095ef2e82f8db5fd4a04fa0a67c91cc7fbd3Tom Taylor     */
33656e8095ef2e82f8db5fd4a04fa0a67c91cc7fbd3Tom Taylor    private void startMmsDownload() {
33756e8095ef2e82f8db5fd4a04fa0a67c91cc7fbd3Tom Taylor        startService(new Intent(TransactionService.ACTION_ENABLE_AUTO_RETRIEVE, null, this,
33856e8095ef2e82f8db5fd4a04fa0a67c91cc7fbd3Tom Taylor                TransactionService.class));
33956e8095ef2e82f8db5fd4a04fa0a67c91cc7fbd3Tom Taylor    }
34053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor
34153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    NumberPickerDialog.OnNumberSetListener mSmsLimitListener =
34253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor        new NumberPickerDialog.OnNumberSetListener() {
34353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor            public void onNumberSet(int limit) {
34453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                mSmsRecycler.setMessageLimit(MessagingPreferenceActivity.this, limit);
34553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                setSmsDisplayLimit();
34653a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor            }
34753a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    };
34853a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor
34953a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    NumberPickerDialog.OnNumberSetListener mMmsLimitListener =
35053a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor        new NumberPickerDialog.OnNumberSetListener() {
35153a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor            public void onNumberSet(int limit) {
35253a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                mMmsRecycler.setMessageLimit(MessagingPreferenceActivity.this, limit);
35353a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor                setMmsDisplayLimit();
35453a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor            }
35553a1dc1c4fed88c20a3ce4c2d37c909dc1e469e2Tom Taylor    };
3568447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor
3578447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor    @Override
3588447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor    protected Dialog onCreateDialog(int id) {
3598447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor        switch (id) {
3608447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor            case CONFIRM_CLEAR_SEARCH_HISTORY_DIALOG:
3618447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor                return new AlertDialog.Builder(MessagingPreferenceActivity.this)
3628447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor                    .setTitle(R.string.confirm_clear_search_title)
3638447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor                    .setMessage(R.string.confirm_clear_search_text)
3648447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor                    .setPositiveButton(android.R.string.ok, new AlertDialog.OnClickListener() {
3658447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor                        public void onClick(DialogInterface dialog, int which) {
366f114492537753bc68640d4a0d403861387296bcbMark Wagner                            SearchRecentSuggestions recent =
367f114492537753bc68640d4a0d403861387296bcbMark Wagner                                ((MmsApp)getApplication()).getRecentSuggestions();
368f114492537753bc68640d4a0d403861387296bcbMark Wagner                            if (recent != null) {
369f114492537753bc68640d4a0d403861387296bcbMark Wagner                                recent.clearHistory();
370f114492537753bc68640d4a0d403861387296bcbMark Wagner                            }
371c4a34a0ccd414e2bba937e8abd105a0383afff35Tom Taylor                            dialog.dismiss();
3728447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor                        }
3738447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor                    })
3748447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor                    .setNegativeButton(android.R.string.cancel, null)
3757ad0a61f99867ac19cabd31b0d8db2ef4c234d24Björn Lundén                    .setIconAttribute(android.R.attr.alertDialogIcon)
3768447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor                    .create();
3778447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor        }
3788447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor        return super.onCreateDialog(id);
3798447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor    }
3808447aa1d84a469e8938b53a60b0763633b08ae98Tom Taylor
381d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor    public static boolean getNotificationEnabled(Context context) {
382d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
383d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor        boolean notificationsEnabled =
384d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor            prefs.getBoolean(MessagingPreferenceActivity.NOTIFICATION_ENABLED, true);
385d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor        return notificationsEnabled;
386d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor    }
387d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor
388d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor    public static void enableNotifications(boolean enabled, Context context) {
389d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor        // Store the value of notifications in SharedPreferences
390d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor        SharedPreferences.Editor editor =
391d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor            PreferenceManager.getDefaultSharedPreferences(context).edit();
392d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor
393d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor        editor.putBoolean(MessagingPreferenceActivity.NOTIFICATION_ENABLED, enabled);
394d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor
395d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor        editor.apply();
396d83675687b1ef742c33bffe8195d7b1852c2c01dTom Taylor    }
39792bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor
39892bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor    private void registerListeners() {
39990e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor        mRingtonePref.setOnPreferenceChangeListener(this);
40092bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor    }
40192bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor
40292bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor    public boolean onPreferenceChange(Preference preference, Object newValue) {
40392bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor        boolean result = false;
40490e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor        if (preference == mRingtonePref) {
40590e32e59610d4a395716b1cfa9c8b041b45e3d4eTom Taylor            setRingtoneSummary((String)newValue);
40692bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor            result = true;
40792bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor        }
40892bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor        return result;
40992bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor    }
41092bf054558be5898b54bd3c4f098c6924c2f77bbTom Taylor
41141ae031d70cbb9973d283fa2bff1643f08999e3cTom Taylor    // For the group mms feature to be enabled, the following must be true:
41241ae031d70cbb9973d283fa2bff1643f08999e3cTom Taylor    //  1. the feature is enabled in mms_config.xml (currently on by default)
41341ae031d70cbb9973d283fa2bff1643f08999e3cTom Taylor    //  2. the feature is enabled in the mms settings page
41441ae031d70cbb9973d283fa2bff1643f08999e3cTom Taylor    //  3. the SIM knows its own phone number
4159889006f9d29d0509c1c036987ce028de43ac96eTom Taylor    public static boolean getIsGroupMmsEnabled(Context context) {
4169889006f9d29d0509c1c036987ce028de43ac96eTom Taylor        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
4179889006f9d29d0509c1c036987ce028de43ac96eTom Taylor        boolean groupMmsPrefOn = prefs.getBoolean(
4189889006f9d29d0509c1c036987ce028de43ac96eTom Taylor                MessagingPreferenceActivity.GROUP_MMS_MODE, true);
41941ae031d70cbb9973d283fa2bff1643f08999e3cTom Taylor        return MmsConfig.getGroupMmsEnabled() &&
42041ae031d70cbb9973d283fa2bff1643f08999e3cTom Taylor                groupMmsPrefOn &&
42141ae031d70cbb9973d283fa2bff1643f08999e3cTom Taylor                !TextUtils.isEmpty(MessageUtils.getLocalNumber());
4229889006f9d29d0509c1c036987ce028de43ac96eTom Taylor    }
42372735c62aba8fd2a9420a0f9f83d22543e3c164fThe Android Open Source Project}
424