summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Treehugger Robot <android-test-infra-autosubmit@system.gserviceaccount.com> 2024-12-18 17:05:42 -0800
committer Android (Google) Code Review <android-gerrit@google.com> 2024-12-18 17:05:42 -0800
commit26b95bf67b72fe3fd9a355101cc3e6c72b98d623 (patch)
treed0b0bb2697472576eb41d7b3401d8d2d818c0589
parentb11da57e4965d0d504d60c1c7bccf2bfbe270196 (diff)
parentd2e614e634a7b6e26a73cb260e3231175b8d9b89 (diff)
Merge "[Catalyst] Support float value type preference" into main
-rw-r--r--packages/SettingsLib/Graph/graph.proto2
-rw-r--r--packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceGraphBuilder.kt14
-rw-r--r--packages/SettingsLib/Graph/src/com/android/settingslib/graph/PreferenceSetterApi.kt6
-rw-r--r--packages/SettingsLib/Metadata/src/com/android/settingslib/metadata/PersistentPreference.kt3
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>