am b54b45d9: Merge "Re-enable dreams: Settings" into jb-mr1-dev

* commit 'b54b45d93ba378ef91e551f1073888de55b9e982':
  Re-enable dreams: Settings
This commit is contained in:
John Spurlock
2012-08-03 08:55:53 -07:00
committed by Android Git Automerger
5 changed files with 115 additions and 157 deletions

View File

@@ -1687,13 +1687,17 @@
<!-- Wallpaper settings fragment title [CHAR LIMIT=30] --> <!-- Wallpaper settings fragment title [CHAR LIMIT=30] -->
<string name="wallpaper_settings_fragment_title">Choose wallpaper from</string> <string name="wallpaper_settings_fragment_title">Choose wallpaper from</string>
<!-- Display settings screen, trigger for screen saver options --> <!-- Display settings screen, trigger for screen saver options -->
<string name="screensaver_settings_title">Screen Candy</string> <string name="screensaver_settings_title">Dream</string>
<!-- Display settings screen, summary for screen saver options, screen saver is turned on --> <!-- Display settings screen, summary fragment for screen saver options, activated on sleep or docked -->
<string name="screensaver_settings_summary_on">Will start upon sleep if connected to power</string> <string name="screensaver_settings_summary_both">When docked or asleep and charging</string>
<!-- Display settings screen, summary fragment for screen saver options, activated on sleep -->
<string name="screensaver_settings_summary_sleep">When asleep and charging</string>
<!-- Display settings screen, summary fragment for screen saver options, activated when docked -->
<string name="screensaver_settings_summary_dock">When docked</string>
<!-- Display settings screen, summary for screen saver options, screen saver is turned off --> <!-- Display settings screen, summary for screen saver options, screen saver is turned off -->
<string name="screensaver_settings_summary_off">Disabled</string> <string name="screensaver_settings_summary_off">Disabled</string>
<!-- Screen saver settings, setting option name to select a module --> <!-- Screen saver settings, setting option name to select a module -->
<string name="screensaver_component_title">Selected candy</string> <string name="screensaver_component_title">Selected dream</string>
<!-- Screen saver settings, setting option name to change activation timeout --> <!-- Screen saver settings, setting option name to change activation timeout -->
<string name="screensaver_timeout_title">When to activate</string> <string name="screensaver_timeout_title">When to activate</string>
<!-- Screen saver settings, setting option summary to change activation timeout --> <!-- Screen saver settings, setting option summary to change activation timeout -->
@@ -1702,9 +1706,12 @@
<string name="screensaver_timeout_zero_summary">Never</string> <string name="screensaver_timeout_zero_summary">Never</string>
<!-- Screen saver settings, button allowing the user to test/try the current module --> <!-- Screen saver settings, button allowing the user to test/try the current module -->
<string name="screensaver_test">Try it!</string> <string name="screensaver_test">Try it!</string>
<!-- Screen saver settings, checkbox allowing the screen saver to activate automatically when
the device sleeps -->
<string name="screensaver_activate_on_sleep_title">Start on sleep</string>
<!-- Screen saver settings, checkbox allowing the screen saver to activate automatically when <!-- Screen saver settings, checkbox allowing the screen saver to activate automatically when
the device is docked --> the device is docked -->
<string name="screensaver_activate_on_dock_title">Also start when docked</string> <string name="screensaver_activate_on_dock_title">Start when docked</string>
<!-- Sound & display settings screen, setting option name to change whether the screen adjusts automatically based on lighting conditions --> <!-- Sound & display settings screen, setting option name to change whether the screen adjusts automatically based on lighting conditions -->
<string name="automatic_brightness">Automatic brightness</string> <string name="automatic_brightness">Automatic brightness</string>
<!-- [CHAR LIMIT=30] Sound & display settings screen, setting option name to change font size --> <!-- [CHAR LIMIT=30] Sound & display settings screen, setting option name to change font size -->

View File

@@ -15,25 +15,28 @@
--> -->
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/screensaver_settings_title" xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"> android:title="@string/screensaver_settings_title" >
<com.android.settings.DreamComponentPreference
android:key="screensaver_component"
android:title="@string/screensaver_component_title"
android:persistent="false"
/>
<com.android.settings.DreamTesterPreference
android:key="test"
android:title="@string/screensaver_test"
android:persistent="false"
/>
<CheckBoxPreference <CheckBoxPreference
android:key="activate_on_dock" android:key="activate_on_sleep"
android:persistent="false" android:persistent="false"
android:title="@string/screensaver_activate_on_dock_title" android:title="@string/screensaver_activate_on_sleep_title" />
android:defaultValue="true" />
</PreferenceScreen> <CheckBoxPreference
android:defaultValue="true"
android:key="activate_on_dock"
android:persistent="false"
android:title="@string/screensaver_activate_on_dock_title" />
<com.android.settings.DreamComponentPreference
android:key="screensaver_component"
android:persistent="false"
android:title="@string/screensaver_component_title" />
<com.android.settings.DreamTesterPreference
android:key="test"
android:persistent="false"
android:title="@string/screensaver_test" />
</PreferenceScreen>

View File

