Aller au contenu

v2.0 — WPF / MVVM

Date de livraison : Livrable 2
Statut : ✅ Livré
Interface : WPF (.NET 8.0, Windows)


Vue d'ensemble

La v2.0 est une refonte complète de l'interface : passage de la console à une application de bureau graphique construite avec WPF en suivant le pattern MVVM. Toute la logique métier reste dans EasySave.Core — inchangée et réutilisable.


Nouvelles fonctionnalités

1. Interface graphique WPF

  • Fenêtre principale avec navigation par onglets
  • Vue liste des travaux avec détail par carte
  • Barre de progression en temps réel par travail
  • Basculement FR / EN depuis les Paramètres
  • Mode clair / sombre géré par les ressources WPF

2. Travaux illimités

La limite de 5 travaux de la v1.0 est supprimée. ConfigService n'impose plus de plafond ; la liste de travaux est une List<SaveJob> de taille arbitraire.

3. CryptoSoft — Cryptage de fichiers

EasySave délègue le cryptage au logiciel externe CryptoSoft (.exe). Pour chaque fichier copié dont l'extension est dans la liste configurée :

  1. CryptoService lance CryptoSoft.exe <source> <destination> en sous-processus
  2. Mesure le temps d'exécution en ms
  3. Stocke le résultat dans LogEntry.EncryptionTimeMs
Valeur EncryptionTimeMs Signification
0 Fichier non crypté
> 0 Temps de cryptage réel (ms)
< 0 Code d'erreur retourné par CryptoSoft

→ Détail technique CryptoSoft

4. Logiciel métier — détection et blocage

Si un logiciel métier (configurable — ex. calc.exe) est détecté en cours d'exécution :

  • Au lancement d'un travail → blocage immédiat, le travail ne démarre pas
  • En cours de sauvegarde → le fichier en cours est terminé, puis le travail s'arrête proprement

Le nom du processus est configurable depuis la vue Paramètres.

→ Détail technique Logiciel métier

5. Paramètres généraux

Vue dédiée (SettingsView) regroupant : - Format de log (JSON / XML) - Extensions de fichiers à crypter (ex. .txt, .docx) - Chemin vers CryptoSoft.exe - Nom du logiciel métier à surveiller - Dossier de logs (ouvrable depuis l'interface)

6. Édition inline d'un travail

Chaque travail peut être modifié directement depuis sa carte dans la liste (bouton ✏️). Un formulaire d'édition remplace la carte lecture sans navigation vers une vue séparée. La modification est persistée dans jobs.json à la confirmation.

7. Barre de progression temps réel

IProgress<SaveState> est propagé depuis les stratégies (FullSaveStrategy, DifferentialSaveStrategy) jusqu'au ViewModel. La barre se met à jour à chaque fichier copié, affichant le pourcentage d'avancement et le nombre de fichiers restants.


Architecture v2.0

EasySave.WPF/
├── App.xaml / App.xaml.cs      Point d'entrée, injection de dépendances
├── Views/
│   ├── MainWindow.xaml         Fenêtre principale + navigation
│   ├── JobListView.xaml        Liste et détail des travaux
│   └── SettingsView.xaml       Paramètres généraux
└── Resources/
    ├── Strings.resx            Chaînes EN (défaut)
    ├── Strings.fr.resx         Chaînes FR
    └── Styles.xaml             Thème, couleurs, styles partagés

EasySave.ViewModel/
├── BaseViewModel.cs            INotifyPropertyChanged + RelayCommand
├── MainViewModel.cs            Navigation entre vues
├── SaveJobViewModel.cs         État + commandes d'un travail
├── SaveJobListViewModel.cs     Liste + orchestration
└── SettingsViewModel.cs        Paramètres

Règles MVVM appliquées

Règle Application
Pas de logique métier dans les Views Views = XAML + code-behind minimal
ViewModels testables sans UI Tests unitaires dans EasySave.Tests
Chaînes via .resx Aucun texte hardcodé dans XAML
Chemins via AppPaths Aucun chemin C:\temp\ dans le code
Opérations longues hors thread UI Task.Run + IProgress<SaveState>

Fixes et améliorations post-livraison

Après les tests manuels de la v2.0, plusieurs correctifs ont été apportés :

  • Barre de progression : progress?.Report(state) désormais appelé par les stratégies à chaque fichier (auparavant uniquement au début/fin)
  • Logiciel métier mid-run : détection pendant l'exécution (et pas seulement au lancement)
  • Bouton "Ouvrir dossier logs" dans les Paramètres
  • Édition inline des travaux (feature/edit-job)

Changelog associé

  • 2026-05-12_wpf-v2-ui-core.md — Socle WPF + MVVM
  • 2026-05-13_cryptosoft-integration.md — Intégration CryptoSoft
  • 2026-05-13_business-software-midrun.md — Blocage logiciel métier
  • 2026-05-13_fixes-mineurs-v2.0.md — Correctifs post-tests
  • 2026-05-13_fix-progress-bar-v2.0.md — Progression temps réel
  • 2026-05-13_feat-edit-job-v2.0.md — Édition inline des travaux

Interface graphique

Vue liste des travaux

UI WPF — liste des travaux

UI WPF — détail travail

UI WPF — paramètres


Diagrammes

Diagramme de classes v2.0

Diagramme de classes v2.0

Diagramme de classes v2.0 (Seyni)

Diagramme de classes v2.0 — variante

Diagramme de séquence v2.0

Diagramme de séquence v2.0

Schéma — blocage logiciel métier

Schéma blocage logiciel métier