Loading res/xml/dream_fragment_overview.xml +1 −2 Original line number Original line Diff line number Diff line Loading @@ -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 Loading src/com/android/settings/dream/DreamComplicationPreferenceController.java +2 −0 Original line number Original line Diff line number Diff line Loading @@ -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); Loading src/com/android/settings/dream/DreamPickerController.java +27 −4 Original line number Original line Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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); Loading Loading @@ -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 Loading @@ -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; Loading @@ -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); Loading src/com/android/settings/dream/DreamSettings.java +43 −5 Original line number Original line Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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) { Loading @@ -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) { Loading @@ -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 Loading @@ -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()); Loading tests/robotests/src/com/android/settings/dream/DreamPickerControllerTest.java +1 −2 Original line number Original line Diff line number Diff line Loading @@ -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 Loading
res/xml/dream_fragment_overview.xml +1 −2 Original line number Original line Diff line number Diff line Loading @@ -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 Loading
src/com/android/settings/dream/DreamComplicationPreferenceController.java +2 −0 Original line number Original line Diff line number Diff line Loading @@ -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); Loading
src/com/android/settings/dream/DreamPickerController.java +27 −4 Original line number Original line Diff line number Diff line Loading @@ -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; Loading @@ -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; Loading @@ -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); Loading Loading @@ -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 Loading @@ -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; Loading @@ -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); Loading
src/com/android/settings/dream/DreamSettings.java +43 −5 Original line number Original line Diff line number Diff line Loading @@ -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) { Loading Loading @@ -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) { Loading @@ -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) { Loading @@ -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 Loading @@ -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()); Loading
tests/robotests/src/com/android/settings/dream/DreamPickerControllerTest.java +1 −2 Original line number Original line Diff line number Diff line Loading @@ -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