diff --git a/EDMI_ClientSuite/ClassConfig.vb b/EDMI_ClientSuite/ClassConfig.vb
index 34f14285..d4a2c7f5 100644
--- a/EDMI_ClientSuite/ClassConfig.vb
+++ b/EDMI_ClientSuite/ClassConfig.vb
@@ -1,3 +1,43 @@
-Public Class ClassConfig
- Public Property ServiceConnection As String = String.Empty
+Imports System.ComponentModel
+Imports System.Runtime.CompilerServices
+Imports System.Xml.Serialization
+
+'''
+''' --- User Config for EDMI ---
+'''
+''' All settings are simple properties that should have a default value where possible
+'''
+''' More complex properties (for example, ServiceConnection) are built from simple ones,
+''' should be readonly and have an `XmlIgnore` Attribute to prevent them from being saved to the config file.
+'''
+''' They can make saving and loading complex properties more easy.
+'''
+''' The config is loaded with `ConfigManager` which is initialized in ApplicationEvents
+''' to ensure that the config is loaded before any of the forms (that might need a config)
+'''
+''' The config object can be accessed in two ways:
+'''
+''' - My.ConfigManager.Config
+''' - My.Config (which simply points to My.ConfigManager.Config)
+'''
+''' After changing a config value, My.ConfigManager.Save() must be called to persist the change in the config file
+'''
+Public Class ClassConfig
+ ' === Complex/Readonly Config Properties
+
+ Public ReadOnly Property ServiceConnection As String
+ Get
+ If ServiceIP = String.Empty Or ServicePort = -1 Then
+ Return String.Empty
+ Else
+ Return $"net.tcp://{ServiceIP}:{ServicePort}/DigitalData/Services/Main"
+ End If
+ End Get
+ End Property
+
+ ' === Simple/Actual Config Properties ===
+ Public Property ServiceIP As String = String.Empty
+ Public Property ServicePort As Integer = -1
+ Public Property LogDebug As Boolean = False
+ Public Property UserLanguage As String = "de-DE"
End Class
diff --git a/EDMI_ClientSuite/MyApplication.vb b/EDMI_ClientSuite/MyApplication.vb
index f0442aed..a6e04ea8 100644
--- a/EDMI_ClientSuite/MyApplication.vb
+++ b/EDMI_ClientSuite/MyApplication.vb
@@ -12,6 +12,11 @@ Namespace My
Module Extension
Property ConfigManager As ConfigManager(Of ClassConfig)
+ ReadOnly Property Config As ClassConfig
+ Get
+ Return ConfigManager.Config
+ End Get
+ End Property
Property LogConfig As LogConfig
Property ChannelFactory As ChannelFactory(Of IEDMServiceChannel)
Property Channel As IEDMServiceChannel
diff --git a/EDMI_ClientSuite/frmConfigService.vb b/EDMI_ClientSuite/frmConfigService.vb
index 3fbfd691..9e9ef5a2 100644
--- a/EDMI_ClientSuite/frmConfigService.vb
+++ b/EDMI_ClientSuite/frmConfigService.vb
@@ -6,6 +6,11 @@ Public Class frmConfigService
Private Sub frmServiceConfig_Load(sender As Object, e As EventArgs) Handles Me.Load
_Init = New ClassInit()
+ If My.ConfigManager.Config.ServiceConnection <> String.Empty Then
+ txtIPAddress.Text = My.ConfigManager.Config.ServiceIP
+ txtPort.Text = My.ConfigManager.Config.ServicePort
+ End If
+
txtIPAddress.Focus()
End Sub
@@ -15,12 +20,14 @@ Public Class frmConfigService
Dim oEndpointURL = $"net.tcp://{oIPAddress}:{oPort}/DigitalData/Services/Main"
Dim oResult As ConnectionTestResult
+ My.Config.ServiceIP = oIPAddress
+ My.Config.ServicePort = Integer.Parse(oPort)
+
lblStatus.Text = "Verbindung wird hergestellt..."
- oResult = Await _Init.TestConnectionAsync(oEndpointURL)
+ oResult = Await _Init.TestConnectionAsync(My.ConfigManager.Config.ServiceConnection)
If oResult = ConnectionTestResult.Successful Then
' Save Endpoint URL
- My.ConfigManager.Config.ServiceConnection = oEndpointURL
My.ConfigManager.Save()
'My.Settings.ICMServiceAddress = oEndpointURL
lblStatus.Text = "Verbindung hergestellt."
diff --git a/EDMI_ClientSuite/frmConfigUser.Designer.vb b/EDMI_ClientSuite/frmConfigUser.Designer.vb
index 94f24f2a..7d598497 100644
--- a/EDMI_ClientSuite/frmConfigUser.Designer.vb
+++ b/EDMI_ClientSuite/frmConfigUser.Designer.vb
@@ -1,9 +1,9 @@
- _
+
Partial Class frmConfigUser
Inherits System.Windows.Forms.Form
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
- _
+
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
@@ -20,11 +20,10 @@ Partial Class frmConfigUser
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
- _
+
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmConfigUser))
Me.TabPageSupport = New DevExpress.XtraTab.XtraTabPage()
- Me.SimpleButton1 = New DevExpress.XtraEditors.SimpleButton()
Me.btnAppFolder = New DevExpress.XtraEditors.SimpleButton()
Me.btnLogFolder = New DevExpress.XtraEditors.SimpleButton()
Me.Button4 = New System.Windows.Forms.Button()
@@ -43,7 +42,6 @@ Partial Class frmConfigUser
'
'TabPageSupport
'
- Me.TabPageSupport.Controls.Add(Me.SimpleButton1)
Me.TabPageSupport.Controls.Add(Me.btnAppFolder)
Me.TabPageSupport.Controls.Add(Me.btnLogFolder)
Me.TabPageSupport.Controls.Add(Me.Button4)
@@ -51,18 +49,9 @@ Partial Class frmConfigUser
Me.TabPageSupport.Controls.Add(Me.chkLogErrorsOnly)
Me.TabPageSupport.ImageOptions.Image = CType(resources.GetObject("TabPageSupport.ImageOptions.Image"), System.Drawing.Image)
Me.TabPageSupport.Name = "TabPageSupport"
- Me.TabPageSupport.Size = New System.Drawing.Size(703, 448)
+ Me.TabPageSupport.Size = New System.Drawing.Size(700, 444)
Me.TabPageSupport.Text = "Support"
'
- 'SimpleButton1
- '
- Me.SimpleButton1.ImageOptions.Image = CType(resources.GetObject("SimpleButton1.ImageOptions.Image"), System.Drawing.Image)
- Me.SimpleButton1.Location = New System.Drawing.Point(349, 100)
- Me.SimpleButton1.Name = "SimpleButton1"
- Me.SimpleButton1.Size = New System.Drawing.Size(164, 36)
- Me.SimpleButton1.TabIndex = 21
- Me.SimpleButton1.Text = "AppData Ordner öffnen"
- '
'btnAppFolder
'
Me.btnAppFolder.ImageOptions.Image = CType(resources.GetObject("btnAppFolder.ImageOptions.Image"), System.Drawing.Image)
@@ -135,7 +124,7 @@ Partial Class frmConfigUser
Me.TabPageMain.Controls.Add(Me.cmbLanguage)
Me.TabPageMain.ImageOptions.Image = CType(resources.GetObject("TabPageMain.ImageOptions.Image"), System.Drawing.Image)
Me.TabPageMain.Name = "TabPageMain"
- Me.TabPageMain.Size = New System.Drawing.Size(703, 448)
+ Me.TabPageMain.Size = New System.Drawing.Size(700, 444)
Me.TabPageMain.Text = "Allgemein"
'
'Label1
@@ -197,5 +186,4 @@ Partial Class frmConfigUser
Friend WithEvents cmbLanguage As ComboBox
Friend WithEvents btnLogFolder As DevExpress.XtraEditors.SimpleButton
Friend WithEvents btnAppFolder As DevExpress.XtraEditors.SimpleButton
- Friend WithEvents SimpleButton1 As DevExpress.XtraEditors.SimpleButton
End Class
diff --git a/EDMI_ClientSuite/frmConfigUser.resx b/EDMI_ClientSuite/frmConfigUser.resx
index 8540ece9..c4c2117d 100644
--- a/EDMI_ClientSuite/frmConfigUser.resx
+++ b/EDMI_ClientSuite/frmConfigUser.resx
@@ -118,15 +118,6 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
-
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
- dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAArdEVYdFRpdGxlAE9wZW47Rm9sZGVyO0JhcnM7Umli
- Ym9uO1N0YW5kYXJkO0xvYWTxw8RjAAAAb0lEQVQ4T6XQ0Q2AIAwEUBbsMs7Q0ZzHFeqVRIJ6VQof7+fC
- XUiLmS2hYQYNM4qqChjhOS31fICVL8JKvb+BSBueHUB3cQCGB+oxmWjgVjj2TcAC8hzwx1+Fl34gXYb2
- g6ky1BtMl1295AoajrNyArCYwjN4ThJYAAAAAElFTkSuQmCC
-
-
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
diff --git a/EDMI_ClientSuite/frmConfigUser.vb b/EDMI_ClientSuite/frmConfigUser.vb
index 44537f4f..9f083691 100644
--- a/EDMI_ClientSuite/frmConfigUser.vb
+++ b/EDMI_ClientSuite/frmConfigUser.vb
@@ -13,6 +13,8 @@ Public Class frmConfigUser
Private Sub frmUserBasics_Load(sender As Object, e As EventArgs) Handles Me.Load
_Logger = My.LogConfig.GetLogger()
+
+ chkLogErrorsOnly.Checked = Not My.Config.LogDebug
End Sub
Private Sub btnLogFolder_Click(sender As Object, e As EventArgs) Handles btnLogFolder.Click
@@ -23,8 +25,10 @@ Public Class frmConfigUser
Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData))
End Sub
- Private Sub SimpleButton1_Click(sender As Object, e As EventArgs) Handles SimpleButton1.Click
- Dim config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal)
- MessageBox.Show(config.FilePath)
+ Private Sub chkLogErrorsOnly_CheckedChanged(sender As Object, e As EventArgs) Handles chkLogErrorsOnly.CheckedChanged
+ Dim oLogDebug = Not chkLogErrorsOnly.Checked
+ My.LogConfig.Debug = oLogDebug
+ My.Config.LogDebug = oLogDebug
+ My.ConfigManager.Save()
End Sub
End Class
\ No newline at end of file