[Catalyst] Use KeyValueStoreDelegate

NO_IFTTT=Catalyst only

Bug: 388167106
Flag: com.android.settings.flags.catalyst
Test: manual
Change-Id: I3d04e1bf2620fe7f910fe63f22c17da290e9172d
This commit is contained in:
Jacky Wang
2025-03-11 00:47:02 +08:00
parent c847dc7e0e
commit 84f84ca8c0
8 changed files with 58 additions and 93 deletions

View File

@@ -25,7 +25,7 @@ import com.android.settings.R
import com.android.settings.contract.KEY_VIBRATION_HAPTICS import com.android.settings.contract.KEY_VIBRATION_HAPTICS
import com.android.settings.metrics.PreferenceActionMetricsProvider import com.android.settings.metrics.PreferenceActionMetricsProvider
import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.KeyedObservableDelegate import com.android.settingslib.datastore.KeyValueStoreDelegate
import com.android.settingslib.datastore.SettingsSystemStore import com.android.settingslib.datastore.SettingsSystemStore
import com.android.settingslib.metadata.BooleanValuePreference import com.android.settingslib.metadata.BooleanValuePreference
import com.android.settingslib.metadata.PreferenceMetadata import com.android.settingslib.metadata.PreferenceMetadata
@@ -96,18 +96,13 @@ class VibrationMainSwitchPreference :
class VibrationMainSwitchStore( class VibrationMainSwitchStore(
context: Context, context: Context,
private val settingsStore: KeyValueStore = SettingsSystemStore.get(context), private val settingsStore: KeyValueStore = SettingsSystemStore.get(context),
) : KeyedObservableDelegate<String>(settingsStore), KeyValueStore { ) : KeyValueStoreDelegate {
override fun contains(key: String) = settingsStore.contains(key) override val keyValueStoreDelegate
get() = settingsStore
override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>) = DEFAULT_VALUE as T override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>) = DEFAULT_VALUE as T
override fun <T : Any> getValue(key: String, valueType: Class<T>) =
settingsStore.getValue(key, valueType) ?: getDefaultValue(key, valueType)
override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) =
settingsStore.setValue(key, valueType, value)
companion object { companion object {
private const val DEFAULT_VALUE = true private const val DEFAULT_VALUE = true
} }

View File

