# Settings-Redesign Plan (v1.5.0) ## πŸ“‹ Übersicht Die aktuelle Settings-Activity hat 857 Zeilen XML und ist unΓΌbersichtlich geworden. Ziel: Moderne, gruppierte Settings nach Material Design 3 Richtlinien. --- ## πŸ” Aktuelle Struktur (v1.4.0) ### Vorhandene Cards (6 StΓΌck) 1. **Server-Konfiguration** (~200 Zeilen) - Protokoll-Auswahl (HTTP/HTTPS) - Server-URL - Username/Password - Verbindung testen 2. **Sync-Einstellungen** (~160 Zeilen) - Auto-Sync Toggle - Sync-Intervall (15/30/60 Min) - Jetzt synchronisieren Button 3. **Markdown-Integration** (~100 Zeilen) - Markdown Auto-Sync Toggle - Manueller Markdown-Sync Button 4. **Backup & Wiederherstellung** (~100 Zeilen) - Backup erstellen - Aus Datei wiederherstellen - Vom Server wiederherstellen 5. **Debug/Entwickler** (~100 Zeilen) - File Logging Toggle - Logs exportieren - Logs lΓΆschen 6. **Über die App** (~100 Zeilen) - Version - GitHub-Links - Lizenz --- ## 🎯 Neue Struktur (v1.5.0) ### Ansatz: PreferenceFragmentCompat + Material 3 Anstatt XML-Cards mit manuellen Views verwenden wir das moderne Preference-System: ``` β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ βš™οΈ Einstellungen β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ β”‚ β”‚ πŸ”„ SYNCHRONISATION β”‚ β”‚ β”œβ”€ Server-Verbindung β†’ β”‚ β”‚ β”œβ”€ Auto-Sync πŸ”˜ β”‚ β”‚ └─ Sync-Intervall 30 Min β”‚ β”‚ β”‚ β”‚ πŸ“ NOTIZEN β”‚ β”‚ └─ Markdown-Export πŸ”˜ β”‚ β”‚ β”‚ β”‚ πŸ’Ύ DATEN β”‚ β”‚ β”œβ”€ Backup erstellen β†’ β”‚ β”‚ β”œβ”€ Wiederherstellen β†’ β”‚ β”‚ └─ Vom Server laden β†’ β”‚ β”‚ β”‚ β”‚ πŸ”§ ERWEITERT β”‚ β”‚ β”œβ”€ Datei-Logging πŸ”˜ β”‚ β”‚ └─ Logs verwalten β†’ β”‚ β”‚ β”‚ β”‚ ℹ️ ÜBER β”‚ β”‚ β”œβ”€ Version 1.5.0 β”‚ β”‚ β”œβ”€ GitHub Repository β†’ β”‚ β”‚ β”œβ”€ Entwickler β†’ β”‚ β”‚ └─ Lizenz MIT β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ ``` --- ## πŸ“ Technische Implementierung ### Option A: PreferenceFragmentCompat (Empfohlen) **Vorteile:** - Native Android Preference-System - Automatische State-Verwaltung - Eingebaute Material 3 Styles - Hierarchische Navigation (Sub-Screens) - Weniger Code (~300 Zeilen statt 1148) **Dateien:** ``` res/xml/ β”œβ”€β”€ preferences_root.xml # HauptmenΓΌ mit Kategorien β”œβ”€β”€ preferences_sync.xml # Server-Konfiguration β”œβ”€β”€ preferences_data.xml # Backup-Optionen └── preferences_debug.xml # Entwickler-Optionen SettingsActivity.kt # Wird zu SettingsFragment.kt ``` ### Option B: Jetpack Compose (Zukunftssicher) **Vorteile:** - Modernste UI-Technologie - Deklarativer Code - Hot Reload wΓ€hrend Entwicklung - Besser fΓΌr komplexe Custom-UI **Nachteile:** - Grâßere Migration - Mischung mit View-System komplizierter - Lernkurve ### Empfehlung: **Option A** fΓΌr v1.5.0 PreferenceFragmentCompat ist der richtige Mittelweg: - Schnell zu implementieren (~1-2 Tage) - Native Material 3 UnterstΓΌtzung - Etabliertes Pattern - Compose-Migration kann spΓ€ter erfolgen (v2.0.0) --- ## 🎨 Design-Prinzipien (Material 3) ### 1. Preference Categories ```xml ``` ### 2. Switch Preferences ```xml ``` ### 3. Navigations-Preferences (β†’ Sub-Screen) ```xml ``` ### 4. List Preferences (Dropdown) ```xml ``` --- ## πŸ“ Neue Dateistruktur ``` app/src/main/java/dev/dettmer/simplenotes/ β”œβ”€β”€ settings/ β”‚ β”œβ”€β”€ SettingsFragment.kt # Haupt-Preference-Fragment β”‚ β”œβ”€β”€ ServerSettingsFragment.kt # Server-Konfiguration β”‚ β”œβ”€β”€ BackupSettingsFragment.kt # Backup/Restore Dialoge β”‚ └── DebugSettingsFragment.kt # Logging & Logs app/src/main/res/xml/ β”œβ”€β”€ preferences_root.xml β”œβ”€β”€ preferences_server.xml β”œβ”€β”€ preferences_backup.xml └── preferences_debug.xml ``` --- ## βœ… Implementierungs-Checklist ### Phase 1: Grundstruktur - [ ] `preferences_root.xml` erstellen - [ ] `SettingsFragment.kt` mit PreferenceFragmentCompat - [ ] SettingsActivity als Container anpassen - [ ] Kategorien: Sync, Notizen, Daten, Erweitert, Über ### Phase 2: Server-Konfiguration - [ ] `preferences_server.xml` fΓΌr Server-Details - [ ] `ServerSettingsFragment.kt` mit Custom-Dialogen - [ ] Verbindungstest-Button als Preference-Action - [ ] Protocol-Auswahl als ListPreference ### Phase 3: Sync & Markdown - [ ] Auto-Sync als SwitchPreference - [ ] Sync-Intervall als ListPreference - [ ] Markdown-Export als SwitchPreference - [ ] "Jetzt synchronisieren" als Action-Preference ### Phase 4: Backup & Debug - [ ] Backup-Aktionen als Preferences - [ ] Logging-Toggle - [ ] Log-Export/Clear Aktionen ### Phase 5: Über & Polish - [ ] Version, Links, Lizenz - [ ] Icons fΓΌr alle Kategorien - [ ] Animationen & Transitions - [ ] Dark Mode Testing --- ## ⏱️ ZeitschΓ€tzung | Phase | Aufwand | |-------|---------| | Phase 1: Grundstruktur | 2-3h | | Phase 2: Server | 3-4h | | Phase 3: Sync | 2h | | Phase 4: Backup/Debug | 2h | | Phase 5: Polish | 2h | | **Gesamt** | **~12h** | --- ## πŸ”— Referenzen - [Material 3 Settings](https://m3.material.io/components/lists/overview) - [AndroidX Preference](https://developer.android.com/develop/ui/views/components/settings) - [Preference Styling](https://developer.android.com/develop/ui/views/components/settings/organize-your-settings)