diff --git a/res/values/strings.xml b/res/values/strings.xml
index 881b0438c35..d67b9407c1d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1687,13 +1687,17 @@
Choose wallpaper from
- Screen Candy
-
- Will start upon sleep if connected to power
+ Dream
+
+ When docked or asleep and charging
+
+ When asleep and charging
+
+ When docked
Disabled
- Selected candy
+ Selected dream
When to activate
@@ -1702,9 +1706,12 @@
Never
Try it!
+
+ Start on sleep
- Also start when docked
+ Start when docked
Automatic brightness
diff --git a/res/xml/dream_settings.xml b/res/xml/dream_settings.xml
index 6569bc730b3..a13032f1df4 100644
--- a/res/xml/dream_settings.xml
+++ b/res/xml/dream_settings.xml
@@ -15,25 +15,28 @@
-->
-
-
-
-
+ xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
+ android:title="@string/screensaver_settings_title" >
+ android:key="activate_on_sleep"
+ android:persistent="false"
+ android:title="@string/screensaver_activate_on_sleep_title" />
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index fc162e2506e..c71f886ff61 100644
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -232,10 +232,13 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
}
private void updateScreenSaverSummary() {
+ boolean activatedOnSleep = DreamSettings.isScreenSaverActivatedOnSleep(getActivity());
+ boolean activatedOnDock = DreamSettings.isScreenSaverActivatedOnDock(getActivity());
mScreenSaverPreference.setSummary(
- DreamSettings.isScreenSaverEnabled(mScreenSaverPreference.getContext())
- ? R.string.screensaver_settings_summary_on
- : R.string.screensaver_settings_summary_off);
+ activatedOnSleep && activatedOnDock ? R.string.screensaver_settings_summary_both :
+ activatedOnSleep ? R.string.screensaver_settings_summary_sleep :
+ activatedOnDock ? R.string.screensaver_settings_summary_dock :
+ R.string.screensaver_settings_summary_off);
}
private void updateAccelerometerRotationCheckbox() {
diff --git a/src/com/android/settings/DreamSettings.java b/src/com/android/settings/DreamSettings.java
index 1b1854aa098..80b6a840c14 100644
--- a/src/com/android/settings/DreamSettings.java
+++ b/src/com/android/settings/DreamSettings.java
@@ -48,12 +48,19 @@ import java.util.ArrayList;
public class DreamSettings extends SettingsPreferenceFragment {
private static final String TAG = "DreamSettings";
+ private static final String KEY_ACTIVATE_ON_SLEEP = "activate_on_sleep";
private static final String KEY_ACTIVATE_ON_DOCK = "activate_on_dock";
+ private static final String KEY_COMPONENT = "screensaver_component";
+ private static final String KEY_TEST = "test";
- private CheckBoxPreference mActivateOnDockPreference;
+ private static final int DEFAULT_SLEEP = 0;
+ private static final int DEFAULT_DOCK = 1;
- private Switch mEnableSwitch;
- private Enabler mEnabler;
+ private ActivationSetting mActivateOnSleep;
+ private ActivationSetting mActivateOnDock;
+
+ private Preference mComponentPref;
+ private Preference mTestPref;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
@@ -61,99 +68,76 @@ public class DreamSettings extends SettingsPreferenceFragment {
addPreferencesFromResource(R.xml.dream_settings);
- mActivateOnDockPreference = (CheckBoxPreference) findPreference(KEY_ACTIVATE_ON_DOCK);
+ mComponentPref = findPreference(KEY_COMPONENT);
+ mTestPref = findPreference(KEY_TEST);
- final Activity activity = getActivity();
-
- mEnableSwitch = new Switch(activity);
-
- if (activity instanceof PreferenceActivity) {
- PreferenceActivity preferenceActivity = (PreferenceActivity) activity;
- // note: we do not check onIsHidingHeaders() or onIsMultiPane() because there's no
- // switch in the left-hand pane to control this; we need to show the ON/OFF in our
- // fragment every time
- final int padding = activity.getResources().getDimensionPixelSize(
- R.dimen.action_bar_switch_padding);
- mEnableSwitch.setPadding(0, 0, padding, 0);
- activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
- ActionBar.DISPLAY_SHOW_CUSTOM);
- activity.getActionBar().setCustomView(mEnableSwitch, new ActionBar.LayoutParams(
- ActionBar.LayoutParams.WRAP_CONTENT,
- ActionBar.LayoutParams.WRAP_CONTENT,
- Gravity.CENTER_VERTICAL | Gravity.END));
- activity.getActionBar().setTitle(R.string.screensaver_settings_title);
- }
-
- mEnabler = new Enabler(activity, mEnableSwitch);
+ mActivateOnSleep = new ActivationSetting(getActivity(),
+ SCREENSAVER_ENABLED, DEFAULT_SLEEP,
+ (CheckBoxPreference) findPreference(KEY_ACTIVATE_ON_SLEEP));
+ mActivateOnDock = new ActivationSetting(getActivity(),
+ SCREENSAVER_ACTIVATE_ON_DOCK, DEFAULT_DOCK,
+ (CheckBoxPreference) findPreference(KEY_ACTIVATE_ON_DOCK));
}
- public static boolean isScreenSaverEnabled(Context context) {
+ public static boolean isScreenSaverActivatedOnSleep(Context context) {
return 0 != Settings.Secure.getInt(
- context.getContentResolver(), SCREENSAVER_ENABLED, 1);
+ context.getContentResolver(), SCREENSAVER_ENABLED, DEFAULT_SLEEP);
}
- public static void setScreenSaverEnabled(Context context, boolean enabled) {
- Settings.Secure.putInt(
- context.getContentResolver(), SCREENSAVER_ENABLED, enabled ? 1 : 0);
- }
-
- public static class Enabler implements CompoundButton.OnCheckedChangeListener {
- private final Context mContext;
- private Switch mSwitch;
-
- public Enabler(Context context, Switch switch_) {
- mContext = context;
- setSwitch(switch_);
- }
- @Override
- public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
- setScreenSaverEnabled(mContext, isChecked);
- }
- public void setSwitch(Switch switch_) {
- if (mSwitch == switch_) return;
- if (mSwitch != null) mSwitch.setOnCheckedChangeListener(null);
- mSwitch = switch_;
- mSwitch.setOnCheckedChangeListener(this);
-
- final boolean enabled = isScreenSaverEnabled(mContext);
- mSwitch.setChecked(enabled);
- }
- public void pause() {
- mSwitch.setOnCheckedChangeListener(null);
- }
- public void resume() {
- mSwitch.setOnCheckedChangeListener(this);
- }
+ public static boolean isScreenSaverActivatedOnDock(Context context) {
+ return 0 != Settings.Secure.getInt(
+ context.getContentResolver(), SCREENSAVER_ACTIVATE_ON_DOCK, DEFAULT_DOCK);
}
@Override
public void onResume() {
- if (mEnabler != null) {
- mEnabler.resume();
- }
-
- final boolean currentActivateOnDock = 0 != Settings.Secure.getInt(getContentResolver(),
- SCREENSAVER_ACTIVATE_ON_DOCK, 1);
- mActivateOnDockPreference.setChecked(currentActivateOnDock);
+ mActivateOnSleep.onResume();
+ mActivateOnDock.onResume();
+ refreshDependents();
super.onResume();
}
- @Override
- public void onPause() {
- if (mEnabler != null) {
- mEnabler.pause();
- }
-
- super.onPause();
- }
-
@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
- if (preference == mActivateOnDockPreference) {
- Settings.Secure.putInt(getContentResolver(),
- SCREENSAVER_ACTIVATE_ON_DOCK,
- mActivateOnDockPreference.isChecked() ? 1 : 0);
- }
+ mActivateOnSleep.onClick(preference);
+ mActivateOnDock.onClick(preference);
+ refreshDependents();
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
+
+ private void refreshDependents() {
+ boolean enabled = mActivateOnSleep.isSelected() || mActivateOnDock.isSelected();
+ mComponentPref.setEnabled(enabled);
+ mTestPref.setEnabled(enabled);
+ }
+
+ private static class ActivationSetting {
+ private final Context mContext;
+ private final String mName;
+ private final int mDefaultValue;
+ private final CheckBoxPreference mPref;
+
+ ActivationSetting(Context context, String name, int defaultValue, CheckBoxPreference pref) {
+ mContext = context;
+ mName = name;
+ mDefaultValue = defaultValue;
+ mPref = pref;
+ }
+ public boolean isSelected() {
+ return mPref.isChecked();
+ }
+ void onClick(Preference preference) {
+ if (preference == mPref) {
+ Settings.Secure.putInt(mContext.getContentResolver(),
+ mName,
+ mPref.isChecked() ? 1 : 0);
+ }
+ }
+ void onResume() {
+ boolean currentActivated = 0 != Settings.Secure.getInt(mContext.getContentResolver(),
+ mName, mDefaultValue);
+ mPref.setChecked(currentActivated);
+ }
+ }
+
}
diff --git a/src/com/android/settings/DreamTesterPreference.java b/src/com/android/settings/DreamTesterPreference.java
index 87a142cfc8e..fa1d7088945 100644
--- a/src/com/android/settings/DreamTesterPreference.java
+++ b/src/com/android/settings/DreamTesterPreference.java
@@ -16,72 +16,33 @@
package com.android.settings;
-import static android.provider.Settings.Secure.SCREENSAVER_COMPONENT;
-
-import android.app.AlertDialog;
-import android.content.Context;
import android.content.ComponentName;
-import android.content.ContentResolver;
-import android.content.DialogInterface;
-import android.content.Intent;
-import android.content.pm.ActivityInfo;
-import android.content.pm.PackageManager;
-import android.content.pm.ResolveInfo;
-import android.content.res.Resources;
+import android.content.Context;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.preference.Preference;
-import android.provider.Settings;
import android.service.dreams.IDreamManager;
import android.util.AttributeSet;
import android.util.Log;
-import android.view.Gravity;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ArrayAdapter;
-import android.widget.ListView;
-import android.widget.BaseAdapter;
-import android.widget.ImageView;
-import android.widget.ListAdapter;
-import android.widget.TextView;
-
-import java.util.ArrayList;
-import java.util.List;
public class DreamTesterPreference extends Preference {
private static final String TAG = "DreamTesterPreference";
-
- private final PackageManager pm;
- private final ContentResolver resolver;
public DreamTesterPreference(Context context, AttributeSet attrs) {
super(context, attrs);
- pm = getContext().getPackageManager();
- resolver = getContext().getContentResolver();
}
@Override
protected void onClick() {
- String component = Settings.Secure.getString(resolver, SCREENSAVER_COMPONENT);
- Log.v(TAG, "component=" + component);
- if (component != null) {
- ComponentName cn = ComponentName.unflattenFromString(component);
- Log.v(TAG, "cn=" + cn);
-// Intent intent = new Intent(Intent.ACTION_MAIN)
-// .setComponent(cn)
-// .addFlags(
-// Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
-// )
-// .putExtra("android.dreams.TEST", true);
-// getContext().startService(intent);
- IDreamManager dm = IDreamManager.Stub.asInterface(
- ServiceManager.getService("dreams"));
- try {
- dm.testDream(cn);
- } catch (RemoteException ex) {
- // too bad, so sad, oh mom, oh dad
- }
+ IDreamManager dm = IDreamManager.Stub.asInterface(ServiceManager.getService("dreams"));
+ try {
+ ComponentName cn = dm.getDreamComponent();
+ Log.v(TAG, "DreamComponent cn=" + cn);
+ dm.testDream(cn);
+ } catch (RemoteException ex) {
+ Log.w(TAG, "error testing dream", ex);
+ // too bad, so sad, oh mom, oh dad
}
}
+
}