From 3fcb6c1af5d9a09e9310a30b1bbb1f858977f632 Mon Sep 17 00:00:00 2001 From: Daniel Kraus Date: Thu, 20 Aug 2015 21:51:31 +0200 Subject: [PATCH] Always load default settings when deserializing SettingsRepository. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - VERBESSERT: Bei Updates werden neue eingebaute Stile jetzt immer berücksichtigt. --- zaaReloaded2/Controller/SettingsRepository.cs | 35 ++++++++++++++++--- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/zaaReloaded2/Controller/SettingsRepository.cs b/zaaReloaded2/Controller/SettingsRepository.cs index 7b009b3..5e57cc4 100755 --- a/zaaReloaded2/Controller/SettingsRepository.cs +++ b/zaaReloaded2/Controller/SettingsRepository.cs @@ -72,7 +72,9 @@ namespace zaaReloaded2.Controller stream.Write(bytes, 0, bytes.Length); stream.Position = 0; SoapFormatter serializer = new SoapFormatter(); - return serializer.Deserialize(stream) as SettingsRepository; + SettingsRepository repo = serializer.Deserialize(stream) as SettingsRepository; + repo.LoadDefaults(); + return repo; } } @@ -113,7 +115,7 @@ namespace zaaReloaded2.Controller public SettingsRepository() { SettingsList = new List(); - CreateDefault(); + Reset(); } #endregion @@ -181,23 +183,46 @@ namespace zaaReloaded2.Controller /// Resets the Settings contained in this SettingsRepository /// to the default set of settings. /// - private void CreateDefault() + private void Reset() { SettingsList.Clear(); + LoadDefaults(); + } + /// + /// Loads default, built-in settings, replacing existing default + /// settings that might have been persisted. + /// + private void LoadDefaults() + { Assembly myAssembly = this.GetType().Assembly; SoapFormatter deserializer = new SoapFormatter(); Stream stream = myAssembly.GetManifestResourceStream("zaaReloaded2.Defaults.ward.zaaReloaded"); Settings settings = deserializer.Deserialize(stream) as Settings; settings.Name = Properties.Settings.Default.SettingsNameWard + BUILTIN_LABEL; settings.Uid = Guid.Parse(DEFAULT_SETTINGS_1_UID); - SettingsList.Add(settings); + ReplaceOrAdd(settings); stream = myAssembly.GetManifestResourceStream("zaaReloaded2.Defaults.clinic.zaaReloaded"); settings = deserializer.Deserialize(stream) as Settings; settings.Name = Properties.Settings.Default.SettingsNameClinic + BUILTIN_LABEL; settings.Uid = Guid.Parse(DEFAULT_SETTINGS_2_UID); - SettingsList.Add(settings); + ReplaceOrAdd(settings); + } + + private void ReplaceOrAdd(Settings settings) + { + Settings existing = SettingsList.FirstOrDefault(s => s.Uid == settings.Uid); + if (existing == null) + { + SettingsList.Add(settings); + } + else + { + int index = SettingsList.IndexOf(existing); + SettingsList.RemoveAt(index); + SettingsList.Insert(index, settings); + } } #endregion