ZenModeSettings.java revision 019b87f17a51fef7fd4b6696dbea5c50fe8b6d07
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 1772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockpackage com.android.settings; 1872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 197f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlockimport android.app.ActionBar; 207f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlockimport android.app.Activity; 2172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlockimport android.content.Context; 227f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlockimport android.database.ContentObserver; 23019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglioimport android.content.res.Resources; 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; 31019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglioimport 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; 48019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglioimport com.android.settings.search.Indexable; 49019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglioimport com.android.settings.search.SearchIndexableRaw; 5072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 51019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglioimport java.util.ArrayList; 52019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglioimport java.util.List; 53019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 54019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Megliopublic class ZenModeSettings extends SettingsPreferenceFragment implements Indexable { 5572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private static final String TAG = "ZenModeSettings"; 5672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private static final boolean DEBUG = false; 5772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 587f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock private final Handler mHandler = new Handler(); 597f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock private final SettingsObserver mSettingsObserver = new SettingsObserver(); 607f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 6172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private ZenModeConfigView mConfig; 627f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock private Switch mSwitch; 633726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock private Activity mActivity; 643726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock private MenuItem mSearch; 657f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 667f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock @Override 677f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock public void onCreate(Bundle icicle) { 687f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock super.onCreate(icicle); 693726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock mActivity = getActivity(); 703726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock mSwitch = new Switch(mActivity); 713726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock final int p = getResources().getDimensionPixelSize(R.dimen.content_margin_left); 723726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock mSwitch.setPadding(0, 0, p, 0); 733726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock setHasOptionsMenu(true); 747f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 757f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 767f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock @Override 773726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 783726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock super.onCreateOptionsMenu(menu, inflater); 793726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock mSearch = menu.findItem(R.id.search); 803726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock if (mSearch != null) mSearch.setVisible(false); 817f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 827f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 837f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock @Override 847f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock public void onResume() { 857f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock super.onResume(); 867f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock updateState(); 877f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock mSettingsObserver.register(); 883726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock mActivity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM, 893726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock ActionBar.DISPLAY_SHOW_CUSTOM); 903726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock mActivity.getActionBar().setCustomView(mSwitch, new ActionBar.LayoutParams( 913726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock ActionBar.LayoutParams.WRAP_CONTENT, 923726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock ActionBar.LayoutParams.WRAP_CONTENT, 933726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock Gravity.CENTER_VERTICAL | Gravity.END)); 943726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock if (mSearch != null) mSearch.setVisible(false); 953726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock } 963726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock 973726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock @Override 983726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock public void onPause() { 993726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock super.onPause(); 1003726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock mSettingsObserver.unregister(); 1013726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock mActivity.getActionBar().setDisplayOptions(0, ActionBar.DISPLAY_SHOW_CUSTOM); 1023726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock if (mSearch != null) mSearch.setVisible(true); 1037f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 1047f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 1057f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock private final class SettingsObserver extends ContentObserver { 1067f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock private final Uri ZEN_MODE_URI = Global.getUriFor(Global.ZEN_MODE); 1077f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 1087f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock public SettingsObserver() { 1097f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock super(mHandler); 1107f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 1117f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 1127f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock public void register() { 1137f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock getContentResolver().registerContentObserver(ZEN_MODE_URI, false, this); 1147f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 1157f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 1167f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock public void unregister() { 1177f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock getContentResolver().unregisterContentObserver(this); 1187f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 1197f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 1207f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock @Override 1217f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock public void onChange(boolean selfChange, Uri uri) { 1227f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock super.onChange(selfChange, uri); 1237f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock if (ZEN_MODE_URI.equals(uri)) { 1247f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock updateState(); 1257f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 1267f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 1277f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock }; 1287f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 1297f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock private void updateState() { 1307f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock mSwitch.setOnCheckedChangeListener(null); 1317f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock final boolean zenMode = Global.getInt(getContentResolver(), 1327f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock Global.ZEN_MODE, Global.ZEN_MODE_OFF) != Global.ZEN_MODE_OFF; 1337f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock mSwitch.setChecked(zenMode); 1347f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock mSwitch.setOnCheckedChangeListener(mSwitchListener); 1357f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 13672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 13772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock @Override 13872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock public View onCreateView(LayoutInflater inflater, ViewGroup container, 13972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock Bundle savedInstanceState) { 14072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock final Context context = getActivity(); 14172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock final ScrollView sv = new ScrollView(context); 14272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock sv.setVerticalScrollBarEnabled(false); 14372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock sv.setHorizontalScrollBarEnabled(false); 14472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock mConfig = new ZenModeConfigView(context); 14572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock sv.addView(mConfig); 14672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock return sv; 14772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 14872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 14972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock @Override 15072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock public void onDestroyView() { 15172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock super.onDestroyView(); 15272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock mConfig.resetBackground(); 15372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 15472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 1557f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock private final OnCheckedChangeListener mSwitchListener = new OnCheckedChangeListener() { 1567f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock @Override 1577f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock public void onCheckedChanged(CompoundButton buttonView, final boolean isChecked) { 1587f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock AsyncTask.execute(new Runnable() { 1597f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock @Override 1607f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock public void run() { 1617f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock final int v = isChecked ? Global.ZEN_MODE_ON : Global.ZEN_MODE_OFF; 1627f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock Global.putInt(getContentResolver(), Global.ZEN_MODE, v); 1637f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 1647f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock }); 1657f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock } 1667f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock }; 1677f502bf824955b2b3a43f8f7f32c00cf00f736feJohn Spurlock 16872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock public static final class ZenModeConfigView extends LinearLayout { 16972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private static final Typeface LIGHT = 17072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock Typeface.create("sans-serif-light", Typeface.NORMAL); 17172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private static final int BG_COLOR = 0xffe7e8e9; 17272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private final Context mContext; 17372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 17472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private Drawable mOldBackground; 17572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 17672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock public ZenModeConfigView(Context context) { 17772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock super(context); 17872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock mContext = context; 17972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock setOrientation(VERTICAL); 18072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 18172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock int p = getResources().getDimensionPixelSize(R.dimen.content_margin_left); 18272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock TextView tv = addHeader("When on"); 18372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setPadding(0, p / 2, 0, p / 4); 18472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock addBuckets(); 18572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv = addHeader("Automatically turn on"); 18672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setPadding(0, p / 2, 0, p / 4); 18772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock addTriggers(); 18872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 18972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 19072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock @Override 19172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock protected void onAttachedToWindow() { 19272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock super.onAttachedToWindow(); 19372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock mOldBackground = getParentView().getBackground(); 19472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock if (DEBUG) Log.d(TAG, "onAttachedToWindow mOldBackground=" + mOldBackground); 19572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock getParentView().setBackgroundColor(BG_COLOR); 19672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 19772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 19872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock public void resetBackground() { 19972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock if (DEBUG) Log.d(TAG, "resetBackground"); 20072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock getParentView().setBackground(mOldBackground); 20172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 20272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 20372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private View getParentView() { 20472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock return (View)getParent().getParent(); 20572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 20672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 20772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private TextView addHeader(String text) { 20872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock TextView tv = new TextView(mContext); 20972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setTypeface(LIGHT); 21072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setTextColor(0x7f000000); 21172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, tv.getTextSize() * 1.5f); 21272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setText(text); 21372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock addView(tv); 21472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock return tv; 21572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 21672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 21772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private void addTriggers() { 2183726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock addView(new TriggerView("Never")); 21972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 22072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 22172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private void addBuckets() { 22272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock LayoutParams lp = new LayoutParams(LayoutParams.MATCH_PARENT, 22372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock LayoutParams.WRAP_CONTENT); 2243726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock BucketView callView = new BucketView("Phone calls", 0, 2253726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock "Block all", "Block all except...", "Allow all"); 22672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock addView(callView, lp); 22772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock lp.topMargin = 4; 2283726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock BucketView msgView = new BucketView("Texts, SMS, & other calls", 0, 2293726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock "Block all", "Block all except...", "Allow all"); 23072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock addView(msgView, lp); 2313726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock BucketView alarmView = new BucketView("Alarms & timers", 2, 2323726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock "Block all", "Block all except...", "Allow all"); 23372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock addView(alarmView, lp); 2343726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock BucketView otherView = new BucketView("Other interruptions", 0, 2353726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock "Block all", "Block all except...", "Allow all"); 23672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock addView(otherView, lp); 23772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 23872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 23972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private class BucketView extends RelativeLayout { 2403726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock public BucketView(String category, int defaultValue, String... values) { 24172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock super(ZenModeConfigView.this.mContext); 24272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 24372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock setBackgroundColor(0xffffffff); 24472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock final int p = getResources().getDimensionPixelSize(R.dimen.content_margin_left); 2453726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock final int lm = p * 3 / 4; 2463726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock TextView title = new TextView(mContext); 2473726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock title.setId(android.R.id.title); 2483726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock title.setTextColor(0xff000000); 2493726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock title.setTypeface(LIGHT); 2503726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock title.setText(category); 2513726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock title.setTextSize(TypedValue.COMPLEX_UNIT_PX, title.getTextSize() * 1.5f); 2523726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock LayoutParams lp = 2533726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 25472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock lp.topMargin = p / 2; 2553726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock lp.leftMargin = lm; 2563726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock addView(title, lp); 25772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 2583726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock TextView subtitle = new TextView(mContext); 2593726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock subtitle.setTextColor(0xff000000); 2603726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock subtitle.setTypeface(LIGHT); 2613726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock subtitle.setText(values[defaultValue]); 26272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 2633726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock lp.addRule(BELOW, title.getId()); 2643726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock lp.leftMargin = lm; 2653726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock lp.bottomMargin = p / 2; 2663726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock addView(subtitle, lp); 26772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 26872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 26972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 27072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock private class TriggerView extends RelativeLayout { 27172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock public TriggerView(String text) { 27272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock super(ZenModeConfigView.this.mContext); 27372438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 27472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock setBackgroundColor(0xffffffff); 27572438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock final int p = getResources().getDimensionPixelSize(R.dimen.content_margin_left); 27672438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock 27772438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock final TextView tv = new TextView(mContext); 27872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setText(text); 27972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setTypeface(LIGHT); 28072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setTextColor(0xff000000); 28172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock tv.setTextSize(TypedValue.COMPLEX_UNIT_PX, tv.getTextSize() * 1.5f); 2823726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock LayoutParams lp = 2833726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 28472438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock lp.addRule(CENTER_VERTICAL); 2853726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock lp.bottomMargin = p / 2; 2863726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock lp.topMargin = p / 2; 2873726525d50d480a3d954c103a844f0c4b3c7d3e0John Spurlock lp.leftMargin = p * 3 / 4; 28872438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock addView(tv, lp); 28972438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 29072438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 29172438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock } 292019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 293019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio // Enable indexing of searchable data 294019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = 295019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio new Indexable.SearchIndexProvider() { 296019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 297019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio @Override 298019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio public List<SearchIndexableResource> getXmlResourcesToIndex( 299019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio Context context, boolean enabled) { 300019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio return null; 301019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio } 302019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 303019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio @Override 304019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio public List<SearchIndexableRaw> getRawDataToIndex(Context context, boolean enabled) { 305019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio final List<SearchIndexableRaw> result = new ArrayList<SearchIndexableRaw>(); 306019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio final Resources res = context.getResources(); 307019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 308019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio SearchIndexableRaw data = new SearchIndexableRaw(context); 309019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = res.getString(R.string.zen_mode_settings_title); 310019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 311019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 312019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 313019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data = new SearchIndexableRaw(context); 314019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = "When on"; 315019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 316019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 317019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 318019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data = new SearchIndexableRaw(context); 319019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = "Calls"; 320019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 321019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 322019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 323019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data = new SearchIndexableRaw(context); 324019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = "Text & SMS Messages"; 325019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 326019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 327019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 328019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data = new SearchIndexableRaw(context); 329019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = "Alarms & Timers"; 330019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 331019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 332019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 333019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data = new SearchIndexableRaw(context); 334019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = "Other Interruptions"; 335019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 336019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 337019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 338019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data = new SearchIndexableRaw(context); 339019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = "Automatically turn on"; 340019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 341019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 342019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 343019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data = new SearchIndexableRaw(context); 344019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = "While driving"; 345019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 346019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 347019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 348019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data = new SearchIndexableRaw(context); 349019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = "While in meetings"; 350019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 351019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 352019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 353019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data = new SearchIndexableRaw(context); 354019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.title = "During a set time period"; 355019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio data.screenTitle = res.getString(R.string.zen_mode_settings_title); 356019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio result.add(data); 357019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 358019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio return result; 359019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio } 360019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio }; 361019b87f17a51fef7fd4b6696dbea5c50fe8b6d07Fabrice Di Meglio 36272438063453d2141218cf7fa4d8c1da6de6cbf4cJohn Spurlock} 363