Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/card/CardPageProvider.kt +4 −2 Original line number Original line Diff line number Diff line Loading @@ -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" } ) ) } } Loading packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/CardModel.kt +2 −0 Original line number Original line Diff line number Diff line Loading @@ -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, ) ) packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/SettingsCard.kt +6 −4 Original line number Original line Diff line number Diff line Loading @@ -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 Loading Loading @@ -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, ), ), Loading packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/card/SettingsCardTest.kt +17 −0 Original line number Original line Diff line number Diff line Loading @@ -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" Loading Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/card/CardPageProvider.kt +4 −2 Original line number Original line Diff line number Diff line Loading @@ -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" } ) ) } } Loading
packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/CardModel.kt +2 −0 Original line number Original line Diff line number Diff line Loading @@ -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, ) )
packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/SettingsCard.kt +6 −4 Original line number Original line Diff line number Diff line Loading @@ -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 Loading Loading @@ -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, ), ), Loading
packages/SettingsLib/Spa/tests/src/com/android/settingslib/spa/widget/card/SettingsCardTest.kt +17 −0 Original line number Original line Diff line number Diff line Loading @@ -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" Loading