Part of Bug 5252423: Crash in summary text when time out is 0
Negative value will show no summary.
Zero is no longer a special case. It will display the first summary, like any
value below it.
Change-Id: I88d49cac844fb2dc347bef94ac033df9255d748f
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index 7520ab3..f054344 100644
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -78,41 +78,32 @@
mScreenTimeoutPreference.setValue(String.valueOf(currentTimeout));
mScreenTimeoutPreference.setOnPreferenceChangeListener(this);
disableUnusableTimeouts(mScreenTimeoutPreference);
- updateTimeoutPreferenceDescription(mScreenTimeoutPreference,
- R.string.screen_timeout_summary, currentTimeout);
+ updateTimeoutPreferenceDescription(currentTimeout);
mFontSizePref = (ListPreference) findPreference(KEY_FONT_SIZE);
mFontSizePref.setOnPreferenceChangeListener(this);
}
- private void updateTimeoutPreferenceDescription(
- ListPreference pref,
- int summaryStrings,
- long currentTimeout) {
- updateTimeoutPreferenceDescription(pref, summaryStrings, 0, currentTimeout);
- }
-
- private void updateTimeoutPreferenceDescription(
- ListPreference pref,
- int summaryStrings,
- int zeroString,
- long currentTimeout) {
+ private void updateTimeoutPreferenceDescription(long currentTimeout) {
+ ListPreference preference = mScreenTimeoutPreference;
String summary;
- if (currentTimeout == 0) {
- summary = pref.getContext().getString(zeroString);
+ if (currentTimeout < 0) {
+ // Unsupported value
+ summary = "";
} else {
- final CharSequence[] entries = pref.getEntries();
- final CharSequence[] values = pref.getEntryValues();
+ final CharSequence[] entries = preference.getEntries();
+ final CharSequence[] values = preference.getEntryValues();
int best = 0;
for (int i = 0; i < values.length; i++) {
- long timeout = Long.valueOf(values[i].toString());
+ long timeout = Long.parseLong(values[i].toString());
if (currentTimeout >= timeout) {
best = i;
}
}
- summary = pref.getContext().getString(summaryStrings, entries[best]);
+ summary = preference.getContext().getString(R.string.screen_timeout_summary,
+ entries[best]);
}
- pref.setSummary(summary);
+ preference.setSummary(summary);
}
private void disableUnusableTimeouts(ListPreference screenTimeoutPreference) {
@@ -128,7 +119,7 @@
ArrayList<CharSequence> revisedEntries = new ArrayList<CharSequence>();
ArrayList<CharSequence> revisedValues = new ArrayList<CharSequence>();
for (int i = 0; i < values.length; i++) {
- long timeout = Long.valueOf(values[i].toString());
+ long timeout = Long.parseLong(values[i].toString());
if (timeout <= maxTimeout) {
revisedEntries.add(entries[i]);
revisedValues.add(values[i]);
@@ -139,7 +130,7 @@
revisedEntries.toArray(new CharSequence[revisedEntries.size()]));
screenTimeoutPreference.setEntryValues(
revisedValues.toArray(new CharSequence[revisedValues.size()]));
- final int userPreference = Integer.valueOf(screenTimeoutPreference.getValue());
+ final int userPreference = Integer.parseInt(screenTimeoutPreference.getValue());
if (userPreference <= maxTimeout) {
screenTimeoutPreference.setValue(String.valueOf(userPreference));
} else {
@@ -234,10 +225,8 @@
if (KEY_SCREEN_TIMEOUT.equals(key)) {
int value = Integer.parseInt((String) objValue);
try {
- Settings.System.putInt(getContentResolver(),
- SCREEN_OFF_TIMEOUT, value);
- updateTimeoutPreferenceDescription(mScreenTimeoutPreference,
- R.string.screen_timeout_summary, value);
+ Settings.System.putInt(getContentResolver(), SCREEN_OFF_TIMEOUT, value);
+ updateTimeoutPreferenceDescription(value);
} catch (NumberFormatException e) {
Log.e(TAG, "could not persist screen timeout setting", e);
}