From 14a6856d376e3dc58bd02bb2b394649c26a50790 Mon Sep 17 00:00:00 2001 From: Beverly Date: Fri, 18 May 2018 14:33:36 -0400 Subject: [PATCH] Set click listeners on displayPreference Cherry-picked from pi-dev Test: manual (tap options multiple times with talkback on) Test: ZenModeVisEffectsCustomPreferenceControllerTest, robotests Change-Id: Iffa701fb486bd9eeda7d2c4c46cb30392a09a5df Fixes: 79728671 --- ...ModeVisEffectsAllPreferenceController.java | 21 ++++++----- ...eVisEffectsCustomPreferenceController.java | 36 +++++++++++-------- ...odeVisEffectsNonePreferenceController.java | 21 ++++++----- ...EffectsCustomPreferenceControllerTest.java | 1 + 4 files changed, 43 insertions(+), 36 deletions(-) diff --git a/src/com/android/settings/notification/ZenModeVisEffectsAllPreferenceController.java b/src/com/android/settings/notification/ZenModeVisEffectsAllPreferenceController.java index 757fde7f731..d7de0d95e9f 100644 --- a/src/com/android/settings/notification/ZenModeVisEffectsAllPreferenceController.java +++ b/src/com/android/settings/notification/ZenModeVisEffectsAllPreferenceController.java @@ -28,6 +28,8 @@ public class ZenModeVisEffectsAllPreferenceController extends AbstractZenModePreferenceController implements ZenCustomRadioButtonPreference.OnRadioButtonClickListener { + private ZenCustomRadioButtonPreference mPreference; + protected static final int EFFECTS = Policy.SUPPRESSED_EFFECT_SCREEN_OFF | Policy.SUPPRESSED_EFFECT_SCREEN_ON | Policy.SUPPRESSED_EFFECT_FULL_SCREEN_INTENT @@ -43,6 +45,13 @@ public class ZenModeVisEffectsAllPreferenceController super(context, key, lifecycle); } + @Override + public void displayPreference(PreferenceScreen screen) { + super.displayPreference(screen); + mPreference = (ZenCustomRadioButtonPreference) screen.findPreference(getPreferenceKey()); + mPreference.setOnRadioButtonClickListener(this); + } + @Override public boolean isAvailable() { return true; @@ -54,17 +63,7 @@ public class ZenModeVisEffectsAllPreferenceController 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); - } + mPreference.setChecked(everythingBlocked); } @Override diff --git a/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceController.java b/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceController.java index 5dd99f61568..228530874f0 100644 --- a/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceController.java +++ b/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceController.java @@ -16,9 +16,8 @@ package com.android.settings.notification; -import android.app.NotificationManager.Policy; +import android.app.NotificationManager; import android.content.Context; - import androidx.preference.Preference; import androidx.preference.PreferenceScreen; @@ -30,10 +29,13 @@ import com.android.settingslib.core.lifecycle.Lifecycle; public class ZenModeVisEffectsCustomPreferenceController extends AbstractZenModePreferenceController { - protected static final int INTERRUPTIVE_EFFECTS = Policy.SUPPRESSED_EFFECT_AMBIENT - | Policy.SUPPRESSED_EFFECT_PEEK - | Policy.SUPPRESSED_EFFECT_LIGHTS - | Policy.SUPPRESSED_EFFECT_FULL_SCREEN_INTENT; + private ZenCustomRadioButtonPreference mPreference; + + protected static final int INTERRUPTIVE_EFFECTS = + NotificationManager.Policy.SUPPRESSED_EFFECT_AMBIENT + | NotificationManager.Policy.SUPPRESSED_EFFECT_PEEK + | NotificationManager.Policy.SUPPRESSED_EFFECT_LIGHTS + | NotificationManager.Policy.SUPPRESSED_EFFECT_FULL_SCREEN_INTENT; public ZenModeVisEffectsCustomPreferenceController(Context context, Lifecycle lifecycle, String key) { @@ -46,25 +48,31 @@ public class ZenModeVisEffectsCustomPreferenceController } @Override - public void updateState(Preference preference) { - super.updateState(preference); + public void displayPreference(PreferenceScreen screen) { + super.displayPreference(screen); + mPreference = (ZenCustomRadioButtonPreference) screen.findPreference(getPreferenceKey()); - ZenCustomRadioButtonPreference pref = (ZenCustomRadioButtonPreference) preference; - pref.setChecked(areCustomOptionsSelected()); - - pref.setOnGearClickListener(p -> { + mPreference.setOnGearClickListener(p -> { launchCustomSettings(); }); - pref.setOnRadioButtonClickListener(p -> { + mPreference.setOnRadioButtonClickListener(p -> { launchCustomSettings(); }); } + @Override + public void updateState(Preference preference) { + super.updateState(preference); + + mPreference.setChecked(areCustomOptionsSelected()); + } + protected boolean areCustomOptionsSelected() { boolean allEffectsSuppressed = - Policy.areAllVisualEffectsSuppressed(mBackend.mPolicy.suppressedVisualEffects); + NotificationManager.Policy.areAllVisualEffectsSuppressed( + mBackend.mPolicy.suppressedVisualEffects); boolean noEffectsSuppressed = mBackend.mPolicy.suppressedVisualEffects == 0; return !(allEffectsSuppressed || noEffectsSuppressed); diff --git a/src/com/android/settings/notification/ZenModeVisEffectsNonePreferenceController.java b/src/com/android/settings/notification/ZenModeVisEffectsNonePreferenceController.java index abfbd01686f..580fb5d0520 100644 --- a/src/com/android/settings/notification/ZenModeVisEffectsNonePreferenceController.java +++ b/src/com/android/settings/notification/ZenModeVisEffectsNonePreferenceController.java @@ -28,6 +28,8 @@ public class ZenModeVisEffectsNonePreferenceController extends AbstractZenModePreferenceController implements ZenCustomRadioButtonPreference.OnRadioButtonClickListener { + private ZenCustomRadioButtonPreference mPreference; + protected static final int EFFECTS = Policy.SUPPRESSED_EFFECT_SCREEN_OFF | Policy.SUPPRESSED_EFFECT_SCREEN_ON | Policy.SUPPRESSED_EFFECT_FULL_SCREEN_INTENT @@ -43,6 +45,13 @@ public class ZenModeVisEffectsNonePreferenceController super(context, key, lifecycle); } + @Override + public void displayPreference(PreferenceScreen screen) { + super.displayPreference(screen); + mPreference = (ZenCustomRadioButtonPreference) screen.findPreference(getPreferenceKey()); + mPreference.setOnRadioButtonClickListener(this); + } + @Override public boolean isAvailable() { return true; @@ -53,9 +62,7 @@ public class ZenModeVisEffectsNonePreferenceController super.updateState(preference); boolean nothingBlocked = mBackend.mPolicy.suppressedVisualEffects == 0; - ZenCustomRadioButtonPreference pref = (ZenCustomRadioButtonPreference) preference; - pref.setOnRadioButtonClickListener(this); - pref.setChecked(nothingBlocked); + mPreference.setChecked(nothingBlocked); } @Override @@ -64,12 +71,4 @@ public class ZenModeVisEffectsNonePreferenceController MetricsProto.MetricsEvent.ACTION_ZEN_SOUND_ONLY, true); mBackend.saveVisualEffectsPolicy(EFFECTS, false); } - - protected void deselect(PreferenceScreen screen) { - ZenCustomRadioButtonPreference preference = - (ZenCustomRadioButtonPreference) screen.findPreference(getPreferenceKey()); - if (preference != null) { - preference.setChecked(false); - } - } } diff --git a/tests/robotests/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceControllerTest.java index 45446229930..9f8e91ac7a4 100644 --- a/tests/robotests/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/notification/ZenModeVisEffectsCustomPreferenceControllerTest.java @@ -85,6 +85,7 @@ public class ZenModeVisEffectsCustomPreferenceControllerTest { ReflectionHelpers.setField(mController, "mBackend", mBackend); when(mScreen.findPreference(mController.getPreferenceKey())).thenReturn(mockPref); + mController.displayPreference(mScreen); } @Test