From 07e422187793284e5b88b7a42ee48edea4a42e15 Mon Sep 17 00:00:00 2001 From: Darth Affe Date: Fri, 29 Sep 2017 10:17:31 +0200 Subject: [PATCH] Added migration for old configs --- KeyboardAudioVisualizer/App.xaml.cs | 9 ++- .../Configuration/AbstractConfiguration.cs | 2 + .../KeyboardAudioVisualizer.csproj | 1 + .../Legacy/ConfigurationMigrator.cs | 56 +++++++++++++++++++ 4 files changed, 66 insertions(+), 2 deletions(-) create mode 100644 KeyboardAudioVisualizer/Legacy/ConfigurationMigrator.cs diff --git a/KeyboardAudioVisualizer/App.xaml.cs b/KeyboardAudioVisualizer/App.xaml.cs index d5aab26..2e54a0c 100644 --- a/KeyboardAudioVisualizer/App.xaml.cs +++ b/KeyboardAudioVisualizer/App.xaml.cs @@ -1,12 +1,12 @@ using System; -using System.Diagnostics; using System.IO; using System.Windows; using Hardcodet.Wpf.TaskbarNotification; using KeyboardAudioVisualizer.AudioProcessing; -using KeyboardAudioVisualizer.Configuration; using KeyboardAudioVisualizer.Helper; +using KeyboardAudioVisualizer.Legacy; using Newtonsoft.Json; +using Settings = KeyboardAudioVisualizer.Configuration.Settings; namespace KeyboardAudioVisualizer { @@ -43,6 +43,10 @@ namespace KeyboardAudioVisualizer Console.WriteLine(ex.Message); /* File doesn't exist or is corrupt - just create a new one. */ } + + if (settings == null) + settings = ConfigurationMigrator.MigrateOldConfig(); + if (settings == null) { settings = new Settings(); @@ -68,6 +72,7 @@ namespace KeyboardAudioVisualizer base.OnExit(e); File.WriteAllText(PATH_SETTINGS, JsonConvert.SerializeObject(ApplicationManager.Instance.Settings)); + ConfigurationMigrator.CleanupOldConfigs(); } #endregion diff --git a/KeyboardAudioVisualizer/Configuration/AbstractConfiguration.cs b/KeyboardAudioVisualizer/Configuration/AbstractConfiguration.cs index 10ecc23..6621774 100644 --- a/KeyboardAudioVisualizer/Configuration/AbstractConfiguration.cs +++ b/KeyboardAudioVisualizer/Configuration/AbstractConfiguration.cs @@ -1,6 +1,7 @@ using System; using System.ComponentModel; using System.Runtime.CompilerServices; +using System.Xml.Serialization; using RGB.NET.Core; namespace KeyboardAudioVisualizer.Configuration @@ -10,6 +11,7 @@ namespace KeyboardAudioVisualizer.Configuration #region Properties & Fields private IBrush _brush; + [XmlIgnore] public IBrush Brush { get => _brush; diff --git a/KeyboardAudioVisualizer/KeyboardAudioVisualizer.csproj b/KeyboardAudioVisualizer/KeyboardAudioVisualizer.csproj index 40be445..5cc85b7 100644 --- a/KeyboardAudioVisualizer/KeyboardAudioVisualizer.csproj +++ b/KeyboardAudioVisualizer/KeyboardAudioVisualizer.csproj @@ -164,6 +164,7 @@ + diff --git a/KeyboardAudioVisualizer/Legacy/ConfigurationMigrator.cs b/KeyboardAudioVisualizer/Legacy/ConfigurationMigrator.cs new file mode 100644 index 0000000..bc26881 --- /dev/null +++ b/KeyboardAudioVisualizer/Legacy/ConfigurationMigrator.cs @@ -0,0 +1,56 @@ +using System.IO; +using KeyboardAudioVisualizer.AudioProcessing.VisualizationProvider; +using KeyboardAudioVisualizer.Helper; + +namespace KeyboardAudioVisualizer.Legacy +{ + public static class ConfigurationMigrator + { + #region Constants + + private const string PATH_V1_SETTINGS = "Settings.xml"; + + #endregion + + #region Constructors + + #endregion + + #region Methods + + public static Configuration.Settings MigrateOldConfig() + { + if (!File.Exists(PATH_V1_SETTINGS)) return null; + + try + { + Settings oldSettings = SerializationHelper.LoadObjectFromFile(PATH_V1_SETTINGS); + Configuration.Settings settings = new Configuration.Settings { UpdateRate = oldSettings.UpdateRate }; + + settings[VisualizationIndex.Primary].SelectedVisualization = VisualizationType.FrequencyBars; + settings[VisualizationIndex.Primary].FrequencyBarsConfiguration = oldSettings.FrequencyBarsVisualizationProviderConfiguration; + settings[VisualizationIndex.Primary].EqualizerConfiguration = oldSettings.EqualizerConfiguration; + + settings[VisualizationIndex.Secondary].SelectedVisualization = VisualizationType.Beat; + settings[VisualizationIndex.Secondary].BeatConfiguration = oldSettings.BeatVisualizationProviderConfiguration; + + settings[VisualizationIndex.Tertiary].SelectedVisualization = VisualizationType.Level; + settings[VisualizationIndex.Tertiary].LevelConfiguration = oldSettings.LevelVisualizationProviderConfiguration; + + return settings; + } + catch + { + return null; + } + } + + public static void CleanupOldConfigs() + { + if (File.Exists(PATH_V1_SETTINGS)) + File.Delete(PATH_V1_SETTINGS); + } + + #endregion + } +}