// BreakfastBeverage Example // Source code file: MainActivity.kt // Order your breakfast with this app. package it372.ssmith.breakfastbeverage import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll import androidx.compose.material3.Button import androidx.compose.material3.Checkbox import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.RadioButton import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) enableEdgeToEdge() setContent { MainLayout( ) } } } @Composable fun MainLayout( ) { // State variables var scrollState = rememberScrollState( ) var beverage by remember { mutableStateOf("coffee") } var temperature by remember { mutableStateOf("hot") } var cream by remember { mutableStateOf(false) } var sugar by remember { mutableStateOf(false) } var addons by remember { mutableStateOf("") } var display by remember { mutableStateOf("") } Column(modifier = Modifier .padding(all = 20.dp) .verticalScroll(scrollState), horizontalAlignment = Alignment.Start) { // Title Text(text = "Order Your Breakfast Beverage", modifier = Modifier.padding(all = 20.dp), fontSize = 20.sp) HorizontalDivider( modifier = Modifier.padding(vertical = 8.dp), thickness = 1.dp, color = Color.Black ) // Coffee radio button with Text label Row(verticalAlignment = Alignment.CenterVertically) { RadioButton(selected = beverage == "coffee", onClick = { beverage = "coffee" }) Text(text = "Coffee", fontSize = 15.sp) } // Tea radio button with Text label Row(verticalAlignment = Alignment.CenterVertically) { RadioButton(selected = beverage == "tea", onClick = { beverage = "tea" }) Text(text = "Tea", fontSize = 15.sp) } // Orange juice radio button with Text label Row(verticalAlignment = Alignment.CenterVertically) { RadioButton(selected = beverage == "oj", onClick = { beverage = "oj" }) Text(text = "Orange Juice", fontSize = 15.sp) } HorizontalDivider( modifier = Modifier.padding(vertical = 8.dp), thickness = 1.dp, color = Color.Black ) // Hot radio button with Text label Row(verticalAlignment = Alignment.CenterVertically) { RadioButton(selected = temperature == "hot", onClick = { temperature = "hot" }) Text(text = "Hot", fontSize = 15.sp) } // Cold radio button with Text label Row(verticalAlignment = Alignment.CenterVertically) { RadioButton(selected = temperature == "cold", onClick = { temperature = "cold" }) Text(text = "Cold", fontSize = 15.sp) } HorizontalDivider( modifier = Modifier.padding(vertical = 8.dp), thickness = 1.dp, color = Color.Black ) Row(verticalAlignment = Alignment.CenterVertically) { // Cream Checkbox Checkbox( checked = cream, onCheckedChange = { cream = it } ) Text(text = "Cream", fontSize = 15.sp) // Sugar checkbox. Checkbox( checked = sugar, onCheckedChange = { sugar = it } ) Text(text = "Sugar", fontSize = 15.sp) } HorizontalDivider( modifier = Modifier.padding(vertical = 8.dp), thickness = 1.dp, color = Color.Black ) Button(onClick = { addons = if (!cream && !sugar) "" else if (cream && !sugar) " with cream" else if (!cream && sugar) " with sugar" else " with cream and sugar" display = "You ordered $temperature " + "$beverage$addons." }, modifier = Modifier.padding(all = 20.dp)) { Text(text = "Place Order", fontSize = 20.sp) } Text(text = display, fontSize = 20.sp) } } @Preview(showBackground = true) @Composable fun MainLayoutPreview( ) { MainLayout( ) }