Browse Source

Add settings saving

master
The6P4C 7 years ago
parent
commit
3bc36c2cc9
4 changed files with 211 additions and 21 deletions
  1. +27
    -0
      GPSDOTimeSync/App.config
  2. +75
    -1
      GPSDOTimeSync/FormMain.cs
  3. +86
    -14
      GPSDOTimeSync/Properties/Settings.Designer.cs
  4. +23
    -6
      GPSDOTimeSync/Properties/Settings.settings

+ 27
- 0
GPSDOTimeSync/App.config View File

@@ -1,6 +1,33 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="GPSDOTimeSync.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<userSettings>
<GPSDOTimeSync.Properties.Settings>
<setting name="minimumUpdateInterval" serializeAs="String">
<value>10</value>
</setting>
<setting name="maximumCorrectionEnabled" serializeAs="String">
<value>False</value>
</setting>
<setting name="maximumCorrection" serializeAs="String">
<value>1</value>
</setting>
<setting name="maximumCorrectionUnit" serializeAs="String">
<value>0</value>
</setting>
<setting name="deviceName" serializeAs="String">
<value />
</setting>
<setting name="serialPortName" serializeAs="String">
<value />
</setting>
</GPSDOTimeSync.Properties.Settings>
</userSettings>
</configuration>

+ 75
- 1
GPSDOTimeSync/FormMain.cs View File

