summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Charlotte Lu <charlottelu@google.com> 2023-09-21 11:20:36 +0800
committer Charlotte Lu <charlottelu@google.com> 2023-09-21 14:10:46 +0800
commit5df0081a2226a44c4cbb6953155d7914a1b28053 (patch)
tree4b1d8e0d12d47d444b3eeb571b4498dfe4c0b1a2
parentdc521ab3e88ca2fd923ad5aa6be50cefc09727ba (diff)
SettingsExposedDropdownMenuCheckBox requires input index.
Fix: 301354014 Test: Unit Test Change-Id: I4f5ef9a3cfcd0705687232b5e67da8007bf97aed
-rw-r--r--packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/editor/SettingsExposedDropdownMenuBoxPageProvider.kt6
-rw-r--r--packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuBox.kt12
-rw-r--r--packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuCheckBox.kt5
-rw-r--r--packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/editor/SettingsExposedDropdownMenuBoxTest.kt19
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()