Merge "[Catalyst] Leverage PrimarySwitchPreferenceBinding" into main

This commit is contained in:
Treehugger Robot
2025-01-16 03:40:40 -08:00
committed by Android (Google) Code Review
3 changed files with 19 additions and 37 deletions

View File

@@ -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_AUTOMATIC
import android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL import android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL
import androidx.preference.Preference import androidx.preference.Preference
import androidx.preference.PreferenceScreen
import com.android.settings.PreferenceRestrictionMixin import com.android.settings.PreferenceRestrictionMixin
import com.android.settings.R import com.android.settings.R
import com.android.settings.flags.Flags 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.KeyValueStore
import com.android.settingslib.datastore.KeyedObservableDelegate import com.android.settingslib.datastore.KeyedObservableDelegate
import com.android.settingslib.datastore.SettingsStore import com.android.settingslib.datastore.SettingsStore
@@ -42,7 +43,8 @@ import com.android.settingslib.preference.PreferenceScreenCreator
@ProvidePreferenceScreen(AutoBrightnessScreen.KEY) @ProvidePreferenceScreen(AutoBrightnessScreen.KEY)
class AutoBrightnessScreen : class AutoBrightnessScreen :
PreferenceScreenCreator, PreferenceScreenCreator,
PreferenceScreenBinding, PreferenceScreenBinding, // binding for screen page
PrimarySwitchPreferenceBinding, // binding for screen entry point widget
PreferenceAvailabilityProvider, PreferenceAvailabilityProvider,
PreferenceRestrictionMixin, PreferenceRestrictionMixin,
BooleanValuePreference { BooleanValuePreference {
@@ -93,16 +95,11 @@ class AutoBrightnessScreen :
override val useAdminDisabledSummary: Boolean override val useAdminDisabledSummary: Boolean
get() = true get() = true
override fun createWidget(context: Context) = PrimarySwitchPreference(context) override fun bind(preference: Preference, metadata: PreferenceMetadata) =
when (preference) {
override fun bind(preference: Preference, metadata: PreferenceMetadata) { is PreferenceScreen -> super<PreferenceScreenBinding>.bind(preference, metadata)
super.bind(preference, metadata) else -> super<PrimarySwitchPreferenceBinding>.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)
} }
}
/** /**
* The datastore for brightness, which is persisted as integer but the external type is boolean. * The datastore for brightness, which is persisted as integer but the external type is boolean.

View File

@@ -20,9 +20,10 @@ import android.Manifest
import android.content.Context import android.content.Context
import android.os.PowerManager import android.os.PowerManager
import androidx.preference.Preference import androidx.preference.Preference
import androidx.preference.PreferenceScreen
import com.android.settings.R import com.android.settings.R
import com.android.settings.flags.Flags 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.KeyValueStore
import com.android.settingslib.datastore.Permissions import com.android.settingslib.datastore.Permissions
import com.android.settingslib.metadata.BooleanValuePreference import com.android.settingslib.metadata.BooleanValuePreference
@@ -39,7 +40,8 @@ import com.android.settingslib.preference.PreferenceScreenCreator
@ProvidePreferenceScreen(DarkModeScreen.KEY) @ProvidePreferenceScreen(DarkModeScreen.KEY)
class DarkModeScreen(context: Context) : class DarkModeScreen(context: Context) :
PreferenceScreenCreator, PreferenceScreenCreator,
PreferenceScreenBinding, PreferenceScreenBinding, // binding for screen page
PrimarySwitchPreferenceBinding, // binding for screen entry point widget
BooleanValuePreference, BooleanValuePreference,
PreferenceSummaryProvider { PreferenceSummaryProvider {
@@ -82,14 +84,11 @@ class DarkModeScreen(context: Context) :
override fun storage(context: Context): KeyValueStore = darkModeStorage override fun storage(context: Context): KeyValueStore = darkModeStorage
override fun createWidget(context: Context) = PrimarySwitchPreference(context)
override fun bind(preference: Preference, metadata: PreferenceMetadata) { override fun bind(preference: Preference, metadata: PreferenceMetadata) {
super.bind(preference, metadata)
if (preference is DarkModePreference) preference.setCatalystEnabled(true) if (preference is DarkModePreference) preference.setCatalystEnabled(true)
(preference as? PrimarySwitchPreference)?.apply { when (preference) {
isSwitchEnabled = isEnabled is PreferenceScreen -> super<PreferenceScreenBinding>.bind(preference, metadata)
isChecked = darkModeStorage.getBoolean(KEY) == true else -> super<PrimarySwitchPreferenceBinding>.bind(preference, metadata)
} }
} }

View File

@@ -27,17 +27,17 @@ import android.net.wifi.WifiManager
import android.os.UserManager import android.os.UserManager
import android.text.BidiFormatter import android.text.BidiFormatter
import android.util.Log import android.util.Log
import androidx.preference.Preference
import com.android.settings.PreferenceRestrictionMixin import com.android.settings.PreferenceRestrictionMixin
import com.android.settings.R import com.android.settings.R
import com.android.settings.Utils import com.android.settings.Utils
import com.android.settings.core.SubSettingLauncher 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.WifiUtils.canShowWifiHotspot
import com.android.settings.wifi.utils.tetheringManager import com.android.settings.wifi.utils.tetheringManager
import com.android.settings.wifi.utils.wifiApState import com.android.settings.wifi.utils.wifiApState
import com.android.settings.wifi.utils.wifiManager import com.android.settings.wifi.utils.wifiManager
import com.android.settings.wifi.utils.wifiSoftApSsid 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.TetherUtil
import com.android.settingslib.datastore.AbstractKeyedDataObservable import com.android.settingslib.datastore.AbstractKeyedDataObservable
import com.android.settingslib.datastore.HandlerExecutor 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.datastore.Permissions
import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.PreferenceChangeReason import com.android.settingslib.metadata.PreferenceChangeReason
import com.android.settingslib.metadata.PreferenceMetadata
import com.android.settingslib.metadata.PreferenceSummaryProvider import com.android.settingslib.metadata.PreferenceSummaryProvider
import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.metadata.ReadWritePermit
import com.android.settingslib.metadata.SensitivityLevel import com.android.settingslib.metadata.SensitivityLevel
import com.android.settingslib.metadata.SwitchPreference import com.android.settingslib.metadata.SwitchPreference
import com.android.settingslib.preference.PreferenceBinding
import com.android.settingslib.wifi.WifiUtils.Companion.getWifiTetherSummaryForConnectedDevices import com.android.settingslib.wifi.WifiUtils.Companion.getWifiTetherSummaryForConnectedDevices
import com.android.settings.datausage.DataSaverMainSwitchPreference.Companion.KEY as DATA_SAVER_KEY
// LINT.IfChange // LINT.IfChange
class WifiHotspotSwitchPreference(context: Context, dataSaverStore: KeyValueStore) : class WifiHotspotSwitchPreference(context: Context, dataSaverStore: KeyValueStore) :
SwitchPreference(KEY, R.string.wifi_hotspot_checkbox_text), SwitchPreference(KEY, R.string.wifi_hotspot_checkbox_text),
PreferenceBinding, PrimarySwitchPreferenceBinding,
PreferenceAvailabilityProvider, PreferenceAvailabilityProvider,
PreferenceSummaryProvider, PreferenceSummaryProvider,
PreferenceRestrictionMixin { PreferenceRestrictionMixin {
@@ -130,8 +127,6 @@ class WifiHotspotSwitchPreference(context: Context, dataSaverStore: KeyValueStor
override val sensitivityLevel override val sensitivityLevel
get() = SensitivityLevel.HIGH_SENSITIVITY get() = SensitivityLevel.HIGH_SENSITIVITY
override fun createWidget(context: Context) = PrimarySwitchPreference(context)
override fun storage(context: Context): KeyValueStore = wifiHotspotStore override fun storage(context: Context): KeyValueStore = wifiHotspotStore
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
@@ -201,16 +196,7 @@ class WifiHotspotSwitchPreference(context: Context, dataSaverStore: KeyValueStor
Log.e(TAG, "onTetheringFailed(),error=$error") Log.e(TAG, "onTetheringFailed(),error=$error")
} }
override fun onKeyChanged(key: String, reason: Int) = override fun onKeyChanged(key: String, reason: Int) = notifyChange(KEY, reason)
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
}
} }
companion object { companion object {