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

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

Merge "[Spa] Polish SettingsAlertDialog" into main

parents 3ec4b3e3 6e8f8f93
Loading
Loading
Loading
Loading
+1 −10
Original line number Diff line number Diff line
@@ -16,11 +16,8 @@

package com.android.settingslib.spa.gallery

import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.text.style.TextAlign
import com.android.settingslib.spa.SpaBaseDialogActivity
import com.android.settingslib.spa.widget.dialog.AlertDialogButton
import com.android.settingslib.spa.widget.dialog.SettingsAlertDialogWithIcon
@@ -33,13 +30,7 @@ class GalleryDialogActivity : SpaBaseDialogActivity() {
            confirmButton = AlertDialogButton("confirm") { finish() },
            dismissButton = AlertDialogButton("dismiss") { finish() },
            title = "title",
            text = {
                Text(
                    "text",
                    modifier = Modifier.fillMaxWidth(),
                    textAlign = TextAlign.Center
                )
            }
            text = { Text("text") },
        )
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import androidx.compose.ui.unit.dp

object SettingsSize {
    val small2 = 20.dp
    val medium1 = 32.dp
    val medium3 = 40.dp
    val medium4 = 48.dp
    val large2 = 64.dp
+12 −14
Original line number Diff line number Diff line
@@ -100,20 +100,8 @@ private fun AlertDialogPresenter.SettingsAlertDialog(
            dismissButton?.let {
                { if (isSpaExpressiveEnabled) DismissButton(it) else Button(it) }
            },
        title =
            title?.let {
                {
                    if (isSpaExpressiveEnabled)
                        Text(it, style = MaterialTheme.typography.bodyLarge)
                    else CenterRow {
                        Text(it)
                    }
                }
            },
        text =
            text?.let {
                { CenterRow { Column(Modifier.verticalScroll(rememberScrollState())) { text() } } }
            },
        title = title?.let { { SettingsAlertDialogTitle(it) } },
        text = text?.let { { SettingsAlertDialogText(it) } },
        properties = DialogProperties(usePlatformDefaultWidth = false),
    )
}
@@ -139,6 +127,16 @@ fun getDialogWidth(): Dp {
            }
}

@Composable
internal fun SettingsAlertDialogTitle(title: String) {
    Text(text = title, style = MaterialTheme.typography.headlineSmall)
}

@Composable
internal fun SettingsAlertDialogText(text: @Composable (() -> Unit)) {
    Column(Modifier.verticalScroll(rememberScrollState())) { text() }
}

@Composable
private fun AlertDialogPresenter.Button(button: AlertDialogButton) {
    TextButton(
+25 −28
Original line number Diff line number Diff line
@@ -16,22 +16,20 @@

package com.android.settingslib.spa.widget.dialog

import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.layout.width
import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.material.icons.Icons
import androidx.compose.material.icons.filled.WarningAmber
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button
import androidx.compose.material3.Icon
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.OutlinedButton
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.vector.ImageVector
import androidx.compose.ui.window.DialogProperties
import com.android.settingslib.spa.framework.theme.isSpaExpressiveEnabled
import com.android.settingslib.spa.framework.theme.SettingsSize

@Composable
fun SettingsAlertDialogWithIcon(
@@ -39,34 +37,33 @@ fun SettingsAlertDialogWithIcon(
    confirmButton: AlertDialogButton?,
    dismissButton: AlertDialogButton?,
    title: String?,
    icon: @Composable (() -> Unit)? = {
        Icon(Icons.Default.WarningAmber, contentDescription = null)
    },
    icon: ImageVector = Icons.Default.WarningAmber,
    text: @Composable (() -> Unit)?,
) {
    AlertDialog(
        onDismissRequest = onDismissRequest,
        icon = icon,
        modifier = Modifier.width(getDialogWidth()),
        confirmButton = {
            confirmButton?.let { Button(onClick = { it.onClick() }) { Text(it.text) } }
        },
        dismissButton =
            dismissButton?.let { { OutlinedButton(onClick = { it.onClick() }) { Text(it.text) } } },
        title =
            title?.let {
                {
                    CenterRow {
                        if (isSpaExpressiveEnabled)
                            Text(it, style = MaterialTheme.typography.bodyLarge)
                        else Text(it)
                    }
                }
            },
        text =
            text?.let {
                { CenterRow { Column(Modifier.verticalScroll(rememberScrollState())) { text() } } }
        icon = {
            Icon(
                imageVector = icon,
                contentDescription = null,
                modifier = Modifier.size(SettingsSize.medium1),
            )
        },
        modifier = Modifier.width(getDialogWidth()),
        confirmButton = { confirmButton?.let { Button(it) } },
        dismissButton = dismissButton?.let { { OutlinedButton(it) } },
        title = title?.let { { CenterRow { SettingsAlertDialogTitle(it) } } },
        text = text?.let { { SettingsAlertDialogText(text) } },
        properties = DialogProperties(usePlatformDefaultWidth = false),
    )
}

@Composable
private fun Button(button: AlertDialogButton) {
    Button(onClick = { button.onClick() }) { Text(button.text) }
}

@Composable
private fun OutlinedButton(button: AlertDialogButton) {
    OutlinedButton(onClick = { button.onClick() }) { Text(button.text) }
}