summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Spurlock <jspurlock@google.com>2014-03-28 13:09:50 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-03-28 13:09:51 +0000
commit6a8919299fff6954380495fd4f28c2a9df57dec5 (patch)
tree5bf7efc30426fd5fb855faa6e9a63f96d668d1c7
parentf3e32e34102648481e9df096fa70a6c1bf346611 (diff)
parent7f502bf824955b2b3a43f8f7f32c00cf00f736fe (diff)
downloadpackages_apps_Settings-6a8919299fff6954380495fd4f28c2a9df57dec5.zip
packages_apps_Settings-6a8919299fff6954380495fd4f28c2a9df57dec5.tar.gz
packages_apps_Settings-6a8919299fff6954380495fd4f28c2a9df57dec5.tar.bz2
Merge "Add switch to zen mode settings preference page."
-rw-r--r--src/com/android/settings/ZenModeSettings.java83
1 files changed, 83 insertions, 0 deletions
diff --git a/src/com/android/settings/ZenModeSettings.java b/src/com/android/settings/ZenModeSettings.java
index a0ce9d7..3dae7f2 100644
--- a/src/com/android/settings/ZenModeSettings.java
+++ b/src/com/android/settings/ZenModeSettings.java
@@ -16,13 +16,20 @@
package com.android.settings;
+import android.app.ActionBar;
+import android.app.Activity;
import android.content.Context;
+import android.database.ContentObserver;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
+import android.net.Uri;
+import android.os.AsyncTask;
import android.os.Bundle;
+import android.os.Handler;
+import android.provider.Settings.Global;
import android.util.Log;
import android.util.TypedValue;
import android.view.Gravity;
@@ -39,6 +46,7 @@ import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.ScrollView;
import android.widget.Spinner;
+import android.widget.Switch;
import android.widget.TextView;
import android.widget.Toast;
@@ -46,7 +54,69 @@ public class ZenModeSettings extends SettingsPreferenceFragment {
private static final String TAG = "ZenModeSettings";
private static final boolean DEBUG = false;
+ private final Handler mHandler = new Handler();
+ private final SettingsObserver mSettingsObserver = new SettingsObserver();
+
private ZenModeConfigView mConfig;
+ private Switch mSwitch;
+
+ @Override
+ public void onCreate(Bundle icicle) {
+ super.onCreate(icicle);
+ final Activity activity = getActivity();
+ mSwitch = new Switch(activity);
+ activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
+ ActionBar.DISPLAY_SHOW_CUSTOM);
+ activity.getActionBar().setCustomView(mSwitch, new ActionBar.LayoutParams(
+ ActionBar.LayoutParams.WRAP_CONTENT,
+ ActionBar.LayoutParams.WRAP_CONTENT,
+ Gravity.CENTER_VERTICAL | Gravity.END));
+ }
+
+ @Override
+ public void onPause() {
+ super.onPause();
+ mSettingsObserver.unregister();
+ }
+
+ @Override
+ public void onResume() {
+ super.onResume();
+ updateState();
+ mSettingsObserver.register();
+ }
+
+ private final class SettingsObserver extends ContentObserver {
+ private final Uri ZEN_MODE_URI = Global.getUriFor(Global.ZEN_MODE);
+
+ public SettingsObserver() {
+ super(mHandler);
+ }
+
+ public void register() {
+ getContentResolver().registerContentObserver(ZEN_MODE_URI, false, this);
+ }
+
+ public void unregister() {
+ getContentResolver().unregisterContentObserver(this);
+ }
+
+ @Override
+ public void onChange(boolean selfChange, Uri uri) {
+ super.onChange(selfChange, uri);
+ if (ZEN_MODE_URI.equals(uri)) {
+ updateState();
+ }
+ }
+ };
+
+ private void updateState() {
+ mSwitch.setOnCheckedChangeListener(null);
+ final boolean zenMode = Global.getInt(getContentResolver(),
+ Global.ZEN_MODE, Global.ZEN_MODE_OFF) != Global.ZEN_MODE_OFF;
+ mSwitch.setChecked(zenMode);
+ mSwitch.setOnCheckedChangeListener(mSwitchListener);
+ }
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
@@ -66,6 +136,19 @@ public class ZenModeSettings extends SettingsPreferenceFragment {
mConfig.resetBackground();
}
+ private final OnCheckedChangeListener mSwitchListener = new OnCheckedChangeListener() {
+ @Override
+ public void onCheckedChanged(CompoundButton buttonView, final boolean isChecked) {
+ AsyncTask.execute(new Runnable() {
+ @Override
+ public void run() {
+ final int v = isChecked ? Global.ZEN_MODE_ON : Global.ZEN_MODE_OFF;
+ Global.putInt(getContentResolver(), Global.ZEN_MODE, v);
+ }
+ });
+ }
+ };
+
public static final class ZenModeConfigView extends LinearLayout {
private static final Typeface LIGHT =
Typeface.create("sans-serif-light", Typeface.NORMAL);