- Dokumentation
- Bereinigung von Code
This commit is contained in:
57
docs/SettingsScreen.md
Normal file
57
docs/SettingsScreen.md
Normal 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" />
|
||||
Reference in New Issue
Block a user