Show LED and ringtone setting values in their summaries

As instructed in the Android design guidelines. Also removed unnatural
capitalization.
This commit is contained in:
Veeti Paananen
2013-12-03 09:10:59 +02:00
parent 23e8035edd
commit 6eb094c87e
3 changed files with 67 additions and 12 deletions

View File

@@ -21,17 +21,22 @@ import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.media.Ringtone;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.preference.CheckBoxPreference;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceGroup;
import android.preference.PreferenceManager;
import android.preference.PreferenceScreen;
import android.preference.RingtonePreference;
import android.provider.ContactsContract;
import android.provider.Telephony;
import android.text.TextUtils;
import android.util.Log;
import android.widget.Toast;
@@ -128,6 +133,16 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
.setOnPreferenceChangeListener(new DisablePassphraseClickListener());
this.findPreference(MMS_PREF)
.setOnPreferenceClickListener(new ApnPreferencesClickListener());
this.findPreference(LED_COLOR_PREF)
.setOnPreferenceChangeListener(new ListSummaryListener());
this.findPreference(LED_BLINK_PREF)
.setOnPreferenceChangeListener(new ListSummaryListener());
this.findPreference(RINGTONE_PREF)
.setOnPreferenceChangeListener(new RingtoneSummaryListener());
initializeListSummary((ListPreference) findPreference(LED_COLOR_PREF));
initializeListSummary((ListPreference) findPreference(LED_BLINK_PREF));
initializeRingtoneSummary((RingtonePreference) findPreference(RINGTONE_PREF));
}
@Override
@@ -225,6 +240,18 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
}
}
private void initializeListSummary(ListPreference pref) {
pref.setSummary(pref.getEntry());
}
private void initializeRingtoneSummary(RingtonePreference pref) {
RingtoneSummaryListener listener =
(RingtoneSummaryListener) pref.getOnPreferenceChangeListener();
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
listener.onPreferenceChange(pref, sharedPreferences.getString(pref.getKey(), ""));
}
private void handleIdentitySelection(Intent data) {
Uri contactUri = data.getData();
@@ -380,6 +407,42 @@ public class ApplicationPreferencesActivity extends PassphraseRequiredSherlockPr
}
}
private class ListSummaryListener implements Preference.OnPreferenceChangeListener {
@Override
public boolean onPreferenceChange(Preference preference, Object value) {
ListPreference asList = (ListPreference) preference;
int index = 0;
for (; index < asList.getEntryValues().length; index++) {
if (value.equals(asList.getEntryValues()[index])) {
break;
}
}
asList.setSummary(asList.getEntries()[index]);
return true;
}
}
private class RingtoneSummaryListener implements Preference.OnPreferenceChangeListener {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String value = (String) newValue;
if (TextUtils.isEmpty(value)) {
preference.setSummary(R.string.preferences__default);
} else {
Ringtone tone = RingtoneManager.getRingtone(ApplicationPreferencesActivity.this,
Uri.parse(value));
if (tone != null) {
preference.setSummary(tone.getTitle(ApplicationPreferencesActivity.this));
}
}
return true;
}
}
/* http://code.google.com/p/android/issues/detail?id=4611#c35 */
@SuppressWarnings("deprecation")
@Override