diff --git a/src/ManVan/Commands/ClearCommand.cs b/src/ManVan/Commands/ClearCommand.cs index dcd1a79..a49b5ea 100644 --- a/src/ManVan/Commands/ClearCommand.cs +++ b/src/ManVan/Commands/ClearCommand.cs @@ -37,6 +37,7 @@ public void Execute(object parameter) if (result == ConfirmResult.Affirmative) { + LocalDataService.Backup(_viewModel.Entries); _viewModel.Entries = new ObservableCollection(); LocalDataService.Save(_viewModel.Entries); _viewModel.Refresh(); diff --git a/src/ManVan/Services/LocalDataService.cs b/src/ManVan/Services/LocalDataService.cs index 0dc971a..8b6edeb 100644 --- a/src/ManVan/Services/LocalDataService.cs +++ b/src/ManVan/Services/LocalDataService.cs @@ -12,6 +12,26 @@ public class LocalDataService Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\ManVan\\entries.manvan"; + public static void Backup(IEnumerable entries) + { + var xs = new XmlSerializer(entries.GetType()); + + var path = StoragePath; + var file = new FileInfo(path); + if (file.DirectoryName == null) + throw new Exception("DirectoryName should not be null"); + if (!Directory.Exists(file.DirectoryName)) + Directory.CreateDirectory(file.DirectoryName); + var newFileName = "entries_" + DateTime.Now.ToString( + "yyyyMMddhhmmss") + ".manvan"; + var newFilePath = Path.Combine( + file.DirectoryName, newFileName); + using (TextWriter writer = new StreamWriter(newFilePath)) + { + xs.Serialize(writer, entries); + } + } + public static void Save(IEnumerable entries) { var xs = new XmlSerializer(entries.GetType());