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