1c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock/*
2c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock * Copyright (C) 2015 The Android Open Source Project
3c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock *
4c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock * Licensed under the Apache License, Version 2.0 (the "License");
5c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock * you may not use this file except in compliance with the License.
6c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock * You may obtain a copy of the License at
7c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock *
8c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock *      http://www.apache.org/licenses/LICENSE-2.0
9c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock *
10c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock * Unless required by applicable law or agreed to in writing, software
11c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock * distributed under the License is distributed on an "AS IS" BASIS,
12c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock * See the License for the specific language governing permissions and
14c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock * limitations under the License.
15c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock */
16c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
17c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlockpackage com.android.settings.notification;
18c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
19c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlockimport android.app.AlertDialog;
207d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynoldsimport android.app.AutomaticZenRule;
217d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynoldsimport android.app.NotificationManager;
22c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlockimport android.content.Context;
23c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlockimport android.content.DialogInterface;
24c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlockimport android.content.DialogInterface.OnClickListener;
25c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlockimport android.content.Intent;
26c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlockimport android.net.Uri;
27c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlockimport android.os.Bundle;
28f7748e4ae15e49f9f4a9cc15a372e9a6d3c35c56Julia Reynoldsimport android.service.notification.ConditionProviderService;
291230ac820ea94b8f3f6285fd4cae056e62d96183Jason Monkimport android.support.v7.preference.DropDownPreference;
3039b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v7.preference.Preference;
3139b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v7.preference.Preference.OnPreferenceChangeListener;
3239b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v7.preference.Preference.OnPreferenceClickListener;
3339b467482d1bf256a111c757e9b7621c6f523271Jason Monkimport android.support.v7.preference.PreferenceScreen;
34c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlockimport android.util.Log;
35c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlockimport android.view.Menu;
36c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlockimport android.view.MenuInflater;
37c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlockimport android.view.MenuItem;
38b01383beab9d2d1dc610e51dfeff9da0c5db8302Maurice Lamimport android.view.View;
39c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlockimport android.widget.Switch;
40c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlockimport android.widget.Toast;
41c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
42265d3c2a0c36251bf8a9f571d7239b6dd404d942Tamas Berghammerimport com.android.internal.logging.nano.MetricsProto.MetricsEvent;
43c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlockimport com.android.settings.R;
44c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlockimport com.android.settings.SettingsActivity;
45c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlockimport com.android.settings.widget.SwitchBar;
46c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
47c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlockpublic abstract class ZenModeRuleSettingsBase extends ZenModeSettingsBase
48c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        implements SwitchBar.OnSwitchChangeListener {
49c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    protected static final String TAG = ZenModeSettingsBase.TAG;
50c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    protected static final boolean DEBUG = ZenModeSettingsBase.DEBUG;
51c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
52c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    private static final String KEY_RULE_NAME = "rule_name";
53c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    private static final String KEY_ZEN_MODE = "zen_mode";
54c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
55c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    protected Context mContext;
56c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    protected boolean mDisableListeners;
577d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynolds    protected AutomaticZenRule mRule;
5825cb8f06914538f337be66d9a784834a7373b58aJulia Reynolds    protected String mId;
59c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
60c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    private boolean mDeleting;
61c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    private Preference mRuleName;
62c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    private SwitchBar mSwitchBar;
63c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    private DropDownPreference mZenMode;
64f57bad7d5b0f9044231fc52351ed27e14013f491John Spurlock    private Toast mEnabledToast;
65c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
66c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    abstract protected void onCreateInternal();
677d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynolds    abstract protected boolean setRule(AutomaticZenRule rule);
68c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    abstract protected String getZenModeDependency();
69c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    abstract protected void updateControlsInternal();
70f57bad7d5b0f9044231fc52351ed27e14013f491John Spurlock    abstract protected int getEnabledToastText();
71c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
72c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    @Override
73c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    public void onCreate(Bundle icicle) {
74c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        super.onCreate(icicle);
75c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
76c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        mContext = getActivity();
77c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
78c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        final Intent intent = getActivity().getIntent();
79c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        if (DEBUG) Log.d(TAG, "onCreate getIntent()=" + intent);
80c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        if (intent == null) {
81c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock            Log.w(TAG, "No intent");
82c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock            toastAndFinish();
83c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock            return;
84c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        }
85c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
8625cb8f06914538f337be66d9a784834a7373b58aJulia Reynolds        mId = intent.getStringExtra(ConditionProviderService.EXTRA_RULE_ID);
8725cb8f06914538f337be66d9a784834a7373b58aJulia Reynolds        if (DEBUG) Log.d(TAG, "mId=" + mId);
88c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        if (refreshRuleOrFinish()) {
89c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock            return;
90c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        }
91c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
92c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        setHasOptionsMenu(true);
93c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
94c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        onCreateInternal();
95c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
96c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        final PreferenceScreen root = getPreferenceScreen();
97c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        mRuleName = root.findPreference(KEY_RULE_NAME);
98c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        mRuleName.setOnPreferenceClickListener(new OnPreferenceClickListener() {
99c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock            @Override
100c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock            public boolean onPreferenceClick(Preference preference) {
101c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock                showRuleNameDialog();
102c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock                return true;
103c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock            }
104c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        });
105c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
106c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        mZenMode = (DropDownPreference) root.findPreference(KEY_ZEN_MODE);
10749b6103b56d777cb41f280e0dc636f738f6ba56dJason Monk        mZenMode.setEntries(new CharSequence[] {
10849b6103b56d777cb41f280e0dc636f738f6ba56dJason Monk                getString(R.string.zen_mode_option_important_interruptions),
10949b6103b56d777cb41f280e0dc636f738f6ba56dJason Monk                getString(R.string.zen_mode_option_alarms),
11049b6103b56d777cb41f280e0dc636f738f6ba56dJason Monk                getString(R.string.zen_mode_option_no_interruptions),
11149b6103b56d777cb41f280e0dc636f738f6ba56dJason Monk        });
11249b6103b56d777cb41f280e0dc636f738f6ba56dJason Monk        mZenMode.setEntryValues(new CharSequence[] {
1137d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynolds                Integer.toString(NotificationManager.INTERRUPTION_FILTER_PRIORITY),
1147d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynolds                Integer.toString(NotificationManager.INTERRUPTION_FILTER_ALARMS),
1157d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynolds                Integer.toString(NotificationManager.INTERRUPTION_FILTER_NONE),
11649b6103b56d777cb41f280e0dc636f738f6ba56dJason Monk        });
11749b6103b56d777cb41f280e0dc636f738f6ba56dJason Monk        mZenMode.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
118c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock            @Override
11949b6103b56d777cb41f280e0dc636f738f6ba56dJason Monk            public boolean onPreferenceChange(Preference preference, Object newValue) {
12049b6103b56d777cb41f280e0dc636f738f6ba56dJason Monk                if (mDisableListeners) return false;
12149b6103b56d777cb41f280e0dc636f738f6ba56dJason Monk                final int zenMode = Integer.parseInt((String) newValue);
1227d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynolds                if (zenMode == mRule.getInterruptionFilter()) return false;
123c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock                if (DEBUG) Log.d(TAG, "onPrefChange zenMode=" + zenMode);
1247d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynolds                mRule.setInterruptionFilter(zenMode);
1251d33d59be29c719f8003458373585397a781dc77Julia Reynolds                setZenRule(mId, mRule);
126c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock                return true;
127c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock            }
128c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        });
129c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        mZenMode.setOrder(10);  // sort at the bottom of the category
130c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        mZenMode.setDependency(getZenModeDependency());
131c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    }
132c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
133c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    @Override
134c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    public void onResume() {
135c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        super.onResume();
136366d8809c886fd5857f872def96a436a50be2c06Sudheer Shanka        if (isUiRestricted()) {
137366d8809c886fd5857f872def96a436a50be2c06Sudheer Shanka            return;
138366d8809c886fd5857f872def96a436a50be2c06Sudheer Shanka        }
139c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        updateControls();
140c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    }
141c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
142c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    @Override
143c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    public void onActivityCreated(Bundle savedInstanceState) {
144c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        super.onActivityCreated(savedInstanceState);
145c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
146c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        final SettingsActivity activity = (SettingsActivity) getActivity();
147c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        mSwitchBar = activity.getSwitchBar();
148c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        mSwitchBar.addOnSwitchChangeListener(this);
149c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        mSwitchBar.show();
150c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    }
151c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
152c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    @Override
153c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    public void onDestroyView() {
154c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        super.onDestroyView();
155c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        mSwitchBar.removeOnSwitchChangeListener(this);
156c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        mSwitchBar.hide();
157c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    }
158c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
159c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    @Override
160c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    public void onSwitchChanged(Switch switchView, boolean isChecked) {
161c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        if (DEBUG) Log.d(TAG, "onSwitchChanged " + isChecked);
162c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        if (mDisableListeners) return;
163c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        final boolean enabled = isChecked;
1647d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynolds        if (enabled == mRule.isEnabled()) return;
165aa71afe5978b1340a2d702f3a75d22baf8c96348Fan Zhang        mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_ZEN_ENABLE_RULE, enabled);
166c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        if (DEBUG) Log.d(TAG, "onSwitchChanged enabled=" + enabled);
1677d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynolds        mRule.setEnabled(enabled);
1681d33d59be29c719f8003458373585397a781dc77Julia Reynolds        setZenRule(mId, mRule);
169f57bad7d5b0f9044231fc52351ed27e14013f491John Spurlock        if (enabled) {
170f57bad7d5b0f9044231fc52351ed27e14013f491John Spurlock            final int toastText = getEnabledToastText();
171f57bad7d5b0f9044231fc52351ed27e14013f491John Spurlock            if (toastText != 0) {
172f57bad7d5b0f9044231fc52351ed27e14013f491John Spurlock                mEnabledToast = Toast.makeText(mContext, toastText, Toast.LENGTH_SHORT);
173f57bad7d5b0f9044231fc52351ed27e14013f491John Spurlock                mEnabledToast.show();
174f57bad7d5b0f9044231fc52351ed27e14013f491John Spurlock            }
175f57bad7d5b0f9044231fc52351ed27e14013f491John Spurlock        } else {
176f57bad7d5b0f9044231fc52351ed27e14013f491John Spurlock            if (mEnabledToast != null) {
177f57bad7d5b0f9044231fc52351ed27e14013f491John Spurlock                mEnabledToast.cancel();
178f57bad7d5b0f9044231fc52351ed27e14013f491John Spurlock            }
179f57bad7d5b0f9044231fc52351ed27e14013f491John Spurlock        }
180c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    }
181c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
182c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    protected void updateRule(Uri newConditionId) {
1837d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynolds        mRule.setConditionId(newConditionId);
1841d33d59be29c719f8003458373585397a781dc77Julia Reynolds        setZenRule(mId, mRule);
185c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    }
186c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
187c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    @Override
188c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    protected void onZenModeChanged() {
189c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        // noop
190c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    }
191c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
192c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    @Override
193c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    protected void onZenModeConfigChanged() {
194c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        if (!refreshRuleOrFinish()) {
195c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock            updateControls();
196c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        }
197c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    }
198c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
199c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    @Override
200c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
201c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        if (DEBUG) Log.d(TAG, "onCreateOptionsMenu");
202c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        inflater.inflate(R.menu.zen_mode_rule, menu);
203c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    }
204c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
205c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    @Override
206c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    public boolean onOptionsItemSelected(MenuItem item) {
207c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        if (DEBUG) Log.d(TAG, "onOptionsItemSelected " + item.getItemId());
208c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        if (item.getItemId() == R.id.delete) {
209aa71afe5978b1340a2d702f3a75d22baf8c96348Fan Zhang            mMetricsFeatureProvider.action(mContext, MetricsEvent.ACTION_ZEN_DELETE_RULE);
210c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock            showDeleteRuleDialog();
211c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock            return true;
212c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        }
213c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        return super.onOptionsItemSelected(item);
214c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    }
215c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
216c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    private void showRuleNameDialog() {
21725cb8f06914538f337be66d9a784834a7373b58aJulia Reynolds        new ZenRuleNameDialog(mContext, mRule.getName()) {
218c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock            @Override
219f7748e4ae15e49f9f4a9cc15a372e9a6d3c35c56Julia Reynolds            public void onOk(String ruleName) {
22025cb8f06914538f337be66d9a784834a7373b58aJulia Reynolds                mRule.setName(ruleName);
2211d33d59be29c719f8003458373585397a781dc77Julia Reynolds                setZenRule(mId, mRule);
222c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock            }
223c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        }.show();
224c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    }
225c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
226c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    private boolean refreshRuleOrFinish() {
2277d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynolds        mRule = getZenRule();
228c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        if (DEBUG) Log.d(TAG, "mRule=" + mRule);
229c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        if (!setRule(mRule)) {
230c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock            toastAndFinish();
231c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock            return true;
232c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        }
233c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        return false;
234c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    }
235c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
236c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    private void showDeleteRuleDialog() {
237b01383beab9d2d1dc610e51dfeff9da0c5db8302Maurice Lam        final AlertDialog dialog = new AlertDialog.Builder(mContext)
2387d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynolds                .setMessage(getString(R.string.zen_mode_delete_rule_confirmation, mRule.getName()))
239c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock                .setNegativeButton(R.string.cancel, null)
240c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock                .setPositiveButton(R.string.zen_mode_delete_rule_button, new OnClickListener() {
241c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock                    @Override
242c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock                    public void onClick(DialogInterface dialog, int which) {
243aa71afe5978b1340a2d702f3a75d22baf8c96348Fan Zhang                        mMetricsFeatureProvider.action(mContext,
244aa71afe5978b1340a2d702f3a75d22baf8c96348Fan Zhang                                MetricsEvent.ACTION_ZEN_DELETE_RULE_OK);
245c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock                        mDeleting = true;
2461d33d59be29c719f8003458373585397a781dc77Julia Reynolds                        removeZenRule(mId);
247c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock                    }
248c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock                })
249c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock                .show();
250b01383beab9d2d1dc610e51dfeff9da0c5db8302Maurice Lam        final View messageView = dialog.findViewById(android.R.id.message);
251b01383beab9d2d1dc610e51dfeff9da0c5db8302Maurice Lam        if (messageView != null) {
252b01383beab9d2d1dc610e51dfeff9da0c5db8302Maurice Lam            messageView.setTextDirection(View.TEXT_DIRECTION_LOCALE);
253b01383beab9d2d1dc610e51dfeff9da0c5db8302Maurice Lam        }
254c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    }
255c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
256c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    private void toastAndFinish() {
257c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        if (!mDeleting) {
258c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock            Toast.makeText(mContext, R.string.zen_mode_rule_not_found_text, Toast.LENGTH_SHORT)
259c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock                    .show();
260c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        }
261c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        getActivity().finish();
262c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    }
263c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
264c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    private void updateRuleName() {
2657d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynolds        getActivity().setTitle(mRule.getName());
2667d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynolds        mRuleName.setSummary(mRule.getName());
2677d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynolds    }
2687d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynolds
2697d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynolds    private AutomaticZenRule getZenRule() {
27025cb8f06914538f337be66d9a784834a7373b58aJulia Reynolds        return NotificationManager.from(mContext).getAutomaticZenRule(mId);
271c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    }
272c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
273c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    private void updateControls() {
274c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        mDisableListeners = true;
275c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        updateRuleName();
276c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        updateControlsInternal();
2777d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynolds        mZenMode.setValue(Integer.toString(mRule.getInterruptionFilter()));
278c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        if (mSwitchBar != null) {
2797d8a9aead53f817c9df14cc5feaae223a8a834e8Julia Reynolds            mSwitchBar.setChecked(mRule.isEnabled());
280c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock        }
281f57bad7d5b0f9044231fc52351ed27e14013f491John Spurlock        mDisableListeners = false;
282c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock    }
283c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock
284c96a5dcbfc3f37f71e8b3e8b962f9571b1e7ceafJohn Spurlock}
285