|
21 | 21 | import android.content.DialogInterface; |
22 | 22 | import android.content.Intent; |
23 | 23 | import android.content.SharedPreferences; |
| 24 | +import android.media.Ringtone; |
| 25 | +import android.media.RingtoneManager; |
24 | 26 | import android.net.Uri; |
25 | 27 | import android.os.Build; |
26 | 28 | import android.os.Bundle; |
27 | 29 | import android.preference.CheckBoxPreference; |
28 | 30 | import android.preference.EditTextPreference; |
| 31 | +import android.preference.ListPreference; |
29 | 32 | import android.preference.Preference; |
30 | 33 | import android.preference.PreferenceGroup; |
31 | 34 | import android.preference.PreferenceManager; |
32 | 35 | import android.preference.PreferenceScreen; |
| 36 | +import android.preference.RingtonePreference; |
33 | 37 | import android.provider.ContactsContract; |
34 | 38 | import android.provider.Telephony; |
| 39 | +import android.text.TextUtils; |
35 | 40 | import android.util.Log; |
36 | 41 | import android.widget.Toast; |
37 | 42 |
|
@@ -128,6 +133,16 @@ protected void onCreate(Bundle icicle) { |
128 | 133 | .setOnPreferenceChangeListener(new DisablePassphraseClickListener()); |
129 | 134 | this.findPreference(MMS_PREF) |
130 | 135 | .setOnPreferenceClickListener(new ApnPreferencesClickListener()); |
| 136 | + this.findPreference(LED_COLOR_PREF) |
| 137 | + .setOnPreferenceChangeListener(new ListSummaryListener()); |
| 138 | + this.findPreference(LED_BLINK_PREF) |
| 139 | + .setOnPreferenceChangeListener(new ListSummaryListener()); |
| 140 | + this.findPreference(RINGTONE_PREF) |
| 141 | + .setOnPreferenceChangeListener(new RingtoneSummaryListener()); |
| 142 | + |
| 143 | + initializeListSummary((ListPreference) findPreference(LED_COLOR_PREF)); |
| 144 | + initializeListSummary((ListPreference) findPreference(LED_BLINK_PREF)); |
| 145 | + initializeRingtoneSummary((RingtonePreference) findPreference(RINGTONE_PREF)); |
131 | 146 | } |
132 | 147 |
|
133 | 148 | @Override |
@@ -225,6 +240,18 @@ private void initializeIdentitySelection() { |
225 | 240 | } |
226 | 241 | } |
227 | 242 |
|
| 243 | + private void initializeListSummary(ListPreference pref) { |
| 244 | + pref.setSummary(pref.getEntry()); |
| 245 | + } |
| 246 | + |
| 247 | + private void initializeRingtoneSummary(RingtonePreference pref) { |
| 248 | + RingtoneSummaryListener listener = |
| 249 | + (RingtoneSummaryListener) pref.getOnPreferenceChangeListener(); |
| 250 | + SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); |
| 251 | + |
| 252 | + listener.onPreferenceChange(pref, sharedPreferences.getString(pref.getKey(), "")); |
| 253 | + } |
| 254 | + |
228 | 255 | private void handleIdentitySelection(Intent data) { |
229 | 256 | Uri contactUri = data.getData(); |
230 | 257 |
|
@@ -380,6 +407,42 @@ public boolean onPreferenceClick(Preference preference) { |
380 | 407 | } |
381 | 408 | } |
382 | 409 |
|
| 410 | + private class ListSummaryListener implements Preference.OnPreferenceChangeListener { |
| 411 | + @Override |
| 412 | + public boolean onPreferenceChange(Preference preference, Object value) { |
| 413 | + ListPreference asList = (ListPreference) preference; |
| 414 | + |
| 415 | + int index = 0; |
| 416 | + for (; index < asList.getEntryValues().length; index++) { |
| 417 | + if (value.equals(asList.getEntryValues()[index])) { |
| 418 | + break; |
| 419 | + } |
| 420 | + } |
| 421 | + |
| 422 | + asList.setSummary(asList.getEntries()[index]); |
| 423 | + return true; |
| 424 | + } |
| 425 | + } |
| 426 | + |
| 427 | + private class RingtoneSummaryListener implements Preference.OnPreferenceChangeListener { |
| 428 | + @Override |
| 429 | + public boolean onPreferenceChange(Preference preference, Object newValue) { |
| 430 | + String value = (String) newValue; |
| 431 | + |
| 432 | + if (TextUtils.isEmpty(value)) { |
| 433 | + preference.setSummary(R.string.preferences__default); |
| 434 | + } else { |
| 435 | + Ringtone tone = RingtoneManager.getRingtone(ApplicationPreferencesActivity.this, |
| 436 | + Uri.parse(value)); |
| 437 | + if (tone != null) { |
| 438 | + preference.setSummary(tone.getTitle(ApplicationPreferencesActivity.this)); |
| 439 | + } |
| 440 | + } |
| 441 | + |
| 442 | + return true; |
| 443 | + } |
| 444 | + } |
| 445 | + |
383 | 446 | /* http://code.google.com/p/android/issues/detail?id=4611#c35 */ |
384 | 447 | @SuppressWarnings("deprecation") |
385 | 448 | @Override |
|
0 commit comments