@@ -33,9 +33,8 @@ import com.android.settings.metrics.PreferenceActionMetricsProvider
import com.android.settings.restriction.PreferenceRestrictionMixin import com.android.settings.restriction.PreferenceRestrictionMixin
import com.android.settingslib.RestrictedSwitchPreference import com.android.settingslib.RestrictedSwitchPreference
import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.KeyedObservableDelegate import com.android.settingslib.datastore.KeyValueStoreDelegate
import com.android.settingslib.datastore.SettingsSecureStore import com.android.settingslib.datastore.SettingsSecureStore
import com.android.settingslib.datastore.SettingsStore
import com.android.settingslib.metadata.BooleanValuePreference import com.android.settingslib.metadata.BooleanValuePreference
import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.PreferenceLifecycleContext import com.android.settingslib.metadata.PreferenceLifecycleContext
@@ -106,16 +105,14 @@ class AdaptiveSleepPreference :
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
private class Storage( private class Storage(
private val context: Context, private val context: Context,
private val settingsStore: SettingsStore = SettingsSecureStore.get(context), private val settingsStore: KeyValueStore = SettingsSecureStore.get(context),
) : KeyedObservableDelegate<String>(settingsStore), KeyValueStore { ) : KeyValueStoreDelegate {
override fun contains(key: String) = settingsStore.contains(key) override val keyValueStoreDelegate
get() = settingsStore
override fun <T : Any> getValue(key: String, valueType: Class<T>) = override fun <T : Any> getValue(key: String, valueType: Class<T>) =
(context.canBeEnabled() && settingsStore.getBoolean(key) == true) as T (context.canBeEnabled() && settingsStore.getBoolean(key) == true) as T
override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) =
settingsStore.setBoolean(key, value as Boolean?)
} }
override fun onStart(context: PreferenceLifecycleContext) { override fun onStart(context: PreferenceLifecycleContext) {

View File

@@ -23,8 +23,7 @@ import com.android.settings.Utils
import com.android.settings.contract.KEY_BATTERY_PERCENTAGE import com.android.settings.contract.KEY_BATTERY_PERCENTAGE
import com.android.settings.metrics.PreferenceActionMetricsProvider import com.android.settings.metrics.PreferenceActionMetricsProvider
import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.KeyedObservableDelegate import com.android.settingslib.datastore.KeyValueStoreDelegate
import com.android.settingslib.datastore.SettingsStore
import com.android.settingslib.datastore.SettingsSystemStore import com.android.settingslib.datastore.SettingsSystemStore
import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.metadata.ReadWritePermit
@@ -71,17 +70,11 @@ class BatteryPercentageSwitchPreference :
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
private class BatteryPercentageStorage( private class BatteryPercentageStorage(
private val context: Context, private val context: Context,
private val settingsStore: SettingsStore, private val settingsStore: KeyValueStore,
) : KeyedObservableDelegate<String>(settingsStore), KeyValueStore { ) : KeyValueStoreDelegate {
override fun contains(key: String) = settingsStore.contains(KEY) override val keyValueStoreDelegate
get() = settingsStore
override fun <T : Any> getValue(key: String, valueType: Class<T>) =
(settingsStore.getBoolean(key) ?: getDefaultValue(key, valueType)) as T
override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) {
settingsStore.setBoolean(key, value as Boolean)
}
override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>) = override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>) =
context.resources.getBoolean( context.resources.getBoolean(

View File

@@ -29,8 +29,7 @@ import com.android.settings.contract.KEY_SMOOTH_DISPLAY
import com.android.settings.metrics.PreferenceActionMetricsProvider import com.android.settings.metrics.PreferenceActionMetricsProvider
import com.android.settingslib.datastore.HandlerExecutor import com.android.settingslib.datastore.HandlerExecutor
import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.KeyedObservableDelegate import com.android.settingslib.datastore.KeyValueStoreDelegate
import com.android.settingslib.datastore.SettingsStore
import com.android.settingslib.datastore.SettingsSystemStore import com.android.settingslib.datastore.SettingsSystemStore
import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.PreferenceLifecycleContext import com.android.settingslib.metadata.PreferenceLifecycleContext
@@ -112,18 +111,16 @@ class PeakRefreshRateSwitchPreference :
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
private class PeakRefreshRateStore( private class PeakRefreshRateStore(
private val context: Context, private val context: Context,
private val settingsStore: SettingsStore, private val settingsStore: KeyValueStore,
) : KeyedObservableDelegate<String>(settingsStore), KeyValueStore { ) : KeyValueStoreDelegate {
override fun contains(key: String) = settingsStore.contains(key) override val keyValueStoreDelegate
get() = settingsStore
override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>): T? { override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>) =
if (key != KEY) return super.getDefaultValue(key, valueType) context.defaultPeakRefreshRate.refreshRateAsBoolean(context) as T
return context.defaultPeakRefreshRate.refreshRateAsBoolean(context) as T
}
override fun <T : Any> getValue(key: String, valueType: Class<T>): T? { override fun <T : Any> getValue(key: String, valueType: Class<T>): T? {
if (key != KEY) return null
val refreshRate = settingsStore.getFloat(KEY) ?: context.defaultPeakRefreshRate val refreshRate = settingsStore.getFloat(KEY) ?: context.defaultPeakRefreshRate
return refreshRate.refreshRateAsBoolean(context) as T return refreshRate.refreshRateAsBoolean(context) as T
} }

View File

@@ -24,9 +24,8 @@ import com.android.settings.R
import com.android.settings.contract.KEY_ADAPTIVE_CONNECTIVITY import com.android.settings.contract.KEY_ADAPTIVE_CONNECTIVITY
import com.android.settings.metrics.PreferenceActionMetricsProvider import com.android.settings.metrics.PreferenceActionMetricsProvider
import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.KeyedObservableDelegate import com.android.settingslib.datastore.KeyValueStoreDelegate
import com.android.settingslib.datastore.SettingsSecureStore import com.android.settingslib.datastore.SettingsSecureStore
import com.android.settingslib.datastore.SettingsStore
import com.android.settingslib.metadata.MainSwitchPreference import com.android.settingslib.metadata.MainSwitchPreference
import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.metadata.ReadWritePermit
import com.android.settingslib.metadata.SensitivityLevel import com.android.settingslib.metadata.SensitivityLevel
@@ -42,7 +41,7 @@ class AdaptiveConnectivityTogglePreference :
override fun tags(context: Context) = arrayOf(KEY_ADAPTIVE_CONNECTIVITY) override fun tags(context: Context) = arrayOf(KEY_ADAPTIVE_CONNECTIVITY)
override fun storage(context: Context): KeyValueStore = override fun storage(context: Context): KeyValueStore =
AdaptiveConnectivityToggleStorage(context, SettingsSecureStore.get(context)) AdaptiveConnectivityToggleStorage(context)
override fun getReadPermissions(context: Context) = SettingsSecureStore.getReadPermissions() override fun getReadPermissions(context: Context) = SettingsSecureStore.getReadPermissions()
@@ -64,20 +63,20 @@ class AdaptiveConnectivityTogglePreference :
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
private class AdaptiveConnectivityToggleStorage( private class AdaptiveConnectivityToggleStorage(
private val context: Context, private val context: Context,
private val settingsStore: SettingsStore, private val settingsStore: KeyValueStore = SettingsSecureStore.get(context),
) : KeyedObservableDelegate<String>(settingsStore), KeyValueStore { ) : KeyValueStoreDelegate {
override fun contains(key: String) = settingsStore.contains(KEY) override val keyValueStoreDelegate
get() = settingsStore
override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>) = override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>) =
DEFAULT_VALUE as T DEFAULT_VALUE as T
override fun <T : Any> getValue(key: String, valueType: Class<T>) =
(settingsStore.getBoolean(key) ?: DEFAULT_VALUE) as T
override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) { override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) {
settingsStore.setBoolean(key, value as Boolean) settingsStore.setValue(key, valueType, value)
context.getSystemService(WifiManager::class.java)?.setWifiScoringEnabled(value) context
.getSystemService(WifiManager::class.java)
?.setWifiScoringEnabled((value as Boolean?) ?: DEFAULT_VALUE)
} }
} }

