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

Commit a977d129 authored by Chaohui Wang's avatar Chaohui Wang Committed by Android (Google) Code Review
Browse files

Merge "[Spa] Make the SuwScaffold content movable" into main

parents b4bfaed3 5401651f
Loading
Loading
Loading
Loading
+12 −7
Original line number Diff line number Diff line
@@ -22,6 +22,10 @@ import androidx.compose.foundation.layout.padding
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.outlined.SignalCellularAlt
import androidx.compose.runtime.Composable
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.Modifier
import com.android.settingslib.spa.framework.common.SettingsEntryBuilder
import com.android.settingslib.spa.framework.common.SettingsPageProvider
@@ -37,6 +41,8 @@ import com.android.settingslib.spa.widget.preference.PreferenceModel
import com.android.settingslib.spa.widget.scaffold.BottomAppBarButton
import com.android.settingslib.spa.widget.scaffold.SuwScaffold
import com.android.settingslib.spa.widget.ui.SettingsBody
import com.android.settingslib.spa.widget.ui.Spinner
import com.android.settingslib.spa.widget.ui.SpinnerOption

private const val TITLE = "Sample SuwScaffold"

@@ -67,13 +73,12 @@ private fun Page() {
        actionButton = BottomAppBarButton("Next") {},
        dismissButton = BottomAppBarButton("Cancel") {},
    ) {
        Column(Modifier.padding(SettingsDimension.itemPadding)) {
            SettingsBody("To add another SIM, download a new eSIM.")
        }
        Illustration(object : IllustrationModel {
            override val resId = R.drawable.accessibility_captioning_banner
            override val resourceType = ResourceType.IMAGE
        })
        var selectedId by rememberSaveable { mutableIntStateOf(1) }
        Spinner(
            options = (1..3).map { SpinnerOption(id = it, text = "Option $it") },
            selectedId = selectedId,
            setId = { selectedId = it },
        )
        Column(Modifier.padding(SettingsDimension.itemPadding)) {
            SettingsBody("To add another SIM, download a new eSIM.")
        }
+8 −5
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ package com.android.settingslib.spa.widget.scaffold
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.BoxWithConstraints
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.ColumnScope
import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.padding
@@ -33,6 +32,8 @@ import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.TextButton
import androidx.compose.runtime.Composable
import androidx.compose.runtime.movableContentOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import com.android.settingslib.spa.framework.theme.SettingsDimension
@@ -50,7 +51,7 @@ fun SuwScaffold(
    title: String,
    actionButton: BottomAppBarButton? = null,
    dismissButton: BottomAppBarButton? = null,
    content: @Composable ColumnScope.() -> Unit,
    content: @Composable () -> Unit,
) {
    ActivityTitle(title)
    Scaffold { innerPadding ->
@@ -59,6 +60,7 @@ fun SuwScaffold(
                .padding(innerPadding)
                .padding(top = SettingsDimension.itemPaddingAround)
        ) {
            val movableContent = remember(content) { movableContentOf { content() } }
            // Use single column layout in portrait, two columns in landscape.
            val useSingleColumn = maxWidth < maxHeight
            if (useSingleColumn) {
@@ -69,7 +71,7 @@ fun SuwScaffold(
                            .verticalScroll(rememberScrollState())
                    ) {
                        Header(imageVector, title)
                        content()
                        movableContent()
                    }
                    BottomBar(actionButton, dismissButton)
                }
@@ -82,8 +84,9 @@ fun SuwScaffold(
                        Column(
                            Modifier
                                .weight(1f)
                                .verticalScroll(rememberScrollState())) {
                            content()
                                .verticalScroll(rememberScrollState())
                        ) {
                            movableContent()
                        }
                    }
                    BottomBar(actionButton, dismissButton)