Updates to automatic rule pages in Settings
- Re-added metrics for zen behavior preference controllers
- Dialogs in zen mode settings are rotate-friendly
- Automatic rules are refreshed on update state
- User-created (and default) automatic rules are always priority only and user cannot change this
- Automatic rules redesigned to have headers
Test: make ROBOTEST_FILTER=ZenModeAutomaticRulesPreferenceControllerTest RunSettingsRoboTests -j40
Bug: 63077372
Fixes: 68324465
Fixes: 69057696
Change-Id: I163acef2715dd4e60bfc08207f0e22352c4c0e28
diff --git a/src/com/android/settings/notification/AbstractZenModeAutomaticRulePreferenceController.java b/src/com/android/settings/notification/AbstractZenModeAutomaticRulePreferenceController.java
index ec9cf2a..cc70a6f 100644
--- a/src/com/android/settings/notification/AbstractZenModeAutomaticRulePreferenceController.java
+++ b/src/com/android/settings/notification/AbstractZenModeAutomaticRulePreferenceController.java
@@ -29,8 +29,9 @@
import android.service.notification.ZenModeConfig;
import android.support.v7.preference.Preference;
+import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.core.PreferenceControllerMixin;
-import com.android.settingslib.core.AbstractPreferenceController;
+import com.android.settingslib.core.lifecycle.Lifecycle;
import java.util.Arrays;
import java.util.Comparator;
@@ -38,19 +39,19 @@
import java.util.Set;
abstract public class AbstractZenModeAutomaticRulePreferenceController extends
- AbstractPreferenceController implements PreferenceControllerMixin {
+ AbstractZenModePreferenceController implements PreferenceControllerMixin {
- private static final String TAG = "ZenModeAutomaticRule";
protected ZenModeBackend mBackend;
protected Fragment mParent;
protected Set<Map.Entry<String, AutomaticZenRule>> mRules;
protected PackageManager mPm;
- public AbstractZenModeAutomaticRulePreferenceController(Context context, Fragment parent) {
- super(context);
+ public AbstractZenModeAutomaticRulePreferenceController(Context context, String key, Fragment
+ parent, Lifecycle lifecycle) {
+ super(context, key, lifecycle);
mBackend = ZenModeBackend.getInstance(context);
- mParent = parent;
mPm = mContext.getPackageManager();
+ mParent = parent;
}
@Override
@@ -65,19 +66,9 @@
return ruleMap.entrySet();
}
- protected void showNameRuleDialog(final ZenRuleInfo ri) {
- new ZenRuleNameDialog(mContext, null, ri.defaultConditionId) {
- @Override
- public void onOk(String ruleName) {
- AutomaticZenRule rule = new AutomaticZenRule(ruleName, ri.serviceComponent,
- ri.defaultConditionId, NotificationManager.INTERRUPTION_FILTER_PRIORITY,
- true);
- String savedRuleId = mBackend.addZenRule(rule);
- if (savedRuleId != null) {
- mParent.startActivity(getRuleIntent(ri.settingsAction, null, savedRuleId));
- }
- }
- }.show();
+ protected void showNameRuleDialog(final ZenRuleInfo ri, Fragment parent) {
+ ZenRuleNameDialog.show(parent, null, ri.defaultConditionId, new
+ RuleNameChangeListener(ri));
}
protected Map.Entry<String, AutomaticZenRule>[] sortedRules() {
@@ -157,4 +148,26 @@
}
return null;
}
+
+ public class RuleNameChangeListener implements ZenRuleNameDialog.PositiveClickListener {
+ ZenRuleInfo mRuleInfo;
+
+ public RuleNameChangeListener(ZenRuleInfo ruleInfo) {
+ mRuleInfo = ruleInfo;
+ }
+
+ @Override
+ public void onOk(String ruleName, Fragment parent) {
+ mMetricsFeatureProvider.action(mContext,
+ MetricsProto.MetricsEvent.ACTION_ZEN_MODE_RULE_NAME_CHANGE_OK);
+ AutomaticZenRule rule = new AutomaticZenRule(ruleName, mRuleInfo.serviceComponent,
+ mRuleInfo.defaultConditionId,
+ NotificationManager.INTERRUPTION_FILTER_PRIORITY, true);
+ String savedRuleId = mBackend.addZenRule(rule);
+ if (savedRuleId != null) {
+ parent.startActivity(getRuleIntent(mRuleInfo.settingsAction, null,
+ savedRuleId));
+ }
+ }
+ }
}