summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/editor/SettingsExposedDropdownMenuCheckBoxProvider.kt2
-rw-r--r--packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuCheckBox.kt18
-rw-r--r--packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuCheckBoxTest.kt2
3 files changed, 12 insertions, 10 deletions
diff --git a/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/editor/SettingsExposedDropdownMenuCheckBoxProvider.kt b/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/editor/SettingsExposedDropdownMenuCheckBoxProvider.kt
index 37c8eef8a90d..d28964676bdd 100644
--- a/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/editor/SettingsExposedDropdownMenuCheckBoxProvider.kt
+++ b/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/editor/SettingsExposedDropdownMenuCheckBoxProvider.kt
@@ -37,7 +37,7 @@ object SettingsExposedDropdownMenuCheckBoxProvider : SettingsPageProvider {
override val name = "SettingsExposedDropdownMenuCheckBox"
private const val exposedDropdownMenuCheckBoxLabel = "ExposedDropdownMenuCheckBoxLabel"
private val options = listOf("item1", "item2", "item3")
- private val selectedOptionsState1 = mutableStateListOf("item1", "item2")
+ private val selectedOptionsState1 = mutableStateListOf(0, 1)
override fun getTitle(arguments: Bundle?): String {
return TITLE
diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuCheckBox.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuCheckBox.kt
index a25818553c05..5d248e192c7a 100644
--- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuCheckBox.kt
+++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuCheckBox.kt
@@ -51,7 +51,8 @@ import com.android.settingslib.spa.framework.theme.SettingsTheme
fun SettingsExposedDropdownMenuCheckBox(
label: String,
options: List<String>,
- selectedOptionsState: SnapshotStateList<String>,
+ selectedOptionsState: SnapshotStateList<Int>,
+ emptyVal: String = "",
enabled: Boolean,
onSelectedOptionStateChange: () -> Unit,
) {
@@ -70,7 +71,8 @@ fun SettingsExposedDropdownMenuCheckBox(
modifier = Modifier
.menuAnchor()
.fillMaxWidth(),
- value = selectedOptionsState.joinToString(", "),
+ value = if (selectedOptionsState.size == 0) emptyVal
+ else selectedOptionsState.joinToString { options[it] },
onValueChange = {},
label = { Text(text = label) },
trailingIcon = {
@@ -89,19 +91,19 @@ fun SettingsExposedDropdownMenuCheckBox(
.width(with(LocalDensity.current) { dropDownWidth.toDp() }),
onDismissRequest = { expanded = false },
) {
- options.forEach { option ->
+ options.forEachIndexed { index, option ->
TextButton(
modifier = Modifier
.fillMaxHeight()
.fillMaxWidth(),
onClick = {
- if (selectedOptionsState.contains(option)) {
+ if (selectedOptionsState.contains(index)) {
selectedOptionsState.remove(
- option
+ index
)
} else {
selectedOptionsState.add(
- option
+ index
)
}
onSelectedOptionStateChange()
@@ -114,7 +116,7 @@ fun SettingsExposedDropdownMenuCheckBox(
verticalAlignment = Alignment.CenterVertically
) {
Checkbox(
- checked = selectedOptionsState.contains(option),
+ checked = selectedOptionsState.contains(index),
onCheckedChange = null,
)
Text(text = option)
@@ -130,7 +132,7 @@ fun SettingsExposedDropdownMenuCheckBox(
@Composable
private fun ActionButtonsPreview() {
val options = listOf("item1", "item2", "item3")
- val selectedOptionsState = remember { mutableStateListOf("item1", "item2") }
+ val selectedOptionsState = remember { mutableStateListOf(0, 1) }
SettingsTheme {
SettingsExposedDropdownMenuCheckBox(
label = "label",
diff --git a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuCheckBoxTest.kt b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuCheckBoxTest.kt
index b0271ae1d98c..2b78ed7d6fa2 100644
--- a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuCheckBoxTest.kt
+++ b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuCheckBoxTest.kt
@@ -39,7 +39,7 @@ class SettingsExposedDropdownMenuCheckBoxTest {
private val item2 = "item2"
private val item3 = "item3"
private val options = listOf(item1, item2, item3)
- private val selectedOptionsState1 = mutableStateListOf(item1, item2)
+ private val selectedOptionsState1 = mutableStateListOf(0, 1)
private val exposedDropdownMenuCheckBoxLabel = "ExposedDropdownMenuCheckBoxLabel"
@Test