From 5df0081a2226a44c4cbb6953155d7914a1b28053 Mon Sep 17 00:00:00 2001 From: Charlotte Lu <charlottelu@google.com> Date: Thu, 21 Sep 2023 11:20:36 +0800 Subject: [PATCH] SettingsExposedDropdownMenuCheckBox requires input index. Fix: 301354014 Test: Unit Test Change-Id: I4f5ef9a3cfcd0705687232b5e67da8007bf97aed --- ...tingsExposedDropdownMenuBoxPageProvider.kt | 6 +++--- .../editor/SettingsExposedDropdownMenuBox.kt | 12 ++++++------ .../SettingsExposedDropdownMenuCheckBox.kt | 5 +++-- .../SettingsExposedDropdownMenuBoxTest.kt | 19 ++++++++++--------- 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() -- GitLab