Redesign zen visual effects screens

Test: robotests
Bug: 78448988
Change-Id: I3040c1103d76c75601e82e3660a2ace202837ec2
Merged-In: I3040c1103d76c75601e82e3660a2ace202837ec2
diff --git a/src/com/android/settings/notification/ZenModeVisEffectsAllPreferenceController.java b/src/com/android/settings/notification/ZenModeVisEffectsAllPreferenceController.java
new file mode 100644
index 0000000..70618aa
--- /dev/null
+++ b/src/com/android/settings/notification/ZenModeVisEffectsAllPreferenceController.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.notification;
+
+import android.app.NotificationManager.Policy;
+import android.content.Context;
+import android.support.v7.preference.Preference;
+import android.support.v7.preference.PreferenceScreen;
+
+import com.android.internal.logging.nano.MetricsProto;
+import com.android.settingslib.core.lifecycle.Lifecycle;
+
+public class ZenModeVisEffectsAllPreferenceController
+        extends AbstractZenModePreferenceController
+        implements ZenCustomRadioButtonPreference.OnRadioButtonClickListener {
+
+    protected static final int EFFECTS = Policy.SUPPRESSED_EFFECT_SCREEN_OFF
+            | Policy.SUPPRESSED_EFFECT_SCREEN_ON
+            | Policy.SUPPRESSED_EFFECT_FULL_SCREEN_INTENT
+            | Policy.SUPPRESSED_EFFECT_LIGHTS
+            | Policy.SUPPRESSED_EFFECT_PEEK
+            | Policy.SUPPRESSED_EFFECT_STATUS_BAR
+            | Policy.SUPPRESSED_EFFECT_BADGE
+            | Policy.SUPPRESSED_EFFECT_AMBIENT
+            | Policy.SUPPRESSED_EFFECT_NOTIFICATION_LIST;
+
+    public ZenModeVisEffectsAllPreferenceController(Context context, Lifecycle lifecycle,
+            String key) {
+        super(context, key, lifecycle);
+    }
+
+    @Override
+    public boolean isAvailable() {
+        return true;
+    }
+
+    @Override
+    public void updateState(Preference preference) {
+        super.updateState(preference);
+
+        boolean everythingBlocked = Policy.areAllVisualEffectsSuppressed(
+                mBackend.mPolicy.suppressedVisualEffects);
+        ZenCustomRadioButtonPreference pref = (ZenCustomRadioButtonPreference) preference;
+        pref.setOnRadioButtonClickListener(this);
+        pref.setChecked(everythingBlocked);
+    }
+
+    protected void deselect(PreferenceScreen screen) {
+        ZenCustomRadioButtonPreference preference =
+                (ZenCustomRadioButtonPreference) screen.findPreference(getPreferenceKey());
+        if (preference != null) {
+            preference.setChecked(false);
+        }
+    }
+
+    @Override
+    public void onRadioButtonClick(ZenCustomRadioButtonPreference p) {
+        mMetricsFeatureProvider.action(mContext,
+                MetricsProto.MetricsEvent.ACTION_ZEN_SOUND_AND_VIS_EFFECTS, true);
+        mBackend.saveVisualEffectsPolicy(EFFECTS, true);
+    }
+}