View File

@@ -36,9 +36,8 @@ import com.android.settings.network.SatelliteRepository.Companion.isSatelliteOn
import com.android.settings.restriction.PreferenceRestrictionMixin import com.android.settings.restriction.PreferenceRestrictionMixin
import com.android.settingslib.RestrictedSwitchPreference import com.android.settingslib.RestrictedSwitchPreference
import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.KeyedObservableDelegate import com.android.settingslib.datastore.KeyValueStoreDelegate
import com.android.settingslib.datastore.SettingsGlobalStore import com.android.settingslib.datastore.SettingsGlobalStore
import com.android.settingslib.datastore.SettingsStore
import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.PreferenceLifecycleContext import com.android.settingslib.metadata.PreferenceLifecycleContext
import com.android.settingslib.metadata.PreferenceLifecycleProvider import com.android.settingslib.metadata.PreferenceLifecycleProvider
@@ -92,17 +91,15 @@ class AirplaneModePreference :
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
private class AirplaneModeStorage( private class AirplaneModeStorage(
private val context: Context, private val context: Context,
private val settingsStore: SettingsStore = SettingsGlobalStore.get(context), private val settingsStore: KeyValueStore = SettingsGlobalStore.get(context),
) : KeyedObservableDelegate<String>(settingsStore), KeyValueStore { ) : KeyValueStoreDelegate {
override fun contains(key: String) = settingsStore.contains(KEY) override val keyValueStoreDelegate
get() = settingsStore
override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>) = override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>) =
DEFAULT_VALUE as T DEFAULT_VALUE as T
override fun <T : Any> getValue(key: String, valueType: Class<T>): T =
(settingsStore.getBoolean(key) ?: DEFAULT_VALUE) as T
override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) { override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) {
settingsStore.setValue(key, valueType, value) settingsStore.setValue(key, valueType, value)

View File

@@ -18,22 +18,21 @@ package com.android.settings.sound
import android.content.Context import android.content.Context
import android.provider.Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN import android.provider.Settings.Secure.MEDIA_CONTROLS_LOCK_SCREEN
import com.android.settings.R
import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.KeyedObservableDelegate import com.android.settingslib.datastore.KeyValueStoreDelegate
import com.android.settingslib.datastore.SettingsSecureStore import com.android.settingslib.datastore.SettingsSecureStore
import com.android.settingslib.datastore.SettingsStore
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.settings.R
// LINT.IfChange // LINT.IfChange
class MediaControlsLockscreenSwitchPreference : SwitchPreference( class MediaControlsLockscreenSwitchPreference :
KEY, SwitchPreference(
R.string.media_controls_lockscreen_title, KEY,
R.string.media_controls_lockscreen_description, R.string.media_controls_lockscreen_title,
) { R.string.media_controls_lockscreen_description,
) {
override val sensitivityLevel override val sensitivityLevel
get() = SensitivityLevel.NO_SENSITIVITY get() = SensitivityLevel.NO_SENSITIVITY
@@ -52,21 +51,17 @@ class MediaControlsLockscreenSwitchPreference : SwitchPreference(
MediaControlsLockscreenStore(SettingsSecureStore.get(context)) MediaControlsLockscreenStore(SettingsSecureStore.get(context))
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
private class MediaControlsLockscreenStore(private val settingsStore: SettingsStore) : private class MediaControlsLockscreenStore(private val settingsStore: KeyValueStore) :
KeyedObservableDelegate<String>(settingsStore), KeyValueStore { KeyValueStoreDelegate {
override fun contains(key: String) = settingsStore.contains(key)
override val keyValueStoreDelegate
get() = settingsStore
override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>) = true as T override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>) = true as T
override fun <T : Any> getValue(key: String, valueType: Class<T>) =
settingsStore.getValue(key, valueType) ?: getDefaultValue(key, valueType)
override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) =
settingsStore.setValue(key, valueType, value)
} }
companion object { companion object {
const val KEY = MEDIA_CONTROLS_LOCK_SCREEN const val KEY = MEDIA_CONTROLS_LOCK_SCREEN
} }
} }
// LINT.ThenChange(MediaControlsLockScreenPreferenceController.java) // LINT.ThenChange(MediaControlsLockScreenPreferenceController.java)