@@ -42,10 +42,15 @@ namespace GPSDOTimeSync {
private int lastSystemTimeUpdate;
private ITimeProvider timeProvider;

Properties.Settings settings;

public FormMain() {
InitializeComponent();
PopulateDropDowns();

settings = Properties.Settings.Default;
LoadSettings();

lastSystemTimeUpdate = 0;

statusStrip.Renderer = new TruncatedTextEllipsisRenderer();
@@ -146,7 +151,7 @@ namespace GPSDOTimeSync {
string serialPortName = (string) comboBoxSerialPortNames.SelectedItem;
string deviceName = (string) comboBoxDeviceNames.SelectedItem;

SerialPort serialPort = new SerialPort(serialPortName);
SerialPort serialPort = new SerialPort(serialPortName);
timeProvider = TIME_PROVIDER_CONSTRUCTORS[deviceName](serialPort);

ConfigureTimeProvider();
@@ -181,6 +186,75 @@ namespace GPSDOTimeSync {
DateTime systemTime = SystemTimeUtils.GetSystemTime();
labelCurrentDateTime.Text = systemTime.ToString("HH:mm:ss\ndd\\/MM\\/yyyy\nUTC");
}

#region Settings Management
private int GetIndexOfComboBoxStringItem(ComboBox comboBox, string itemText) {
for (int i = 0; i < comboBox.Items.Count; ++i) {
if ((string) comboBox.Items[i] == itemText) {
return i;
}
}

return 0;
}

private void LoadSettings() {
// Populate values
comboBoxDeviceNames.SelectedIndex = GetIndexOfComboBoxStringItem(comboBoxDeviceNames, settings.deviceName);
comboBoxSerialPortNames.SelectedIndex = GetIndexOfComboBoxStringItem(comboBoxSerialPortNames, settings.serialPortName);

checkBoxMaximumCorrectionEnabled.Checked = settings.maximumCorrectionEnabled;
numericUpDownMaximumCorrection.Value = settings.maximumCorrection;
comboBoxMaximumCorrectionUnit.SelectedIndex = GetIndexOfComboBoxStringItem(comboBoxMaximumCorrectionUnit, settings.maximumCorrectionUnit);

numericUpDownMimimumUpdateInterval.Value = settings.minimumUpdateInterval;

// Add event listeners
comboBoxDeviceNames.SelectedIndexChanged += comboBoxDeviceNames_SelectedIndexChanged_UpdateSettings;
comboBoxSerialPortNames.SelectedIndexChanged += comboBoxSerialPortNames_SelectedIndexChanged_UpdateSettings;

checkBoxMaximumCorrectionEnabled.CheckedChanged += checkBoxMaximumCorrectionEnabled_CheckedChanged_UpdateSettings;
numericUpDownMaximumCorrection.ValueChanged += numericUpDownMaximumCorrection_ValueChanged_UpdateSettings;
comboBoxMaximumCorrectionUnit.SelectedIndexChanged += comboBoxMaximumCorrectionUnit_SelectedIndexChanged_UpdateSettings;

numericUpDownMimimumUpdateInterval.ValueChanged += numericUpDownMimimumUpdateInterval_ValueChanged_UpdateSettings;

// Push possible changes through
comboBoxDeviceNames_SelectedIndexChanged_UpdateSettings(null, null);
comboBoxSerialPortNames_SelectedIndexChanged_UpdateSettings(null, null);
comboBoxMaximumCorrectionUnit_SelectedIndexChanged_UpdateSettings(null, null);
}

private void comboBoxDeviceNames_SelectedIndexChanged_UpdateSettings(object sender, EventArgs e) {
settings.deviceName = (string) comboBoxDeviceNames.SelectedItem;
settings.Save();
}

private void comboBoxSerialPortNames_SelectedIndexChanged_UpdateSettings(object sender, EventArgs e) {
settings.serialPortName = (string) comboBoxSerialPortNames.SelectedItem;
settings.Save();
}

private void checkBoxMaximumCorrectionEnabled_CheckedChanged_UpdateSettings(object sender, EventArgs e) {
settings.maximumCorrectionEnabled = checkBoxMaximumCorrectionEnabled.Checked;
settings.Save();
}

private void numericUpDownMaximumCorrection_ValueChanged_UpdateSettings(object sender, EventArgs e) {
settings.maximumCorrection = numericUpDownMaximumCorrection.Value;
settings.Save();
}

private void comboBoxMaximumCorrectionUnit_SelectedIndexChanged_UpdateSettings(object sender, EventArgs e) {
settings.maximumCorrectionUnit = (string) comboBoxMaximumCorrectionUnit.SelectedItem;
settings.Save();
}

private void numericUpDownMimimumUpdateInterval_ValueChanged_UpdateSettings(object sender, EventArgs e) {
settings.minimumUpdateInterval = numericUpDownMimimumUpdateInterval.Value;
settings.Save();
}
#endregion
}

public class TruncatedTextEllipsisRenderer : ToolStripProfessionalRenderer {


+ 86
- 14
GPSDOTimeSync/Properties/Settings.Designer.cs View File

@@ -9,18 +9,90 @@
//------------------------------------------------------------------------------

namespace GPSDOTimeSync.Properties {


[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {

private static Settings defaultInstance = ((Settings) (global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));

public static Settings Default {
get {
return defaultInstance;
}
}
}
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("10")]
public decimal minimumUpdateInterval {
get {
return ((decimal)(this["minimumUpdateInterval"]));
}
set {
this["minimumUpdateInterval"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("False")]
public bool maximumCorrectionEnabled {
get {
return ((bool)(this["maximumCorrectionEnabled"]));
}
set {
this["maximumCorrectionEnabled"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("1")]
public decimal maximumCorrection {
get {
return ((decimal)(this["maximumCorrection"]));
}
set {
this["maximumCorrection"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
public string maximumCorrectionUnit {
get {
return ((string)(this["maximumCorrectionUnit"]));
}
set {
this["maximumCorrectionUnit"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string deviceName {
get {
return ((string)(this["deviceName"]));
}
set {
this["deviceName"] = value;
}
}
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("")]
public string serialPortName {
get {
return ((string)(this["serialPortName"]));
}
set {
this["serialPortName"] = value;
}
}
}
}

+ 23
- 6
GPSDOTimeSync/Properties/Settings.settings View File

@@ -1,7 +1,24 @@
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
<Profiles>
<Profile Name="(Default)" />
</Profiles>
<Settings />
</SettingsFile>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="GPSDOTimeSync.Properties" GeneratedClassName="Settings">
<Profiles />
<Settings>
<Setting Name="minimumUpdateInterval" Type="System.Decimal" Scope="User">
<Value Profile="(Default)">10</Value>
</Setting>
<Setting Name="maximumCorrectionEnabled" Type="System.Boolean" Scope="User">
<Value Profile="(Default)">False</Value>
</Setting>
<Setting Name="maximumCorrection" Type="System.Decimal" Scope="User">
<Value Profile="(Default)">1</Value>
</Setting>
<Setting Name="maximumCorrectionUnit" Type="System.String" Scope="User">
<Value Profile="(Default)">0</Value>
</Setting>
<Setting Name="deviceName" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
<Setting Name="serialPortName" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
</Settings>
</SettingsFile>

Loading…
Cancel
Save