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