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
This commit is contained in:
Matías Hernández
2024-08-25 15:37:10 +02:00
parent db74ac1256
commit dd7f6b9163
4 changed files with 13 additions and 11 deletions

View File

@@ -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.
},

View File

@@ -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);
}

View File

@@ -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);

View File

@@ -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