Projekt

Allgemein

Profil

Feature #86

Von Julius Haman vor 5 Tagen aktualisiert

### Ziel 

 Die Werkzeugleiste der Trainingsübersicht war mit vier fast gleich aussehenden Export-Buttons überladen, und die Exporte bezogen sich immer nur auf ein Training. Wer viele Trainings z. B. zu Strava oder Garmin bringen will, musste jedes einzeln exportieren. 

 ### Umsetzung 

 - **Trainingsübersicht:** Die Buttons "Export (HRM)", (hrm)", "Export (CSV)", (csv)", "Export (CSV) (csv) alle" und "Export (TCX)" sind zu einem Button **Export** mit Menü zusammengefasst: TCX, HRM, CSV hrm, csv, TCX (jeweils für die Auswahl), Trenner, "CSV "csv alle" (Übersichtstabelle, unverändert). 
 - **Menüeinträge:** Statt der bunten Bitmap-Icons zeigt jeder Eintrag einen Export-Pfeil mit dem Formatkürzel (TCX, HRM, CSV) darunter (neues Control `ExportFormatIcon`, Farbe folgt dem Skin). 
 - **Schreibweise:** Formatbezeichnungen einheitlich in Großbuchstaben (HRM, CSV, TCX) in Menü, Tooltips und Meldungen; die Dateiendungen (.hrm, .csv, .tcx) bleiben klein. 
 - **Mehrfachauswahl:** TCX, HRM hrm, csv und CSV TCX beziehen sich auf alle markierten Trainings (Strg+A, Umschalt, Strg+Klick). Bei einem Training bleibt alles wie bisher (Dateidialog). Bei mehreren wird ein Ordner gewählt (Titel nennt die Anzahl) und pro Training eine Datei `Training<yyyyMMdd_HHmm>.<Endung>` geschrieben; bei gleichen Namen oder vorhandenen Dateien wird ` (2)` usw. angehängt, nichts wird überschrieben. 
 - **Löschen** löscht alle markierten Trainings (Rückfrage mit Anzahl). **Fortsetzen, Leistungsprofil und Details** sind nur bei genau einem markierten Training aktiv. Die Buttons werden jetzt auch beim Aufheben der Markierung deaktiviert (bisher blieben sie aktiv). 
 - **Fortschritt:** Export und Löschen mehrerer Trainings sperren das Hauptfenster und zeigen den Wait-Cursor; dauert der Vorgang länger als 2 Sekunden, erscheint ein Fortschrittsdialog ("Training 37 von 250") mit Abbrechen. Nach einem Abbruch meldet ein Hinweis den Stand; bereits exportierte Dateien bzw. gelöschte Trainings bleiben. Alles läuft weiter im UI-Thread (kein Zugriff auf den DbContext aus mehreren Threads); das Löschen erfolgt dafür in Blöcken zu 5 Trainings. 
 - **Trainingsdetail:** Der Button "Export (TCX)" wird durch denselben Export-Button ersetzt, mit TCX, HRM hrm, csv und CSV TCX für das angezeigte Training. 
 - **Markierung:** Die Markierung in der Trainingsliste bleibt sichtbar, wenn das Grid den Fokus verliert (Klick auf einen Button oder geöffnetes Menü); WPF nahm dafür bisher ein kaum erkennbares Grau. 
 - **Menüs ohne Öffnen-Animation:** Das ContextMenu-Template von WPF-UI schob den Rahmen beim Öffnen per `TranslateTransform.Y` von -90 auf 0 (wirkte wie ein langsames Einblenden, auch im Spalten-Menü). `App.xaml` enthält jetzt einen eigenen ContextMenu-Stil mit demselben Template (Rahmen, Schatten, `EffectThicknessDecorator`) ohne diese Animation; die Menüeinträge behalten den WPF-UI-Stil. 

 ### Technik 

 - `IDialogService.CreateFolderDialog` (Ordnerauswahl) und `IDialogService.BeginProgress` / `IProgressScope` (Fortschritt, Abbruch); neues `ProgressWindow` im Stil des `MessageBoxWindow`. 
 - `TrainingExportService.CreateUniqueFileName` (mit Unit-Tests). 
 - Die drei nahezu identischen Export-Methoden der ViewModels sind jeweils auf einen gemeinsamen Ablauf zurückgeführt. 

Zurück