Skip to content

Commit 6eb094c

Browse files
committed
Show LED and ringtone setting values in their summaries
As instructed in the Android design guidelines. Also removed unnatural capitalization.
1 parent 23e8035 commit 6eb094c

3 files changed

Lines changed: 67 additions & 12 deletions

File tree

res/values/strings.xml

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -440,12 +440,8 @@
440440
<string name="preferences__manage_configured_identity_keys">Manage configured identity keys</string>
441441
<string name="preferences__notifications">Notifications</string>
442442
<string name="preferences__display_message_notifications_in_status_bar">Display message notifications in status bar</string>
443-
<string name="preferences__led_color">LED Color</string>
444-
<string name="preferences__change_notification_led_color">Change notification LED color</string>
445-
<string name="preferences__pref_led_blink_title">LED Blink Pattern</string>
446-
<string name="preferences__change_notification_blink_pattern">Change notification LED blink pattern</string>
447-
<string name="preferences__pref_led_blink_dialogtitle">Select LED Blink Pattern</string>
448-
<string name="preferences__select_led_color">Select LED Color</string>
443+
<string name="preferences__led_color">LED color</string>
444+
<string name="preferences__pref_led_blink_title">LED blink pattern</string>
449445
<string name="preferences__sound">Sound</string>
450446
<string name="preferences__change_notification_sound">Change notification sound</string>
451447
<string name="preferences__inthread_notifications">In-thread notifications</string>

res/xml/preferences.xml

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,20 +32,16 @@
3232
android:defaultValue="green"
3333
android:title="@string/preferences__led_color"
3434
android:dependency="pref_key_enable_notifications"
35-
android:summary="@string/preferences__change_notification_led_color"
3635
android:entries="@array/pref_led_color_entries"
37-
android:entryValues="@array/pref_led_color_values"
38-
android:dialogTitle="@string/preferences__select_led_color" />
36+
android:entryValues="@array/pref_led_color_values" />
3937

4038
<org.thoughtcrime.securesms.preferences.LedBlinkPatternListPreference
4139
android:key="pref_led_blink"
4240
android:defaultValue="500,2000"
4341
android:title="@string/preferences__pref_led_blink_title"
4442
android:dependency="pref_key_enable_notifications"
45-
android:summary="@string/preferences__change_notification_blink_pattern"
4643
android:entries="@array/pref_led_blink_pattern_entries"
47-
android:entryValues="@array/pref_led_blink_pattern_values"
48-
android:dialogTitle="@string/preferences__pref_led_blink_dialogtitle" />
44+
android:entryValues="@array/pref_led_blink_pattern_values" />
4945

5046

5147
<RingtonePreference android:layout="?android:attr/preferenceLayoutChild"

src/org/thoughtcrime/securesms/ApplicationPreferencesActivity.java

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,22 @@
2121
import android.content.DialogInterface;
2222
import android.content.Intent;
2323
import android.content.SharedPreferences;
24+
import android.media.Ringtone;
25+
import android.media.RingtoneManager;
2426
import android.net.Uri;
2527
import android.os.Build;
2628
import android.os.Bundle;
2729
import android.preference.CheckBoxPreference;
2830
import android.preference.EditTextPreference;
31+
import android.preference.ListPreference;
2932
import android.preference.Preference;
3033
import android.preference.PreferenceGroup;
3134
import android.preference.PreferenceManager;
3235
import android.preference.PreferenceScreen;
36+
import android.preference.RingtonePreference;
3337
import android.provider.ContactsContract;
3438
import android.provider.Telephony;
39+
import android.text.TextUtils;
3540
import android.util.Log;
3641
import android.widget.Toast;
3742

@@ -128,6 +133,16 @@ protected void onCreate(Bundle icicle) {
128133
.setOnPreferenceChangeListener(new DisablePassphraseClickListener());
129134
this.findPreference(MMS_PREF)
130135
.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));
131146
}
132147

133148
@Override
@@ -225,6 +240,18 @@ private void initializeIdentitySelection() {
225240
}
226241
}
227242

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+
228255
private void handleIdentitySelection(Intent data) {
229256
Uri contactUri = data.getData();
230257

@@ -380,6 +407,42 @@ public boolean onPreferenceClick(Preference preference) {
380407
}
381408
}
382409

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+
383446
/* http://code.google.com/p/android/issues/detail?id=4611#c35 */
384447
@SuppressWarnings("deprecation")
385448
@Override

0 commit comments

Comments
 (0)