@@ -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> |
@@ -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 { | |||
@@ -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; | |||
} | |||
} | |||
} | |||
} |
@@ -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> |