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

Commit 01f7df4f authored by Yuchen Sun's avatar Yuchen Sun Committed by Android (Google) Code Review
Browse files

Merge "[expressive design] Update Category layout." into main

parents 2905c331 fb1fc421
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -27,8 +27,8 @@ import com.android.settingslib.spa.framework.common.createSettingsPage
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.gallery.R
import com.android.settingslib.spa.gallery.SettingsPageProviderEnum
import com.android.settingslib.spa.gallery.button.ActionButtonPageProvider
import com.android.settingslib.spa.gallery.banner.BannerPageProvider
import com.android.settingslib.spa.gallery.button.ActionButtonPageProvider
import com.android.settingslib.spa.gallery.chart.ChartPageProvider
import com.android.settingslib.spa.gallery.dialog.DialogMainPageProvider
import com.android.settingslib.spa.gallery.editor.EditorMainPageProvider
+12 −14
Original line number Diff line number Diff line
@@ -31,7 +31,6 @@ import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spa.widget.preference.SimplePreferenceMacro
import com.android.settingslib.spa.widget.scaffold.RegularScaffold
import com.android.settingslib.spa.widget.ui.Category
import com.android.settingslib.spa.widget.ui.CategoryTitle

private const val TITLE = "Sample Category"

@@ -42,10 +41,12 @@ object CategoryPageProvider : SettingsPageProvider {
    fun buildInjectEntry(): SettingsEntryBuilder {
        return SettingsEntryBuilder.createInject(owner)
            .setUiLayoutFn {
                Preference(object : PreferenceModel {
                Preference(
                    object : PreferenceModel {
                        override val title = TITLE
                        override val onClick = navigator(name)
                })
                    }
                )
            }
            .setSearchDataFn { EntrySearchData(title = TITLE) }
    }
@@ -70,7 +71,6 @@ object CategoryPageProvider : SettingsPageProvider {
            SettingsEntryBuilder.create("Preference 3", owner)
                .setMacro { SimplePreferenceMacro(title = "Preference 2", summary = "Summary 3") }
                .build()

        )
        entryList.add(
            SettingsEntryBuilder.create("Preference 4", owner)
@@ -84,11 +84,11 @@ object CategoryPageProvider : SettingsPageProvider {
    override fun Page(arguments: Bundle?) {
        val entries = buildEntry(arguments)
        RegularScaffold(title = getTitle(arguments)) {
            CategoryTitle("Category A")
            Category("Category A") {
                entries[0].UiLayout()
                entries[1].UiLayout()

            Category("Category B") {
            }
            Category {
                entries[2].UiLayout()
                entries[3].UiLayout()
            }
@@ -99,7 +99,5 @@ object CategoryPageProvider : SettingsPageProvider {
@Preview(showBackground = true)
@Composable
private fun SpinnerPagePreview() {
    SettingsTheme {
        SpinnerPageProvider.Page(null)
    }
    SettingsTheme { CategoryPageProvider.Page(null) }
}
+3 −2
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ object SettingsDimension {
    val paddingExtraSmall = 4.dp
    val paddingSmall = if (isSpaExpressiveEnabled) 8.dp else 4.dp
    val paddingExtraSmall5 = 10.dp
    val paddingExtraSmall6 = 12.dp
    val paddingLarge = 16.dp
    val paddingExtraLarge = 24.dp

@@ -36,9 +37,9 @@ object SettingsDimension {

    val itemIconSize = 24.dp
    val itemIconContainerSize = 72.dp
    val itemPaddingStart = paddingExtraLarge
    val itemPaddingStart = if (isSpaExpressiveEnabled) paddingLarge else paddingExtraLarge
    val itemPaddingEnd = paddingLarge
    val itemPaddingVertical = paddingLarge
    val itemPaddingVertical = if (isSpaExpressiveEnabled) paddingExtraSmall6 else paddingLarge
    val itemPadding = PaddingValues(
        start = itemPaddingStart,
        top = itemPaddingVertical,
+2 −0
Original line number Diff line number Diff line
@@ -24,5 +24,7 @@ object SettingsShape {

    val CornerMedium = RoundedCornerShape(12.dp)

    val categoryCorner = RoundedCornerShape(20.dp)

    val CornerExtraLarge = RoundedCornerShape(28.dp)
}
+19 −18
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.settingslib.spa.widget.preference

import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row
@@ -25,16 +26,20 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.clip
import androidx.compose.ui.semantics.semantics
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.dp
import com.android.settingslib.spa.framework.theme.SettingsDimension
import com.android.settingslib.spa.framework.theme.SettingsOpacity.alphaForEnabled
import com.android.settingslib.spa.framework.theme.SettingsShape
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.framework.theme.isSpaExpressiveEnabled
import com.android.settingslib.spa.widget.ui.SettingsTitle

@Composable
@@ -51,9 +56,16 @@ internal fun BaseLayout(
    widget: @Composable () -> Unit = {},
) {
    Row(
        modifier = modifier
        modifier =
            modifier
                .fillMaxWidth()
                .semantics(mergeDescendants = true) {}
                .then(
                    if (isSpaExpressiveEnabled)
                        Modifier.clip(SettingsShape.CornerExtraSmall)
                            .background(MaterialTheme.colorScheme.surfaceBright)
                    else Modifier
                )
                .padding(end = paddingEnd),
        verticalAlignment = Alignment.CenterVertically,
    ) {
@@ -63,20 +75,14 @@ internal fun BaseLayout(
            title = title,
            titleContentDescription = titleContentDescription,
            subTitle = subTitle,
            modifier = alphaModifier
                .weight(1f)
                .padding(vertical = paddingVertical),
            modifier = alphaModifier.weight(1f).padding(vertical = paddingVertical),
        )
        widget()
    }
}

@Composable
internal fun BaseIcon(
    icon: @Composable (() -> Unit)?,
    modifier: Modifier,
    paddingStart: Dp,
) {
internal fun BaseIcon(icon: @Composable (() -> Unit)?, modifier: Modifier, paddingStart: Dp) {
    if (icon != null) {
        Box(
            modifier = modifier.size(SettingsDimension.itemIconContainerSize),
@@ -107,11 +113,6 @@ private fun Titles(
@Composable
private fun BaseLayoutPreview() {
    SettingsTheme {
        BaseLayout(
            title = "Title",
            subTitle = {
                HorizontalDivider(thickness = 10.dp)
            }
        )
        BaseLayout(title = "Title", subTitle = { HorizontalDivider(thickness = 10.dp) })
    }
}
Loading