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