Support IntRange of value in PrefService

Bug: 384955673
Test: unit test
Flag: com.android.settingslib.flags.settings_catalyst
Change-Id: I0d5f67541ee48d758fc8fd0e38fe4c348127017c
This commit is contained in:
Chris Antol
2024-12-19 18:28:34 +00:00
parent 27bf7fc326
commit 6877d115e5
2 changed files with 33 additions and 0 deletions

View File

@@ -17,6 +17,7 @@
package com.android.settings.service
import android.content.Context
import android.os.Bundle
import android.service.settings.preferences.GetValueRequest
import android.service.settings.preferences.GetValueResult
import android.service.settings.preferences.MetadataResult
@@ -186,6 +187,11 @@ private data class PreferenceWithScreen(
val preference: PreferenceProto,
)
private const val KEY_INT_RANGE = "key_int_range"
private const val KEY_MIN = "key_min"
private const val KEY_MAX = "key_max"
private const val KEY_STEP = "key_step"
private fun PreferenceProto.toMetadata(
context: Context,
screenKey: String
@@ -196,6 +202,18 @@ private fun PreferenceProto.toMetadata(
SensitivityLevel.MEDIUM_SENSITIVITY -> SettingsPreferenceMetadata.DEEPLINK_ONLY
else -> SettingsPreferenceMetadata.NO_DIRECT_ACCESS
}
val extras = Bundle()
if (valueDescriptor.hasRangeValue()
&& valueDescriptor.rangeValue.hasMin()
&& valueDescriptor.rangeValue.hasMax()) {
val intRange = Bundle()
intRange.putInt(KEY_MIN, valueDescriptor.rangeValue.min)
intRange.putInt(KEY_MAX, valueDescriptor.rangeValue.max)
if (valueDescriptor.rangeValue.hasStep()) {
intRange.putInt(KEY_STEP, valueDescriptor.rangeValue.step)
}
extras.putBundle(KEY_INT_RANGE, intRange)
}
return SettingsPreferenceMetadata.Builder(screenKey, key)
.setTitle(title.getText(context))
.setSummary(summary.getText(context))
@@ -208,5 +226,6 @@ private fun PreferenceProto.toMetadata(
// Returns all the permissions that are used, some of which are exclusive (e.g. p1 or p2)
.setReadPermissions(readPermissions.getAllPermissions())
.setWritePermissions(writePermissions.getAllPermissions())
.setExtras(extras)
.build()
}