From dd7f6b91636d37f9efb080f8178e4870004d6e9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mat=C3=ADas=20Hern=C3=A1ndez?= Date: Sun, 25 Aug 2024 15:37:10 +0200 Subject: [PATCH] Use ZenMode.getIconKey() and ZenIconLoader.getIcon() in Settings Bug: 360399800 Bug: 361597532 Test: atest com.android.settings.notification.modes Flag: android.app.modes_ui Change-Id: I82baaeaaa0d722f8042c7ac6be33b8654418391f --- .../modes/AbstractZenModeHeaderController.java | 8 +++++--- .../modes/ZenModeIconPickerListPreferenceController.java | 6 +----- .../notification/modes/ZenModesListItemPreference.java | 6 +++--- .../modes/ZenModesListItemPreferenceTest.java | 4 ++++ 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/com/android/settings/notification/modes/AbstractZenModeHeaderController.java b/src/com/android/settings/notification/modes/AbstractZenModeHeaderController.java index 7cc67ccf9fc..af6423185e8 100644 --- a/src/com/android/settings/notification/modes/AbstractZenModeHeaderController.java +++ b/src/com/android/settings/notification/modes/AbstractZenModeHeaderController.java @@ -24,12 +24,14 @@ import android.view.ViewGroup; import android.widget.ImageView; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.preference.Preference; import androidx.preference.PreferenceScreen; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; import com.android.settings.widget.EntityHeaderController; +import com.android.settingslib.notification.modes.ZenIcon; import com.android.settingslib.notification.modes.ZenIconLoader; import com.android.settingslib.notification.modes.ZenMode; import com.android.settingslib.widget.LayoutPreference; @@ -42,7 +44,7 @@ abstract class AbstractZenModeHeaderController extends AbstractZenModePreference private final DashboardFragment mFragment; private EntityHeaderController mHeaderController; - private String mCurrentIconKey; + @Nullable private ZenIcon.Key mCurrentIconKey; AbstractZenModeHeaderController( @NonNull Context context, @@ -88,10 +90,10 @@ abstract class AbstractZenModeHeaderController extends AbstractZenModePreference if (!Objects.equal(mCurrentIconKey, zenMode.getIconKey())) { mCurrentIconKey = zenMode.getIconKey(); FutureUtil.whenDone( - zenMode.getIcon(mContext, ZenIconLoader.getInstance()), + ZenIconLoader.getInstance().getIcon(mContext, zenMode), icon -> { checkNotNull(mHeaderController) - .setIcon(iconStylist.apply(icon)) + .setIcon(iconStylist.apply(icon.drawable())) .done(/* rebindActions= */ false); iconView.jumpDrawablesToCurrentState(); // Skip animation on first load. }, diff --git a/src/com/android/settings/notification/modes/ZenModeIconPickerListPreferenceController.java b/src/com/android/settings/notification/modes/ZenModeIconPickerListPreferenceController.java index 93df38b61a5..b5aa2639ab7 100644 --- a/src/com/android/settings/notification/modes/ZenModeIconPickerListPreferenceController.java +++ b/src/com/android/settings/notification/modes/ZenModeIconPickerListPreferenceController.java @@ -34,7 +34,6 @@ import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.SimpleItemAnimator; import com.android.settings.R; -import com.android.settingslib.notification.modes.ZenIconLoader; import com.android.settingslib.notification.modes.ZenMode; import com.android.settingslib.widget.LayoutPreference; @@ -87,10 +86,7 @@ class ZenModeIconPickerListPreferenceController extends AbstractZenModePreferenc @Override void updateState(Preference preference, @NonNull ZenMode zenMode) { - @DrawableRes int iconResId = zenMode.getRule().getIconResId(); - if (iconResId == 0) { - iconResId = ZenIconLoader.getIconResourceIdFromType(zenMode.getType()); - } + @DrawableRes int iconResId = zenMode.getIconKey().resId(); updateIconSelection(iconResId); } diff --git a/src/com/android/settings/notification/modes/ZenModesListItemPreference.java b/src/com/android/settings/notification/modes/ZenModesListItemPreference.java index 0c961481193..0c31d8f0097 100644 --- a/src/com/android/settings/notification/modes/ZenModesListItemPreference.java +++ b/src/com/android/settings/notification/modes/ZenModesListItemPreference.java @@ -93,11 +93,11 @@ class ZenModesListItemPreference extends RestrictedPreference { setIconSize(ICON_SIZE_SMALL); FutureUtil.whenDone( - mZenMode.getIcon(mContext, ZenIconLoader.getInstance()), + ZenIconLoader.getInstance().getIcon(mContext, mZenMode), icon -> setIcon( zenMode.isActive() - ? IconUtil.applyAccentTint(mContext, icon) - : IconUtil.applyNormalTint(mContext, icon)), + ? IconUtil.applyAccentTint(mContext, icon.drawable()) + : IconUtil.applyNormalTint(mContext, icon.drawable())), mContext.getMainExecutor()); updateTextColor(zenMode); diff --git a/tests/robotests/src/com/android/settings/notification/modes/ZenModesListItemPreferenceTest.java b/tests/robotests/src/com/android/settings/notification/modes/ZenModesListItemPreferenceTest.java index 1c8e96e7d86..f5d5160c84b 100644 --- a/tests/robotests/src/com/android/settings/notification/modes/ZenModesListItemPreferenceTest.java +++ b/tests/robotests/src/com/android/settings/notification/modes/ZenModesListItemPreferenceTest.java @@ -24,8 +24,11 @@ import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.SetFlagsRule; import com.android.settingslib.notification.modes.TestModeBuilder; +import com.android.settingslib.notification.modes.ZenIconLoader; import com.android.settingslib.notification.modes.ZenMode; +import com.google.common.util.concurrent.MoreExecutors; + import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -47,6 +50,7 @@ public class ZenModesListItemPreferenceTest { public void setup() { MockitoAnnotations.initMocks(this); mContext = RuntimeEnvironment.application; + ZenIconLoader.setInstance(new ZenIconLoader(MoreExecutors.newDirectExecutorService())); } @Test