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

Commit 5acef816 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "[expressive design] Create SuggestionCard." into main

parents 4f5cbed3 61f1e4ba
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -23,6 +23,7 @@ import com.android.settingslib.spa.framework.common.SpaEnvironment
import com.android.settingslib.spa.framework.common.createSettingsPage
import com.android.settingslib.spa.gallery.button.ActionButtonPageProvider
import com.android.settingslib.spa.gallery.banner.BannerPageProvider
import com.android.settingslib.spa.gallery.card.CardPageProvider
import com.android.settingslib.spa.gallery.chart.ChartPageProvider
import com.android.settingslib.spa.gallery.dialog.DialogMainPageProvider
import com.android.settingslib.spa.gallery.dialog.NavDialogProvider
@@ -109,6 +110,7 @@ class GallerySpaEnvironment(context: Context) : SpaEnvironment(context) {
                TopIntroPreferencePageProvider,
                CheckBoxPreferencePageProvider,
                TwoTargetButtonPreferencePageProvider,
                CardPageProvider,
            ),
            rootPages = listOf(
                HomePageProvider.createSettingsPage(),
+104 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settingslib.spa.gallery.card

import android.os.Bundle
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.Stars
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.tooling.preview.Preview
import com.android.settingslib.spa.framework.common.SettingsPageProvider
import com.android.settingslib.spa.framework.compose.navigator
import com.android.settingslib.spa.framework.theme.SettingsTheme
import com.android.settingslib.spa.widget.card.SuggestionCard
import com.android.settingslib.spa.widget.card.SuggestionCardModel
import com.android.settingslib.spa.widget.preference.Preference
import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spa.widget.scaffold.RegularScaffold

object CardPageProvider : SettingsPageProvider {
    override val name = "Card"

    override fun getTitle(arguments: Bundle?) = TITLE

    @Composable
    override fun Page(arguments: Bundle?) {
        RegularScaffold(title = TITLE) {
            SuggestionCard()
            SuggestionCardWithLongTitle()
            SuggestionCardDismissible()
        }
    }

    @Composable
    private fun SuggestionCard() {
        SuggestionCard(
            SuggestionCardModel(
                title = "Suggestion card",
                description = "Suggestion card description",
                imageVector = Icons.Filled.Stars,
            )
        )
    }

    @Composable
    private fun SuggestionCardWithLongTitle() {
        SuggestionCard(
            SuggestionCardModel(
                title = "Top level suggestion card with a really, really long title",
                imageVector = Icons.Filled.Stars,
                onClick = {},
            )
        )
    }

    @Composable
    private fun SuggestionCardDismissible() {
        var isVisible by rememberSaveable { mutableStateOf(true) }
        SuggestionCard(
            SuggestionCardModel(
                title = "Suggestion card",
                description = "Suggestion card description",
                imageVector = Icons.Filled.Stars,
                onDismiss = { isVisible = false },
                isVisible = isVisible,
            )
        )
    }

    @Composable
    fun Entry() {
        Preference(
            object : PreferenceModel {
                override val title = TITLE
                override val onClick = navigator(name)
            }
        )
    }

    private const val TITLE = "Sample Card"
}

@Preview
@Composable
private fun CardPagePreview() {
    SettingsTheme { CardPageProvider.Page(null) }
}
+2 −0
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import com.android.settingslib.spa.gallery.R
import com.android.settingslib.spa.gallery.SettingsPageProviderEnum
import com.android.settingslib.spa.gallery.banner.BannerPageProvider
import com.android.settingslib.spa.gallery.button.ActionButtonPageProvider
import com.android.settingslib.spa.gallery.card.CardPageProvider
import com.android.settingslib.spa.gallery.chart.ChartPageProvider
import com.android.settingslib.spa.gallery.dialog.DialogMainPageProvider
import com.android.settingslib.spa.gallery.editor.EditorMainPageProvider
@@ -80,6 +81,7 @@ object HomePageProvider : SettingsPageProvider {
                DialogMainPageProvider.Entry()
                EditorMainPageProvider.Entry()
                BannerPageProvider.Entry()
                CardPageProvider.Entry()
                CopyablePageProvider.Entry()
            }
        }
+1 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@ object SettingsDimension {
    val actionIconPadding = 4.dp

    val itemIconSize = 24.dp
    val itemIconContainerSizeSmall = 40.dp
    val itemIconContainerSize = 72.dp
    val itemPaddingStart = if (isSpaExpressiveEnabled) paddingLarge else paddingExtraLarge
    val itemPaddingEnd = paddingLarge
+2 −0
Original line number Diff line number Diff line
@@ -29,4 +29,6 @@ object SettingsShape {
    val CornerLarge = RoundedCornerShape(24.dp)

    val CornerExtraLarge = RoundedCornerShape(28.dp)

    val CornerExtraLarge1 = RoundedCornerShape(40.dp)
}
Loading