Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 227548d9 authored by Matías Hernández's avatar Matías Hernández
Browse files

Make ZenIconLoader injectable (in SystemUI)

In settings, reduce calls to getInstance(), and pass it to preferences and their controllers instead.

Bug: 360399800
Test: atest ZenModesListItemPreferenceTest ZenModesListPreferenceControllerTest
Flag: android.app.modes_ui
Change-Id: I318320575e3bd32b5d13a385fa644f8032484e1c
parent 23513bf7
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -43,15 +43,18 @@ import java.util.function.Function;
abstract class AbstractZenModeHeaderController extends AbstractZenModePreferenceController {

    private final DashboardFragment mFragment;
    private final ZenIconLoader mIconLoader;
    private EntityHeaderController mHeaderController;
    @Nullable private ZenIcon.Key mCurrentIconKey;

    AbstractZenModeHeaderController(
            @NonNull Context context,
            @NonNull ZenIconLoader iconLoader,
            @NonNull String key,
            @NonNull DashboardFragment fragment) {
        super(context, key);
        mFragment = fragment;
        mIconLoader = iconLoader;
    }

    @Override
@@ -90,7 +93,7 @@ abstract class AbstractZenModeHeaderController extends AbstractZenModePreference
        if (!Objects.equal(mCurrentIconKey, zenMode.getIconKey())) {
            mCurrentIconKey = zenMode.getIconKey();
            FutureUtil.whenDone(
                    ZenIconLoader.getInstance().getIcon(mContext, zenMode),
                    mIconLoader.getIcon(mContext, zenMode),
                    icon -> {
                        checkNotNull(mHeaderController)
                                .setIcon(iconStylist.apply(icon.drawable()))
+3 −1
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import androidx.annotation.VisibleForTesting;
import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.notification.modes.ZenIconLoader;
import com.android.settingslib.notification.modes.ZenMode;
import com.android.settingslib.notification.modes.ZenModesBackend;

@@ -102,7 +103,8 @@ public abstract class ZenModeEditNameIconFragmentBase extends DashboardFragment
    protected final List<AbstractPreferenceController> createPreferenceControllers(
            Context context) {
        return ImmutableList.of(
                new ZenModeIconPickerIconPreferenceController(context, "chosen_icon", this),
                new ZenModeIconPickerIconPreferenceController(context, ZenIconLoader.getInstance(),
                        "chosen_icon", this),
                new ZenModeEditNamePreferenceController(context, "name", this::setModeName),
                new ZenModeIconPickerListPreferenceController(context, "icon_list",
                        this::setModeIcon),
+3 −1
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import androidx.core.view.MenuProvider;

import com.android.settings.R;
import com.android.settingslib.core.AbstractPreferenceController;
import com.android.settingslib.notification.modes.ZenIconLoader;
import com.android.settingslib.notification.modes.ZenMode;

import java.util.ArrayList;
@@ -54,7 +55,8 @@ public class ZenModeFragment extends ZenModeFragmentBase {
    @Override
    protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
        List<AbstractPreferenceController> prefControllers = new ArrayList<>();
        prefControllers.add(new ZenModeHeaderController(context, "header", this));
        prefControllers.add(
                new ZenModeHeaderController(context, ZenIconLoader.getInstance(), "header", this));
        prefControllers.add(new ZenModeBlurbPreferenceController(context, "mode_blurb"));
        prefControllers.add(
                new ZenModeButtonPreferenceController(context, "activate", this, mBackend));
+4 −5
Original line number Diff line number Diff line
@@ -23,15 +23,14 @@ import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settingslib.notification.modes.ZenIconLoader;
import com.android.settingslib.notification.modes.ZenMode;

class ZenModeHeaderController extends AbstractZenModeHeaderController {

    ZenModeHeaderController(
            @NonNull  Context context,
            @NonNull String key,
            @NonNull DashboardFragment fragment) {
        super(context, key, fragment);
    ZenModeHeaderController(@NonNull Context context, @NonNull ZenIconLoader iconLoader,
            @NonNull String key, @NonNull DashboardFragment fragment) {
        super(context, iconLoader, key, fragment);
    }

    @Override
+4 −2
Original line number Diff line number Diff line
@@ -24,14 +24,16 @@ import androidx.preference.PreferenceScreen;

import com.android.settings.R;
import com.android.settings.dashboard.DashboardFragment;
import com.android.settingslib.notification.modes.ZenIconLoader;
import com.android.settingslib.notification.modes.ZenMode;

/** Controller used for displaying the currently-chosen icon at the top of the icon picker. */
class ZenModeIconPickerIconPreferenceController extends AbstractZenModeHeaderController {

    ZenModeIconPickerIconPreferenceController(@NonNull Context context, @NonNull String key,
    ZenModeIconPickerIconPreferenceController(@NonNull Context context,
            @NonNull ZenIconLoader iconLoader, @NonNull String key,
            @NonNull DashboardFragment fragment) {
        super(context, key, fragment);
        super(context, iconLoader, key, fragment);
    }

    @Override
Loading