Dream (screensaver) settings.

Depends on change Ied691856 for
Settings.Secure.DREAM_TIMEOUT and
Settings.Secure.DREAM_COMPONENT.

Change-Id: Ib6f74b74036e12637efb891b97e459a4e33444e7
This commit is contained in:
Daniel Sandler
2011-04-15 11:18:57 -04:00
parent ba61aaaaa3
commit 2943cfa606
9 changed files with 514 additions and 16 deletions

View File

@@ -18,6 +18,12 @@ package com.android.settings;
import static android.provider.Settings.System.SCREEN_OFF_TIMEOUT;
import android.app.ActivityManagerNative;
import android.app.admin.DevicePolicyManager;
import android.content.ContentResolver;
import android.content.Context;
import android.content.res.Configuration;
import android.app.ActivityManagerNative;
import android.app.admin.DevicePolicyManager;
import android.content.ContentResolver;
@@ -93,25 +99,42 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
mScreenTimeoutPreference.setValue(String.valueOf(currentTimeout));
mScreenTimeoutPreference.setOnPreferenceChangeListener(this);
disableUnusableTimeouts(mScreenTimeoutPreference);
updateTimeoutPreferenceDescription(resolver, currentTimeout);
updateTimeoutPreferenceDescription(resolver, mScreenTimeoutPreference,
R.string.screen_timeout_summary, currentTimeout);
mFontSizePref = (ListPreference) findPreference(KEY_FONT_SIZE);
mFontSizePref.setOnPreferenceChangeListener(this);
}
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;
private void updateTimeoutPreferenceDescription(
ContentResolver resolver,
ListPreference pref,
int summaryStrings,
long currentTimeout) {
updateTimeoutPreferenceDescription(resolver, pref, summaryStrings, 0, currentTimeout);
}
private void updateTimeoutPreferenceDescription(
ContentResolver resolver,
ListPreference pref,
int summaryStrings,
int zeroString,
long currentTimeout) {
String summary;
if (currentTimeout == 0) {
summary = pref.getContext().getString(zeroString);
} else {
final CharSequence[] entries = pref.getEntries();
final CharSequence[] values = pref.getEntryValues();
int best = 0;
for (int i = 0; i < values.length; i++) {
long timeout = Long.valueOf(values[i].toString());
if (currentTimeout >= timeout) {
best = i;
}
}
summary = pref.getContext().getString(summaryStrings, entries[best]);
}
String summary = mScreenTimeoutPreference.getContext()
.getString(R.string.screen_timeout_summary, entries[best]);
mScreenTimeoutPreference.setSummary(summary);
pref.setSummary(summary);
}
private void disableUnusableTimeouts(ListPreference screenTimeoutPreference) {
@@ -255,7 +278,7 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
Settings.System.ACCELEROMETER_ROTATION,
mAccelerometer.isChecked() ? 1 : 0);
}
return true;
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
public boolean onPreferenceChange(Preference preference, Object objValue) {
@@ -284,7 +307,8 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
try {
Settings.System.putInt(getContentResolver(),
SCREEN_OFF_TIMEOUT, value);
updateTimeoutPreferenceDescription(getContentResolver(), value);
updateTimeoutPreferenceDescription(getContentResolver(), mScreenTimeoutPreference,
R.string.screen_timeout_summary, value);
} catch (NumberFormatException e) {
Log.e(TAG, "could not persist screen timeout setting", e);
}