diff options
| author | 2023-09-21 11:20:36 +0800 | |
|---|---|---|
| committer | 2023-09-21 14:10:46 +0800 | |
| commit | 5df0081a2226a44c4cbb6953155d7914a1b28053 (patch) | |
| tree | 4b1d8e0d12d47d444b3eeb571b4498dfe4c0b1a2 | |
| parent | dc521ab3e88ca2fd923ad5aa6be50cefc09727ba (diff) | |
SettingsExposedDropdownMenuCheckBox requires input index.
Fix: 301354014
Test: Unit Test
Change-Id: I4f5ef9a3cfcd0705687232b5e67da8007bf97aed
4 files changed, 22 insertions, 20 deletions
diff --git a/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/editor/SettingsExposedDropdownMenuBoxPageProvider.kt b/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/editor/SettingsExposedDropdownMenuBoxPageProvider.kt index 6d22e6abf7e3..5ffbe8ba8a26 100644 --- a/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/editor/SettingsExposedDropdownMenuBoxPageProvider.kt +++ b/packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/editor/SettingsExposedDropdownMenuBoxPageProvider.kt @@ -19,7 +19,7 @@ package com.android.settingslib.spa.gallery.editor import android.os.Bundle import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.tooling.preview.Preview @@ -45,13 +45,13 @@ object SettingsExposedDropdownMenuBoxPageProvider : SettingsPageProvider { @Composable override fun Page(arguments: Bundle?) { - var selectedItem by remember { mutableStateOf("item1") } + var selectedItem by remember { mutableIntStateOf(-1) } val options = listOf("item1", "item2", "item3") RegularScaffold(title = TITLE) { SettingsExposedDropdownMenuBox( label = exposedDropdownMenuBoxLabel, options = options, - selectedOptionText = selectedItem, + selectedOptionIndex = selectedItem, enabled = true, onselectedOptionTextChange = { selectedItem = it }) } diff --git a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuBox.kt b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuBox.kt index ec43aab66ee0..0d6c064998ae 100644 --- a/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuBox.kt +++ b/packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuBox.kt @@ -41,9 +41,9 @@ import com.android.settingslib.spa.framework.theme.SettingsTheme fun SettingsExposedDropdownMenuBox( label: String, options: List<String>, - selectedOptionText: String, + selectedOptionIndex: Int, enabled: Boolean, - onselectedOptionTextChange: (String) -> Unit, + onselectedOptionTextChange: (Int) -> Unit, ) { var expanded by remember { mutableStateOf(false) } ExposedDropdownMenuBox( @@ -58,8 +58,8 @@ fun SettingsExposedDropdownMenuBox( modifier = Modifier .menuAnchor() .fillMaxWidth(), - value = selectedOptionText, - onValueChange = onselectedOptionTextChange, + value = options.getOrElse(selectedOptionIndex) { "" }, + onValueChange = { }, label = { Text(text = label) }, trailingIcon = { ExposedDropdownMenuDefaults.TrailingIcon( @@ -81,7 +81,7 @@ fun SettingsExposedDropdownMenuBox( DropdownMenuItem( text = { Text(option) }, onClick = { - onselectedOptionTextChange(option) + onselectedOptionTextChange(options.indexOf(option)) expanded = false }, contentPadding = ExposedDropdownMenuDefaults.ItemContentPadding, @@ -103,7 +103,7 @@ private fun SettingsExposedDropdownMenuBoxsPreview() { SettingsExposedDropdownMenuBox( label = "ExposedDropdownMenuBoxLabel", options = options, - selectedOptionText = item1, + selectedOptionIndex = 0, enabled = true, onselectedOptionTextChange = {}) } 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 32600943ac80..a25818553c05 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 @@ -31,6 +31,7 @@ import androidx.compose.material3.Text import androidx.compose.material3.TextButton import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateListOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -54,7 +55,7 @@ fun SettingsExposedDropdownMenuCheckBox( enabled: Boolean, onSelectedOptionStateChange: () -> Unit, ) { - var dropDownWidth by remember { mutableStateOf(0) } + var dropDownWidth by remember { mutableIntStateOf(0) } var expanded by remember { mutableStateOf(false) } ExposedDropdownMenuBox( expanded = expanded, @@ -104,7 +105,7 @@ fun SettingsExposedDropdownMenuCheckBox( ) } onSelectedOptionStateChange() - }) { + }) { Row( modifier = Modifier .fillMaxHeight() diff --git a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuBoxTest.kt b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuBoxTest.kt index 09f59457b32d..bc67e4c61ea5 100644 --- a/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuBoxTest.kt +++ b/packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuBoxTest.kt @@ -17,6 +17,7 @@ package com.android.settingslib.spa.widget.editor import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue @@ -40,13 +41,13 @@ class SettingsExposedDropdownMenuBoxTest { @Test fun exposedDropdownMenuBoxs_displayed() { composeTestRule.setContent { - var selectedItem by remember { mutableStateOf("item1") } + var selectedItem by remember { mutableStateOf(0) } SettingsExposedDropdownMenuBox( label = exposedDropdownMenuBoxLabel, options = options, - selectedOptionText = selectedItem, + selectedOptionIndex = selectedItem, enabled = true, - onselectedOptionTextChange = {selectedItem = it}) + onselectedOptionTextChange = { selectedItem = it }) } composeTestRule.onNodeWithText(exposedDropdownMenuBoxLabel, substring = true) .assertIsDisplayed() @@ -55,13 +56,13 @@ class SettingsExposedDropdownMenuBoxTest { @Test fun exposedDropdownMenuBoxs_expanded() { composeTestRule.setContent { - var selectedItem by remember { mutableStateOf("item1") } + var selectedItem by remember { mutableIntStateOf(0) } SettingsExposedDropdownMenuBox( label = exposedDropdownMenuBoxLabel, options = options, - selectedOptionText = selectedItem, + selectedOptionIndex = selectedItem, enabled = true, - onselectedOptionTextChange = {selectedItem = it}) + onselectedOptionTextChange = { selectedItem = it }) } composeTestRule.onNodeWithText(item2, substring = true) .assertDoesNotExist() @@ -74,13 +75,13 @@ class SettingsExposedDropdownMenuBoxTest { @Test fun exposedDropdownMenuBoxs_valueChanged() { composeTestRule.setContent { - var selectedItem by remember { mutableStateOf("item1") } + var selectedItem by remember { mutableIntStateOf(0) } SettingsExposedDropdownMenuBox( label = exposedDropdownMenuBoxLabel, options = options, - selectedOptionText = selectedItem, + selectedOptionIndex = selectedItem, enabled = true, - onselectedOptionTextChange = {selectedItem = it}) + onselectedOptionTextChange = { selectedItem = it }) } composeTestRule.onNodeWithText(item2, substring = true) .assertDoesNotExist() |