Hide "additional info" when active dream does not support.

Only show the "additional info", which displays dream complications,
when supported by the user selected dream.

Test: make -j86 RunSettingsRoboTests
ROBOTEST_FILTER="com.android.settings.dream.DreamSettingsTest"
Test: verified on device switching between different dreams
Bug: 223860510
Fix: 223860510

Change-Id: I63872ea9ab9f42be47f8e2f7c3835b55056e6588
This commit is contained in:
Darrell Shi
2023-02-15 23:18:23 +00:00
parent b0087167e0
commit 86113ae01f
6 changed files with 240 additions and 14 deletions

View File

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