diff options
| author | 2024-12-18 17:05:42 -0800 | |
|---|---|---|
| committer | 2024-12-18 17:05:42 -0800 | |
| commit | 26b95bf67b72fe3fd9a355101cc3e6c72b98d623 (patch) | |
| tree | d0b0bb2697472576eb41d7b3401d8d2d818c0589 | |
| parent | b11da57e4965d0d504d60c1c7bccf2bfbe270196 (diff) | |
| parent | d2e614e634a7b6e26a73cb260e3231175b8d9b89 (diff) | |
Merge "[Catalyst] Support float value type preference" into main
4 files changed, 18 insertions, 7 deletions
diff --git a/packages/SettingsLib/Graph/graph.proto b/packages/SettingsLib/Graph/graph.proto index f611793b619b..8457d6cd404f 100644 --- a/packages/SettingsLib/Graph/graph.proto +++ b/packages/SettingsLib/Graph/graph.proto @@ -108,6 +108,7 @@ message PreferenceValueProto { oneof value { bool boolean_value = 1; int32 int_value = 2; + float float_value = 3; } } @@ -116,6 +117,7 @@ message PreferenceValueDescriptorProto { oneof type { bool boolean_type = 1; RangeValueProto range_value = 2; + bool float_type = 3; } } diff --git a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt index eaa79266b194..d812fbe651e2 100644 --- a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt +++ b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt @@ -42,6 +42,7 @@ 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 import com.android.settingslib.metadata.PreferenceHierarchy @@ -399,15 +400,13 @@ fun PreferenceMetadata.toProto( metadata is PersistentPreference<*> && metadata.evalReadPermit(context, callingPid, callingUid) == ReadWritePermit.ALLOW ) { + val storage = metadata.storage(context) value = preferenceValueProto { when (metadata) { - is BooleanValue -> - metadata.storage(context).getBoolean(metadata.key)?.let { - booleanValue = it - } - is RangeValue -> { - metadata.storage(context).getInt(metadata.key)?.let { intValue = it } - } + 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 -> {} } } @@ -421,6 +420,7 @@ fun PreferenceMetadata.toProto( max = metadata.getMaxValue(context) step = metadata.getIncrementStep(context) } + is FloatPersistentPreference -> floatType = true else -> {} } } diff --git a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt index d72ba0805db3..83c430488317 100644 --- a/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt +++ b/packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt @@ -159,6 +159,12 @@ class PreferenceSetterApiHandler( } storage.setInt(key, intValue) return PreferenceSetterResult.OK + } else if (value.hasFloatValue()) { + val floatValue = value.floatValue + val resultCode = metadata.checkWritePermit(floatValue) + if (resultCode != PreferenceSetterResult.OK) return resultCode + storage.setFloat(key, floatValue) + return PreferenceSetterResult.OK } } catch (e: Exception) { return PreferenceSetterResult.INTERNAL_ERROR diff --git a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PersistentPreference.kt b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PersistentPreference.kt index d3a731688c24..3dd6c47833fd 100644 --- a/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PersistentPreference.kt +++ b/packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PersistentPreference.kt @@ -201,3 +201,6 @@ interface RangeValue : ValueDescriptor { override fun isValidValue(context: Context, index: Int) = index in getMinValue(context)..getMaxValue(context) } + +/** A persistent preference that has a float value. */ +interface FloatPersistentPreference : PersistentPreference<Float> |