3.1 KiB
3.1 KiB
Journal-Eintrag: Vereins-Verwaltung Erweiterung (Logo & Adresse)
Datum: 20. April 2026 Status: Abgeschlossen (Bugfix & Feature-Integration) Beteiligte Agenten: 🏗️ [Lead Architect], 🎨 [Frontend Expert], 🧹 [Curator], 🧐 [QA Specialist]
📝 Zusammenfassung
Die Vereins-Verwaltung wurde um detaillierte Adressdaten und ein funktionales Logo-Management erweitert. Ein kritischer Bug, der zum Einfrieren der App beim Datei-Import führte, wurde behoben. Logos werden nun in der Vorschau korrekt gerendert.
🛠️ Technische Änderungen
0. Bugfix: Logo-Picker UI-Freeze
- Problem: Der
FileDialog(AWT) blockierte den Main-Thread, was zum Einfrieren der App führte. - Lösung: Auslagerung des Dialog-Aufrufs in einen asynchronen
Dispatchers.IOKontext inLogoUploadZone.jvm.kt. - Stabilität: Integration von Try-Catch Blöcken und detailliertem Logging für den Datei-Import-Prozess.
1. Feature: Logo-Rendering (Base64)
- Implementation: Einführung einer
expect/actualFunktiondecodeBase64ToImage. - JVM-Logic: Nutzung von
org.jetbrains.skia.Imagezur Dekodierung der Base64-Bytes in eineImageBitmap. - UI-Integration: Die
VereinCardPreviewrendert nun das Vereinslogo direkt aus dem gespeicherten Base64-String mittelsandroidx.compose.foundation.Image.
2. Domain-Modell (Verein.kt)
- Erweiterung um Felder:
strasse,hausnummer,bundesland(Enum). - Neues Feld
logoBase64für die Offline-Speicherung von optimierten Vereinslogos. - Einführung des Enums
Bundeslandmit den 9 österreichischen Bundesländern zur Sicherstellung der Datenqualität (ÖTO-konform).
2. ViewModel (VereinViewModel.kt)
- Erweiterung des
VereinUiStateum die neuen Adress- und Logo-Felder. - Implementierung der Change-Handler für alle neuen Felder.
- Anpassung der
onSave- undonAddNew-Methoden zur Berücksichtigung der erweiterten Datenstruktur.
3. UI-Anpassungen (VereinScreens.kt)
- Card-Preview:
- Anzeige der vollständigen Adresse (Straße, Hausnummer, PLZ, Ort, Bundesland).
- Integration eines "Maps"-Buttons, der die Adresse direkt in Google Maps öffnet (via
LocalUriHandler). - Vergrößertes Logo-Display (80dp) mit modernem Design.
- Editor:
- Logische Gruppierung der Adressfelder (Straße/Nr. in einer Zeile, PLZ/Ort/Bundesland in der nächsten).
- Einsatz des
MsEnumDropdownfür die Bundesland-Auswahl. - Vorbereitung einer "Logo-Upload-Zone" mit visuellem Feedback für Drag-and-Drop / FilePicker.
🔍 Verifikation
- Bugfix: Datei-Dialog friert die UI nicht mehr ein (IO-Dispatcher).
- Feature: Base64-Logo wird in der Card-Vorschau gerendert.
- Feature: Logging im ViewModel und Logo-Service implementiert.
- UI: Kompakte Adressfelder und Google-Maps-Link funktionieren.
📌 Nächste Schritte
- Implementierung einer tatsächlichen Bild-Skalierung vor dem Base64-Encoding, um Datenbank-Größe zu optimieren.
- Finalisierung der Drag-and-Drop Logik (
onExternalDrag), sobald Bibliotheks-Support stabil ist.
Dokumentiert durch den Curator.