ZenModeSettings.java revision 4a35051565b0ce6d29313c3e4ffe19e1dde78db0
172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock/* 272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * Copyright (C) 2014 The Android Open Source Project 372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * 472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * Licensed under the Apache License, Version 2.0 (the "License"); 572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * you may not use this file except in compliance with the License. 672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * You may obtain a copy of the License at 772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * 872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * http://www.apache.org/licenses/LICENSE-2.0 972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * 1072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * Unless required by applicable law or agreed to in writing, software 1172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * distributed under the License is distributed on an "AS IS" BASIS, 1272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * See the License for the specific language governing permissions and 1472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock * limitations under the License. 1572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock */ 1672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 174a35051565b0ce6d29313c3e4ffe19e1dde78db0John Spurlockpackage com.android.settings.notification; 1872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 197f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlockimport android.app.ActionBar; 207f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlockimport android.app.Activity; 2172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockimport android.content.Context; 22019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglioimport android.content.res.Resources; 234a35051565b0ce6d29313c3e4ffe19e1dde78db0John Spurlockimport android.database.ContentObserver; 2472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockimport android.graphics.Typeface; 2572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockimport android.graphics.drawable.Drawable; 267f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlockimport android.net.Uri; 277f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlockimport android.os.AsyncTask; 2872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockimport android.os.Bundle; 297f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlockimport android.os.Handler; 307f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlockimport android.provider.Settings.Global; 314a35051565b0ce6d29313c3e4ffe19e1dde78db0John Spurlockimport android.provider.SearchIndexableResource; 3272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockimport android.util.Log; 3372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockimport android.util.TypedValue; 3472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockimport android.view.Gravity; 3572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockimport android.view.LayoutInflater; 363726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlockimport android.view.Menu; 373726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlockimport android.view.MenuInflater; 383726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlockimport android.view.MenuItem; 3972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockimport android.view.View; 4072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockimport android.view.ViewGroup; 4172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockimport android.widget.CompoundButton; 4272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockimport android.widget.CompoundButton.OnCheckedChangeListener; 4372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockimport android.widget.LinearLayout; 4472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockimport android.widget.RelativeLayout; 4572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockimport android.widget.ScrollView; 467f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlockimport android.widget.Switch; 4772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockimport android.widget.TextView; 4845f754e50618076213ed6911ff1e6c37b4db0467Fabrice Di Meglioimport com.android.settings.search.BaseSearchIndexProvider; 494a35051565b0ce6d29313c3e4ffe19e1dde78db0John Spurlock 504a35051565b0ce6d29313c3e4ffe19e1dde78db0John Spurlockimport com.android.settings.R; 514a35051565b0ce6d29313c3e4ffe19e1dde78db0John Spurlockimport com.android.settings.SettingsPreferenceFragment; 52019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglioimport com.android.settings.search.Indexable; 53019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglioimport com.android.settings.search.SearchIndexableRaw; 5472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 55019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglioimport java.util.ArrayList; 56019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglioimport java.util.List; 57019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 58019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Megliopublic class ZenModeSettings extends SettingsPreferenceFragment implements Indexable { 5972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private static final String TAG = "ZenModeSettings"; 6072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private static final boolean DEBUG = false; 6172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 627f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock private final Handler mHandler = new Handler(); 637f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock private final SettingsObserver mSettingsObserver = new SettingsObserver(); 647f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 6572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private ZenModeConfigView mConfig; 667f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock private Switch mSwitch; 673726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock private Activity mActivity; 683726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock private MenuItem mSearch; 697f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 707f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock @Override 717f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock public void onCreate(Bundle icicle) { 727f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock super.onCreate(icicle); 733726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock mActivity = getActivity(); 74ede14355180b84c634cade7e3f02d67be64cbff4Fabrice Di Meglio mSwitch = new Switch(mActivity.getActionBar().getThemedContext()); 753726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock final int p = getResources().getDimensionPixelSize(R.dimen.content_margin_left); 763726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock mSwitch.setPadding(0, 0, p, 0); 773726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock setHasOptionsMenu(true); 787f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 797f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 807f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock @Override 813726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 823726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock super.onCreateOptionsMenu(menu, inflater); 833726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock mSearch = menu.findItem(R.id.search); 843726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock if (mSearch != null) mSearch.setVisible(false); 857f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 867f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 877f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock @Override 887f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock public void onResume() { 897f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock super.onResume(); 907f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock updateState(); 917f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock mSettingsObserver.register(); 923726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock mActivity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM, 933726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock ActionBar.DISPLAY_SHOW_CUSTOM); 943726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock mActivity.getActionBar().setCustomView(mSwitch, new ActionBar.LayoutParams( 953726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock ActionBar.LayoutParams.WRAP_CONTENT, 963726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock ActionBar.LayoutParams.WRAP_CONTENT, 973726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock Gravity.CENTER_VERTICAL | Gravity.END)); 983726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock if (mSearch != null) mSearch.setVisible(false); 993726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock } 1003726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock 1013726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock @Override 1023726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock public void onPause() { 1033726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock super.onPause(); 1043726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock mSettingsObserver.unregister(); 1053726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock mActivity.getActionBar().setDisplayOptions(0, ActionBar.DISPLAY_SHOW_CUSTOM); 1063726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock if (mSearch != null) mSearch.setVisible(true); 1077f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 1087f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 1097f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock private final class SettingsObserver extends ContentObserver { 1107f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock private final Uri ZEN_MODE_URI = Global.getUriFor(Global.ZEN_MODE); 1117f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 1127f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock public SettingsObserver() { 1137f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock super(mHandler); 1147f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 1157f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 1167f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock public void register() { 1177f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock getContentResolver().registerContentObserver(ZEN_MODE_URI, false, this); 1187f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 1197f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 1207f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock public void unregister() { 1217f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock getContentResolver().unregisterContentObserver(this); 1227f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 1237f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 1247f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock @Override 1257f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock public void onChange(boolean selfChange, Uri uri) { 1267f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock super.onChange(selfChange, uri); 1277f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock if (ZEN_MODE_URI.equals(uri)) { 1287f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock updateState(); 1297f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 1307f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 1317f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock }; 1327f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 1337f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock private void updateState() { 1347f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock mSwitch.setOnCheckedChangeListener(null); 1357f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock final boolean zenMode = Global.getInt(getContentResolver(), 1367f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock Global.ZEN_MODE, Global.ZEN_MODE_OFF) != Global.ZEN_MODE_OFF; 1377f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock mSwitch.setChecked(zenMode); 1387f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock mSwitch.setOnCheckedChangeListener(mSwitchListener); 1397f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 14072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 14172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock @Override 14272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock public View onCreateView(LayoutInflater inflater, ViewGroup container, 14372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock Bundle savedInstanceState) { 14472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock final Context context = getActivity(); 14572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock final ScrollView sv = new ScrollView(context); 14672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock sv.setVerticalScrollBarEnabled(false); 14772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock sv.setHorizontalScrollBarEnabled(false); 14872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock mConfig = new ZenModeConfigView(context); 14972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock sv.addView(mConfig); 15072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock return sv; 15172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 15272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 15372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock @Override 15472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock public void onDestroyView() { 15572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock super.onDestroyView(); 15672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock mConfig.resetBackground(); 15772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 15872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 1597f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock private final OnCheckedChangeListener mSwitchListener = new OnCheckedChangeListener() { 1607f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock @Override 1617f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock public void onCheckedChanged(CompoundButton buttonView, final boolean isChecked) { 1627f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock AsyncTask.execute(new Runnable() { 1637f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock @Override 1647f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock public void run() { 1657f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock final int v = isChecked ? Global.ZEN_MODE_ON : Global.ZEN_MODE_OFF; 1667f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock Global.putInt(getContentResolver(), Global.ZEN_MODE, v); 1677f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 1687f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock }); 1697f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 1707f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock }; 1717f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 17272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock public static final class ZenModeConfigView extends LinearLayout { 17372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private static final Typeface LIGHT = 17472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock Typeface.create("sans-serif-light", Typeface.NORMAL); 17572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private static final int BG_COLOR = 0xffe7e8e9; 17672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private final Context mContext; 17772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 17872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private Drawable mOldBackground; 17972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 18072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock public ZenModeConfigView(Context context) { 18172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock super(context); 18272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock mContext = context; 18372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock setOrientation(VERTICAL); 18472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 18572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock int p = getResources().getDimensionPixelSize(R.dimen.content_margin_left); 18672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock TextView tv = addHeader("When on"); 18772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setPadding(0, p / 2, 0, p / 4); 18872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock addBuckets(); 18972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv = addHeader("Automatically turn on"); 19072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setPadding(0, p / 2, 0, p / 4); 19172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock addTriggers(); 19272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 19372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 19472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock @Override 19572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock protected void onAttachedToWindow() { 19672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock super.onAttachedToWindow(); 19772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock mOldBackground = getParentView().getBackground(); 19872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock if (DEBUG) Log.d(TAG, "onAttachedToWindow mOldBackground=" + mOldBackground); 19972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock getParentView().setBackgroundColor(BG_COLOR); 20072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 20172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 20272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock public void resetBackground() { 20372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock if (DEBUG) Log.d(TAG, "resetBackground"); 20472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock getParentView().setBackground(mOldBackground); 20572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 20672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 20772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private View getParentView() { 20872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock return (View)getParent().getParent(); 20972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 21072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 21172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private TextView addHeader(String text) { 21272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock TextView tv = new TextView(mContext); 21372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setTypeface(LIGHT); 21472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setTextColor(0x7f000000); 21572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, tv.getTextSize() * 1.5f); 21672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setText(text); 21772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock addView(tv); 21872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock return tv; 21972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 22072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 22172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private void addTriggers() { 2223726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock addView(new TriggerView("Never")); 22372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 22472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 22572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private void addBuckets() { 22672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, 22772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock LayoutParams.WRAP_CONTENT); 2283726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock BucketView callView = new BucketView("Phone calls", 0, 2293726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock "Block all", "Block all except...", "Allow all"); 23072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock addView(callView, lp); 23172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock lp.topMargin = 4; 2323726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock BucketView msgView = new BucketView("Texts, SMS, & other calls", 0, 2333726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock "Block all", "Block all except...", "Allow all"); 23472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock addView(msgView, lp); 2353726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock BucketView alarmView = new BucketView("Alarms & timers", 2, 2363726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock "Block all", "Block all except...", "Allow all"); 23772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock addView(alarmView, lp); 2383726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock BucketView otherView = new BucketView("Other interruptions", 0, 2393726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock "Block all", "Block all except...", "Allow all"); 24072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock addView(otherView, lp); 24172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 24272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 24372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private class BucketView extends RelativeLayout { 2443726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock public BucketView(String category, int defaultValue, String... values) { 24572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock super(ZenModeConfigView.this.mContext); 24672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 24772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock setBackgroundColor(0xffffffff); 24872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock final int p = getResources().getDimensionPixelSize(R.dimen.content_margin_left); 2493726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock final int lm = p * 3 / 4; 2503726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock TextView title = new TextView(mContext); 2513726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock title.setId(android.R.id.title); 2523726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock title.setTextColor(0xff000000); 2533726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock title.setTypeface(LIGHT); 2543726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock title.setText(category); 2553726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock title.setTextSize(TypedValue.COMPLEX_UNIT_PX, title.getTextSize() * 1.5f); 2563726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock LayoutParams lp = 2573726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 25872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock lp.topMargin = p / 2; 2593726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock lp.leftMargin = lm; 2603726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock addView(title, lp); 26172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 2623726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock TextView subtitle = new TextView(mContext); 2633726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock subtitle.setTextColor(0xff000000); 2643726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock subtitle.setTypeface(LIGHT); 2653726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock subtitle.setText(values[defaultValue]); 26672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 2673726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock lp.addRule(BELOW, title.getId()); 2683726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock lp.leftMargin = lm; 2693726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock lp.bottomMargin = p / 2; 2703726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock addView(subtitle, lp); 27172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 27272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 27372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 27472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private class TriggerView extends RelativeLayout { 27572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock public TriggerView(String text) { 27672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock super(ZenModeConfigView.this.mContext); 27772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 27872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock setBackgroundColor(0xffffffff); 27972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock final int p = getResources().getDimensionPixelSize(R.dimen.content_margin_left); 28072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 28172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock final TextView tv = new TextView(mContext); 28272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setText(text); 28372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setTypeface(LIGHT); 28472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setTextColor(0xff000000); 28572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, tv.getTextSize() * 1.5f); 2863726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock LayoutParams lp = 2873726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 28872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock lp.addRule(CENTER_VERTICAL); 2893726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock lp.bottomMargin = p / 2; 2903726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock lp.topMargin = p / 2; 2913726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock lp.leftMargin = p * 3 / 4; 29272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock addView(tv, lp); 29372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 29472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 29572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 296019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 297019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio // Enable indexing of searchable data 298019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = 29945f754e50618076213ed6911ff1e6c37b4db0467Fabrice Di Meglio new BaseSearchIndexProvider() { 300019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio @Override 301019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) { 302019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio final List<SearchIndexableRaw> result = new ArrayList<SearchIndexableRaw>(); 303019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio final Resources res = context.getResources(); 304019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 305019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio SearchIndexableRaw data = new SearchIndexableRaw(context); 306019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = res.getString(R.string.zen_mode_settings_title); 307019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 308019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 309019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 310019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data = new SearchIndexableRaw(context); 311019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = "When on"; 312019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 313019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 314019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 315019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data = new SearchIndexableRaw(context); 316019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = "Calls"; 317019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 318019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 319019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 320019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data = new SearchIndexableRaw(context); 321019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = "Text & SMS Messages"; 322019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 323019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 324019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 325019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data = new SearchIndexableRaw(context); 326019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = "Alarms & Timers"; 327019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 328019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 329019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 330019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data = new SearchIndexableRaw(context); 331019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = "Other Interruptions"; 332019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 333019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 334019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 335019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data = new SearchIndexableRaw(context); 336019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = "Automatically turn on"; 337019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 338019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 339019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 340019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data = new SearchIndexableRaw(context); 341019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = "While driving"; 342019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 343019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 344019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 345019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data = new SearchIndexableRaw(context); 346019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = "While in meetings"; 347019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 348019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 349019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 350019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data = new SearchIndexableRaw(context); 351019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = "During a set time period"; 352019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 353019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 354019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 355019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio return result; 356019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio } 357019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio }; 358019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 35972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock} 360