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

Commit eb5eb854 authored by Pajace Chen's avatar Pajace Chen Committed by Android (Google) Code Review
Browse files

Merge "Make the SettingsCard clickable" into main

parents 529201f0 8ca4e9a8
Loading
Loading
Loading
Loading
+4 −2
Original line number Original line Diff line number Diff line
@@ -88,11 +88,13 @@ object CardPageProvider : SettingsPageProvider {


    @Composable
    @Composable
    private fun SettingsCardWithoutIcon() {
    private fun SettingsCardWithoutIcon() {
        val sampleTitle = stringResource(R.string.sample_title)
        var title by remember { mutableStateOf(sampleTitle) }
        SettingsCard(
        SettingsCard(
            CardModel(
            CardModel(
                title = stringResource(R.string.sample_title),
                title = title,
                text = stringResource(R.string.sample_text),
                text = stringResource(R.string.sample_text),
            )
            ) { title = "Clicked" }
        )
        )
    }
    }


+2 −0
Original line number Original line Diff line number Diff line
@@ -45,4 +45,6 @@ data class CardModel(


    /** If specified, this color will be used to tint the icon and the buttons. */
    /** If specified, this color will be used to tint the icon and the buttons. */
    val containerColor: Color = Color.Unspecified,
    val containerColor: Color = Color.Unspecified,

    val onClick: (() -> Unit)? = null,
)
)
+6 −4
Original line number Original line Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.settingslib.spa.widget.card
package com.android.settingslib.spa.widget.card


import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.AnimatedVisibility
import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.ColumnScope
@@ -102,7 +103,8 @@ internal fun SettingsCardImpl(model: CardModel) {
    AnimatedVisibility(visible = model.isVisible()) {
    AnimatedVisibility(visible = model.isVisible()) {
        SettingsCardContent(containerColor = model.containerColor) {
        SettingsCardContent(containerColor = model.containerColor) {
            Column(
            Column(
                modifier = Modifier.padding(
                modifier = (model.onClick?.let { Modifier.clickable(onClick = it) } ?: Modifier)
                    .padding(
                        horizontal = SettingsDimension.dialogItemPaddingHorizontal,
                        horizontal = SettingsDimension.dialogItemPaddingHorizontal,
                        vertical = SettingsDimension.itemPaddingAround,
                        vertical = SettingsDimension.itemPaddingAround,
                    ),
                    ),
+17 −0
Original line number Original line Diff line number Diff line
@@ -141,6 +141,23 @@ class SettingsCardTest {
        composeTestRule.onNodeWithText(TEXT).isNotDisplayed()
        composeTestRule.onNodeWithText(TEXT).isNotDisplayed()
    }
    }


    @Test
    fun settingsCard_clickable() {
        var clicked by mutableStateOf(false)
        composeTestRule.setContent {
            SettingsCard(
                CardModel(
                    title = TITLE,
                    text = "",
                ) { clicked = true }
            )
        }

        composeTestRule.onNodeWithText(TITLE).performClick()

        assertThat(clicked).isTrue()
    }

    private companion object {
    private companion object {
        const val TITLE = "Title"
        const val TITLE = "Title"
        const val TEXT = "Text"
        const val TEXT = "Text"