Loading packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt +4 −6 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ 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.IntRangeValuePreference import com.android.settingslib.metadata.PersistentPreference import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceHierarchy Loading @@ -50,7 +51,6 @@ import com.android.settingslib.metadata.PreferenceScreenMetadata import com.android.settingslib.metadata.PreferenceScreenRegistry import com.android.settingslib.metadata.PreferenceSummaryProvider import com.android.settingslib.metadata.PreferenceTitleProvider import com.android.settingslib.metadata.RangeValue import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.preference.PreferenceScreenFactory import com.android.settingslib.preference.PreferenceScreenProvider Loading Loading @@ -407,22 +407,20 @@ fun PreferenceMetadata.toProto( ) { val storage = metadata.storage(context) value = preferenceValueProto { when (metadata) { is RangeValue -> storage.getInt(metadata.key)?.let { intValue = it } else -> {} } when (metadata.valueType) { Int::class.javaObjectType -> storage.getInt(metadata.key)?.let { intValue = it } Boolean::class.javaObjectType -> storage.getBoolean(metadata.key)?.let { booleanValue = it } Float::class.javaObjectType -> storage.getFloat(metadata.key)?.let { floatValue = it } else -> {} } } } if (flags.includeValueDescriptor()) { valueDescriptor = preferenceValueDescriptorProto { when (metadata) { is RangeValue -> rangeValue = rangeValueProto { is IntRangeValuePreference -> rangeValue = rangeValueProto { min = metadata.getMinValue(context) max = metadata.getMaxValue(context) step = metadata.getIncrementStep(context) Loading packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt +5 −2 Original line number Diff line number Diff line Loading @@ -26,12 +26,12 @@ 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.IntRangeValuePreference import com.android.settingslib.metadata.PersistentPreference import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceMetadata import com.android.settingslib.metadata.PreferenceRestrictionProvider import com.android.settingslib.metadata.PreferenceScreenRegistry import com.android.settingslib.metadata.RangeValue import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.metadata.SensitivityLevel.Companion.HIGH_SENSITIVITY import com.android.settingslib.metadata.SensitivityLevel.Companion.UNKNOWN_SENSITIVITY Loading Loading @@ -157,7 +157,10 @@ class PreferenceSetterApiHandler( val intValue = value.intValue val resultCode = metadata.checkWritePermit(intValue) if (resultCode != PreferenceSetterResult.OK) return resultCode if (metadata is RangeValue && !metadata.isValidValue(application, intValue)) { if ( metadata is IntRangeValuePreference && !metadata.isValidValue(application, intValue) ) { return PreferenceSetterResult.INVALID_REQUEST } storage.setInt(key, intValue) Loading packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PersistentPreference.kt +1 −16 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ annotation class SensitivityLevel { } } /** Preference interface that has a value persisted in datastore. */ /** Preference metadata that has a value persisted in datastore. */ interface PersistentPreference<T> : PreferenceMetadata { /** Loading Loading @@ -204,18 +204,3 @@ interface DiscreteIntValue : DiscreteValue<Int> { override fun getValue(context: Context, index: Int): Int = context.resources.getIntArray(values)[index] } /** Value is between a range. */ interface RangeValue : ValueDescriptor { /** The lower bound (inclusive) of the range. */ fun getMinValue(context: Context): Int /** The upper bound (inclusive) of the range. */ fun getMaxValue(context: Context): Int /** The increment step within the range. 0 means unset, which implies step size is 1. */ fun getIncrementStep(context: Context) = 0 override fun isValidValue(context: Context, index: Int) = index in getMinValue(context)..getMaxValue(context) } packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceTypes.kt +19 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.settingslib.metadata import android.content.Context import androidx.annotation.StringRes /** A persistent preference that has a boolean value. */ Loading @@ -30,6 +31,24 @@ interface FloatValuePreference : PersistentPreference<Float> { get() = Float::class.javaObjectType } /** A persistent preference that has a int value between a range. */ interface IntRangeValuePreference : PersistentPreference<Int>, ValueDescriptor { override val valueType: Class<Int> get() = Int::class.javaObjectType /** The lower bound (inclusive) of the range. */ fun getMinValue(context: Context): Int /** The upper bound (inclusive) of the range. */ fun getMaxValue(context: Context): Int /** The increment step within the range. 0 means unset, which implies step size is 1. */ fun getIncrementStep(context: Context) = 0 override fun isValidValue(context: Context, index: Int) = index in getMinValue(context)..getMaxValue(context) } /** A preference that provides a two-state toggleable option. */ open class SwitchPreference @JvmOverloads Loading packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceBinding.kt +2 −2 Original line number Diff line number Diff line Loading @@ -25,10 +25,10 @@ import androidx.preference.PreferenceScreen import androidx.preference.SeekBarPreference import com.android.settingslib.metadata.DiscreteIntValue import com.android.settingslib.metadata.DiscreteValue import com.android.settingslib.metadata.IntRangeValuePreference import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceMetadata import com.android.settingslib.metadata.PreferenceScreenMetadata import com.android.settingslib.metadata.RangeValue /** Binding of preference widget and preference metadata. */ interface PreferenceBinding { Loading Loading @@ -101,7 +101,7 @@ interface PreferenceBinding { } else { preference.setEntryValues(values) } } else if (preference is SeekBarPreference && this is RangeValue) { } else if (preference is SeekBarPreference && this is IntRangeValuePreference) { preference.min = getMinValue(context) preference.max = getMaxValue(context) preference.seekBarIncrement = getIncrementStep(context) Loading Loading
packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt +4 −6 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ 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.IntRangeValuePreference import com.android.settingslib.metadata.PersistentPreference import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceHierarchy Loading @@ -50,7 +51,6 @@ import com.android.settingslib.metadata.PreferenceScreenMetadata import com.android.settingslib.metadata.PreferenceScreenRegistry import com.android.settingslib.metadata.PreferenceSummaryProvider import com.android.settingslib.metadata.PreferenceTitleProvider import com.android.settingslib.metadata.RangeValue import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.preference.PreferenceScreenFactory import com.android.settingslib.preference.PreferenceScreenProvider Loading Loading @@ -407,22 +407,20 @@ fun PreferenceMetadata.toProto( ) { val storage = metadata.storage(context) value = preferenceValueProto { when (metadata) { is RangeValue -> storage.getInt(metadata.key)?.let { intValue = it } else -> {} } when (metadata.valueType) { Int::class.javaObjectType -> storage.getInt(metadata.key)?.let { intValue = it } Boolean::class.javaObjectType -> storage.getBoolean(metadata.key)?.let { booleanValue = it } Float::class.javaObjectType -> storage.getFloat(metadata.key)?.let { floatValue = it } else -> {} } } } if (flags.includeValueDescriptor()) { valueDescriptor = preferenceValueDescriptorProto { when (metadata) { is RangeValue -> rangeValue = rangeValueProto { is IntRangeValuePreference -> rangeValue = rangeValueProto { min = metadata.getMinValue(context) max = metadata.getMaxValue(context) step = metadata.getIncrementStep(context) Loading
packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt +5 −2 Original line number Diff line number Diff line Loading @@ -26,12 +26,12 @@ 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.IntRangeValuePreference import com.android.settingslib.metadata.PersistentPreference import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceMetadata import com.android.settingslib.metadata.PreferenceRestrictionProvider import com.android.settingslib.metadata.PreferenceScreenRegistry import com.android.settingslib.metadata.RangeValue import com.android.settingslib.metadata.ReadWritePermit import com.android.settingslib.metadata.SensitivityLevel.Companion.HIGH_SENSITIVITY import com.android.settingslib.metadata.SensitivityLevel.Companion.UNKNOWN_SENSITIVITY Loading Loading @@ -157,7 +157,10 @@ class PreferenceSetterApiHandler( val intValue = value.intValue val resultCode = metadata.checkWritePermit(intValue) if (resultCode != PreferenceSetterResult.OK) return resultCode if (metadata is RangeValue && !metadata.isValidValue(application, intValue)) { if ( metadata is IntRangeValuePreference && !metadata.isValidValue(application, intValue) ) { return PreferenceSetterResult.INVALID_REQUEST } storage.setInt(key, intValue) Loading
packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PersistentPreference.kt +1 −16 Original line number Diff line number Diff line Loading @@ -75,7 +75,7 @@ annotation class SensitivityLevel { } } /** Preference interface that has a value persisted in datastore. */ /** Preference metadata that has a value persisted in datastore. */ interface PersistentPreference<T> : PreferenceMetadata { /** Loading Loading @@ -204,18 +204,3 @@ interface DiscreteIntValue : DiscreteValue<Int> { override fun getValue(context: Context, index: Int): Int = context.resources.getIntArray(values)[index] } /** Value is between a range. */ interface RangeValue : ValueDescriptor { /** The lower bound (inclusive) of the range. */ fun getMinValue(context: Context): Int /** The upper bound (inclusive) of the range. */ fun getMaxValue(context: Context): Int /** The increment step within the range. 0 means unset, which implies step size is 1. */ fun getIncrementStep(context: Context) = 0 override fun isValidValue(context: Context, index: Int) = index in getMinValue(context)..getMaxValue(context) }
packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PreferenceTypes.kt +19 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.settingslib.metadata import android.content.Context import androidx.annotation.StringRes /** A persistent preference that has a boolean value. */ Loading @@ -30,6 +31,24 @@ interface FloatValuePreference : PersistentPreference<Float> { get() = Float::class.javaObjectType } /** A persistent preference that has a int value between a range. */ interface IntRangeValuePreference : PersistentPreference<Int>, ValueDescriptor { override val valueType: Class<Int> get() = Int::class.javaObjectType /** The lower bound (inclusive) of the range. */ fun getMinValue(context: Context): Int /** The upper bound (inclusive) of the range. */ fun getMaxValue(context: Context): Int /** The increment step within the range. 0 means unset, which implies step size is 1. */ fun getIncrementStep(context: Context) = 0 override fun isValidValue(context: Context, index: Int) = index in getMinValue(context)..getMaxValue(context) } /** A preference that provides a two-state toggleable option. */ open class SwitchPreference @JvmOverloads Loading
packages/SettingsLib/Preference/src/com/android/settingslib/preference/PreferenceBinding.kt +2 −2 Original line number Diff line number Diff line Loading @@ -25,10 +25,10 @@ import androidx.preference.PreferenceScreen import androidx.preference.SeekBarPreference import com.android.settingslib.metadata.DiscreteIntValue import com.android.settingslib.metadata.DiscreteValue import com.android.settingslib.metadata.IntRangeValuePreference import com.android.settingslib.metadata.PreferenceAvailabilityProvider import com.android.settingslib.metadata.PreferenceMetadata import com.android.settingslib.metadata.PreferenceScreenMetadata import com.android.settingslib.metadata.RangeValue /** Binding of preference widget and preference metadata. */ interface PreferenceBinding { Loading Loading @@ -101,7 +101,7 @@ interface PreferenceBinding { } else { preference.setEntryValues(values) } } else if (preference is SeekBarPreference && this is RangeValue) { } else if (preference is SeekBarPreference && this is IntRangeValuePreference) { preference.min = getMinValue(context) preference.max = getMaxValue(context) preference.seekBarIncrement = getIncrementStep(context) Loading