# Dokumentation: SettingsScreen (Einstellungen) ## Übersicht Die Datei `SettingsScreen.kt` im Paket `com.example.snapandsolve.ui.theme` stellt die Benutzeroberfläche für die App-Konfiguration bereit. Sie dient primär der Steuerung des **ProximityNotificationService**, welcher Nutzer benachrichtigt, sobald sie sich in der Nähe eines gemeldeten Straßenschadens befinden. --- ## 1. Hauptkomponente: SettingsScreen `@Composable fun SettingsScreen(onBack: () -> Unit, mapViewModel: MapViewModel)` Ein Full-Screen Composable, das mittels Material Design 3 (M3) eine übersichtliche Struktur für Benutzereinstellungen bietet. ### Parameter | Parameter | Typ | Beschreibung | | :--- | :--- | :--- | | `onBack` | `() -> Unit` | Callback zur Navigation zurück zum vorherigen Screen. | | `mapViewModel` | `MapViewModel` | ViewModel zur Bereitstellung der ArcGIS Feature Table. | ### Zustandsverwaltung (State) * **`isProximityActive`**: Ein via `collectAsState` beobachteter Boolean, der den aktuellen Status des Hintergrunddienstes direkt aus dem `ProximityNotificationService` widerspiegelt. * **`notificationPermissionLauncher`**: Ein Activity-Result-Launcher, der die erforderliche Berechtigung `POST_NOTIFICATIONS` verwaltet. --- ## 2. Funktionslogik: Benachrichtigungs-Switch Der zentrale Teil des Screens ist ein `Switch`, der den Proximity-Dienst steuert. Der Ablauf bei Aktivierung ist wie folgt: 1. **Versionsprüfung**: Prüft, ob die Berechtigung für Benachrichtigungen vorliegt. 2. **Berechtigungsanfrage**: Fehlt die Berechtigung, wird der System-Dialog zur Anfrage gestartet. 3. **Validierung der Datenquelle**: Es wird geprüft, ob die `FeatureTable` im `MapViewModel` verfügbar ist. 4. **Dienst-Start/Stop**: - Bei Erfolg: `ProximityNotificationService.start(context, table)` - Bei Deaktivierung: `ProximityNotificationService.stop(context)` --- ## 3. UI-Struktur & Design ### TopAppBar Die Kopfzeile nutzt das Farbschema der App (`AppColor`) und bietet eine konsistente Navigation. ### Layout-Elemente * **Settings-Karten (`Card`)**: Gruppieren inhaltlich zusammenhängende Einstellungen (z.B. Benachrichtigungen, Informationen). * **Status-Feedback**: Wenn der Dienst aktiv ist, wird dynamisch eine zusätzliche Infokarte mit grünem Häkchen (`✓`) eingeblendet, um den aktiven Status zu visualisieren. * **Informations-Sektion**: Zeigt feste Parameter wie den Proximity-Radius (aktuell 100 Meter) an. --- ## 4. Integration & Anforderungen ### Erforderliche Berechtigungen In der `AndroidManifest.xml` müssen für die volle Funktionalität dieses Screens folgende Berechtigungen deklariert sein: ```xml