Features: - Interactive checklists with tap-to-check, drag & drop sorting - GitHub-flavored Markdown export (- [ ] / - [x]) - FAB menu for note type selection Fixes: - Improved Markdown parsing (robust line-based content extraction) - Better duplicate filename handling (ID suffix) - Foreground notification suppression Privacy: - Removed ACCESS_WIFI_STATE and CHANGE_WIFI_STATE permissions (SSID binding was never used, app only checks connectivity state) Code Quality: - Fixed 7 Detekt warnings (SwallowedException, MaxLineLength, MagicNumber)
6.7 KiB
6.7 KiB
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)
-
Server-Konfiguration (~200 Zeilen)
- Protokoll-Auswahl (HTTP/HTTPS)
- Server-URL
- Username/Password
- Verbindung testen
-
Sync-Einstellungen (~160 Zeilen)
- Auto-Sync Toggle
- Sync-Intervall (15/30/60 Min)
- Jetzt synchronisieren Button
-
Markdown-Integration (~100 Zeilen)
- Markdown Auto-Sync Toggle
- Manueller Markdown-Sync Button
-
Backup & Wiederherstellung (~100 Zeilen)
- Backup erstellen
- Aus Datei wiederherstellen
- Vom Server wiederherstellen
-
Debug/Entwickler (~100 Zeilen)
- File Logging Toggle
- Logs exportieren
- Logs löschen
-
Ü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
<PreferenceCategory
app:title="Synchronisation"
app:iconSpaceReserved="false">
2. Switch Preferences
<SwitchPreferenceCompat
app:key="auto_sync"
app:title="Auto-Sync"
app:summary="Automatisch bei WLAN-Verbindung"
app:icon="@drawable/ic_sync" />
3. Navigations-Preferences (→ Sub-Screen)
<Preference
app:key="server_config"
app:title="Server-Verbindung"
app:summary="192.168.0.188:8080"
app:fragment="dev.dettmer.simplenotes.settings.ServerSettingsFragment" />
4. List Preferences (Dropdown)
<ListPreference
app:key="sync_interval"
app:title="Sync-Intervall"
app:entries="@array/sync_interval_entries"
app:entryValues="@array/sync_interval_values"
app:defaultValue="30" />
📁 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.xmlerstellenSettingsFragment.ktmit PreferenceFragmentCompat- SettingsActivity als Container anpassen
- Kategorien: Sync, Notizen, Daten, Erweitert, Über
Phase 2: Server-Konfiguration
preferences_server.xmlfür Server-DetailsServerSettingsFragment.ktmit 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 |