Merge "Part of Bug 5252423: Crash in summary text when time out is 0"
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);
             }