diff options
author | John Spurlock <jspurlock@google.com> | 2014-03-28 13:09:50 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-03-28 13:09:51 +0000 |
commit | 6a8919299fff6954380495fd4f28c2a9df57dec5 (patch) | |
tree | 5bf7efc30426fd5fb855faa6e9a63f96d668d1c7 | |
parent | f3e32e34102648481e9df096fa70a6c1bf346611 (diff) | |
parent | 7f502bf824955b2b3a43f8f7f32c00cf00f736fe (diff) | |
download | packages_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.java | 83 |
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); |