[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.metrics.PreferenceActionMetricsProvider
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.metadata.BooleanValuePreference
import com.android.settingslib.metadata.PreferenceMetadata
@@ -96,18 +96,13 @@ class VibrationMainSwitchPreference :
class VibrationMainSwitchStore(
context: 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> 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 {
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.settingslib.RestrictedSwitchPreference
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.SettingsStore
import com.android.settingslib.metadata.BooleanValuePreference
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.PreferenceLifecycleContext
@@ -106,16 +105,14 @@ class AdaptiveSleepPreference :
@Suppress("UNCHECKED_CAST")
private class Storage(
private val context: Context,
private val settingsStore: SettingsStore = SettingsSecureStore.get(context),
) : KeyedObservableDelegate<String>(settingsStore), KeyValueStore {
private val settingsStore: KeyValueStore = SettingsSecureStore.get(context),
) : KeyValueStoreDelegate {
override fun contains(key: String) = settingsStore.contains(key)
override val keyValueStoreDelegate
get() = settingsStore
override fun <T : Any> getValue(key: String, valueType: Class<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) {

View File

@@ -23,8 +23,7 @@ import com.android.settings.Utils
import com.android.settings.contract.KEY_BATTERY_PERCENTAGE
import com.android.settings.metrics.PreferenceActionMetricsProvider
import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.KeyedObservableDelegate
import com.android.settingslib.datastore.SettingsStore
import com.android.settingslib.datastore.KeyValueStoreDelegate
import com.android.settingslib.datastore.SettingsSystemStore
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.ReadWritePermit
@@ -71,17 +70,11 @@ class BatteryPercentageSwitchPreference :
@Suppress("UNCHECKED_CAST")
private class BatteryPercentageStorage(
private val context: Context,
private val settingsStore: SettingsStore,
) : KeyedObservableDelegate<String>(settingsStore), KeyValueStore {
private val settingsStore: KeyValueStore,
) : KeyValueStoreDelegate {
override fun contains(key: String) = settingsStore.contains(KEY)
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 val keyValueStoreDelegate
get() = settingsStore
override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>) =
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.settingslib.datastore.HandlerExecutor
import com.android.settingslib.datastore.KeyValueStore
import com.android.settingslib.datastore.KeyedObservableDelegate
import com.android.settingslib.datastore.SettingsStore
import com.android.settingslib.datastore.KeyValueStoreDelegate
import com.android.settingslib.datastore.SettingsSystemStore
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.PreferenceLifecycleContext
@@ -112,18 +111,16 @@ class PeakRefreshRateSwitchPreference :
@Suppress("UNCHECKED_CAST")
private class PeakRefreshRateStore(
private val context: Context,
private val settingsStore: SettingsStore,
) : KeyedObservableDelegate<String>(settingsStore), KeyValueStore {
private val 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? {
if (key != KEY) return super.getDefaultValue(key, valueType)
return context.defaultPeakRefreshRate.refreshRateAsBoolean(context) as T
}
override fun <T : Any> getDefaultValue(key: String, valueType: Class<T>) =
context.defaultPeakRefreshRate.refreshRateAsBoolean(context) as T
override fun <T : Any> getValue(key: String, valueType: Class<T>): T? {
if (key != KEY) return null
val refreshRate = settingsStore.getFloat(KEY) ?: context.defaultPeakRefreshRate
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.metrics.PreferenceActionMetricsProvider
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.SettingsStore
import com.android.settingslib.metadata.MainSwitchPreference
import com.android.settingslib.metadata.ReadWritePermit
import com.android.settingslib.metadata.SensitivityLevel
@@ -42,7 +41,7 @@ class AdaptiveConnectivityTogglePreference :
override fun tags(context: Context) = arrayOf(KEY_ADAPTIVE_CONNECTIVITY)
override fun storage(context: Context): KeyValueStore =
AdaptiveConnectivityToggleStorage(context, SettingsSecureStore.get(context))
AdaptiveConnectivityToggleStorage(context)
override fun getReadPermissions(context: Context) = SettingsSecureStore.getReadPermissions()
@@ -64,20 +63,20 @@ class AdaptiveConnectivityTogglePreference :
@Suppress("UNCHECKED_CAST")
private class AdaptiveConnectivityToggleStorage(
private val context: Context,
private val settingsStore: SettingsStore,
) : KeyedObservableDelegate<String>(settingsStore), KeyValueStore {
private val settingsStore: KeyValueStore = SettingsSecureStore.get(context),
) : 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> 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?) {
settingsStore.setBoolean(key, value as Boolean)
context.getSystemService(WifiManager::class.java)?.setWifiScoringEnabled(value)
settingsStore.setValue(key, valueType, 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.settingslib.RestrictedSwitchPreference
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.SettingsStore
import com.android.settingslib.metadata.PreferenceAvailabilityProvider
import com.android.settingslib.metadata.PreferenceLifecycleContext
import com.android.settingslib.metadata.PreferenceLifecycleProvider
@@ -92,17 +91,15 @@ class AirplaneModePreference :
@Suppress("UNCHECKED_CAST")
private class AirplaneModeStorage(
private val context: Context,
private val settingsStore: SettingsStore = SettingsGlobalStore.get(context),
) : KeyedObservableDelegate<String>(settingsStore), KeyValueStore {
private val settingsStore: KeyValueStore = SettingsGlobalStore.get(context),
) : 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> 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?) {
settingsStore.setValue(key, valueType, value)

View File

@@ -18,22 +18,21 @@ package com.android.settings.sound
import android.content.Context
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.KeyedObservableDelegate
import com.android.settingslib.datastore.KeyValueStoreDelegate
import com.android.settingslib.datastore.SettingsSecureStore
import com.android.settingslib.datastore.SettingsStore
import com.android.settingslib.metadata.ReadWritePermit
import com.android.settingslib.metadata.SensitivityLevel
import com.android.settingslib.metadata.SwitchPreference
import com.android.settings.R
// LINT.IfChange
class MediaControlsLockscreenSwitchPreference : SwitchPreference(
KEY,
R.string.media_controls_lockscreen_title,
R.string.media_controls_lockscreen_description,
) {
class MediaControlsLockscreenSwitchPreference :
SwitchPreference(
KEY,
R.string.media_controls_lockscreen_title,
R.string.media_controls_lockscreen_description,
) {
override val sensitivityLevel
get() = SensitivityLevel.NO_SENSITIVITY
@@ -52,21 +51,17 @@ class MediaControlsLockscreenSwitchPreference : SwitchPreference(
MediaControlsLockscreenStore(SettingsSecureStore.get(context))
@Suppress("UNCHECKED_CAST")
private class MediaControlsLockscreenStore(private val settingsStore: SettingsStore) :
KeyedObservableDelegate<String>(settingsStore), KeyValueStore {
override fun contains(key: String) = settingsStore.contains(key)
private class MediaControlsLockscreenStore(private val settingsStore: KeyValueStore) :
KeyValueStoreDelegate {
override val keyValueStoreDelegate
get() = settingsStore
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 {
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
import android.content.Context
import com.android.settings.R
import com.android.settings.flags.Flags
import com.android.settingslib.datastore.AbstractKeyedDataObservable
import com.android.settingslib.datastore.HandlerExecutor
import com.android.settingslib.datastore.KeyedObserver
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.SettingsStore
import com.android.settingslib.metadata.PreferenceChangeReason
import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.PreferenceSummaryProvider
import com.android.settingslib.metadata.ProvidePreferenceScreen
import com.android.settingslib.metadata.preferenceHierarchy
import com.android.settingslib.preference.PreferenceScreenCreator
// LINT.IfChange
@@ -83,21 +80,16 @@ class MediaControlsScreen(context: Context) :
}
@Suppress("UNCHECKED_CAST")
class MediaControlsStore(private val settingsStore: SettingsStore) :
KeyedObservableDelegate<String>(settingsStore), KeyValueStore {
override fun contains(key: String) = settingsStore.contains(key)
class MediaControlsStore(private val settingsStore: KeyValueStore) : KeyValueStoreDelegate {
override val keyValueStoreDelegate
get() = settingsStore
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 {
const val KEY = "media_controls"
}
}
// LINT.ThenChange(MediaControlsSettings.java)
// LINT.ThenChange(MediaControlsSettings.java)