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

Commit 6b6c68fd authored by Darrell Shi's avatar Darrell Shi Committed by Android (Google) Code Review
Browse files

Merge "Hide "additional info" when active dream does not support." into tm-qpr-dev

parents 0e28d121 86113ae0
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -37,8 +37,7 @@
        <com.android.settingslib.widget.LayoutPreference
            android:key="dream_picker"
            android:selectable="false"
            android:layout="@layout/dream_picker_layout"
            settings:controller="com.android.settings.dream.DreamPickerController"/>
            android:layout="@layout/dream_picker_layout"/>
    </PreferenceCategory>

    <SwitchPreference
+2 −0
Original line number Diff line number Diff line
@@ -29,6 +29,8 @@ import com.android.settingslib.dream.DreamBackend;
public class DreamComplicationPreferenceController extends TogglePreferenceController {
    private final DreamBackend mBackend;

    public static final String PREF_KEY = "dream_complications_toggle";

    public DreamComplicationPreferenceController(Context context, String key) {
        super(context, key);
        mBackend = DreamBackend.getInstance(context);
+27 −4
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import com.android.settingslib.dream.DreamBackend;
import com.android.settingslib.dream.DreamBackend.DreamInfo;
import com.android.settingslib.widget.LayoutPreference;

import java.util.HashSet;
import java.util.List;
import java.util.stream.Collectors;

@@ -40,6 +41,7 @@ import java.util.stream.Collectors;
 * Controller for the dream picker where the user can select a screensaver.
 */
public class DreamPickerController extends BasePreferenceController {
    public static final String PREF_KEY = "dream_picker";

    private final DreamBackend mBackend;
    private final MetricsFeatureProvider mMetricsFeatureProvider;
@@ -48,12 +50,14 @@ public class DreamPickerController extends BasePreferenceController {
    private DreamInfo mActiveDream;
    private DreamAdapter mAdapter;

    public DreamPickerController(Context context, String key) {
        this(context, key, DreamBackend.getInstance(context));
    private final HashSet<Callback> mCallbacks = new HashSet<>();

    public DreamPickerController(Context context) {
        this(context, DreamBackend.getInstance(context));
    }

    public DreamPickerController(Context context, String key, DreamBackend backend) {
        super(context, key);
    public DreamPickerController(Context context, DreamBackend backend) {
        super(context, PREF_KEY);
        mBackend = backend;
        mDreamInfos = mBackend.getDreamInfos();
        mActiveDream = getActiveDreamInfo(mDreamInfos);
@@ -96,6 +100,11 @@ public class DreamPickerController extends BasePreferenceController {
        }
    }

    @Nullable
    public DreamInfo getActiveDreamInfo() {
        return mActiveDream;
    }

    @Nullable
    private static DreamInfo getActiveDreamInfo(List<DreamInfo> dreamInfos) {
        return dreamInfos
@@ -105,6 +114,19 @@ public class DreamPickerController extends BasePreferenceController {
                .orElse(null);
    }

    void addCallback(Callback callback) {
        mCallbacks.add(callback);
    }

    void removeCallback(Callback callback) {
        mCallbacks.remove(callback);
    }

    interface Callback {
        // Triggered when the selected dream changes.
        void onActiveDreamChanged();
    }

    private class DreamItem implements IDreamItem {
        DreamInfo mDreamInfo;

@@ -131,6 +153,7 @@ public class DreamPickerController extends BasePreferenceController {
        public void onItemClicked() {
            mActiveDream = mDreamInfo;
            mBackend.setActiveDream(mDreamInfo.componentName);
            mCallbacks.forEach(Callback::onActiveDreamChanged);
            mMetricsFeatureProvider.action(SettingsEnums.PAGE_UNKNOWN,
                    SettingsEnums.ACTION_DREAM_SELECT_TYPE, SettingsEnums.DREAM,
                    mDreamInfo.componentName.flattenToString(), 1);
+43 −5
Original line number Diff line number Diff line
@@ -59,8 +59,14 @@ public class DreamSettings extends DashboardFragment implements OnMainSwitchChan

    private MainSwitchPreference mMainSwitchPreference;
    private Button mPreviewButton;
    private Preference mComplicationsTogglePreference;
    private RecyclerView mRecyclerView;

    private DreamPickerController mDreamPickerController;

    private final DreamPickerController.Callback mCallback =
            this::updateComplicationsToggleVisibility;

    @WhenToDream
    static int getSettingFromPrefKey(String key) {
        switch (key) {
@@ -128,7 +134,13 @@ public class DreamSettings extends DashboardFragment implements OnMainSwitchChan

    @Override
    protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
        return buildPreferenceControllers(context);
        final List<AbstractPreferenceController> controllers = new ArrayList<>();
        if (mDreamPickerController == null) {
            mDreamPickerController = new DreamPickerController(context);
        }
        controllers.add(mDreamPickerController);
        controllers.add(new WhenToDreamPreferenceController(context));
        return controllers;
    }

    public static CharSequence getSummaryTextWithDreamName(Context context) {
@@ -146,10 +158,9 @@ public class DreamSettings extends DashboardFragment implements OnMainSwitchChan
        }
    }

    private static List<AbstractPreferenceController> buildPreferenceControllers(Context context) {
        final List<AbstractPreferenceController> controllers = new ArrayList<>();
        controllers.add(new WhenToDreamPreferenceController(context));
        return controllers;
    @VisibleForTesting
    void setDreamPickerController(DreamPickerController dreamPickerController) {
        mDreamPickerController = dreamPickerController;
    }

    private void setAllPreferencesEnabled(boolean isEnabled) {
@@ -174,12 +185,29 @@ public class DreamSettings extends DashboardFragment implements OnMainSwitchChan

        final DreamBackend dreamBackend = DreamBackend.getInstance(getContext());

        mComplicationsTogglePreference = findPreference(
                DreamComplicationPreferenceController.PREF_KEY);
        updateComplicationsToggleVisibility();

        mMainSwitchPreference = findPreference(MAIN_SWITCH_PREF_KEY);
        if (mMainSwitchPreference != null) {
            mMainSwitchPreference.addOnSwitchChangeListener(this);
        }

        setAllPreferencesEnabled(dreamBackend.isEnabled());

        if (mDreamPickerController != null) {
            mDreamPickerController.addCallback(mCallback);
        }
    }

    @Override
    public void onDestroy() {
        if (mDreamPickerController != null) {
            mDreamPickerController.removeCallback(mCallback);
        }

        super.onDestroy();
    }

    @Override
@@ -199,6 +227,16 @@ public class DreamSettings extends DashboardFragment implements OnMainSwitchChan
        return mRecyclerView;
    }

    private void updateComplicationsToggleVisibility() {
        if (mDreamPickerController == null || mComplicationsTogglePreference == null) {
            return;
        }

        final DreamBackend.DreamInfo activeDream = mDreamPickerController.getActiveDreamInfo();
        mComplicationsTogglePreference.setVisible(
                activeDream != null && activeDream.supportsComplications);
    }

    private void updatePaddingForPreviewButton() {
        mPreviewButton.post(() -> {
            mRecyclerView.setPadding(0, 0, 0, mPreviewButton.getMeasuredHeight());
+1 −2
Original line number Diff line number Diff line
@@ -62,8 +62,7 @@ public class DreamPickerControllerTest {
    }

    private DreamPickerController buildController() {
        final DreamPickerController controller = new DreamPickerController(mContext, "key",
                mBackend);
        final DreamPickerController controller = new DreamPickerController(mContext, mBackend);
        controller.displayPreference(mScreen);
        return controller;
    }
Loading