diff options
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 |