1d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd/*
2d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Copyright (C) 2015 The Android Open Source Project
3d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
4d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Licensed under the Apache License, Version 2.0 (the "License");
5d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * you may not use this file except in compliance with the License.
6d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * You may obtain a copy of the License at
7d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
8d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *      http://www.apache.org/licenses/LICENSE-2.0
9d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd *
10d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * Unless required by applicable law or agreed to in writing, software
11d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * distributed under the License is distributed on an "AS IS" BASIS,
12d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * See the License for the specific language governing permissions and
14d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd * limitations under the License.
15d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd */
16d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
17d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpackage com.android.messaging.ui.appsettings;
18d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
19d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.app.FragmentTransaction;
20d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.content.Intent;
21d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.content.SharedPreferences;
22d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.content.SharedPreferences.OnSharedPreferenceChangeListener;
23d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.media.Ringtone;
24d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.media.RingtoneManager;
25d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.net.Uri;
26d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.os.Bundle;
27d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.preference.Preference;
28d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.preference.PreferenceFragment;
29d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.preference.PreferenceScreen;
30d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.preference.RingtonePreference;
31d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.preference.TwoStatePreference;
32d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.provider.Settings;
33d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.support.v4.app.NavUtils;
34d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.text.TextUtils;
35d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.view.Menu;
36d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport android.view.MenuItem;
37d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
38d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.R;
39d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.ui.BugleActionBarActivity;
40d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.ui.LicenseActivity;
41d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.ui.UIIntents;
42d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.util.BuglePrefs;
43d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.util.DebugUtils;
44d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.util.OsUtil;
45d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddimport com.android.messaging.util.PhoneUtils;
46d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
47d3b009ae55651f1e60950342468e3c37fdeb0796Mike Doddpublic class ApplicationSettingsActivity extends BugleActionBarActivity {
48d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
49d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    protected void onCreate(final Bundle savedInstanceState) {
50d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        super.onCreate(savedInstanceState);
51d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
52d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        getSupportActionBar().setDisplayHomeAsUpEnabled(true);
53d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        final boolean topLevel = getIntent().getBooleanExtra(
54d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                UIIntents.UI_INTENT_EXTRA_TOP_LEVEL_SETTINGS, false);
55d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        if (topLevel) {
56d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            getSupportActionBar().setTitle(getString(R.string.settings_activity_title));
57d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
58d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
59d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        FragmentTransaction ft = getFragmentManager().beginTransaction();
60d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        ft.replace(android.R.id.content, new ApplicationSettingsFragment());
61d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        ft.commit();
62d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
63d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
64d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
65d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public boolean onCreateOptionsMenu(Menu menu) {
66d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        if (super.onCreateOptionsMenu(menu)) {
67d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            return true;
68d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
69d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        getMenuInflater().inflate(R.menu.settings_menu, menu);
70d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return true;
71d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
72d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
73d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    @Override
74d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public boolean onOptionsItemSelected(final MenuItem item) {
75d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        switch (item.getItemId()) {
76d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        case android.R.id.home:
77d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            NavUtils.navigateUpFromSameTask(this);
78d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            return true;
79d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        case R.id.action_license:
80d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final Intent intent = new Intent(this, LicenseActivity.class);
81d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            startActivity(intent);
82d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            return true;
83d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
84d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        return super.onOptionsItemSelected(item);
85d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
86d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
87d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    public static class ApplicationSettingsFragment extends PreferenceFragment implements
88d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            OnSharedPreferenceChangeListener {
89d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
90d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private String mNotificationsEnabledPreferenceKey;
91d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private TwoStatePreference mNotificationsEnabledPreference;
92d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private String mRingtonePreferenceKey;
93d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private RingtonePreference mRingtonePreference;
94d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private Preference mVibratePreference;
95d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private String mSmsDisabledPrefKey;
96d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private Preference mSmsDisabledPreference;
97d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private String mSmsEnabledPrefKey;
98d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private Preference mSmsEnabledPreference;
99d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private boolean mIsSmsPreferenceClicked;
100d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
101d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public ApplicationSettingsFragment() {
102d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // Required empty constructor
103d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
104d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
105d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        @Override
106d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public void onCreate(final Bundle savedInstanceState) {
107d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            super.onCreate(savedInstanceState);
108d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
109d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            getPreferenceManager().setSharedPreferencesName(BuglePrefs.SHARED_PREFERENCES_NAME);
110d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            addPreferencesFromResource(R.xml.preferences_application);
111d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
112d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mNotificationsEnabledPreferenceKey =
113d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    getString(R.string.notifications_enabled_pref_key);
114d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mNotificationsEnabledPreference = (TwoStatePreference) findPreference(
115d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    mNotificationsEnabledPreferenceKey);
116d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mRingtonePreferenceKey = getString(R.string.notification_sound_pref_key);
117d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mRingtonePreference = (RingtonePreference) findPreference(mRingtonePreferenceKey);
118d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mVibratePreference = findPreference(
119d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    getString(R.string.notification_vibration_pref_key));
120d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mSmsDisabledPrefKey = getString(R.string.sms_disabled_pref_key);
121d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mSmsDisabledPreference = findPreference(mSmsDisabledPrefKey);
122d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mSmsEnabledPrefKey = getString(R.string.sms_enabled_pref_key);
123d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mSmsEnabledPreference = findPreference(mSmsEnabledPrefKey);
124d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mIsSmsPreferenceClicked = false;
125d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
126d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final SharedPreferences prefs = getPreferenceScreen().getSharedPreferences();
127d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            updateSoundSummary(prefs);
128d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
129d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            if (!DebugUtils.isDebugEnabled()) {
130d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                final Preference debugCategory = findPreference(getString(
131d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        R.string.debug_pref_key));
132d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                getPreferenceScreen().removePreference(debugCategory);
133d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            }
134d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
135d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final PreferenceScreen advancedScreen = (PreferenceScreen) findPreference(
136d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    getString(R.string.advanced_pref_key));
137d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final boolean topLevel = getActivity().getIntent().getBooleanExtra(
138d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    UIIntents.UI_INTENT_EXTRA_TOP_LEVEL_SETTINGS, false);
139d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            if (topLevel) {
140d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                advancedScreen.setIntent(UIIntents.get()
141d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        .getAdvancedSettingsIntent(getPreferenceScreen().getContext()));
142d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            } else {
143d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                // Hide the Advanced settings screen if this is not top-level; these are shown at
144d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                // the parent SettingsActivity.
145d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                getPreferenceScreen().removePreference(advancedScreen);
146d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            }
147d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
148d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
149d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        @Override
150d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public boolean onPreferenceTreeClick (PreferenceScreen preferenceScreen,
151d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                Preference preference) {
152d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            if (preference.getKey() ==  mSmsDisabledPrefKey ||
153d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    preference.getKey() == mSmsEnabledPrefKey) {
154d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                mIsSmsPreferenceClicked = true;
155d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            }
156d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            return super.onPreferenceTreeClick(preferenceScreen, preference);
157d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
158d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
159d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private void updateSoundSummary(final SharedPreferences sharedPreferences) {
160d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // The silent ringtone just returns an empty string
161d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            String ringtoneName = mRingtonePreference.getContext().getString(
162d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    R.string.silent_ringtone);
163d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
164d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            String ringtoneString = sharedPreferences.getString(mRingtonePreferenceKey, null);
165d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
166d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // Bootstrap the default setting in the preferences so that we have a valid selection
167d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // in the dialog the first time that the user opens it.
168d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            if (ringtoneString == null) {
169d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                ringtoneString = Settings.System.DEFAULT_NOTIFICATION_URI.toString();
170d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                final SharedPreferences.Editor editor = sharedPreferences.edit();
171d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                editor.putString(mRingtonePreferenceKey, ringtoneString);
172d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                editor.apply();
173d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            }
174d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
175d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            if (!TextUtils.isEmpty(ringtoneString)) {
176d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                final Uri ringtoneUri = Uri.parse(ringtoneString);
177d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                final Ringtone tone = RingtoneManager.getRingtone(mRingtonePreference.getContext(),
178d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        ringtoneUri);
179d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
180d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                if (tone != null) {
181d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    ringtoneName = tone.getTitle(mRingtonePreference.getContext());
182d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                }
183d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            }
184d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
185d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mRingtonePreference.setSummary(ringtoneName);
186d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
187d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
188d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private void updateSmsEnabledPreferences() {
189d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            if (!OsUtil.isAtLeastKLP()) {
190d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                getPreferenceScreen().removePreference(mSmsDisabledPreference);
191d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                getPreferenceScreen().removePreference(mSmsEnabledPreference);
192d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            } else {
193d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                final String defaultSmsAppLabel = getString(R.string.default_sms_app,
194d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        PhoneUtils.getDefault().getDefaultSmsAppLabel());
195d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                boolean isSmsEnabledBeforeState;
196d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                boolean isSmsEnabledCurrentState;
197d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                if (PhoneUtils.getDefault().isDefaultSmsApp()) {
198d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    if (getPreferenceScreen().findPreference(mSmsEnabledPrefKey) == null) {
199d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        getPreferenceScreen().addPreference(mSmsEnabledPreference);
200d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        isSmsEnabledBeforeState = false;
201d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    } else {
202d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        isSmsEnabledBeforeState = true;
203d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    }
204d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    isSmsEnabledCurrentState = true;
205d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    getPreferenceScreen().removePreference(mSmsDisabledPreference);
206d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    mSmsEnabledPreference.setSummary(defaultSmsAppLabel);
207d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                } else {
208d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    if (getPreferenceScreen().findPreference(mSmsDisabledPrefKey) == null) {
209d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        getPreferenceScreen().addPreference(mSmsDisabledPreference);
210d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        isSmsEnabledBeforeState = true;
211d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    } else {
212d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                        isSmsEnabledBeforeState = false;
213d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    }
214d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    isSmsEnabledCurrentState = false;
215d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    getPreferenceScreen().removePreference(mSmsEnabledPreference);
216d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    mSmsDisabledPreference.setSummary(defaultSmsAppLabel);
217d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                }
218d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                updateNotificationsPreferences();
219d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            }
220d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mIsSmsPreferenceClicked = false;
221d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
222d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
223d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        private void updateNotificationsPreferences() {
224d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            final boolean canNotify = !OsUtil.isAtLeastKLP()
225d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    || PhoneUtils.getDefault().isDefaultSmsApp();
226d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            mNotificationsEnabledPreference.setEnabled(canNotify);
227d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
228d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
229d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        @Override
230d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public void onStart() {
231d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            super.onStart();
232d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // We do this on start rather than on resume because the sound picker is in a
233d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            // separate activity.
234d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            getPreferenceScreen().getSharedPreferences()
235d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    .registerOnSharedPreferenceChangeListener(this);
236d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
237d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
238d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        @Override
239d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public void onResume() {
240d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            super.onResume();
241d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            updateSmsEnabledPreferences();
242d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            updateNotificationsPreferences();
243d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
244d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
245d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        @Override
246d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public void onSharedPreferenceChanged(final SharedPreferences sharedPreferences,
247d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                final String key) {
248d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            if (key.equals(mNotificationsEnabledPreferenceKey)) {
249d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                updateNotificationsPreferences();
250d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            } else if (key.equals(mRingtonePreferenceKey)) {
251d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                updateSoundSummary(sharedPreferences);
252d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            }
253d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
254d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd
255d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        @Override
256d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        public void onStop() {
257d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            super.onStop();
258d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd            getPreferenceScreen().getSharedPreferences()
259d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd                    .unregisterOnSharedPreferenceChangeListener(this);
260d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd        }
261d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd    }
262d3b009ae55651f1e60950342468e3c37fdeb0796Mike Dodd}
263