diff --git a/src/com/android/settings/display/AutoBrightnessScreen.kt b/src/com/android/settings/display/AutoBrightnessScreen.kt index 0b4a2b0683d..c42588853c6 100644 --- a/src/com/android/settings/display/AutoBrightnessScreen.kt +++ b/src/com/android/settings/display/AutoBrightnessScreen.kt @@ -21,10 +21,11 @@ import android.provider.Settings import android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC import android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL import androidx.preference.Preference +import androidx.preference.PreferenceScreen import com.android.settings.PreferenceRestrictionMixin import com.android.settings.R import com.android.settings.flags.Flags -import com.android.settingslib.PrimarySwitchPreference +import com.android.settingslib.PrimarySwitchPreferenceBinding import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.KeyedObservableDelegate import com.android.settingslib.datastore.SettingsStore @@ -42,7 +43,8 @@ import com.android.settingslib.preference.PreferenceScreenCreator @ProvidePreferenceScreen(AutoBrightnessScreen.KEY) class AutoBrightnessScreen : PreferenceScreenCreator, - PreferenceScreenBinding, + PreferenceScreenBinding, // binding for screen page + PrimarySwitchPreferenceBinding, // binding for screen entry point widget PreferenceAvailabilityProvider, PreferenceRestrictionMixin, BooleanValuePreference { @@ -93,16 +95,11 @@ class AutoBrightnessScreen : override val useAdminDisabledSummary: Boolean get() = true - override fun createWidget(context: Context) = PrimarySwitchPreference(context) - - override fun bind(preference: Preference, metadata: PreferenceMetadata) { - super.bind(preference, metadata) - (preference as PrimarySwitchPreference).apply { - isSwitchEnabled = isEnabled - // "true" is not the real default value (it is provided by AutoBrightnessDataStore) - isChecked = preferenceDataStore!!.getBoolean(key, true) + override fun bind(preference: Preference, metadata: PreferenceMetadata) = + when (preference) { + is PreferenceScreen -> super.bind(preference, metadata) + else -> super.bind(preference, metadata) } - } /** * The datastore for brightness, which is persisted as integer but the external type is boolean. diff --git a/src/com/android/settings/display/darkmode/DarkModeScreen.kt b/src/com/android/settings/display/darkmode/DarkModeScreen.kt index f37c41381a3..527cd192b79 100644 --- a/src/com/android/settings/display/darkmode/DarkModeScreen.kt +++ b/src/com/android/settings/display/darkmode/DarkModeScreen.kt @@ -20,9 +20,10 @@ import android.Manifest import android.content.Context import android.os.PowerManager import androidx.preference.Preference +import androidx.preference.PreferenceScreen import com.android.settings.R import com.android.settings.flags.Flags -import com.android.settingslib.PrimarySwitchPreference +import com.android.settingslib.PrimarySwitchPreferenceBinding import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.Permissions import com.android.settingslib.metadata.BooleanValuePreference @@ -39,7 +40,8 @@ import com.android.settingslib.preference.PreferenceScreenCreator @ProvidePreferenceScreen(DarkModeScreen.KEY) class DarkModeScreen(context: Context) : PreferenceScreenCreator, - PreferenceScreenBinding, + PreferenceScreenBinding, // binding for screen page + PrimarySwitchPreferenceBinding, // binding for screen entry point widget BooleanValuePreference, PreferenceSummaryProvider { @@ -82,14 +84,11 @@ class DarkModeScreen(context: Context) : override fun storage(context: Context): KeyValueStore = darkModeStorage - override fun createWidget(context: Context) = PrimarySwitchPreference(context) - override fun bind(preference: Preference, metadata: PreferenceMetadata) { - super.bind(preference, metadata) if (preference is DarkModePreference) preference.setCatalystEnabled(true) - (preference as? PrimarySwitchPreference)?.apply { - isSwitchEnabled = isEnabled - isChecked = darkModeStorage.getBoolean(KEY) == true + when (preference) { + is PreferenceScreen -> super.bind(preference, metadata) + else -> super.bind(preference, metadata) } } diff --git a/src/com/android/settings/wifi/tether/WifiHotspotSwitchPreference.kt b/src/com/android/settings/wifi/tether/WifiHotspotSwitchPreference.kt index 3877a026480..21b0e88d7ac 100644 --- a/src/com/android/settings/wifi/tether/WifiHotspotSwitchPreference.kt +++ b/src/com/android/settings/wifi/tether/WifiHotspotSwitchPreference.kt @@ -27,17 +27,17 @@ import android.net.wifi.WifiManager import android.os.UserManager import android.text.BidiFormatter import android.util.Log -import androidx.preference.Preference import com.android.settings.PreferenceRestrictionMixin import com.android.settings.R import com.android.settings.Utils import com.android.settings.core.SubSettingLauncher +import com.android.settings.datausage.DataSaverMainSwitchPreference.Companion.KEY as DATA_SAVER_KEY import com.android.settings.wifi.WifiUtils.canShowWifiHotspot import com.android.settings.wifi.utils.tetheringManager import com.android.settings.wifi.utils.wifiApState import com.android.settings.wifi.utils.wifiManager import com.android.settings.wifi.utils.wifiSoftApSsid -import com.android.settingslib.PrimarySwitchPreference +import com.android.settingslib.PrimarySwitchPreferenceBinding import com.android.settingslib.TetherUtil import com.android.settingslib.datastore.AbstractKeyedDataObservable import com.android.settingslib.datastore.HandlerExecutor @@ -46,19 +46,16 @@ import com.android.settingslib.datastore.KeyedObserver import com.android.settingslib.datastore.Permissions import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceChangeReason -import com.android.settingslib.metadata.PreferenceMetadata import com.android.settingslib.metadata.PreferenceSummaryProvider import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.metadata.SensitivityLevel import com.android.settingslib.metadata.SwitchPreference -import com.android.settingslib.preference.PreferenceBinding import com.android.settingslib.wifi.WifiUtils.Companion.getWifiTetherSummaryForConnectedDevices -import com.android.settings.datausage.DataSaverMainSwitchPreference.Companion.KEY as DATA_SAVER_KEY // LINT.IfChange class WifiHotspotSwitchPreference(context: Context, dataSaverStore: KeyValueStore) : SwitchPreference(KEY, R.string.wifi_hotspot_checkbox_text), - PreferenceBinding, + PrimarySwitchPreferenceBinding, PreferenceAvailabilityProvider, PreferenceSummaryProvider, PreferenceRestrictionMixin { @@ -130,8 +127,6 @@ class WifiHotspotSwitchPreference(context: Context, dataSaverStore: KeyValueStor override val sensitivityLevel get() = SensitivityLevel.HIGH_SENSITIVITY - override fun createWidget(context: Context) = PrimarySwitchPreference(context) - override fun storage(context: Context): KeyValueStore = wifiHotspotStore @Suppress("UNCHECKED_CAST") @@ -201,16 +196,7 @@ class WifiHotspotSwitchPreference(context: Context, dataSaverStore: KeyValueStor Log.e(TAG, "onTetheringFailed(),error=$error") } - override fun onKeyChanged(key: String, reason: Int) = - notifyChange(KEY, reason) - } - - override fun bind(preference: Preference, metadata: PreferenceMetadata) { - super.bind(preference, metadata) - (preference as PrimarySwitchPreference).apply { - isChecked = preferenceDataStore!!.getBoolean(key, false) - isSwitchEnabled = isEnabled - } + override fun onKeyChanged(key: String, reason: Int) = notifyChange(KEY, reason) } companion object {