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
+ }
+}