diff --git a/res/xml/dream_fragment_overview.xml b/res/xml/dream_fragment_overview.xml
index 0ca4869865b..9a401a36a2b 100644
--- a/res/xml/dream_fragment_overview.xml
+++ b/res/xml/dream_fragment_overview.xml
@@ -26,28 +26,25 @@
settings:searchable="false"/>
-
-
-
+ android:title="@string/dream_picker_category">
+
+
-
-
-
-
+
+
+
diff --git a/src/com/android/settings/dream/DreamPickerController.java b/src/com/android/settings/dream/DreamPickerController.java
index 20d8aeb46a4..261db6c8ef8 100644
--- a/src/com/android/settings/dream/DreamPickerController.java
+++ b/src/com/android/settings/dream/DreamPickerController.java
@@ -16,12 +16,9 @@
package com.android.settings.dream;
-import static com.android.settings.dream.DreamMainSwitchPreferenceController.MAIN_SWITCH_PREF_KEY;
-
import android.app.settings.SettingsEnums;
import android.content.Context;
import android.graphics.drawable.Drawable;
-import android.widget.Switch;
import androidx.annotation.Nullable;
import androidx.preference.Preference;
@@ -35,8 +32,6 @@ import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
import com.android.settingslib.dream.DreamBackend;
import com.android.settingslib.dream.DreamBackend.DreamInfo;
import com.android.settingslib.widget.LayoutPreference;
-import com.android.settingslib.widget.MainSwitchPreference;
-import com.android.settingslib.widget.OnMainSwitchChangeListener;
import java.util.List;
import java.util.stream.Collectors;
@@ -44,8 +39,7 @@ import java.util.stream.Collectors;
/**
* Controller for the dream picker where the user can select a screensaver.
*/
-public class DreamPickerController extends BasePreferenceController implements
- OnMainSwitchChangeListener {
+public class DreamPickerController extends BasePreferenceController {
private final DreamBackend mBackend;
private final MetricsFeatureProvider mMetricsFeatureProvider;
@@ -92,10 +86,13 @@ public class DreamPickerController extends BasePreferenceController implements
new GridSpacingItemDecoration(mContext, R.dimen.dream_preference_card_padding));
recyclerView.setHasFixedSize(true);
recyclerView.setAdapter(mAdapter);
+ }
- final Preference mainSwitchPref = screen.findPreference(MAIN_SWITCH_PREF_KEY);
- if (mainSwitchPref instanceof MainSwitchPreference) {
- ((MainSwitchPreference) mainSwitchPref).addOnSwitchChangeListener(this);
+ @Override
+ public void updateState(Preference preference) {
+ super.updateState(preference);
+ if (mAdapter != null) {
+ mAdapter.setEnabled(preference.isEnabled());
}
}
@@ -108,13 +105,6 @@ public class DreamPickerController extends BasePreferenceController implements
.orElse(null);
}
- @Override
- public void onSwitchChanged(Switch switchView, boolean isChecked) {
- if (mAdapter != null) {
- mAdapter.setEnabled(isChecked);
- }
- }
-
private class DreamItem implements IDreamItem {
DreamInfo mDreamInfo;
diff --git a/src/com/android/settings/dream/DreamSettings.java b/src/com/android/settings/dream/DreamSettings.java
index d30f50ff91b..1d12c1aecd5 100644
--- a/src/com/android/settings/dream/DreamSettings.java
+++ b/src/com/android/settings/dream/DreamSettings.java
@@ -32,7 +32,7 @@ import android.widget.Button;
import android.widget.Switch;
import androidx.annotation.VisibleForTesting;
-import androidx.preference.PreferenceCategory;
+import androidx.preference.Preference;
import androidx.recyclerview.widget.RecyclerView;
import com.android.settings.R;
@@ -57,10 +57,7 @@ public class DreamSettings extends DashboardFragment implements OnMainSwitchChan
static final String EITHER_CHARGING_OR_DOCKED = "either_charging_or_docked";
static final String NEVER_DREAM = "never";
- private static final String MAIN_PREF_CATEGORY = "dream_main_category";
-
private MainSwitchPreference mMainSwitchPreference;
- private PreferenceCategory mMainPrefCategory;
private Button mPreviewButton;
private RecyclerView mRecyclerView;
@@ -152,6 +149,22 @@ public class DreamSettings extends DashboardFragment implements OnMainSwitchChan
return controllers;
}
+ private void setAllPreferencesEnabled(boolean isEnabled) {
+ getPreferenceControllers().forEach(controllers -> {
+ controllers.forEach(controller -> {
+ final String prefKey = controller.getPreferenceKey();
+ if (prefKey.equals(MAIN_SWITCH_PREF_KEY)) {
+ return;
+ }
+ final Preference pref = findPreference(prefKey);
+ if (pref != null) {
+ pref.setEnabled(isEnabled);
+ controller.updateState(pref);
+ }
+ });
+ });
+ }
+
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
@@ -163,10 +176,7 @@ public class DreamSettings extends DashboardFragment implements OnMainSwitchChan
mMainSwitchPreference.addOnSwitchChangeListener(this);
}
- mMainPrefCategory = findPreference(MAIN_PREF_CATEGORY);
- if (mMainPrefCategory != null) {
- mMainPrefCategory.setEnabled(dreamBackend.isEnabled());
- }
+ setAllPreferencesEnabled(dreamBackend.isEnabled());
}
@Override
@@ -194,7 +204,7 @@ public class DreamSettings extends DashboardFragment implements OnMainSwitchChan
@Override
public void onSwitchChanged(Switch switchView, boolean isChecked) {
- mMainPrefCategory.setEnabled(isChecked);
+ setAllPreferencesEnabled(isChecked);
mPreviewButton.setVisibility(isChecked ? View.VISIBLE : View.GONE);
updatePaddingForPreviewButton();
}