/* * Copyright (C) 2025 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.privatespace import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.material3.BasicAlertDialog import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.window.DialogProperties /** * Based on {@link androidx.compose.material3.AlertDialog} but with three buttons instead of only up * to two. */ @OptIn(ExperimentalMaterial3Api::class, ExperimentalLayoutApi::class) @Composable fun ThreeButtonAlertDialog( onDismissRequest: () -> Unit, title: String, message: String, primaryButton: @Composable () -> Unit, secondaryButton: @Composable () -> Unit, dismissButton: @Composable () -> Unit, ) { BasicAlertDialog( onDismissRequest = { onDismissRequest() }, properties = DialogProperties( dismissOnBackPress = true, dismissOnClickOutside = true, usePlatformDefaultWidth = false, ), ) { Surface( shape = MaterialTheme.shapes.extraLarge, tonalElevation = 5.dp, modifier = Modifier.padding(horizontal = 24.dp), ) { Column(modifier = Modifier.padding(24.dp)) { Text( text = title, style = MaterialTheme.typography.headlineSmall, modifier = Modifier.align(Alignment.CenterHorizontally), ) Spacer(modifier = Modifier.height(16.dp)) Text( text = message, style = MaterialTheme.typography.bodyMedium, modifier = Modifier.align(Alignment.CenterHorizontally), textAlign = TextAlign.Center, ) Spacer(modifier = Modifier.height(24.dp)) FlowRow( modifier = Modifier.fillMaxWidth(), verticalArrangement = Arrangement.spacedBy(10.dp), horizontalArrangement = Arrangement.End, ) { dismissButton() Spacer(modifier = Modifier.weight(1.0f)) secondaryButton() primaryButton() } } } } }