View File

@@ -17,21 +17,18 @@
package com.android.settings.sound package com.android.settings.sound
import android.content.Context import android.content.Context
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.datastore.AbstractKeyedDataObservable import com.android.settingslib.datastore.AbstractKeyedDataObservable
import com.android.settingslib.datastore.HandlerExecutor import com.android.settingslib.datastore.HandlerExecutor
import com.android.settingslib.datastore.KeyedObserver
import com.android.settingslib.datastore.KeyValueStore import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.KeyedObservableDelegate import com.android.settingslib.datastore.KeyValueStoreDelegate
import com.android.settingslib.datastore.KeyedObserver
import com.android.settingslib.datastore.SettingsSecureStore import com.android.settingslib.datastore.SettingsSecureStore
import com.android.settingslib.datastore.SettingsStore
import com.android.settingslib.metadata.PreferenceChangeReason import com.android.settingslib.metadata.PreferenceChangeReason
import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.PreferenceSummaryProvider import com.android.settingslib.metadata.PreferenceSummaryProvider
import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator import com.android.settingslib.preference.PreferenceScreenCreator
// LINT.IfChange // LINT.IfChange
@@ -83,21 +80,16 @@ class MediaControlsScreen(context: Context) :
} }
@Suppress("UNCHECKED_CAST") @Suppress("UNCHECKED_CAST")
class MediaControlsStore(private val settingsStore: SettingsStore) : class MediaControlsStore(private val settingsStore: KeyValueStore) : KeyValueStoreDelegate {
KeyedObservableDelegate<String>(settingsStore), KeyValueStore {
override fun contains(key: String) = settingsStore.contains(key) override val keyValueStoreDelegate
get() = settingsStore
override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>) = true as T override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>) = true as T
override fun <T : Any> getValue(key: String, valueType: Class<T>) =
settingsStore.getValue(key, valueType) ?: getDefaultValue(key, valueType)
override fun <T : Any> setValue(key: String, valueType: Class<T>, value: T?) =
settingsStore.setValue(key, valueType, value)
} }
companion object { companion object {
const val KEY = "media_controls" const val KEY = "media_controls"
} }
} }
// LINT.ThenChange(MediaControlsSettings.java) // LINT.ThenChange(MediaControlsSettings.java)