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] -->
<string name="wallpaper_settings_fragment_title">Choose wallpaper from</string>
<!-- Display settings screen, trigger for screen saver options -->
<string name="screensaver_settings_title">Screen Candy</string>
<!-- Display settings screen, summary for screen saver options, screen saver is turned on -->
<string name="screensaver_settings_summary_on">Will start upon sleep if connected to power</string>
<string name="screensaver_settings_title">Dream</string>
<!-- Display settings screen, summary fragment for screen saver options, activated on sleep or docked -->
<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 -->
<string name="screensaver_settings_summary_off">Disabled</string>
<!-- 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 -->
<string name="screensaver_timeout_title">When to activate</string>
<!-- Screen saver settings, setting option summary to change activation timeout -->
@@ -1702,9 +1706,12 @@
<string name="screensaver_timeout_zero_summary">Never</string>
<!-- Screen saver settings, button allowing the user to test/try the current module -->
<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
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 -->
<string name="automatic_brightness">Automatic brightness</string>
<!-- [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"
android:title="@string/screensaver_settings_title"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
<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"
/>
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
android:title="@string/screensaver_settings_title" >
<CheckBoxPreference
android:key="activate_on_dock"
android:persistent="false"
android:title="@string/screensaver_activate_on_dock_title"
android:defaultValue="true" />
android:key="activate_on_sleep"
android:persistent="false"
android:title="@string/screensaver_activate_on_sleep_title" />
</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() {
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() {

View File

@@ -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);
}
}
}

View File

@@ -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
}
}
}