• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2018 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.settings.notification.zen;
18 
19 import android.app.AutomaticZenRule;
20 import android.app.settings.SettingsEnums;
21 import android.content.Context;
22 import android.text.TextUtils;
23 import android.view.View;
24 
25 import androidx.fragment.app.Fragment;
26 import androidx.preference.PreferenceScreen;
27 
28 import com.android.settings.R;
29 import com.android.settings.core.PreferenceControllerMixin;
30 import com.android.settingslib.core.lifecycle.Lifecycle;
31 import com.android.settingslib.widget.ActionButtonsPreference;
32 
33 public class ZenRuleButtonsPreferenceController extends AbstractZenModePreferenceController
34     implements PreferenceControllerMixin {
35     public static final String KEY = "zen_action_buttons";
36 
37     private final ZenModeRuleSettingsBase mFragment;
38     private String mId;
39     private AutomaticZenRule mRule;
40 
ZenRuleButtonsPreferenceController(Context context, ZenModeRuleSettingsBase fragment, Lifecycle lc)41     public ZenRuleButtonsPreferenceController(Context context, ZenModeRuleSettingsBase fragment,
42             Lifecycle lc) {
43         super(context, KEY, lc);
44         mFragment = fragment;
45     }
46 
setIdAndRule(String id, AutomaticZenRule rule)47     void setIdAndRule(String id, AutomaticZenRule rule) {
48         mId = id;
49         mRule = rule;
50     }
51 
52     @Override
isAvailable()53     public boolean isAvailable() {
54         return mRule != null;
55     }
56 
57     @Override
displayPreference(PreferenceScreen screen)58     public void displayPreference(PreferenceScreen screen) {
59         if (isAvailable()) {
60             ((ActionButtonsPreference) screen.findPreference(KEY))
61                     .setButton1Text(R.string.zen_mode_rule_name_edit)
62                     .setButton1Icon(com.android.internal.R.drawable.ic_mode_edit)
63                     .setButton1OnClickListener(new EditRuleNameClickListener())
64                     .setButton2Text(R.string.zen_mode_delete_rule_button)
65                     .setButton2Icon(R.drawable.ic_settings_delete)
66                     .setButton2OnClickListener(new DeleteRuleClickListener());
67         }
68     }
69 
70     public class EditRuleNameClickListener implements View.OnClickListener {
EditRuleNameClickListener()71         public EditRuleNameClickListener() {}
72 
73         @Override
onClick(View v)74         public void onClick(View v) {
75             ZenRuleNameDialog.show(mFragment, mRule.getName(), null,
76                     new ZenRuleNameDialog.PositiveClickListener() {
77                         @Override
78                         public void onOk(String ruleName, Fragment parent) {
79                             if (TextUtils.equals(ruleName, mRule.getName())) {
80                                 return;
81                             }
82                             mMetricsFeatureProvider.action(mContext,
83                                     SettingsEnums.ACTION_ZEN_MODE_RULE_NAME_CHANGE_OK);
84                             mRule.setName(ruleName);
85                             mBackend.updateZenRule(mId, mRule);
86                         }
87                     });
88         }
89     }
90 
91     public class DeleteRuleClickListener implements View.OnClickListener {
DeleteRuleClickListener()92         public DeleteRuleClickListener() {}
93 
94         @Override
onClick(View v)95         public void onClick(View v) {
96             ZenDeleteRuleDialog.show(mFragment, mRule.getName(), mId,
97                     new ZenDeleteRuleDialog.PositiveClickListener() {
98                         @Override
99                         public void onOk(String id) {
100                             mBackend.removeZenRule(id);
101                             mMetricsFeatureProvider.action(mContext,
102                                     SettingsEnums.ACTION_ZEN_DELETE_RULE_OK);
103                             mFragment.onRuleRemoved();
104                         }
105             });
106         }
107     }
108 }
109