diff --git a/res/values/strings.xml b/res/values/strings.xml
index 8e56db34835..64f8d9e22f2 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1150,7 +1150,7 @@
Sound
- Display
+ Screen
Sound settings
@@ -1298,9 +1298,9 @@
Adjust the brightness of the screen
- Screen timeout
+ Timeout
- Adjust the delay before the screen automatically turns off
+ Screen turns off automatically after %1$s
Automatic brightness
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index 5945884af1b..0e17810c01e 100644
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -51,6 +51,8 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
private IWindowManager mWindowManager;
+ private ListPreference mScreenTimeoutPreference;
+
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -64,12 +66,28 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
mAccelerometer = (CheckBoxPreference) findPreference(KEY_ACCELEROMETER);
mAccelerometer.setPersistent(false);
- ListPreference screenTimeoutPreference =
- (ListPreference) findPreference(KEY_SCREEN_TIMEOUT);
- screenTimeoutPreference.setValue(String.valueOf(Settings.System.getInt(
- resolver, SCREEN_OFF_TIMEOUT, FALLBACK_SCREEN_TIMEOUT_VALUE)));
- screenTimeoutPreference.setOnPreferenceChangeListener(this);
- disableUnusableTimeouts(screenTimeoutPreference);
+ mScreenTimeoutPreference = (ListPreference) findPreference(KEY_SCREEN_TIMEOUT);
+ final long currentTimeout = Settings.System.getLong(resolver, SCREEN_OFF_TIMEOUT,
+ FALLBACK_SCREEN_TIMEOUT_VALUE);
+ mScreenTimeoutPreference.setValue(String.valueOf(currentTimeout));
+ mScreenTimeoutPreference.setOnPreferenceChangeListener(this);
+ disableUnusableTimeouts(mScreenTimeoutPreference);
+ updateTimeoutPreferenceDescription(resolver, currentTimeout);
+ }
+
+ private void updateTimeoutPreferenceDescription(ContentResolver resolver, long currentTimeout) {
+ final CharSequence[] entries = mScreenTimeoutPreference.getEntries();
+ final CharSequence[] values = mScreenTimeoutPreference.getEntryValues();
+ int best = 0;
+ for (int i = 0; i < values.length; i++) {
+ long timeout = Long.valueOf(values[i].toString());
+ if (currentTimeout >= timeout) {
+ best = i;
+ }
+ }
+ String summary = mScreenTimeoutPreference.getContext()
+ .getString(R.string.screen_timeout_summary, entries[best]);
+ mScreenTimeoutPreference.setSummary(summary);
}
private void disableUnusableTimeouts(ListPreference screenTimeoutPreference) {
@@ -195,6 +213,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
try {
Settings.System.putInt(getContentResolver(),
SCREEN_OFF_TIMEOUT, value);
+ updateTimeoutPreferenceDescription(getContentResolver(), value);
} catch (NumberFormatException e) {
Log.e(TAG, "could not persist screen timeout setting", e);
}