diff --git a/Config/ConfigManager.vb b/Config/ConfigManager.vb
index e32f5059..5762d979 100644
--- a/Config/ConfigManager.vb
+++ b/Config/ConfigManager.vb
@@ -51,17 +51,21 @@ Public Class ConfigManager(Of T)
_Serializer = New XmlSerializer(_Blueprint.GetType)
If Not Directory.Exists(UserConfigPath) Then
- Throw New DirectoryNotFoundException($"Path {UserConfigPath} does not exist!")
- End If
+ Directory.CreateDirectory(UserConfigPath)
- If Not Directory.Exists(ComputerConfigPath) Then
- Throw New DirectoryNotFoundException($"Path {ComputerConfigPath} does not exist!")
+ 'Throw New DirectoryNotFoundException($"Path {UserConfigPath} does not exist!")
End If
If Not _File.TestPathIsDirectory(UserConfigPath) Then
Throw New ArgumentException($"Path {UserConfigPath} is not a directory!")
End If
+ If Not Directory.Exists(ComputerConfigPath) Then
+ Directory.CreateDirectory(ComputerConfigPath)
+
+ 'Throw New DirectoryNotFoundException($"Path {ComputerConfigPath} does not exist!")
+ End If
+
If Not _File.TestPathIsDirectory(ComputerConfigPath) Then
Throw New ArgumentException($"Path {ComputerConfigPath} is not a directory!")
End If
diff --git a/EDMI_ClientSuite/ApplicationEvents.vb b/EDMI_ClientSuite/ApplicationEvents.vb
index 505e4b67..fec512bb 100644
--- a/EDMI_ClientSuite/ApplicationEvents.vb
+++ b/EDMI_ClientSuite/ApplicationEvents.vb
@@ -14,10 +14,16 @@ Namespace My
Public Sub App_Startup() Handles Me.Startup
Dim oLogConfig As New LogConfig(PathType.AppData)
- Dim oConfigManager As New ConfigManager(Of ClassConfig)(oLogConfig, Windows.Forms.Application.UserAppDataPath, Windows.Forms.Application.CommonAppDataPath)
+
+ ' TODO: WHERE SHOULD CONFIG BE SAVED? LOCAL/ROAMING
+ Dim oUIConfigPAth = IO.Path.Combine(Windows.Forms.Application.UserAppDataPath, ClassConstants.FOLDER_NAME_LAYOUT)
+
+ Dim oSystemConfigManager As New ConfigManager(Of ClassConfig)(oLogConfig, Windows.Forms.Application.UserAppDataPath, Windows.Forms.Application.CommonAppDataPath)
+ Dim oUIConfigManager As New ConfigManager(Of ClassUIConfig)(oLogConfig, oUIConfigPAth, oUIConfigPAth)
LogConfig = oLogConfig
- ConfigManager = oConfigManager
+ SystemConfigManager = oSystemConfigManager
+ UIConfigManager = oUIConfigManager
_Logger = LogConfig.GetLogger()
_Logger.Debug("Starting Client Suite..")
diff --git a/EDMI_ClientSuite/ClassConstants.vb b/EDMI_ClientSuite/ClassConstants.vb
index 7921d995..2a49aa78 100644
--- a/EDMI_ClientSuite/ClassConstants.vb
+++ b/EDMI_ClientSuite/ClassConstants.vb
@@ -9,4 +9,12 @@
Public Const FOLDER_NAME_LAYOUT = "Layout"
Public Const ATTRIBUTE_ID_COLUMN = "RECORD_ID"
+
+
+
+ Public Const DB_USER_ATTRIBUTE_ID = 1
+ Public Const DB_USER_ATTRIBUTE_SYSKEY = "001"
+
+ Public Const DB_GROUP_ATTRIBUTE_ID = 2
+ Public Const DB_GROUP_ATTRIBUTE_SYSKEY = "002"
End Class
diff --git a/EDMI_ClientSuite/ClassLayout.vb b/EDMI_ClientSuite/ClassLayout.vb
index 1935d98d..ada8f44d 100644
--- a/EDMI_ClientSuite/ClassLayout.vb
+++ b/EDMI_ClientSuite/ClassLayout.vb
@@ -1,4 +1,5 @@
Imports System.IO
+Imports DevExpress.XtraGrid.Views.Base
'''
''' Helper Class to save DevExpress layouts
@@ -17,6 +18,7 @@
Public Class ClassLayout
Public Enum GroupName
LayoutMain
+ LayoutUserManager
End Enum
Public Enum LayoutComponent
@@ -35,6 +37,29 @@ Public Class ClassLayout
Return Path.Combine(GetLayoutDirectory(), oFileName)
End Function
+ '''
+ ''' Returns a path for the chosen Devexpress layout file
+ '''
+ ''' The Group to which the the component belongs to. For example, a form could be a Layout
+ ''' The component to which the layout belongs to
+ '''
+ Public Shared Function GetLayoutPath(Group As GroupName, Component As String) As String
+ Dim oFileName As String = $"{Group.ToString}-{Component}.xml"
+ Return Path.Combine(GetLayoutDirectory(), oFileName)
+ End Function
+
+ '''
+ ''' Returns a path for the chosen Devexpress layout file
+ '''
+ ''' The Group to which the the component belongs to. For example, a form could be a Layout
+ ''' The component to which the layout belongs to
+ ''' The sub component under the component
+ '''
+ Public Shared Function GetLayoutPath(Group As GroupName, Component As String, SubComponent As String) As String
+ Dim oFileName As String = $"{Group.ToString}-{Component}-{SubComponent}.xml"
+ Return Path.Combine(GetLayoutDirectory(), oFileName)
+ End Function
+
Public Shared Function GetLayoutDirectory() As String
Return Path.Combine(GetAppDataFolder(), ClassConstants.FOLDER_NAME_LAYOUT)
End Function
diff --git a/EDMI_ClientSuite/ClassService.vb b/EDMI_ClientSuite/ClassService.vb
index 50f0c09e..7c4b39fb 100644
--- a/EDMI_ClientSuite/ClassService.vb
+++ b/EDMI_ClientSuite/ClassService.vb
@@ -19,7 +19,7 @@ Public Class ClassService
End Sub
Public Function TestConnection() As ConnectionTestResult
- Return TestConnection(My.Config.ServiceConnection)
+ Return TestConnection(My.SysConfig.ServiceConnection)
End Function
Public Function TestConnection(EndpointURL As String) As ConnectionTestResult
@@ -41,7 +41,7 @@ Public Class ClassService
End Function
Public Async Function TestConnectionAsync() As Task(Of ConnectionTestResult)
- Return Await TestConnectionAsync(My.Config.ServiceConnection)
+ Return Await TestConnectionAsync(My.SysConfig.ServiceConnection)
End Function
Public Async Function TestConnectionAsync(EndpointURL As String) As Task(Of ConnectionTestResult)
@@ -65,7 +65,7 @@ Public Class ClassService
End Function
Public Function GetChannelFactory() As IChannelFactory(Of IEDMServiceChannel)
- Return GetChannelFactory(My.Config.ServiceConnection)
+ Return GetChannelFactory(My.SysConfig.ServiceConnection)
End Function
Public Function GetChannelFactory(EndpointURL As String) As ChannelFactory(Of IEDMServiceChannel)
diff --git a/EDMI_ClientSuite/ClassUIConfig.vb b/EDMI_ClientSuite/ClassUIConfig.vb
new file mode 100644
index 00000000..1829fcb9
--- /dev/null
+++ b/EDMI_ClientSuite/ClassUIConfig.vb
@@ -0,0 +1,3 @@
+Public Class ClassUIConfig
+ Public Property SkinName As String = "Office 2016 Colorful"
+End Class
diff --git a/EDMI_ClientSuite/ClientSuite.vbproj b/EDMI_ClientSuite/ClientSuite.vbproj
index 20ac0fdc..591d747c 100644
--- a/EDMI_ClientSuite/ClientSuite.vbproj
+++ b/EDMI_ClientSuite/ClientSuite.vbproj
@@ -123,6 +123,7 @@
+
diff --git a/EDMI_ClientSuite/My Project/licenses.licx b/EDMI_ClientSuite/My Project/licenses.licx
index 8c918bc0..94f1f510 100644
--- a/EDMI_ClientSuite/My Project/licenses.licx
+++ b/EDMI_ClientSuite/My Project/licenses.licx
@@ -1,9 +1,10 @@
-DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraBars.Docking.DockManager, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraBars.Docking2010.DocumentManager, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraDataLayout.DataLayoutControl, DevExpress.XtraLayout.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraVerticalGrid.PropertyGridControl, DevExpress.XtraVerticalGrid.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
-DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraBars.Docking.DockManager, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.ButtonEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraBars.Docking2010.DocumentManager, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
DevExpress.XtraTabbedMdi.XtraTabbedMdiManager, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraGrid.GridControl, DevExpress.XtraGrid.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraLayout.LayoutControl, DevExpress.XtraLayout.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraEditors.TextEdit, DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
+DevExpress.XtraBars.Ribbon.RibbonControl, DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a
diff --git a/EDMI_ClientSuite/MyApplication.vb b/EDMI_ClientSuite/MyApplication.vb
index 668e9a65..d8f84a02 100644
--- a/EDMI_ClientSuite/MyApplication.vb
+++ b/EDMI_ClientSuite/MyApplication.vb
@@ -11,12 +11,20 @@ Namespace My
'''
Module Extension
- Property ConfigManager As ConfigManager(Of ClassConfig)
- ReadOnly Property Config As ClassConfig
+ Property SystemConfigManager As ConfigManager(Of ClassConfig)
+ ReadOnly Property SysConfig As ClassConfig
Get
- Return ConfigManager.Config
+ Return SystemConfigManager.Config
End Get
End Property
+
+ Property UIConfigManager As ConfigManager(Of ClassUIConfig)
+ ReadOnly Property UIConfig As ClassUIConfig
+ Get
+ Return UIConfigManager.Config
+ End Get
+ End Property
+
Property LogConfig As LogConfig
Property ChannelFactory As ChannelFactory(Of IEDMServiceChannel)
Property Channel As IEDMServiceChannel
diff --git a/EDMI_ClientSuite/UserManager/UserControlAssignment.vb b/EDMI_ClientSuite/UserManager/UserControlAssignment.vb
index 3682d4c1..b8537657 100644
--- a/EDMI_ClientSuite/UserManager/UserControlAssignment.vb
+++ b/EDMI_ClientSuite/UserManager/UserControlAssignment.vb
@@ -1,6 +1,7 @@
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Views.Base
Imports DevExpress.XtraGrid.Views.Grid
+Imports DigitalData.GUIs.ClientSuite.ClassLayout
Public Class UserControlAssignment
Private _DragDropManager As ClassDragDrop
@@ -41,6 +42,22 @@ Public Class UserControlAssignment
GridAssignedToParent = ClassUIUtils.ConfigureGridControlDefaults(GridAssignedToParent, [ReadOnly]:=True)
ViewAssignedToParent.OptionsSelection.MultiSelectMode = GridMultiSelectMode.CheckBoxRowSelect
ViewAssignedToParent.OptionsSelection.MultiSelect = True
+
+ ' Load view layouts
+
+ Dim ViewParentListPath = GetLayoutPath(GroupName.LayoutUserManager, Name, ViewParentList.Name)
+ Dim ViewAssignedPath = GetLayoutPath(GroupName.LayoutUserManager, Name, ViewAssignedToParent.Name)
+ Dim ViewNotAssignedPath = GetLayoutPath(GroupName.LayoutUserManager, Name, ViewNotAssignedToParent.Name)
+
+ If IO.File.Exists(ViewParentListPath) Then
+ ViewParentList.RestoreLayoutFromXml(ViewParentListPath)
+ End If
+ If IO.File.Exists(ViewAssignedPath) Then
+ ViewAssignedToParent.RestoreLayoutFromXml(ViewAssignedPath)
+ End If
+ If IO.File.Exists(ViewNotAssignedPath) Then
+ ViewNotAssignedToParent.RestoreLayoutFromXml(ViewNotAssignedPath)
+ End If
End Sub
Private Function MaybeCopyToDataTable(RowCollection As EnumerableRowCollection(Of DataRow)) As DataTable
@@ -174,4 +191,10 @@ Public Class UserControlAssignment
GridAssignedToParent.DataSource = MaybeCopyToDataTable(oAssignedChildren)
GridNotAssignedToParent.DataSource = MaybeCopyToDataTable(oNotAssignedChildren)
End Sub
+
+ Private Sub View_LayoutChanged(sender As Object, e As EventArgs) Handles ViewNotAssignedToParent.Layout, ViewAssignedToParent.Layout, ViewParentList.Layout
+ Dim oView As BaseView = sender
+ Dim oLayoutPath = GetLayoutPath(GroupName.LayoutUserManager, Name, oView.Name)
+ oView.SaveLayoutToXml(oLayoutPath)
+ End Sub
End Class
diff --git a/EDMI_ClientSuite/UserManager/frmEdit.Designer.vb b/EDMI_ClientSuite/UserManager/frmEdit.Designer.vb
index be510285..9acf8be7 100644
--- a/EDMI_ClientSuite/UserManager/frmEdit.Designer.vb
+++ b/EDMI_ClientSuite/UserManager/frmEdit.Designer.vb
@@ -1,6 +1,6 @@
Partial Class frmEdit
- Inherits System.Windows.Forms.Form
+ Inherits DevExpress.XtraBars.Ribbon.RibbonForm
'Das Formular überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
@@ -22,27 +22,38 @@ Partial Class frmEdit
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
Private Sub InitializeComponent()
+ Me.components = New System.ComponentModel.Container()
Me.SplitContainerControl1 = New DevExpress.XtraEditors.SplitContainerControl()
Me.GridList = New DevExpress.XtraGrid.GridControl()
Me.ViewList = New DevExpress.XtraGrid.Views.Grid.GridView()
- Me.PanelEditControls = New DevExpress.XtraEditors.PanelControl()
+ Me.LayoutControl1 = New DevExpress.XtraLayout.LayoutControl()
+ Me.LayoutControlGroup1 = New DevExpress.XtraLayout.LayoutControlGroup()
+ Me.RibbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl()
+ Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
+ Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
+ Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
+ Me.RibbonStatusBar1 = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
+ Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage()
+ Me.BarButtonItem1 = New DevExpress.XtraBars.BarButtonItem()
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainerControl1.SuspendLayout()
CType(Me.GridList, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.ViewList, System.ComponentModel.ISupportInitialize).BeginInit()
- CType(Me.PanelEditControls, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.LayoutControlGroup1, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'SplitContainerControl1
'
Me.SplitContainerControl1.Dock = System.Windows.Forms.DockStyle.Fill
- Me.SplitContainerControl1.Location = New System.Drawing.Point(0, 0)
+ Me.SplitContainerControl1.Location = New System.Drawing.Point(0, 146)
Me.SplitContainerControl1.Name = "SplitContainerControl1"
Me.SplitContainerControl1.Panel1.Controls.Add(Me.GridList)
Me.SplitContainerControl1.Panel1.Text = "Panel1"
- Me.SplitContainerControl1.Panel2.Controls.Add(Me.PanelEditControls)
+ Me.SplitContainerControl1.Panel2.Controls.Add(Me.LayoutControl1)
Me.SplitContainerControl1.Panel2.Text = "Panel2"
- Me.SplitContainerControl1.Size = New System.Drawing.Size(1104, 505)
+ Me.SplitContainerControl1.Size = New System.Drawing.Size(1104, 338)
Me.SplitContainerControl1.SplitterPosition = 332
Me.SplitContainerControl1.TabIndex = 0
Me.SplitContainerControl1.Text = "SplitContainerControl1"
@@ -53,7 +64,7 @@ Partial Class frmEdit
Me.GridList.Location = New System.Drawing.Point(0, 0)
Me.GridList.MainView = Me.ViewList
Me.GridList.Name = "GridList"
- Me.GridList.Size = New System.Drawing.Size(332, 505)
+ Me.GridList.Size = New System.Drawing.Size(332, 338)
Me.GridList.TabIndex = 0
Me.GridList.ViewCollection.AddRange(New DevExpress.XtraGrid.Views.Base.BaseView() {Me.ViewList})
'
@@ -62,13 +73,70 @@ Partial Class frmEdit
Me.ViewList.GridControl = Me.GridList
Me.ViewList.Name = "ViewList"
'
- 'PanelEditControls
+ 'LayoutControl1
'
- Me.PanelEditControls.Dock = System.Windows.Forms.DockStyle.Fill
- Me.PanelEditControls.Location = New System.Drawing.Point(0, 0)
- Me.PanelEditControls.Name = "PanelEditControls"
- Me.PanelEditControls.Size = New System.Drawing.Size(760, 505)
- Me.PanelEditControls.TabIndex = 0
+ Me.LayoutControl1.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.LayoutControl1.Location = New System.Drawing.Point(0, 0)
+ Me.LayoutControl1.Name = "LayoutControl1"
+ Me.LayoutControl1.OptionsCustomizationForm.DesignTimeCustomizationFormPositionAndSize = New System.Drawing.Rectangle(-870, 211, 650, 400)
+ Me.LayoutControl1.Root = Me.LayoutControlGroup1
+ Me.LayoutControl1.Size = New System.Drawing.Size(760, 338)
+ Me.LayoutControl1.TabIndex = 0
+ Me.LayoutControl1.Text = "LayoutControl1"
+ '
+ 'LayoutControlGroup1
+ '
+ Me.LayoutControlGroup1.EnableIndentsWithoutBorders = DevExpress.Utils.DefaultBoolean.[True]
+ Me.LayoutControlGroup1.GroupBordersVisible = False
+ Me.LayoutControlGroup1.Name = "Root"
+ Me.LayoutControlGroup1.Size = New System.Drawing.Size(760, 338)
+ Me.LayoutControlGroup1.TextVisible = False
+ '
+ 'RibbonControl1
+ '
+ Me.RibbonControl1.ExpandCollapseItem.Id = 0
+ Me.RibbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl1.ExpandCollapseItem, Me.BarButtonItem1})
+ Me.RibbonControl1.Location = New System.Drawing.Point(0, 0)
+ Me.RibbonControl1.MaxItemId = 2
+ Me.RibbonControl1.Name = "RibbonControl1"
+ Me.RibbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
+ Me.RibbonControl1.Size = New System.Drawing.Size(1104, 146)
+ Me.RibbonControl1.StatusBar = Me.RibbonStatusBar1
+ '
+ 'RibbonPage1
+ '
+ Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup2})
+ Me.RibbonPage1.Name = "RibbonPage1"
+ Me.RibbonPage1.Text = "RibbonPage1"
+ '
+ 'RibbonPageGroup1
+ '
+ Me.RibbonPageGroup1.ItemLinks.Add(Me.BarButtonItem1)
+ Me.RibbonPageGroup1.Name = "RibbonPageGroup1"
+ Me.RibbonPageGroup1.Text = "RibbonPageGroup1"
+ '
+ 'RibbonPageGroup2
+ '
+ Me.RibbonPageGroup2.Name = "RibbonPageGroup2"
+ Me.RibbonPageGroup2.Text = "RibbonPageGroup2"
+ '
+ 'RibbonStatusBar1
+ '
+ Me.RibbonStatusBar1.Location = New System.Drawing.Point(0, 484)
+ Me.RibbonStatusBar1.Name = "RibbonStatusBar1"
+ Me.RibbonStatusBar1.Ribbon = Me.RibbonControl1
+ Me.RibbonStatusBar1.Size = New System.Drawing.Size(1104, 21)
+ '
+ 'RibbonPage2
+ '
+ Me.RibbonPage2.Name = "RibbonPage2"
+ Me.RibbonPage2.Text = "RibbonPage2"
+ '
+ 'BarButtonItem1
+ '
+ Me.BarButtonItem1.Caption = "BarButtonItem1"
+ Me.BarButtonItem1.Id = 1
+ Me.BarButtonItem1.Name = "BarButtonItem1"
'
'frmEdit
'
@@ -76,19 +144,34 @@ Partial Class frmEdit
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1104, 505)
Me.Controls.Add(Me.SplitContainerControl1)
+ Me.Controls.Add(Me.RibbonStatusBar1)
+ Me.Controls.Add(Me.RibbonControl1)
Me.Name = "frmEdit"
+ Me.Ribbon = Me.RibbonControl1
+ Me.StatusBar = Me.RibbonStatusBar1
Me.Text = "frmEdit"
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainerControl1.ResumeLayout(False)
CType(Me.GridList, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.ViewList, System.ComponentModel.ISupportInitialize).EndInit()
- CType(Me.PanelEditControls, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.LayoutControl1, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.LayoutControlGroup1, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.RibbonControl1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
+ Me.PerformLayout()
End Sub
Friend WithEvents SplitContainerControl1 As DevExpress.XtraEditors.SplitContainerControl
Friend WithEvents GridList As DevExpress.XtraGrid.GridControl
Friend WithEvents ViewList As DevExpress.XtraGrid.Views.Grid.GridView
- Friend WithEvents PanelEditControls As DevExpress.XtraEditors.PanelControl
+ Friend WithEvents LayoutControl1 As DevExpress.XtraLayout.LayoutControl
+ Friend WithEvents LayoutControlGroup1 As DevExpress.XtraLayout.LayoutControlGroup
+ Friend WithEvents RibbonControl1 As DevExpress.XtraBars.Ribbon.RibbonControl
+ Friend WithEvents RibbonPage1 As DevExpress.XtraBars.Ribbon.RibbonPage
+ Friend WithEvents RibbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
+ Friend WithEvents RibbonPageGroup2 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
+ Friend WithEvents RibbonStatusBar1 As DevExpress.XtraBars.Ribbon.RibbonStatusBar
+ Friend WithEvents RibbonPage2 As DevExpress.XtraBars.Ribbon.RibbonPage
+ Friend WithEvents BarButtonItem1 As DevExpress.XtraBars.BarButtonItem
End Class
diff --git a/EDMI_ClientSuite/UserManager/frmEdit.vb b/EDMI_ClientSuite/UserManager/frmEdit.vb
index 059a28d8..1ffbb539 100644
--- a/EDMI_ClientSuite/UserManager/frmEdit.vb
+++ b/EDMI_ClientSuite/UserManager/frmEdit.vb
@@ -1,11 +1,104 @@
-Public Class frmEdit
- Public Property Datatable As DataTable
+Imports DevExpress.XtraEditors
+Imports DevExpress.XtraLayout
- Private Sub frmEdit_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- GridList = ClassUIUtils.ConfigureGridControlDefaults(GridList)
+Public Class frmEdit
+ Private ReadOnly _Datatable As DataTable
+ Private _LanguageDatatable As DataTable
+ Private _AttributeId As Integer
+
+ Public Sub New(AttributeId As Integer, Datatable As DataTable)
+ ' Dieser Aufruf ist für den Designer erforderlich.
+ InitializeComponent()
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
- _Datatable = DataTable
- GridList.DataSource = DataTable
+ _Datatable = Datatable
+ _AttributeId = AttributeId
+ End Sub
+
+ Private Async Sub frmEdit_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+ GridList = ClassUIUtils.ConfigureGridControlDefaults(GridList, [ReadOnly]:=True)
+
+ ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
+ GridList.DataSource = _Datatable
+
+ Dim oUserLanguage = My.Application.User.Language
+ Await LoadLanguageTableAsync(oUserLanguage)
+ LoadFormLayout()
+ End Sub
+
+ Private Async Function LoadLanguageTableAsync(UserLanguage As String) As Task
+ Dim oSQL = $"SELECT * FROM VWICM_ATTRIBUTE_LANGUAGE WHERE LANGUAGE_CODE = '{UserLanguage}' AND PARENT_ATTRIBUTE_ID = '{_AttributeId}' ORDER BY ""SEQUENCE"";"
+
+ Await My.Channel.CreateDatabaseRequestAsync("Language Syskey", False)
+ Dim oResult = Await My.Channel.ReturnDatatableAsync(oSQL)
+ _LanguageDatatable = oResult.Table
+
+ Await My.Channel.CloseDatabaseRequestAsync()
+ End Function
+
+ Private Function GetColumnEditor(Column As DataColumn, AttributeId As Integer)
+ Dim oEditor As BaseEdit
+
+ Select Case Column.DataType
+ Case GetType(Int64)
+ Dim oTextEdit = New TextEdit()
+ oTextEdit.Name = Column.ColumnName
+ oTextEdit.Properties.Mask.MaskType = Mask.MaskType.Numeric
+ oTextEdit.Properties.Mask.EditMask = "n"
+ oEditor = oTextEdit
+ Case Else
+ oEditor = New TextEdit() With {.Name = Column.ColumnName}
+ End Select
+
+ If AttributeId > 0 Then
+ oEditor.Tag = AttributeId
+ End If
+
+ Return oEditor
+ End Function
+
+ Private Function GetColumnCaption(Column As DataColumn, SequenceId As Integer)
+ Dim oRow = GetRowBySequence(SequenceId)
+ Dim oCaption = Column.ColumnName
+
+ If oRow IsNot Nothing Then
+ oCaption = oRow.Item("LANGUAGE_TERM")
+ ElseIf oCaption = ClassConstants.ATTRIBUTE_ID_COLUMN Then
+ oCaption = "ID"
+ End If
+
+ Return oCaption
+ End Function
+
+ Private Function GetRowBySequence(SequenceId As Integer)
+ Return _LanguageDatatable.Select($"SEQUENCE = {SequenceId}").FirstOrDefault()
+ End Function
+
+ Private Function GetRowItemBySequence(SequenceId As Integer, ColumnName As String)
+ Dim oRow = _LanguageDatatable.Select($"SEQUENCE = {SequenceId}").FirstOrDefault()
+ Return oRow?.Item(ColumnName)
+ End Function
+
+ Private Sub LoadFormLayout()
+ ' Counter is used to match SEQUENCE in Attributes
+ ' to column order in the used View (eg. VWICM_USER)
+ Dim oCounter = 0
+
+ For Each oColumn As DataColumn In _Datatable.Columns
+ Dim oAttributeId As Integer = GetRowItemBySequence(oCounter, "ATTRIBUTE_ID")
+ Dim oCaption = GetColumnCaption(oColumn, oCounter)
+ Dim oEditor = GetColumnEditor(oColumn, oAttributeId)
+ oEditor.DataBindings.Add(New Binding("Text", _Datatable, oColumn.ColumnName))
+
+ ' Add Control to Layout
+ LayoutControlGroup1.AddItem(oCaption, oEditor)
+ ViewList.Columns.Item(oColumn.ColumnName).Caption = oCaption
+
+ oCounter = oCounter + 1
+ Next
+
+ ' General Layout Tweaks
+ LayoutControlGroup1.AddItem(New EmptySpaceItem())
+ LayoutControlGroup1.LayoutMode = Utils.LayoutMode.Flow
End Sub
End Class
\ No newline at end of file
diff --git a/EDMI_ClientSuite/UserManager/frmUserManager.vb b/EDMI_ClientSuite/UserManager/frmUserManager.vb
index 54f54217..02a8b415 100644
--- a/EDMI_ClientSuite/UserManager/frmUserManager.vb
+++ b/EDMI_ClientSuite/UserManager/frmUserManager.vb
@@ -18,6 +18,8 @@ Public Class frmUserManager
AddHandler UCUserToGroup.ChildRemoved, AddressOf HandleUserAssignedToGroup
AddHandler UCUserToGroup.ChildAdded, AddressOf HandleUserDismissedFromGroup
+
+ RibbonControl.SelectPage(RibbonPageUserManager)
End Sub
Private Async Function InitUserToGroupData() As Task
@@ -65,19 +67,20 @@ Public Class frmUserManager
Private Async Sub BarButtonUserEdit_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonUserEdit.ItemClick
Dim oDatatable = Await GetAttributeListAsync("User")
- Dim oForm As New frmEdit()
- oForm.Datatable = oDatatable
+ Dim oForm As New frmEdit(ClassConstants.DB_USER_ATTRIBUTE_ID, oDatatable)
+ 'oForm.MdiParent = o
oForm.Show()
End Sub
Private Async Sub BarButtonGroupEdit_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonGroupEdit.ItemClick
Dim oDatatable = Await GetAttributeListAsync("Group")
- Dim oForm As New frmEdit()
- oForm.Datatable = oDatatable
+ Dim oForm As New frmEdit(ClassConstants.DB_GROUP_ATTRIBUTE_ID, oDatatable)
oForm.Show()
End Sub
Private Async Sub BarButtonRefresh_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonRefresh.ItemClick
Await UpdateUserToGroupData()
End Sub
+
+
End Class
\ No newline at end of file
diff --git a/EDMI_ClientSuite/frmConfigService.vb b/EDMI_ClientSuite/frmConfigService.vb
index 60a66feb..46993fb2 100644
--- a/EDMI_ClientSuite/frmConfigService.vb
+++ b/EDMI_ClientSuite/frmConfigService.vb
@@ -4,9 +4,9 @@
Private Sub frmServiceConfig_Load(sender As Object, e As EventArgs) Handles Me.Load
_Service = New ClassService(My.LogConfig)
- If My.ConfigManager.Config.ServiceConnection <> String.Empty Then
- txtIPAddress.Text = My.ConfigManager.Config.ServiceIP
- txtPort.Text = My.ConfigManager.Config.ServicePort
+ If My.SystemConfigManager.Config.ServiceConnection <> String.Empty Then
+ txtIPAddress.Text = My.SystemConfigManager.Config.ServiceIP
+ txtPort.Text = My.SystemConfigManager.Config.ServicePort
End If
txtIPAddress.Focus()
@@ -18,14 +18,14 @@
Dim oEndpointURL = $"net.tcp://{oIPAddress}:{oPort}/DigitalData/Services/Main"
Dim oResult As ClassService.ConnectionTestResult
- My.Config.ServiceIP = oIPAddress
- My.Config.ServicePort = Integer.Parse(oPort)
+ My.SysConfig.ServiceIP = oIPAddress
+ My.SysConfig.ServicePort = Integer.Parse(oPort)
lblStatus.Text = "Verbindung wird hergestellt..."
oResult = Await _Service.TestConnectionAsync()
If oResult = ClassService.ConnectionTestResult.Successful Then
- My.ConfigManager.Save()
+ My.SystemConfigManager.Save()
lblStatus.Text = "Verbindung hergestellt."
Else
Select Case oResult
diff --git a/EDMI_ClientSuite/frmConfigUser.vb b/EDMI_ClientSuite/frmConfigUser.vb
index 9f083691..620653b4 100644
--- a/EDMI_ClientSuite/frmConfigUser.vb
+++ b/EDMI_ClientSuite/frmConfigUser.vb
@@ -14,7 +14,7 @@ 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
+ chkLogErrorsOnly.Checked = Not My.SysConfig.LogDebug
End Sub
Private Sub btnLogFolder_Click(sender As Object, e As EventArgs) Handles btnLogFolder.Click
@@ -28,7 +28,7 @@ Public Class frmConfigUser
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()
+ My.SysConfig.LogDebug = oLogDebug
+ My.SystemConfigManager.Save()
End Sub
End Class
\ No newline at end of file
diff --git a/EDMI_ClientSuite/frmMain.resx b/EDMI_ClientSuite/frmMain.resx
index 25645f24..16b2b657 100644
--- a/EDMI_ClientSuite/frmMain.resx
+++ b/EDMI_ClientSuite/frmMain.resx
@@ -123,57 +123,56 @@
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAHXRFWHRUaXRsZQBDbG9zZTtF
- eGl0O0JhcnM7UmliYm9uO0YDuegAAAC0SURBVDhPrZJBCsJAEAQ9Bf1XfuJHVCJINPgWPfkUf7N2LztL
- 7+x4kHgoxO7pIgY37/2Y1vB3wROcXaZMgDc1UwGLIaWcnSQ3DqUbwMNyFcw8MPBdJXks3WKdCsjFHR6B
- H1/LbSggjURB14xJJCCdBFk3Jt8EzWMXAX9OdxsJurGBrpN4gX9hNxC92FAwuUOOrfOS+mdTwQvsgrGR
- JfjcAt7mXAWExd1lygzqmHjBz6wUjOkDS6KAnnKqaOAAAAAASUVORK5CYII=
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAddEVYdFRpdGxlAENsb3NlO0V4aXQ7QmFycztSaWJi
+ b247RgO56AAAALRJREFUOE+tkkEKwkAQBD0F/Vd+4kdUIkg0+BY9+RR/s3YvO0vv7HiQeCjE7ukiBjfv
+ /ZjW8HfBE5xdpkyANzVTAYshpZydJDcOpRvAw3IVzDww8F0leSzdYp0KyMUdHoEfX8ttKCCNREHXjEkk
+ IJ0EWTcm3wTNYxcBf053Gwm6sYGuk3iBf2E3EL3YUDC5Q46t85L6Z1PBC+yCsZEl+NwC3uZcBYTF3WXK
+ DOqYeMHPrBSM6QNLooCecqpo4AAAAABJRU5ErkJggg==
- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAHXRFWHRUaXRsZQBDbG9zZTtF
- eGl0O0JhcnM7UmliYm9uO0YDuegAAAF2SURBVFhH7ZZBTsMwEEW76n1AIFDFkptwPSrRLjgLhwDBBcDM
- R/Mj2/l2xiAUJLp4rer543lJk7SblNKqfL083d2mNTgJ/AuBd7E2ERF4M26Mx2wtytHYGa/ZWsGSAIZf
- en1rjEhg+NZ7Lwwp0RPAqduhRuxzVGIanvXiTHx4fQK1lgC4N4qNPNuTUMMh/uD1AtQZmhWdvaE2VBLH
- PJdl5XCADIMy4Oy5IbG1WmLoyAlyDMtARu9MzIZ7vTscIMewDFS0JIaPnCA/IgBmEjmoGaHhAD1slIEG
- UgJrRng4QN93BFrfOa8J1SNB36iAHE5QM8IS6GGjDFS0bjW1FpJAPirQu89b18SiBHIMy4ATecL1nhP5
- XgXIMSwDRu/I62zkiVmADIMq0LraD1mmZuhMoM5QXcRP5zU38Qw26g0nSuLKGP45fjHOvR4dTiYJez8z
- nn29YEkAQAL2I8MJJNArh4OIAOj+sVzgx39Kf5WTwN8RWI+0+QTdeyAQju/HFwAAAABJRU5ErkJggg==
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAddEVYdFRpdGxlAENsb3NlO0V4aXQ7QmFycztSaWJi
+ b247RgO56AAAAXZJREFUWEftlkFOwzAQRbvqfUAgUMWSm3A9KtEuOAuHAMEFwMxH8yPb+XbGIBQkunit
+ 6vnjeUmTtJuU0qp8vTzd3aY1OAn8C4F3sTYREXgzbozHbC3K0dgZr9lawZIAhl96fWuMSGD41nsvDCnR
+ E8Cp26FG7HNUYhqe9eJMfHh9ArWWALg3io0825NQwyH+4PUC1BmaFZ29oTZUEsc8l2XlcIAMgzLg7Lkh
+ sbVaYujICXIMy0BG70zMhnu9Oxwgx7AMVLQkho+cID8iAGYSOagZoeEAPWyUgQZSAmtGeDhA33cEWt85
+ rwnVI0HfqIAcTlAzwhLoYaMMVLRuNbUWkkA+KtC7z1vXxKIEcgzLgBN5wvWeE/leBcgxLANG78jrbOSJ
+ WYAMgyrQutoPWaZm6EygzlBdxE/nNTfxDDbqDSdK4soY/jl+Mc69Hh1OJgl7PzOefb1gSQBAAvYjwwkk
+ 0CuHg4gA6P6xXODHf0p/lZPA3xFYj7T5BN17IBCO78cXAAAAAElFTkSuQmCC
- iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAR3RFWHRUaXRsZQBDdXN0b21l
- cjtFbXBsb3llZTtGaXg7UHVibGljO1NldHRpbmdzO09wdGlvbnM7Q3VzdG9taXo7R3JvdXA7VGVhbWkL
- E4gAAAEQSURBVDhPpdM/agJREMfxNQYtbew9QQoF29xAU9p5AZsUEluR7T1AinSBnMC9ghZ7iOANBBUk
- br6/ZR7Mk5UlpPjwmHH+vF01KYriXyqTf5GkaXpPA+84mA88IKqLghtdbFE4Q0R1Pri38QdhwAS+Jxqg
- 6X6bKLdz8QK+Jxqg6b5ZlPtEjjZ8fckHmh4NGK2yxDTRx9lOxeVnfkAHRzWagxVp0BtmuNqpuFzgB8gc
- YcCUAm1S8cUaAsXKRwMe8YRn06BA19VGNa3Rs1Ox8n016uUs8Y09XkyLAj2zrq2GHrlXnRYrf9aAL4Rr
- e+3xajOgqPYGp5vGIKeg7h00w/NXoqD+W6j6hwUqcPzvwHJZ8gvZcCD22oxTxwAAAABJRU5ErkJggg==
+ iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABHdEVYdFRpdGxlAEN1c3RvbWVyO0VtcGxveWVlO0Zp
+ eDtQdWJsaWM7U2V0dGluZ3M7T3B0aW9ucztDdXN0b21pejtHcm91cDtUZWFtaQsTiAAAARBJREFUOE+l
+ 0z9qAlEQx/E1Bi1t7D1BCgXb3EBT2nkBmxQSW5HtPUCKdIGcwL2CFnuI4A0EFSRuvr9lHsyTlSWk+PCY
+ cf68XTUpiuJfKpN/kaRpek8D7ziYDzwgqouCG11sUThDRHU+uLfxB2HABL4nGqDpfpsot3PxAr4nGqDp
+ vlmU+0SONnx9yQeaHg0YrbLENNHH2U7F5Wd+QAdHNZqDFWnQG2a42qm4XOAHyBxhwJQCbVLxxRoCxcpH
+ Ax7xhGfToEDX1UY1rdGzU7HyfTXq5SzxjT1eTIsCPbOurYYeuVedFit/1oAvhGt77fFqM6Co9ganm8Yg
+ p6DuHTTD81eioP5bqPqHBSpw/O/AclnyC9lwIPbajFPHAAAAAElFTkSuQmCC
- iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
- YQUAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAAAR3RFWHRUaXRsZQBDdXN0b21l
- cjtFbXBsb3llZTtGaXg7UHVibGljO1NldHRpbmdzO09wdGlvbnM7Q3VzdG9taXo7R3JvdXA7VGVhbWkL
- E4gAAALBSURBVFhHxdZPiE1hGMfxGf/CMLJUFjZScpXCTP4VO+lO3awQFlgodmIhm+lubG0lC0UkK39G
- jT8ZhPyXaUZWSNhNIqK5vr+Z922enp5zHVehPjn3ed/397zn3HPOnbZGo/FfhcV/KSyWVa/X1+MyPuIH
- PuEqNkTzI2GxDJp04ycaAdXXReu8sFgGDU6ZhpGz0TovLJZBgyeuofc0WueFxTJocBSjpqH3OlrnhcWM
- kB0YgL3J7mIn2nEYUXPRfVCJcq2wKCw+YsIi+jcDI4jGpRplW2GRhTPx2QRFvqITt0zNeobpUb4VFlnY
- ZYKaWYuLrpbtirK9sMjiTS6siOYdczX5gI4o2wuLLN5nwprZj+Wu9h0bo9xIWCTgngls5gF0vxzHfZzE
- b+98KywS0o+ooddfsL6CKdGYFxZTQNF7PtP4Ukxza+dD74vH2KvPdtwLi8LCoscr0wtqMvTrtxsrsAfv
- YOfpBXYCc6u9fW1e2FxYUEsBRTS+xtW8hcYCzCu9AWHBGUTBp9P4BVe/Y4ykJq8wnBt6YeOMkKk4gDdQ
- g7c4BF36LamW6clp7+m9srrWe2kOx5XUpJHkpp1YlT+HjTMFmuPZ5nhS+n8zhjC2AZp3EzqK59iOG8gb
- uJlqGtOcLsQbIGwRdPkPFozrV/C85inE0Nm9QG5aRHM0d2IDhM2CLu8g8mXVW63mmuvS20dU87WuQ4HY
- itxIZ6qrIDrOdc2Z+ApYrLvZPz7WQ5zDI1Oz7JXQpc7Ne1JNdJw3oTnjG2DxMnwxYa3QBoZSeHYduXlm
- 7wkZ1gbKvnab0QZeuvDb8BtQzc4Z1Aa+ubBWLCYsN7FfQTXVRMfhV/DehbVKf5otIdTfhNcwkI5zfRvG
- N2Dv8FbkoKT1x7BVCjFWQmf6dy+iP6EQR6/ZsbNL8gbyZ42VexWXkYOa0I+RBGN9bb8A1yMynixVuyMA
- AAAASUVORK5CYII=
+ iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
+ dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAABHdEVYdFRpdGxlAEN1c3RvbWVyO0VtcGxveWVlO0Zp
+ eDtQdWJsaWM7U2V0dGluZ3M7T3B0aW9ucztDdXN0b21pejtHcm91cDtUZWFtaQsTiAAAAsFJREFUWEfF
+ 1k+ITWEYx/EZ/8IwslQWNlJylcJM/hU76U7drBAWWCh2YiGb6W5sbSULRSQrf0aNPxmE/JdpRlZI2E0i
+ orm+v5n3bZ6ennMdV6E+Ofd53/f3vOfcc86dtkaj8V+FxX8pLJZVr9fX4zI+4gc+4So2RPMjYbEMmnTj
+ JxoB1ddF67ywWAYNTpmGkbPROi8slkGDJ66h9zRa54XFMmhwFKOmofc6WueFxYyQHRiAvcnuYifacRhR
+ c9F9UIlyrbAoLD5iwiL6NwMjiMalGmVbYZGFM/HZBEW+ohO3TM16hulRvhUWWdhlgppZi4uulu2Ksr2w
+ yOJNLqyI5h1zNfmAjijbC4ss3mfCmtmP5a72HRuj3EhYJOCeCWzmAXS/HMd9nMRv73wrLBLSj6ih11+w
+ voIp0ZgXFlNA0Xs+0/hSTHNr50Pvi8fYq8923AuLwsKixyvTC2oy9Ou3GyuwB+9g5+kFdgJzq719bV7Y
+ XFhQSwFFNL7G1byFxgLMK70BYcEZRMGn0/gFV79jjKQmrzCcG3ph44yQqTiAN1CDtzgEXfotqZbpyWnv
+ 6b2yutZ7aQ7HldSkkeSmnViVP4eNMwWa49nmeFL6fzOGMLYBmncTOorn2I4byBu4mWoa05wuxBsgbBF0
+ +Q8WjOtX8LzmKcTQ2b1AblpEczR3YgOEzYIu7yDyZdVbreaa69LbR1Tzta5DgdiK3EhnqqsgOs51zZn4
+ Clisu9k/PtZDnMMjU7PsldClzs17Uk10nDehOeMbYPEyfDFhrdAGhlJ4dh25eWbvCRnWBsq+dpvRBl66
+ 8NvwG1DNzhnUBr65sFYsJiw3sV9BNdVEx+FX8N6FtUp/mi0h1N+E1zCQjnN9G8Y3YO/wVuSgpPXHsFUK
+ MVZCZ/p3L6I/oRBHr9mxs0vyBvJnjZV7FZeRg5rQj5EEY31tvwDXIzKeLFW7IwAAAABJRU5ErkJggg==
diff --git a/EDMI_ClientSuite/frmMain.vb b/EDMI_ClientSuite/frmMain.vb
index e0f111a7..e4efa7f7 100644
--- a/EDMI_ClientSuite/frmMain.vb
+++ b/EDMI_ClientSuite/frmMain.vb
@@ -4,10 +4,12 @@ Imports DigitalData.GUIs.ClientSuite.ClassLayout
Imports System.IO
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.License
+Imports DevExpress.LookAndFeel
Public Class frmMain
Private _Logger As Logger
Private _Timer As ClassTimer
+ Private _Loading As Boolean = True
Public Sub New()
' Dieser Aufruf ist für den Designer erforderlich.
@@ -36,10 +38,12 @@ Public Class frmMain
Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
' Initialize Main Timer
- _Timer = New ClassTimer(My.LogConfig, Me, My.Config.HeartbeatInterval)
+ _Timer = New ClassTimer(My.LogConfig, Me, My.SysConfig.HeartbeatInterval)
AddHandler _Timer.OnlineChanged, AddressOf HandleOnlineChanged
SetOnlineLabel()
+ UserLookAndFeel.Default.SetSkinStyle(My.UIConfig.SkinName)
+
LabelCurrentUser.Caption = My.Application.User.UserName
LabelCurrentMachine.Caption = My.Application.User.MachineName
LabelCurrentVersion.Caption = My.Application.Info.Version.ToString
@@ -64,7 +68,11 @@ Public Class frmMain
MsgBox($"Clicked on Document {RowView.Row.Item("DocName")}")
End Sub
+ AddHandler UserLookAndFeel.Default.StyleChanged, AddressOf frmMain_StyleChanged
+
LoadLayout()
+
+ _Loading = False
End Sub
Private Sub FrmMain_Closing(sender As Object, e As CancelEventArgs) Handles Me.Closing
@@ -153,4 +161,11 @@ Public Class frmMain
oForm.MdiParent = DocumentManager.MdiParent
oForm.Show()
End Sub
+
+ Private Sub frmMain_StyleChanged(sender As Object, e As EventArgs) Handles Me.StyleChanged
+ If _Loading = False Then
+ My.UIConfig.SkinName = LookAndFeel.ActiveSkinName
+ My.UIConfigManager.Save()
+ End If
+ End Sub
End Class
\ No newline at end of file
diff --git a/EDMI_ClientSuite/frmSplash.vb b/EDMI_ClientSuite/frmSplash.vb
index 15d29bdd..6abc3a80 100644
--- a/EDMI_ClientSuite/frmSplash.vb
+++ b/EDMI_ClientSuite/frmSplash.vb
@@ -25,7 +25,7 @@ Public NotInheritable Class frmSplash
BringToFront()
Dim oService As New ClassService(My.LogConfig)
- Dim oConnectionURLExists As Boolean = My.Config.ServiceConnection <> String.Empty
+ Dim oConnectionURLExists As Boolean = My.SysConfig.ServiceConnection <> String.Empty
'Dim oInit As New ClassInit()
'Dim oConnectionURLExists = oInit.TestConnectionURLExists()