@@ -232,10 +232,13 @@ public class DisplaySettings extends SettingsPreferenceFragment implements
} }
private void updateScreenSaverSummary() { private void updateScreenSaverSummary() {
boolean activatedOnSleep = DreamSettings.isScreenSaverActivatedOnSleep(getActivity());
boolean activatedOnDock = DreamSettings.isScreenSaverActivatedOnDock(getActivity());
mScreenSaverPreference.setSummary( mScreenSaverPreference.setSummary(
DreamSettings.isScreenSaverEnabled(mScreenSaverPreference.getContext()) activatedOnSleep && activatedOnDock ? R.string.screensaver_settings_summary_both :
? R.string.screensaver_settings_summary_on activatedOnSleep ? R.string.screensaver_settings_summary_sleep :
: R.string.screensaver_settings_summary_off); activatedOnDock ? R.string.screensaver_settings_summary_dock :
R.string.screensaver_settings_summary_off);
} }
private void updateAccelerometerRotationCheckbox() { private void updateAccelerometerRotationCheckbox() {

View File

@@ -48,12 +48,19 @@ import java.util.ArrayList;
public class DreamSettings extends SettingsPreferenceFragment { public class DreamSettings extends SettingsPreferenceFragment {
private static final String TAG = "DreamSettings"; 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_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 ActivationSetting mActivateOnSleep;
private Enabler mEnabler; private ActivationSetting mActivateOnDock;
private Preference mComponentPref;
private Preference mTestPref;
@Override @Override
public void onActivityCreated(Bundle savedInstanceState) { public void onActivityCreated(Bundle savedInstanceState) {
@@ -61,99 +68,76 @@ public class DreamSettings extends SettingsPreferenceFragment {
addPreferencesFromResource(R.xml.dream_settings); addPreferencesFromResource(R.xml.dream_settings);
mActivateOnDockPreference = (CheckBoxPreference) findPreference(KEY_ACTIVATE_ON_DOCK); mComponentPref = findPreference(KEY_COMPONENT);
mTestPref = findPreference(KEY_TEST);
final Activity activity = getActivity(); mActivateOnSleep = new ActivationSetting(getActivity(),
SCREENSAVER_ENABLED, DEFAULT_SLEEP,
mEnableSwitch = new Switch(activity); (CheckBoxPreference) findPreference(KEY_ACTIVATE_ON_SLEEP));
mActivateOnDock = new ActivationSetting(getActivity(),
if (activity instanceof PreferenceActivity) { SCREENSAVER_ACTIVATE_ON_DOCK, DEFAULT_DOCK,
PreferenceActivity preferenceActivity = (PreferenceActivity) activity; (CheckBoxPreference) findPreference(KEY_ACTIVATE_ON_DOCK));
// 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);
} }
public static boolean isScreenSaverEnabled(Context context) { public static boolean isScreenSaverActivatedOnSleep(Context context) {
return 0 != Settings.Secure.getInt( return 0 != Settings.Secure.getInt(
context.getContentResolver(), SCREENSAVER_ENABLED, 1); context.getContentResolver(), SCREENSAVER_ENABLED, DEFAULT_SLEEP);
} }
public static void setScreenSaverEnabled(Context context, boolean enabled) { public static boolean isScreenSaverActivatedOnDock(Context context) {
Settings.Secure.putInt( return 0 != Settings.Secure.getInt(
context.getContentResolver(), SCREENSAVER_ENABLED, enabled ? 1 : 0); context.getContentResolver(), SCREENSAVER_ACTIVATE_ON_DOCK, DEFAULT_DOCK);
}
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);
}
} }
@Override @Override
public void onResume() { public void onResume() {
if (mEnabler != null) { mActivateOnSleep.onResume();
mEnabler.resume(); mActivateOnDock.onResume();
} refreshDependents();
final boolean currentActivateOnDock = 0 != Settings.Secure.getInt(getContentResolver(),
SCREENSAVER_ACTIVATE_ON_DOCK, 1);
mActivateOnDockPreference.setChecked(currentActivateOnDock);
super.onResume(); super.onResume();
} }
@Override
public void onPause() {
if (mEnabler != null) {
mEnabler.pause();
}
super.onPause();
}
@Override @Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) { public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if (preference == mActivateOnDockPreference) { mActivateOnSleep.onClick(preference);
Settings.Secure.putInt(getContentResolver(), mActivateOnDock.onClick(preference);
SCREENSAVER_ACTIVATE_ON_DOCK, refreshDependents();
mActivateOnDockPreference.isChecked() ? 1 : 0);
}
return super.onPreferenceTreeClick(preferenceScreen, preference); 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);
}
}
} }

View File

@@ -16,72 +16,33 @@
package com.android.settings; 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.ComponentName;
import android.content.ContentResolver; import android.content.Context;
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.os.RemoteException; import android.os.RemoteException;
import android.os.ServiceManager; import android.os.ServiceManager;
import android.preference.Preference; import android.preference.Preference;
import android.provider.Settings;
import android.service.dreams.IDreamManager; import android.service.dreams.IDreamManager;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.util.Log; 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 { public class DreamTesterPreference extends Preference {
private static final String TAG = "DreamTesterPreference"; private static final String TAG = "DreamTesterPreference";
private final PackageManager pm;
private final ContentResolver resolver;
public DreamTesterPreference(Context context, AttributeSet attrs) { public DreamTesterPreference(Context context, AttributeSet attrs) {
super(context, attrs); super(context, attrs);
pm = getContext().getPackageManager();
resolver = getContext().getContentResolver();
} }
@Override @Override
protected void onClick() { protected void onClick() {
String component = Settings.Secure.getString(resolver, SCREENSAVER_COMPONENT); IDreamManager dm = IDreamManager.Stub.asInterface(ServiceManager.getService("dreams"));
Log.v(TAG, "component=" + component); try {
if (component != null) { ComponentName cn = dm.getDreamComponent();
ComponentName cn = ComponentName.unflattenFromString(component); Log.v(TAG, "DreamComponent cn=" + cn);
Log.v(TAG, "cn=" + cn); dm.testDream(cn);
// Intent intent = new Intent(Intent.ACTION_MAIN) } catch (RemoteException ex) {
// .setComponent(cn) Log.w(TAG, "error testing dream", ex);
// .addFlags( // too bad, so sad, oh mom, oh dad
// 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
}
} }
} }
} }