- Dokumentation

- Bereinigung von Code
This commit is contained in:
2026-02-13 10:33:21 +01:00
parent 48802606e8
commit 8342723e09
16 changed files with 1070 additions and 169 deletions

57
docs/SettingsScreen.md Normal file
View File

@@ -0,0 +1,57 @@
# 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
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />