Loading packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt +9 −3 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ import com.android.settingslib.graph.proto.PreferenceProto import com.android.settingslib.graph.proto.PreferenceProto.ActionTarget import com.android.settingslib.graph.proto.PreferenceScreenProto import com.android.settingslib.graph.proto.TextProto import com.android.settingslib.metadata.BooleanValue import com.android.settingslib.metadata.FloatPersistentPreference import com.android.settingslib.metadata.PersistentPreference import com.android.settingslib.metadata.PreferenceAvailabilityProvider Loading Loading @@ -410,18 +409,20 @@ fun PreferenceMetadata.toProto( val storage = metadata.storage(context) value = preferenceValueProto { when (metadata) { is BooleanValue -> storage.getBoolean(metadata.key)?.let { booleanValue = it } is RangeValue -> storage.getInt(metadata.key)?.let { intValue = it } is FloatPersistentPreference -> storage.getFloat(metadata.key)?.let { floatValue = it } else -> {} } when (metadata.valueType) { Boolean::class.javaObjectType -> storage.getBoolean(metadata.key)?.let { booleanValue = it } } } } if (flags.includeValueDescriptor()) { valueDescriptor = preferenceValueDescriptorProto { when (metadata) { is BooleanValue -> booleanType = true is RangeValue -> rangeValue = rangeValueProto { min = metadata.getMinValue(context) max = metadata.getMaxValue(context) Loading @@ -430,6 +431,11 @@ fun PreferenceMetadata.toProto( is FloatPersistentPreference -> floatType = true else -> {} } if (metadata is PersistentPreference<*>) { when (metadata.valueType) { Boolean::class.javaObjectType -> booleanType = true } } } } } Loading packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt +3 −2 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ import com.android.settingslib.ipc.ApiHandler import com.android.settingslib.ipc.ApiPermissionChecker import com.android.settingslib.ipc.IntMessageCodec import com.android.settingslib.ipc.MessageCodec import com.android.settingslib.metadata.BooleanValue import com.android.settingslib.metadata.PersistentPreference import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceMetadata Loading Loading @@ -146,7 +145,9 @@ class PreferenceSetterApiHandler( val value = request.value try { if (value.hasBooleanValue()) { if (metadata !is BooleanValue) return PreferenceSetterResult.INVALID_REQUEST if (metadata.valueType != Boolean::class.javaObjectType) { return PreferenceSetterResult.INVALID_REQUEST } val booleanValue = value.booleanValue val resultCode = metadata.checkWritePermit(booleanValue) if (resultCode != PreferenceSetterResult.OK) return resultCode Loading packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PersistentPreference.kt +14 −9 Original line number Diff line number Diff line Loading @@ -78,6 +78,14 @@ annotation class SensitivityLevel { /** Preference interface that has a value persisted in datastore. */ interface PersistentPreference<T> { /** * The value type the preference is associated with. * * TODO(b/388167302): Remove the default implementation once all subclasses are migrated. */ val valueType: Class<T>? get() = null /** * Returns the key-value storage of the preference. * Loading Loading @@ -143,15 +151,6 @@ sealed interface ValueDescriptor { fun isValidValue(context: Context, index: Int): Boolean } /** * A boolean type value. * * A zero value means `False`, otherwise it is `True`. */ interface BooleanValue : ValueDescriptor { override fun isValidValue(context: Context, index: Int) = true } /** Value falls into a given array. */ interface DiscreteValue<T> : ValueDescriptor { @get:ArrayRes val values: Int Loading Loading @@ -221,5 +220,11 @@ interface RangeValue : ValueDescriptor { index in getMinValue(context)..getMaxValue(context) } /** A persistent preference that has a boolean value. */ interface BooleanPreference : PersistentPreference<Boolean> { override val valueType: Class<Boolean> get() = Boolean::class.javaObjectType } /** A persistent preference that has a float value. */ interface FloatPersistentPreference : PersistentPreference<Float> packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceTypes.kt +1 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ package com.android.settingslib.metadata import androidx.annotation.StringRes /** Common base class for preferences that have two selectable states and save a boolean value. */ interface TwoStatePreference : PreferenceMetadata, PersistentPreference<Boolean>, BooleanValue interface TwoStatePreference : PreferenceMetadata, BooleanPreference /** A preference that provides a two-state toggleable option. */ open class SwitchPreference Loading Loading
packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt +9 −3 Original line number Diff line number Diff line Loading @@ -40,7 +40,6 @@ import com.android.settingslib.graph.proto.PreferenceProto import com.android.settingslib.graph.proto.PreferenceProto.ActionTarget import com.android.settingslib.graph.proto.PreferenceScreenProto import com.android.settingslib.graph.proto.TextProto import com.android.settingslib.metadata.BooleanValue import com.android.settingslib.metadata.FloatPersistentPreference import com.android.settingslib.metadata.PersistentPreference import com.android.settingslib.metadata.PreferenceAvailabilityProvider Loading Loading @@ -410,18 +409,20 @@ fun PreferenceMetadata.toProto( val storage = metadata.storage(context) value = preferenceValueProto { when (metadata) { is BooleanValue -> storage.getBoolean(metadata.key)?.let { booleanValue = it } is RangeValue -> storage.getInt(metadata.key)?.let { intValue = it } is FloatPersistentPreference -> storage.getFloat(metadata.key)?.let { floatValue = it } else -> {} } when (metadata.valueType) { Boolean::class.javaObjectType -> storage.getBoolean(metadata.key)?.let { booleanValue = it } } } } if (flags.includeValueDescriptor()) { valueDescriptor = preferenceValueDescriptorProto { when (metadata) { is BooleanValue -> booleanType = true is RangeValue -> rangeValue = rangeValueProto { min = metadata.getMinValue(context) max = metadata.getMaxValue(context) Loading @@ -430,6 +431,11 @@ fun PreferenceMetadata.toProto( is FloatPersistentPreference -> floatType = true else -> {} } if (metadata is PersistentPreference<*>) { when (metadata.valueType) { Boolean::class.javaObjectType -> booleanType = true } } } } } Loading
packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt +3 −2 Original line number Diff line number Diff line Loading @@ -26,7 +26,6 @@ import com.android.settingslib.ipc.ApiHandler import com.android.settingslib.ipc.ApiPermissionChecker import com.android.settingslib.ipc.IntMessageCodec import com.android.settingslib.ipc.MessageCodec import com.android.settingslib.metadata.BooleanValue import com.android.settingslib.metadata.PersistentPreference import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceMetadata Loading Loading @@ -146,7 +145,9 @@ class PreferenceSetterApiHandler( val value = request.value try { if (value.hasBooleanValue()) { if (metadata !is BooleanValue) return PreferenceSetterResult.INVALID_REQUEST if (metadata.valueType != Boolean::class.javaObjectType) { return PreferenceSetterResult.INVALID_REQUEST } val booleanValue = value.booleanValue val resultCode = metadata.checkWritePermit(booleanValue) if (resultCode != PreferenceSetterResult.OK) return resultCode Loading
packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PersistentPreference.kt +14 −9 Original line number Diff line number Diff line Loading @@ -78,6 +78,14 @@ annotation class SensitivityLevel { /** Preference interface that has a value persisted in datastore. */ interface PersistentPreference<T> { /** * The value type the preference is associated with. * * TODO(b/388167302): Remove the default implementation once all subclasses are migrated. */ val valueType: Class<T>? get() = null /** * Returns the key-value storage of the preference. * Loading Loading @@ -143,15 +151,6 @@ sealed interface ValueDescriptor { fun isValidValue(context: Context, index: Int): Boolean } /** * A boolean type value. * * A zero value means `False`, otherwise it is `True`. */ interface BooleanValue : ValueDescriptor { override fun isValidValue(context: Context, index: Int) = true } /** Value falls into a given array. */ interface DiscreteValue<T> : ValueDescriptor { @get:ArrayRes val values: Int Loading Loading @@ -221,5 +220,11 @@ interface RangeValue : ValueDescriptor { index in getMinValue(context)..getMaxValue(context) } /** A persistent preference that has a boolean value. */ interface BooleanPreference : PersistentPreference<Boolean> { override val valueType: Class<Boolean> get() = Boolean::class.javaObjectType } /** A persistent preference that has a float value. */ interface FloatPersistentPreference : PersistentPreference<Float>
packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceTypes.kt +1 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ package com.android.settingslib.metadata import androidx.annotation.StringRes /** Common base class for preferences that have two selectable states and save a boolean value. */ interface TwoStatePreference : PreferenceMetadata, PersistentPreference<Boolean>, BooleanValue interface TwoStatePreference : PreferenceMetadata, BooleanPreference /** A preference that provides a two-state toggleable option. */ open class SwitchPreference Loading