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 :
CryptoServicelanceCryptoSoft.exe <source> <destination>en sous-processus- Mesure le temps d'exécution en ms
- 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 |
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 + MVVM2026-05-13_cryptosoft-integration.md— Intégration CryptoSoft2026-05-13_business-software-midrun.md— Blocage logiciel métier2026-05-13_fixes-mineurs-v2.0.md— Correctifs post-tests2026-05-13_fix-progress-bar-v2.0.md— Progression temps réel2026-05-13_feat-edit-job-v2.0.md— Édition inline des travaux
Interface graphique¶
Vue liste des travaux¶



Diagrammes¶
Diagramme de classes v2.0¶

Diagramme de classes v2.0 (Seyni)¶

Diagramme de séquence v2.0¶

Schéma — blocage logiciel métier¶
