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 Original line Diff line number Diff line
@@ -37,8 +37,7 @@
        <com.android.settingslib.widget.LayoutPreference
        <com.android.settingslib.widget.LayoutPreference
            android:key="dream_picker"
            android:key="dream_picker"
            android:selectable="false"
            android:selectable="false"
            android:layout="@layout/dream_picker_layout"
            android:layout="@layout/dream_picker_layout"/>
            settings:controller="com.android.settings.dream.DreamPickerController"/>
    </PreferenceCategory>
    </PreferenceCategory>


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


    public static final String PREF_KEY = "dream_complications_toggle";

    public DreamComplicationPreferenceController(Context context, String key) {
    public DreamComplicationPreferenceController(Context context, String key) {
        super(context, key);
        super(context, key);
        mBackend = DreamBackend.getInstance(context);
        mBackend = DreamBackend.getInstance(context);
+27 −4
Original line number Original line 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.dream.DreamBackend.DreamInfo;
import com.android.settingslib.widget.LayoutPreference;
import com.android.settingslib.widget.LayoutPreference;


import java.util.HashSet;
import java.util.List;
import java.util.List;
import java.util.stream.Collectors;
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.
 * Controller for the dream picker where the user can select a screensaver.
 */
 */
public class DreamPickerController extends BasePreferenceController {
public class DreamPickerController extends BasePreferenceController {
    public static final String PREF_KEY = "dream_picker";


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


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

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


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


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

    @Nullable
    @Nullable
    private static DreamInfo getActiveDreamInfo(List<DreamInfo> dreamInfos) {
    private static DreamInfo getActiveDreamInfo(List<DreamInfo> dreamInfos) {
        return dreamInfos
        return dreamInfos
@@ -105,6 +114,19 @@ public class DreamPickerController extends BasePreferenceController {
                .orElse(null);
                .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 {
    private class DreamItem implements IDreamItem {
        DreamInfo mDreamInfo;
        DreamInfo mDreamInfo;


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


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


    private DreamPickerController mDreamPickerController;

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

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


    @Override
    @Override
    protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
    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) {
    public static CharSequence getSummaryTextWithDreamName(Context context) {
@@ -146,10 +158,9 @@ public class DreamSettings extends DashboardFragment implements OnMainSwitchChan
        }
        }
    }
    }


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


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


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


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

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


        setAllPreferencesEnabled(dreamBackend.isEnabled());
        setAllPreferencesEnabled(dreamBackend.isEnabled());

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

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

        super.onDestroy();
    }
    }


    @Override
    @Override
@@ -199,6 +227,16 @@ public class DreamSettings extends DashboardFragment implements OnMainSwitchChan
        return mRecyclerView;
        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() {
    private void updatePaddingForPreviewButton() {
        mPreviewButton.post(() -> {
        mPreviewButton.post(() -> {
            mRecyclerView.setPadding(0, 0, 0, mPreviewButton.getMeasuredHeight());
            mRecyclerView.setPadding(0, 0, 0, mPreviewButton.getMeasuredHeight());
+1 −2
Original line number Original line Diff line number Diff line
@@ -62,8 +62,7 @@ public class DreamPickerControllerTest {
    }
    }


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