summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--grapher/Models/Serialized/RawAccelSettings.cs29
-rw-r--r--grapher/Models/Serialized/SettingsManager.cs32
2 files changed, 39 insertions, 22 deletions
diff --git a/grapher/Models/Serialized/RawAccelSettings.cs b/grapher/Models/Serialized/RawAccelSettings.cs
index 570a6c8..6f48d44 100644
--- a/grapher/Models/Serialized/RawAccelSettings.cs
+++ b/grapher/Models/Serialized/RawAccelSettings.cs
@@ -44,17 +44,36 @@ namespace grapher.Models.Serialized
#region Methods
- public static RawAccelSettings Load()
+ public static RawAccelSettings Load(Func<GUISettings> DefaultGUISettingsSupplier)
{
- return Load(DefaultSettingsFile);
+ return Load(DefaultSettingsFile, DefaultGUISettingsSupplier);
}
- public static RawAccelSettings Load(string file)
+ public static RawAccelSettings Load(string file, Func<GUISettings> DefaultGUISettingsSupplier)
{
try
{
- var settings = JsonConvert.DeserializeObject<RawAccelSettings>(File.ReadAllText(file), SerializerSettings);
- if (settings is null) throw new JsonException($"{file} contains invalid JSON");
+ RawAccelSettings settings = null;
+
+ JObject jo = JObject.Parse(File.ReadAllText(file));
+ if (jo.ContainsKey(DriverSettings.Key))
+ {
+ settings = jo.ToObject<RawAccelSettings>(JsonSerializer.Create(SerializerSettings));
+ }
+ else
+ {
+ settings = new RawAccelSettings
+ {
+ AccelerationSettings = jo.ToObject<DriverSettings>(),
+ GUISettings = DefaultGUISettingsSupplier()
+ };
+ }
+
+ if (settings is null || settings.AccelerationSettings is null)
+ {
+ throw new JsonException($"{file} contains invalid JSON");
+ }
+
return settings;
}
catch (FileNotFoundException e)
diff --git a/grapher/Models/Serialized/SettingsManager.cs b/grapher/Models/Serialized/SettingsManager.cs
index 416823e..f53c9c9 100644
--- a/grapher/Models/Serialized/SettingsManager.cs
+++ b/grapher/Models/Serialized/SettingsManager.cs
@@ -83,15 +83,7 @@ namespace grapher.Models.Serialized
if (errors.Empty())
{
RawAccelSettings.AccelerationSettings = settings;
- RawAccelSettings.GUISettings = new GUISettings
- {
- AutoWriteToDriverOnStartup = AutoWriteMenuItem.Checked,
- DPI = (int)DpiField.Data,
- PollRate = (int)PollRateField.Data,
- ShowLastMouseMove = ShowLastMouseMoveMenuItem.Checked,
- ShowVelocityAndGain = ShowVelocityAndGainMoveMenuItem.Checked,
- };
-
+ RawAccelSettings.GUISettings = MakeGUISettingsFromFields();
RawAccelSettings.Save();
}
@@ -128,13 +120,25 @@ namespace grapher.Models.Serialized
return errors;
}
+ public GUISettings MakeGUISettingsFromFields()
+ {
+ return new GUISettings
+ {
+ AutoWriteToDriverOnStartup = AutoWriteMenuItem.Checked,
+ DPI = (int)DpiField.Data,
+ PollRate = (int)PollRateField.Data,
+ ShowLastMouseMove = ShowLastMouseMoveMenuItem.Checked,
+ ShowVelocityAndGain = ShowVelocityAndGainMoveMenuItem.Checked
+ };
+ }
+
public void Startup()
{
if (RawAccelSettings.Exists())
{
try
{
- RawAccelSettings = RawAccelSettings.Load();
+ RawAccelSettings = RawAccelSettings.Load(() => MakeGUISettingsFromFields());
if (RawAccelSettings.GUISettings.AutoWriteToDriverOnStartup)
{
UpdateActiveAccelFromFileSettings(RawAccelSettings.AccelerationSettings);
@@ -149,13 +153,7 @@ namespace grapher.Models.Serialized
RawAccelSettings = new RawAccelSettings(
DriverInterop.GetActiveSettings(),
- new GUISettings
- {
- AutoWriteToDriverOnStartup = AutoWriteMenuItem.Checked,
- DPI = (int)DpiField.Data,
- PollRate = (int)PollRateField.Data,
- ShowLastMouseMove = ShowLastMouseMoveMenuItem.Checked,
- });
+ MakeGUISettingsFromFields());
RawAccelSettings.Save();
}