Toggle Home controls when user selects Home Control Panel Dream

Test: DreamSettingsTest
Flag: ACONFIG android.service.controls.flags.home_panel_dream STAGING
Fixes: 323887821
Change-Id: Iba7c2ff41e3e0074a28f96c4e5fa1028b80f7a92
This commit is contained in:
Prince
2024-02-15 20:41:32 +00:00
parent 4b0090700a
commit 8b02d17db8
5 changed files with 151 additions and 17 deletions

View File

@@ -25,6 +25,7 @@ import static com.android.settingslib.dream.DreamBackend.WHILE_DOCKED;
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.os.Bundle;
import android.service.dreams.DreamService;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -61,9 +62,11 @@ public class DreamSettings extends DashboardFragment implements OnCheckedChangeL
private MainSwitchPreference mMainSwitchPreference;
private Button mPreviewButton;
private Preference mComplicationsTogglePreference;
private Preference mHomeControllerTogglePreference;
private RecyclerView mRecyclerView;
private DreamPickerController mDreamPickerController;
private DreamHomeControlsPreferenceController mDreamHomeControlsPreferenceController;
private final DreamPickerController.Callback mCallback =
this::updateComplicationsToggleVisibility;
@@ -139,7 +142,12 @@ public class DreamSettings extends DashboardFragment implements OnCheckedChangeL
if (mDreamPickerController == null) {
mDreamPickerController = new DreamPickerController(context);
}
if (mDreamHomeControlsPreferenceController == null) {
mDreamHomeControlsPreferenceController = new DreamHomeControlsPreferenceController(
context, DreamBackend.getInstance(getContext()));
}
controllers.add(mDreamPickerController);
controllers.add(mDreamHomeControlsPreferenceController);
controllers.add(new WhenToDreamPreferenceController(context));
return controllers;
}
@@ -164,6 +172,12 @@ public class DreamSettings extends DashboardFragment implements OnCheckedChangeL
mDreamPickerController = dreamPickerController;
}
@VisibleForTesting
void setDreamHomeControlsPreferenceController(DreamHomeControlsPreferenceController
dreamHomeControlsPreferenceController) {
mDreamHomeControlsPreferenceController = dreamHomeControlsPreferenceController;
}
private void setAllPreferencesEnabled(boolean isEnabled) {
getPreferenceControllers().forEach(controllers -> {
controllers.forEach(controller -> {
@@ -171,6 +185,9 @@ public class DreamSettings extends DashboardFragment implements OnCheckedChangeL
if (prefKey.equals(MAIN_SWITCH_PREF_KEY)) {
return;
}
if (prefKey.equals(DreamHomeControlsPreferenceController.PREF_KEY)) {
return;
}
final Preference pref = findPreference(prefKey);
if (pref != null) {
pref.setEnabled(isEnabled);
@@ -178,6 +195,7 @@ public class DreamSettings extends DashboardFragment implements OnCheckedChangeL
}
});
});
updateComplicationsToggleVisibility();
}
@Override
@@ -188,7 +206,10 @@ public class DreamSettings extends DashboardFragment implements OnCheckedChangeL
mComplicationsTogglePreference = findPreference(
DreamComplicationPreferenceController.PREF_KEY);
updateComplicationsToggleVisibility();
mHomeControllerTogglePreference = findPreference(
DreamHomeControlsPreferenceController.PREF_KEY
);
mMainSwitchPreference = findPreference(MAIN_SWITCH_PREF_KEY);
if (mMainSwitchPreference != null) {
@@ -230,13 +251,29 @@ public class DreamSettings extends DashboardFragment implements OnCheckedChangeL
}
private void updateComplicationsToggleVisibility() {
if (mDreamPickerController == null || mComplicationsTogglePreference == null) {
if (mDreamPickerController == null) {
return;
}
final DreamBackend.DreamInfo activeDream = mDreamPickerController.getActiveDreamInfo();
mComplicationsTogglePreference.setVisible(
activeDream != null && activeDream.supportsComplications);
final DreamBackend dreamBackend = DreamBackend.getInstance(getContext());
if (mComplicationsTogglePreference != null) {
mComplicationsTogglePreference.setVisible(
activeDream != null && activeDream.supportsComplications);
}
if (mHomeControllerTogglePreference != null) {
boolean isEnabled = dreamBackend.isEnabled()
&& (activeDream == null
|| (activeDream.dreamCategory
& DreamService.DREAM_CATEGORY_HOME_PANEL) == 0)
&& mDreamHomeControlsPreferenceController
.getAvailabilityStatus()
== mDreamHomeControlsPreferenceController.AVAILABLE;
mHomeControllerTogglePreference.setEnabled(isEnabled);
}
}
private void updatePaddingForPreviewButton() {