- Bewertungsystem
- Filtern nach Schäden - Docs Ordner mit Markdown dummies gefüllt.
This commit is contained in:
@@ -24,6 +24,7 @@ import androidx.compose.material.icons.filled.AddLocationAlt
|
||||
import androidx.compose.material.icons.filled.FilterAlt
|
||||
import androidx.compose.material.icons.filled.FormatListNumbered
|
||||
import androidx.compose.material.icons.filled.Menu
|
||||
import androidx.compose.material.icons.filled.ThumbUp
|
||||
import androidx.compose.material3.*
|
||||
import androidx.compose.runtime.*
|
||||
import androidx.compose.runtime.saveable.rememberSaveable
|
||||
@@ -48,6 +49,8 @@ import com.example.snapandsolve.camera.AlbumViewState
|
||||
import com.example.snapandsolve.camera.Intent
|
||||
import com.example.snapandsolve.ui.theme.*
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.launch
|
||||
|
||||
|
||||
@Composable
|
||||
fun MainScreen(modifier: Modifier = Modifier, application: Application) {
|
||||
@@ -124,15 +127,20 @@ fun ContentScreen(
|
||||
sliderOpen: Boolean,
|
||||
onDismissReport: () -> Unit
|
||||
) {
|
||||
val context = LocalContext.current
|
||||
val coroutineScope = rememberCoroutineScope()
|
||||
|
||||
// NEU: State für Filter-Dialog
|
||||
var showFilterDialog by remember { mutableStateOf(false) }
|
||||
|
||||
Box(modifier = modifier.fillMaxSize()) {
|
||||
// HINTERGRUND: Die Map
|
||||
// Map
|
||||
MapSegment(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
mapViewModel = mapViewModel,
|
||||
mapViewModel = mapViewModel
|
||||
)
|
||||
|
||||
// VORDERGRUND: Das Overlay (wenn showReport = true)
|
||||
// Report Overlay
|
||||
if (showReport) {
|
||||
ReportOverlay(
|
||||
onCancel = onDismissReport,
|
||||
@@ -142,15 +150,34 @@ fun ContentScreen(
|
||||
)
|
||||
}
|
||||
|
||||
if (mapViewModel.showFeatureInfo && mapViewModel.selectedFeature != null) {
|
||||
FeatureInfoOverlay(
|
||||
feature = mapViewModel.selectedFeature!!,
|
||||
onClose = { mapViewModel.closeFeatureInfo() }
|
||||
// Feature Info Dialog
|
||||
if (mapViewModel.showFeatureInfo) {
|
||||
FeatureInfoDialog(
|
||||
feature = mapViewModel.selectedFeature,
|
||||
onDismiss = { mapViewModel.closeFeatureInfo() },
|
||||
onRate = { feature, isPositive ->
|
||||
coroutineScope.launch {
|
||||
mapViewModel.updateFeatureRating(feature, isPositive, context)
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
// Filter Dialog - NEU!
|
||||
if (showFilterDialog) {
|
||||
DamageFilterDialog(
|
||||
damageTypes = MapViewModel.DAMAGE_TYPES, // <-- Nutzt zentrale Liste
|
||||
currentFilters = mapViewModel.getActiveFilters(),
|
||||
onDismiss = { showFilterDialog = false },
|
||||
onApplyFilter = { selectedTypes ->
|
||||
coroutineScope.launch {
|
||||
mapViewModel.applyDamageFilter(selectedTypes)
|
||||
}
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
// Slider von Links
|
||||
// Side Slider
|
||||
SideSlider(visible = sliderOpen) {
|
||||
Text(
|
||||
"Menü",
|
||||
@@ -162,16 +189,14 @@ fun ContentScreen(
|
||||
text = "Schäden filtern",
|
||||
icon = Icons.Default.FilterAlt,
|
||||
onClick = {
|
||||
/* TODO */
|
||||
showFilterDialog = true // <-- Öffnet Filter-Dialog
|
||||
}
|
||||
)
|
||||
|
||||
SliderMenuItem(
|
||||
text = "Schadensliste",
|
||||
icon = Icons.Default.FormatListNumbered,
|
||||
onClick = {
|
||||
/* TODO */
|
||||
}
|
||||
onClick = { /* TODO */ }
|
||||
)
|
||||
}
|
||||
}
|
||||
@@ -275,7 +300,7 @@ fun ReportOverlay(
|
||||
expanded = dropdownExpanded,
|
||||
onDismissRequest = { dropdownExpanded = false }
|
||||
) {
|
||||
listOf("Straße", "Gehweg", "Fahrradweg", "Beleuchtung", "Sonstiges").forEach { typ ->
|
||||
MapViewModel.DAMAGE_TYPES.forEach { typ -> // <-- Nutzt zentrale Liste
|
||||
DropdownMenuItem(
|
||||
text = { Text(typ) },
|
||||
onClick = {
|
||||
|
||||
Reference in New Issue
Block a user