[Catalyst] Refine AmbientDisplayAlwaysOnPreference datastore
NO_IFTTT=Catalyst only Bug: 372307567 Flag: com.android.settings.flags.catalyst_lockscreen_from_display_settings Test: devtool Change-Id: Icd7990d4bb42c2ed5e3432d0dd81473217913b56
This commit is contained in:
@@ -25,15 +25,13 @@ import android.provider.Settings.Secure.DOZE_ALWAYS_ON
|
|||||||
import com.android.settings.PreferenceRestrictionMixin
|
import com.android.settings.PreferenceRestrictionMixin
|
||||||
import com.android.settings.R
|
import com.android.settings.R
|
||||||
import com.android.settings.display.AmbientDisplayAlwaysOnPreferenceController.isAodSuppressedByBedtime
|
import com.android.settings.display.AmbientDisplayAlwaysOnPreferenceController.isAodSuppressedByBedtime
|
||||||
|
import com.android.settingslib.datastore.AbstractKeyedDataObservable
|
||||||
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.KeyedObserver
|
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.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.PreferenceLifecycleProvider
|
|
||||||
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
|
||||||
@@ -44,11 +42,8 @@ class AmbientDisplayAlwaysOnPreference :
|
|||||||
SwitchPreference(KEY, R.string.doze_always_on_title, R.string.doze_always_on_summary),
|
SwitchPreference(KEY, R.string.doze_always_on_title, R.string.doze_always_on_summary),
|
||||||
PreferenceAvailabilityProvider,
|
PreferenceAvailabilityProvider,
|
||||||
PreferenceSummaryProvider,
|
PreferenceSummaryProvider,
|
||||||
PreferenceLifecycleProvider,
|
|
||||||
PreferenceRestrictionMixin {
|
PreferenceRestrictionMixin {
|
||||||
|
|
||||||
private var keyMappingObserver: KeyedObserver<String>? = null
|
|
||||||
|
|
||||||
override val keywords: Int
|
override val keywords: Int
|
||||||
get() = R.string.keywords_always_show_time_info
|
get() = R.string.keywords_always_show_time_info
|
||||||
|
|
||||||
@@ -88,24 +83,17 @@ class AmbientDisplayAlwaysOnPreference :
|
|||||||
override val sensitivityLevel
|
override val sensitivityLevel
|
||||||
get() = SensitivityLevel.NO_SENSITIVITY
|
get() = SensitivityLevel.NO_SENSITIVITY
|
||||||
|
|
||||||
override fun onCreate(context: PreferenceLifecycleContext) {
|
/**
|
||||||
val storage = SettingsSecureStore.get(context)
|
* Datastore of the preference.
|
||||||
keyMappingObserver =
|
*
|
||||||
KeyedObserver<String> { _, reason -> storage.notifyChange(KEY, reason) }
|
* The preference key and underlying storage key are the different, leverage
|
||||||
.also { storage.addObserver(DOZE_ALWAYS_ON, it, HandlerExecutor.main) }
|
* [AbstractKeyedDataObservable] to redirect data change event.
|
||||||
}
|
*/
|
||||||
|
|
||||||
override fun onDestroy(context: PreferenceLifecycleContext) {
|
|
||||||
keyMappingObserver?.let {
|
|
||||||
SettingsSecureStore.get(context).removeObserver(DOZE_ALWAYS_ON, it)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
@Suppress("UNCHECKED_CAST")
|
||||||
class Storage(
|
class Storage(
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
private val settingsStore: SettingsStore = SettingsSecureStore.get(context),
|
private val settingsStore: SettingsStore = SettingsSecureStore.get(context),
|
||||||
) : KeyedObservableDelegate<String>(settingsStore), KeyValueStore {
|
) : AbstractKeyedDataObservable<String>(), KeyedObserver<String>, KeyValueStore {
|
||||||
|
|
||||||
override fun contains(key: String) = settingsStore.contains(DOZE_ALWAYS_ON)
|
override fun contains(key: String) = settingsStore.contains(DOZE_ALWAYS_ON)
|
||||||
|
|
||||||
@@ -118,6 +106,20 @@ class AmbientDisplayAlwaysOnPreference :
|
|||||||
|
|
||||||
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(DOZE_ALWAYS_ON, valueType, value)
|
settingsStore.setValue(DOZE_ALWAYS_ON, valueType, value)
|
||||||
|
|
||||||
|
override fun onFirstObserverAdded() {
|
||||||
|
// observe the underlying storage key
|
||||||
|
settingsStore.addObserver(DOZE_ALWAYS_ON, this, HandlerExecutor.main)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onKeyChanged(key: String, reason: Int) {
|
||||||
|
// forward data change to preference hierarchy key
|
||||||
|
notifyChange(KEY, reason)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onLastObserverRemoved() {
|
||||||
|
settingsStore.removeObserver(DOZE_ALWAYS_ON, this)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
Reference in New Issue
Block a user