Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5df0081a authored by Charlotte Lu's avatar Charlotte Lu
Browse files

SettingsExposedDropdownMenuCheckBox requires input index.

Fix: 301354014
Test: Unit Test
Change-Id: I4f5ef9a3cfcd0705687232b5e67da8007bf97aed
parent dc521ab3
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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 })
        }
+6 −6
Original line number Diff line number Diff line
@@ -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 = {})
    }
+3 −2
Original line number Diff line number Diff line
@@ -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,
+10 −9
Original line number Diff line number Diff line
@@ -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,11 +41,11 @@ 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 })
        }
@@ -55,11 +56,11 @@ 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 })
        }
@@ -74,11 +75,11 @@ 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 })
        }