package com.example.snapandsolve import android.app.Application import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.offset import androidx.compose.foundation.layout.padding import androidx.compose.foundation.shape.CornerSize import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Menu import androidx.compose.material3.BottomAppBar import androidx.compose.material3.Button import androidx.compose.material3.ButtonColors import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Card import androidx.compose.material3.CardColors import androidx.compose.material3.CardDefaults import androidx.compose.material3.CenterAlignedTopAppBar import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FabPosition import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.FloatingActionButtonDefaults import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.LargeFloatingActionButton import androidx.compose.material3.MaterialTheme import androidx.compose.material3.MediumTopAppBar import androidx.compose.material3.OutlinedButton import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarColors import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable 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.unit.dp import com.example.snapandsolve.ui.theme.AppColor import com.example.snapandsolve.ui.theme.ButtonColor import com.example.snapandsolve.ui.theme.WidgetColor @Composable fun MainScreen(modifier: Modifier = Modifier, application: Application) { var showReport by rememberSaveable { mutableStateOf(false) } Scaffold( modifier = Modifier.fillMaxSize(), topBar = { AppTopBar() }, bottomBar = { BottomAppBar( modifier = Modifier.height(120.dp), containerColor = AppColor, // contentColor = AppColor ) { Row( modifier = Modifier .fillMaxWidth() .padding(start = 16.dp), verticalAlignment = Alignment.CenterVertically ) { IconButton( onClick = { /*TODO*/ }, modifier = Modifier.padding(bottom = 8.dp) // Abstand "in" der Bar ) { Icon( Icons.Default.Menu, contentDescription = "Menu", ) } Spacer(Modifier.weight(1f)) } } }, floatingActionButton = { LargeFloatingActionButton( onClick = { showReport = true }, modifier = Modifier.offset(y = 64.dp), containerColor = ButtonColor ) { Icon(Icons.Default.Add, contentDescription = "Add") } }, floatingActionButtonPosition = FabPosition.Center, ) { innerPadding -> ContentScreen( modifier = Modifier.padding(innerPadding), application, showReport = showReport, onDismissReport = { showReport = false }) } } @Composable fun ContentScreen( modifier: Modifier = Modifier, application: Application, showReport: Boolean, onDismissReport: () -> Unit ) { val mapViewModel = remember { MapViewModel(application) } Box(modifier = modifier.fillMaxSize()) { // 2) Overlay if (showReport) { ReportOverlay( onCancel = onDismissReport, onAdd = { /* später */ } ) } } } @OptIn(ExperimentalMaterial3Api::class) @Composable fun AppTopBar( modifier: Modifier = Modifier ) { MediumTopAppBar( title = { Text("Scan And Solve") }, colors = TopAppBarDefaults.mediumTopAppBarColors( containerColor = AppColor, titleContentColor = Color.White ) ) } @Composable fun ReportOverlay( onCancel: () -> Unit, onAdd: () -> Unit ) { // leichter Dim-Hintergrund Box( modifier = Modifier .fillMaxSize() .background(Color.Black.copy(alpha = 0.25f)), contentAlignment = Alignment.Center ) { Card( modifier = Modifier .fillMaxWidth(0.9f) .heightIn(min = 400.dp), shape = RoundedCornerShape(24.dp), colors = CardColors( containerColor = WidgetColor, contentColor = ButtonColor, disabledContainerColor = Color.White, disabledContentColor = Color.White ) ) { Column( modifier = Modifier .fillMaxWidth() .padding(20.dp), verticalArrangement = Arrangement.spacedBy(16.dp) ) { Text("Schadensbeschreibung:", color = Color.Black ) // Platzhalter fürs Textfeld / Icons etc. Box( modifier = Modifier .fillMaxWidth() .height(220.dp) .background(Color.White, RoundedCornerShape(12.dp)) ) Row( modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween ) { OutlinedButton( onClick = onCancel, colors = ButtonColors( containerColor = ButtonColor, contentColor = Color.White, disabledContainerColor = Color.White, disabledContentColor = Color.White ) ) { Text( "Abbrechen", color = Color.Black ) } Button(onClick = onAdd) { Text("Hinzufügen") } } } } } }