diff --git a/zaaReloaded2/Controller/Settings.cs b/zaaReloaded2/Controller/Settings.cs index c3b27c0..937935b 100755 --- a/zaaReloaded2/Controller/Settings.cs +++ b/zaaReloaded2/Controller/Settings.cs @@ -66,7 +66,9 @@ namespace zaaReloaded2.Controller { throw new InvalidDataException("Datei enthält keine Stil-Daten oder ist beschädigt."); } + Logger.Info("LoadFromFile: Successfully loaded '{0}", settings.Name); settings.Uid = Guid.NewGuid(); + Logger.Debug("LoadFromFile: new GUID is '{0}", settings.Uid); return settings; } @@ -76,14 +78,15 @@ namespace zaaReloaded2.Controller /// File to write to. public void SaveToFile(string fileName) { - Logger.Info("SaveToFile: {0}", fileName); + Logger.Info("SaveToFile: Settings name: {0}", Name); using (StreamWriter writer = new StreamWriter(fileName)) { Serializer serializer = new SerializerBuilder() - //.EnsureRoundtrip() + .EnsureRoundtrip() .Build(); serializer.Serialize(writer, this); } + Logger.Info("SaveToFile: Successfully saved to file '{0}'", fileName); // SoapFormatter formatter = new SoapFormatter(); // formatter.Serialize(writer.BaseStream, this); } diff --git a/zaaReloaded2/ViewModels/SettingsRepositoryViewModel.cs b/zaaReloaded2/ViewModels/SettingsRepositoryViewModel.cs index ac59a97..e225497 100755 --- a/zaaReloaded2/ViewModels/SettingsRepositoryViewModel.cs +++ b/zaaReloaded2/ViewModels/SettingsRepositoryViewModel.cs @@ -431,7 +431,7 @@ namespace zaaReloaded2.ViewModels if (CanExportSettings()) { ChooseExportFileNameMessage.Send( - new FileNameMessageContent(SuggestImportExportPath(), FILE_FILTER), + new FileNameMessageContent(SuggestExportPath(), FILE_FILTER), msg => ConfirmExportSettings(msg)); } } @@ -445,11 +445,11 @@ namespace zaaReloaded2.ViewModels { if (message.Confirmed) { - UserSettings.Default.ImportExportPath = message.Value; + SaveImportExportDir(message.Value); Settings settings = LastSelected.RevealModelObject() as Settings; try { - settings.SaveToFile(message.Value); + settings.SaveToFile(message.Value); } catch (Exception e) { @@ -463,7 +463,7 @@ namespace zaaReloaded2.ViewModels void DoImportSettings() { ChooseImportFileNameMessage.Send( - new FileNameMessageContent(SuggestImportExportPath(), FILE_FILTER), + new FileNameMessageContent(SuggestImportPath(), FILE_FILTER), msg => ConfirmImportSettings(msg)); } @@ -476,10 +476,19 @@ namespace zaaReloaded2.ViewModels { if (message.Confirmed) { - UserSettings.Default.ImportExportPath = message.Value; + SaveImportExportDir(message.Value); try { Settings settings = Settings.LoadFromFile(message.Value); + // Attempt to find a unique name by adding a suffix, if necessary + string suffixedName = settings.Name; + while (_repository.SettingsList.FirstOrDefault(s => s.Name == suffixedName) != null) + { + string suffix = System.DateTime.Now.ToString(); + suffixedName = String.Format("{0} ({1})", settings.Name, suffix); + } + settings.Name = suffixedName; + _repository.SettingsList.Add(settings); AddSettingsViewModel(new SettingsViewModel(settings)); } catch (Exception e) @@ -491,9 +500,9 @@ namespace zaaReloaded2.ViewModels } } - string SuggestImportExportPath() + string SuggestImportPath() { - string path = UserSettings.Default.ImportExportPath; + string path = Bovender.PathHelpers.GetDirectoryPart(UserSettings.Default.ImportExportPath); if (String.IsNullOrEmpty(path)) { return Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); @@ -504,6 +513,18 @@ namespace zaaReloaded2.ViewModels } } + string SuggestExportPath() + { + Settings settings = LastSelected.RevealModelObject() as Settings; + string fileName = settings.Name; + return System.IO.Path.Combine(SuggestImportPath(), fileName); + } + + void SaveImportExportDir(string path) + { + UserSettings.Default.ImportExportPath = Bovender.PathHelpers.GetDirectoryPart(path); + } + #endregion #region Implementation of ViewModelBase