Loading packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/card/CardPageProvider.kt +35 −0 Original line number Diff line number Diff line Loading @@ -17,24 +17,32 @@ package com.android.settingslib.spa.gallery.card import android.os.Bundle import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Error import androidx.compose.material.icons.outlined.PowerOff import androidx.compose.material.icons.outlined.Shield import androidx.compose.material.icons.outlined.WarningAmber import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import com.android.settingslib.spa.framework.common.SettingsEntryBuilder import com.android.settingslib.spa.framework.common.SettingsPageProvider import com.android.settingslib.spa.framework.common.createSettingsPage import com.android.settingslib.spa.framework.compose.navigator import com.android.settingslib.spa.framework.theme.SettingsDimension import com.android.settingslib.spa.framework.theme.SettingsTheme import com.android.settingslib.spa.gallery.R import com.android.settingslib.spa.widget.card.CardButton import com.android.settingslib.spa.widget.card.CardModel import com.android.settingslib.spa.widget.card.SettingsCard import com.android.settingslib.spa.widget.card.SettingsCollapsibleCard import com.android.settingslib.spa.widget.card.SettingsCardContent import com.android.settingslib.spa.widget.preference.Preference import com.android.settingslib.spa.widget.preference.PreferenceModel import com.android.settingslib.spa.widget.scaffold.RegularScaffold Loading @@ -50,6 +58,7 @@ object CardPageProvider : SettingsPageProvider { SettingsCardWithIcon() SettingsCardWithoutIcon() SampleSettingsCollapsibleCard() SampleSettingsCardContent() } } Loading Loading @@ -108,6 +117,32 @@ object CardPageProvider : SettingsPageProvider { ) } @Composable fun SampleSettingsCardContent() { SettingsCard { SettingsCardContent { Box( Modifier .fillMaxWidth() .clickable { } .padding(SettingsDimension.dialogItemPadding), ) { Text(text = "Abc") } } SettingsCardContent { Box( Modifier .fillMaxWidth() .clickable { } .padding(SettingsDimension.dialogItemPadding), ) { Text(text = "123") } } } } fun buildInjectEntry(): SettingsEntryBuilder { return SettingsEntryBuilder.createInject(owner = createSettingsPage()) .setUiLayoutFn { Loading packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/theme/SettingsShape.kt +2 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.ui.unit.dp object SettingsShape { val CornerExtraSmall = RoundedCornerShape(4.dp) val CornerMedium = RoundedCornerShape(12.dp) val CornerExtraLarge = RoundedCornerShape(28.dp) Loading packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/SettingsCard.kt +28 −9 Original line number Diff line number Diff line Loading @@ -36,10 +36,13 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.unit.dp import com.android.settingslib.spa.debug.UiModePreviews import com.android.settingslib.spa.framework.theme.SettingsDimension import com.android.settingslib.spa.framework.theme.SettingsShape.CornerExtraLarge import com.android.settingslib.spa.framework.theme.SettingsShape.CornerExtraSmall import com.android.settingslib.spa.framework.theme.SettingsTheme import com.android.settingslib.spa.widget.ui.SettingsBody import com.android.settingslib.spa.widget.ui.SettingsTitle Loading @@ -49,7 +52,7 @@ fun SettingsCard(content: @Composable ColumnScope.() -> Unit) { Card( shape = CornerExtraLarge, colors = CardDefaults.cardColors( containerColor = SettingsTheme.colorScheme.surface, containerColor = Color.Transparent, ), modifier = Modifier .fillMaxWidth() Loading @@ -61,6 +64,20 @@ fun SettingsCard(content: @Composable ColumnScope.() -> Unit) { ) } @Composable fun SettingsCardContent(content: @Composable ColumnScope.() -> Unit) { Card( shape = CornerExtraSmall, colors = CardDefaults.cardColors( containerColor = SettingsTheme.colorScheme.surface, ), modifier = Modifier .fillMaxWidth() .padding(vertical = 1.dp), content = content, ) } @Composable fun SettingsCard(model: CardModel) { SettingsCard { Loading @@ -70,6 +87,7 @@ fun SettingsCard(model: CardModel) { @Composable internal fun SettingsCardImpl(model: CardModel) { SettingsCardContent { Column( modifier = Modifier.padding(SettingsDimension.itemPaddingStart), verticalArrangement = Arrangement.spacedBy(SettingsDimension.itemPaddingAround) Loading @@ -80,6 +98,7 @@ internal fun SettingsCardImpl(model: CardModel) { Buttons(model.buttons) } } } @Composable private fun CardIcon(imageVector: ImageVector?) { Loading packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/SettingsCollapsibleCard.kt +4 −7 Original line number Diff line number Diff line Loading @@ -30,7 +30,6 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Error import androidx.compose.material.icons.outlined.PowerOff import androidx.compose.material.icons.outlined.Shield import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface Loading @@ -54,18 +53,16 @@ import com.android.settingslib.spa.widget.ui.SettingsTitleSmall fun SettingsCollapsibleCard( title: String, imageVector: ImageVector, models: List<CardModel> models: List<CardModel>, ) { var expanded by rememberSaveable { mutableStateOf(false) } SettingsCard { SettingsCardContent { Header(title, imageVector, models.size, expanded) { expanded = it } } AnimatedVisibility(expanded) { Column { for (model in models) { HorizontalDivider( thickness = SettingsDimension.paddingSmall, color = MaterialTheme.colorScheme.surface, ) SettingsCardImpl(model) } } Loading Loading
packages/SettingsLib/Spa/gallery/src/com/android/settingslib/spa/gallery/card/CardPageProvider.kt +35 −0 Original line number Diff line number Diff line Loading @@ -17,24 +17,32 @@ package com.android.settingslib.spa.gallery.card import android.os.Bundle import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Error import androidx.compose.material.icons.outlined.PowerOff import androidx.compose.material.icons.outlined.Shield import androidx.compose.material.icons.outlined.WarningAmber import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import com.android.settingslib.spa.framework.common.SettingsEntryBuilder import com.android.settingslib.spa.framework.common.SettingsPageProvider import com.android.settingslib.spa.framework.common.createSettingsPage import com.android.settingslib.spa.framework.compose.navigator import com.android.settingslib.spa.framework.theme.SettingsDimension import com.android.settingslib.spa.framework.theme.SettingsTheme import com.android.settingslib.spa.gallery.R import com.android.settingslib.spa.widget.card.CardButton import com.android.settingslib.spa.widget.card.CardModel import com.android.settingslib.spa.widget.card.SettingsCard import com.android.settingslib.spa.widget.card.SettingsCollapsibleCard import com.android.settingslib.spa.widget.card.SettingsCardContent import com.android.settingslib.spa.widget.preference.Preference import com.android.settingslib.spa.widget.preference.PreferenceModel import com.android.settingslib.spa.widget.scaffold.RegularScaffold Loading @@ -50,6 +58,7 @@ object CardPageProvider : SettingsPageProvider { SettingsCardWithIcon() SettingsCardWithoutIcon() SampleSettingsCollapsibleCard() SampleSettingsCardContent() } } Loading Loading @@ -108,6 +117,32 @@ object CardPageProvider : SettingsPageProvider { ) } @Composable fun SampleSettingsCardContent() { SettingsCard { SettingsCardContent { Box( Modifier .fillMaxWidth() .clickable { } .padding(SettingsDimension.dialogItemPadding), ) { Text(text = "Abc") } } SettingsCardContent { Box( Modifier .fillMaxWidth() .clickable { } .padding(SettingsDimension.dialogItemPadding), ) { Text(text = "123") } } } } fun buildInjectEntry(): SettingsEntryBuilder { return SettingsEntryBuilder.createInject(owner = createSettingsPage()) .setUiLayoutFn { Loading
packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/framework/theme/SettingsShape.kt +2 −0 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.ui.unit.dp object SettingsShape { val CornerExtraSmall = RoundedCornerShape(4.dp) val CornerMedium = RoundedCornerShape(12.dp) val CornerExtraLarge = RoundedCornerShape(28.dp) Loading
packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/SettingsCard.kt +28 −9 Original line number Diff line number Diff line Loading @@ -36,10 +36,13 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.vector.ImageVector import androidx.compose.ui.unit.dp import com.android.settingslib.spa.debug.UiModePreviews import com.android.settingslib.spa.framework.theme.SettingsDimension import com.android.settingslib.spa.framework.theme.SettingsShape.CornerExtraLarge import com.android.settingslib.spa.framework.theme.SettingsShape.CornerExtraSmall import com.android.settingslib.spa.framework.theme.SettingsTheme import com.android.settingslib.spa.widget.ui.SettingsBody import com.android.settingslib.spa.widget.ui.SettingsTitle Loading @@ -49,7 +52,7 @@ fun SettingsCard(content: @Composable ColumnScope.() -> Unit) { Card( shape = CornerExtraLarge, colors = CardDefaults.cardColors( containerColor = SettingsTheme.colorScheme.surface, containerColor = Color.Transparent, ), modifier = Modifier .fillMaxWidth() Loading @@ -61,6 +64,20 @@ fun SettingsCard(content: @Composable ColumnScope.() -> Unit) { ) } @Composable fun SettingsCardContent(content: @Composable ColumnScope.() -> Unit) { Card( shape = CornerExtraSmall, colors = CardDefaults.cardColors( containerColor = SettingsTheme.colorScheme.surface, ), modifier = Modifier .fillMaxWidth() .padding(vertical = 1.dp), content = content, ) } @Composable fun SettingsCard(model: CardModel) { SettingsCard { Loading @@ -70,6 +87,7 @@ fun SettingsCard(model: CardModel) { @Composable internal fun SettingsCardImpl(model: CardModel) { SettingsCardContent { Column( modifier = Modifier.padding(SettingsDimension.itemPaddingStart), verticalArrangement = Arrangement.spacedBy(SettingsDimension.itemPaddingAround) Loading @@ -80,6 +98,7 @@ internal fun SettingsCardImpl(model: CardModel) { Buttons(model.buttons) } } } @Composable private fun CardIcon(imageVector: ImageVector?) { Loading
packages/SettingsLib/Spa/spa/src/com/android/settingslib/spa/widget/card/SettingsCollapsibleCard.kt +4 −7 Original line number Diff line number Diff line Loading @@ -30,7 +30,6 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.outlined.Error import androidx.compose.material.icons.outlined.PowerOff import androidx.compose.material.icons.outlined.Shield import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface Loading @@ -54,18 +53,16 @@ import com.android.settingslib.spa.widget.ui.SettingsTitleSmall fun SettingsCollapsibleCard( title: String, imageVector: ImageVector, models: List<CardModel> models: List<CardModel>, ) { var expanded by rememberSaveable { mutableStateOf(false) } SettingsCard { SettingsCardContent { Header(title, imageVector, models.size, expanded) { expanded = it } } AnimatedVisibility(expanded) { Column { for (model in models) { HorizontalDivider( thickness = SettingsDimension.paddingSmall, color = MaterialTheme.colorScheme.surface, ) SettingsCardImpl(model) } } Loading