frmDocumentResultList

This commit is contained in:
Jonathan Jenne 2019-09-30 14:16:37 +02:00
parent d78254fc9c
commit 9f270d93c9
14 changed files with 436 additions and 114 deletions

View File

@ -8,6 +8,7 @@ Public Class ProfileSearches
Private _Params As ClipboardWatcherParams
Public Class Search
Public Guid As Integer
Public DataTable As DataTable
Public TabIndex As Integer
Public TabCaption As String
@ -38,6 +39,7 @@ Public Class ProfileSearches
Dim oProfileId As Integer = oRow.Item("PROFILE_ID")
Dim oTabTitle As String = oRow.Item("TAB_TITLE")
Dim oConnectionId As Integer = oRow.Item("CONN_ID")
Dim oGuid As Integer = oRow.Item("GUID")
oSQL = oRow.Item("SQL_COMMAND")
oSQL = oPatterns.ReplaceUserValues(oSQL, _Environment.User)
@ -46,6 +48,7 @@ Public Class ProfileSearches
Dim oDatatable As DataTable = _Environment.Database.GetDatatable(oSQL, oConnectionId)
oDocSearches.Add(New Search() With {
.Guid = oGuid,
.DataTable = oDatatable,
.ProfileId = oProfileId,
.TabCaption = oTabTitle,

View File

@ -4,6 +4,7 @@ Imports DevExpress.XtraEditors
Imports DigitalData.GUIs.Common
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Windows
Imports DigitalData.Modules.Language
Imports DigitalData.Modules.ZooFlow
Imports DigitalData.Modules.ZooFlow.Params
@ -182,6 +183,10 @@ Public Class frmMatch
Dim oProfileId As Integer = oItem.Tag
Dim oProfileSearch As New ProfileSearches(_LogConfig, _Environment, _Params)
Dim oProfile As ProfileData = _Params.MatchingProfiles.
Where(Function(p) p.Guid = oProfileId).
ToList().
First()
Select Case oItem.Group.Name
Case TileGroupData.Name
@ -189,7 +194,7 @@ Public Class frmMatch
Case TileGroupDocuments.Name
Dim oSearches = Await oProfileSearch.LoadDocumentSearchesAsync()
OpenDocumentResults(oProfileId, oSearches)
OpenDocumentResults(oProfile, oSearches)
Case Else
'OpenResultForms(oProfileId, ProfileType.ANY)
@ -198,12 +203,18 @@ Public Class frmMatch
Hide()
End Sub
Private Sub OpenDocumentResults(ProfileId As Integer, Searches As List(Of ProfileSearches.Search))
Dim oParams = New ResultListParams()
Private Sub OpenDocumentResults(Profile As ProfileData, Searches As List(Of ProfileSearches.Search))
Dim oNameSlug = Language.Utils.ConvertTextToSlug(Profile.Name)
Dim oSearchGuids = Searches.Select(Function(s) s.Guid).ToArray
Dim oWindowGuid = $"{Profile.Guid}-{oNameSlug}-{String.Join("-", oSearchGuids)}"
Dim oParams = New ResultListParams() With {
.WindowGuid = oWindowGuid
}
For Each oSearch In Searches
oParams.Results.Add(New DocumentResult() With {
.Datatable = oSearch.DataTable
.Title = oSearch.TabCaption,
.Datatable = oSearch.DataTable
})
Next

View File

@ -44,13 +44,16 @@
</PropertyGroup>
<ItemGroup>
<Reference Include="DevExpress.Data.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Dialogs.v18.1.Core, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Printing.v18.1.Core, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.Utils.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraBars.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraDialogs.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraEditors.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraGrid.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
<Reference Include="DevExpress.XtraLayout.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraPrinting.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="DevExpress.XtraTreeList.v18.1, Version=18.1.5.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.6.7\lib\net45\NLog.dll</HintPath>
@ -82,6 +85,7 @@
<Import Include="System.Threading.Tasks" />
</ItemGroup>
<ItemGroup>
<Compile Include="DocumentResultConfig.vb" />
<Compile Include="frmDocumentResultList.Designer.vb">
<DependentUpon>frmDocumentResultList.vb</DependentUpon>
</Compile>
@ -140,10 +144,18 @@
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Modules.Config\Config.vbproj">
<Project>{44982f9b-6116-44e2-85d0-f39650b1ef99}</Project>
<Name>Config</Name>
</ProjectReference>
<ProjectReference Include="..\Modules.Database\Database.vbproj">
<Project>{EAF0EA75-5FA7-485D-89C7-B2D843B03A96}</Project>
<Name>Database</Name>
</ProjectReference>
<ProjectReference Include="..\Modules.Language\Language.vbproj">
<Project>{d3c8cfed-d6f6-43a8-9bdf-454145d0352f}</Project>
<Name>Language</Name>
</ProjectReference>
<ProjectReference Include="..\Modules.Logging\Logging.vbproj">
<Project>{903B2D7D-3B80-4BE9-8713-7447B704E1B0}</Project>
<Name>Logging</Name>

View File

@ -0,0 +1,6 @@
Public Class DocumentResultConfig
Public Property SplitContainer1Distance As Integer = 500
Public Property SplitContainer1Horizontal As Boolean = True
Public Property SplitContainer2Distance As Integer = 250
Public Property SplitContainer2Horizontal As Boolean = False
End Class

View File

@ -1,7 +1,12 @@
Public Class ResultListParams
''' <summary>
''' WindowGuid is used to save layout data
''' </summary>
Public WindowGuid As String
Public Results As New List(Of DocumentResult)
End Class
Public Class DocumentResult
Public Title As String
Public Datatable As DataTable
End Class

View File

@ -19,20 +19,28 @@ Partial Class frmDocumentResultList
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmDocumentResultList))
Me.RibbonControl = New DevExpress.XtraBars.Ribbon.RibbonControl()
Me.BarToggleSwitchItem1 = New DevExpress.XtraBars.BarToggleSwitchItem()
Me.BarToggleSwitchItem2 = New DevExpress.XtraBars.BarToggleSwitchItem()
Me.SwitchMainContainerHorizontal = New DevExpress.XtraBars.BarToggleSwitchItem()
Me.SwitchDetailContainerHorizontal = New DevExpress.XtraBars.BarToggleSwitchItem()
Me.BarButtonItemExportGrid1 = New DevExpress.XtraBars.BarButtonItem()
Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonStatusBar = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
Me.SplitContainerControl1 = New DevExpress.XtraEditors.SplitContainerControl()
Me.GridControl1 = New DevExpress.XtraGrid.GridControl()
Me.GridView1 = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.GridView1 = New DevExpress.XtraGrid.Views.BandedGrid.BandedGridView()
Me.GridBand1 = New DevExpress.XtraGrid.Views.BandedGrid.GridBand()
Me.SplitContainerControl2 = New DevExpress.XtraEditors.SplitContainerControl()
Me.GridControl2 = New DevExpress.XtraGrid.GridControl()
Me.GridView2 = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.GridView2 = New DevExpress.XtraGrid.Views.BandedGrid.BandedGridView()
Me.GridBand2 = New DevExpress.XtraGrid.Views.BandedGrid.GridBand()
Me.GridControl3 = New DevExpress.XtraGrid.GridControl()
Me.GridView3 = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.GridView3 = New DevExpress.XtraGrid.Views.BandedGrid.BandedGridView()
Me.GridBand3 = New DevExpress.XtraGrid.Views.BandedGrid.GridBand()
Me.XtraSaveFileDialog = New DevExpress.XtraEditors.XtraSaveFileDialog(Me.components)
CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainerControl1.SuspendLayout()
@ -49,39 +57,56 @@ Partial Class frmDocumentResultList
'RibbonControl
'
Me.RibbonControl.ExpandCollapseItem.Id = 0
Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.BarToggleSwitchItem1, Me.BarToggleSwitchItem2})
Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.SwitchMainContainerHorizontal, Me.SwitchDetailContainerHorizontal, Me.BarButtonItemExportGrid1})
Me.RibbonControl.Location = New System.Drawing.Point(0, 0)
Me.RibbonControl.MaxItemId = 3
Me.RibbonControl.MaxItemId = 4
Me.RibbonControl.Name = "RibbonControl"
Me.RibbonControl.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
Me.RibbonControl.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False]
Me.RibbonControl.Size = New System.Drawing.Size(1189, 143)
Me.RibbonControl.StatusBar = Me.RibbonStatusBar
'
'BarToggleSwitchItem1
'SwitchMainContainerHorizontal
'
Me.BarToggleSwitchItem1.Caption = "BarToggleSwitchItem1"
Me.BarToggleSwitchItem1.Id = 1
Me.BarToggleSwitchItem1.Name = "BarToggleSwitchItem1"
Me.SwitchMainContainerHorizontal.BindableChecked = True
Me.SwitchMainContainerHorizontal.Caption = "Hauptgrid Horizontal"
Me.SwitchMainContainerHorizontal.Checked = True
Me.SwitchMainContainerHorizontal.Id = 1
Me.SwitchMainContainerHorizontal.Name = "SwitchMainContainerHorizontal"
'
'BarToggleSwitchItem2
'SwitchDetailContainerHorizontal
'
Me.BarToggleSwitchItem2.Caption = "BarToggleSwitchItem2"
Me.BarToggleSwitchItem2.Id = 2
Me.BarToggleSwitchItem2.Name = "BarToggleSwitchItem2"
Me.SwitchDetailContainerHorizontal.Caption = "Detailgrid Horizontal"
Me.SwitchDetailContainerHorizontal.Id = 2
Me.SwitchDetailContainerHorizontal.Name = "SwitchDetailContainerHorizontal"
'
'BarButtonItemExportGrid1
'
Me.BarButtonItemExportGrid1.Caption = "Haupttabelle exportieren"
Me.BarButtonItemExportGrid1.Id = 3
Me.BarButtonItemExportGrid1.ImageOptions.Image = CType(resources.GetObject("BarButtonItemExportGrid1.ImageOptions.Image"), System.Drawing.Image)
Me.BarButtonItemExportGrid1.ImageOptions.LargeImage = CType(resources.GetObject("BarButtonItemExportGrid1.ImageOptions.LargeImage"), System.Drawing.Image)
Me.BarButtonItemExportGrid1.Name = "BarButtonItemExportGrid1"
'
'RibbonPage1
'
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1})
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup1, Me.RibbonPageGroup2})
Me.RibbonPage1.Name = "RibbonPage1"
Me.RibbonPage1.Text = "RibbonPage1"
Me.RibbonPage1.Text = "Ergebnisse"
'
'RibbonPageGroup1
'
Me.RibbonPageGroup1.ItemLinks.Add(Me.BarToggleSwitchItem1)
Me.RibbonPageGroup1.ItemLinks.Add(Me.BarToggleSwitchItem2)
Me.RibbonPageGroup1.ItemLinks.Add(Me.SwitchMainContainerHorizontal)
Me.RibbonPageGroup1.ItemLinks.Add(Me.SwitchDetailContainerHorizontal)
Me.RibbonPageGroup1.Name = "RibbonPageGroup1"
Me.RibbonPageGroup1.Text = "Layout"
'
'RibbonPageGroup2
'
Me.RibbonPageGroup2.ItemLinks.Add(Me.BarButtonItemExportGrid1)
Me.RibbonPageGroup2.Name = "RibbonPageGroup2"
Me.RibbonPageGroup2.Text = "Export"
'
'RibbonStatusBar
'
Me.RibbonStatusBar.Location = New System.Drawing.Point(0, 640)
@ -91,6 +116,7 @@ Partial Class frmDocumentResultList
'
'SplitContainerControl1
'
Me.SplitContainerControl1.CollapsePanel = DevExpress.XtraEditors.SplitCollapsePanel.Panel2
Me.SplitContainerControl1.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainerControl1.Location = New System.Drawing.Point(0, 143)
Me.SplitContainerControl1.Name = "SplitContainerControl1"
@ -116,12 +142,28 @@ Partial Class frmDocumentResultList
'
'GridView1
'
Me.GridView1.Bands.AddRange(New DevExpress.XtraGrid.Views.BandedGrid.GridBand() {Me.GridBand1})
Me.GridView1.GridControl = Me.GridControl1
Me.GridView1.Name = "GridView1"
Me.GridView1.OptionsView.ShowAutoFilterRow = True
Me.GridView1.OptionsView.ShowGroupPanel = False
'
'GridBand1
'
Me.GridBand1.AppearanceHeader.Font = New System.Drawing.Font("Tahoma", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.GridBand1.AppearanceHeader.Options.UseFont = True
Me.GridBand1.Caption = "GridBand1"
Me.GridBand1.Name = "GridBand1"
Me.GridBand1.OptionsBand.AllowHotTrack = False
Me.GridBand1.OptionsBand.AllowMove = False
Me.GridBand1.OptionsBand.AllowPress = False
Me.GridBand1.OptionsBand.AllowSize = False
Me.GridBand1.VisibleIndex = 0
Me.GridBand1.Width = 513
'
'SplitContainerControl2
'
Me.SplitContainerControl2.CollapsePanel = DevExpress.XtraEditors.SplitCollapsePanel.Panel2
Me.SplitContainerControl2.Dock = System.Windows.Forms.DockStyle.Fill
Me.SplitContainerControl2.Horizontal = False
Me.SplitContainerControl2.Location = New System.Drawing.Point(0, 0)
@ -148,9 +190,23 @@ Partial Class frmDocumentResultList
'
'GridView2
'
Me.GridView2.Bands.AddRange(New DevExpress.XtraGrid.Views.BandedGrid.GridBand() {Me.GridBand2})
Me.GridView2.GridControl = Me.GridControl2
Me.GridView2.Name = "GridView2"
Me.GridView2.OptionsView.ShowAutoFilterRow = True
Me.GridView2.OptionsView.ShowGroupPanel = False
'
'GridBand2
'
Me.GridBand2.AppearanceHeader.Font = New System.Drawing.Font("Tahoma", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.GridBand2.AppearanceHeader.Options.UseFont = True
Me.GridBand2.Caption = "GridBand2"
Me.GridBand2.Name = "GridBand2"
Me.GridBand2.OptionsBand.AllowHotTrack = False
Me.GridBand2.OptionsBand.AllowMove = False
Me.GridBand2.OptionsBand.AllowPress = False
Me.GridBand2.OptionsBand.AllowSize = False
Me.GridBand2.VisibleIndex = 0
'
'GridControl3
'
@ -165,9 +221,27 @@ Partial Class frmDocumentResultList
'
'GridView3
'
Me.GridView3.Bands.AddRange(New DevExpress.XtraGrid.Views.BandedGrid.GridBand() {Me.GridBand3})
Me.GridView3.GridControl = Me.GridControl3
Me.GridView3.Name = "GridView3"
Me.GridView3.OptionsView.ShowAutoFilterRow = True
Me.GridView3.OptionsView.ShowGroupPanel = False
'
'GridBand3
'
Me.GridBand3.AppearanceHeader.Font = New System.Drawing.Font("Tahoma", 9.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.GridBand3.AppearanceHeader.Options.UseFont = True
Me.GridBand3.Caption = "GridBand3"
Me.GridBand3.Name = "GridBand3"
Me.GridBand3.OptionsBand.AllowHotTrack = False
Me.GridBand3.OptionsBand.AllowMove = False
Me.GridBand3.OptionsBand.AllowPress = False
Me.GridBand3.OptionsBand.AllowSize = False
Me.GridBand3.VisibleIndex = 0
'
'XtraSaveFileDialog
'
Me.XtraSaveFileDialog.FileName = "XtraSaveFileDialog1"
'
'frmDocumentResultList
'
@ -177,10 +251,11 @@ Partial Class frmDocumentResultList
Me.Controls.Add(Me.SplitContainerControl1)
Me.Controls.Add(Me.RibbonStatusBar)
Me.Controls.Add(Me.RibbonControl)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Name = "frmDocumentResultList"
Me.Ribbon = Me.RibbonControl
Me.StatusBar = Me.RibbonStatusBar
Me.Text = "frmDocumentResultList"
Me.Text = "Dokumenten Suche ({0} Ergebnisse)"
CType(Me.RibbonControl, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainerControl1.ResumeLayout(False)
@ -201,15 +276,20 @@ Partial Class frmDocumentResultList
Friend WithEvents RibbonPage1 As DevExpress.XtraBars.Ribbon.RibbonPage
Friend WithEvents RibbonPageGroup1 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents RibbonStatusBar As DevExpress.XtraBars.Ribbon.RibbonStatusBar
Friend WithEvents BarToggleSwitchItem1 As DevExpress.XtraBars.BarToggleSwitchItem
Friend WithEvents BarToggleSwitchItem2 As DevExpress.XtraBars.BarToggleSwitchItem
Friend WithEvents SwitchMainContainerHorizontal As DevExpress.XtraBars.BarToggleSwitchItem
Friend WithEvents SwitchDetailContainerHorizontal As DevExpress.XtraBars.BarToggleSwitchItem
Friend WithEvents SplitContainerControl1 As DevExpress.XtraEditors.SplitContainerControl
Friend WithEvents GridControl1 As DevExpress.XtraGrid.GridControl
Friend WithEvents GridView1 As DevExpress.XtraGrid.Views.Grid.GridView
Friend WithEvents SplitContainerControl2 As DevExpress.XtraEditors.SplitContainerControl
Friend WithEvents GridControl2 As DevExpress.XtraGrid.GridControl
Friend WithEvents GridView2 As DevExpress.XtraGrid.Views.Grid.GridView
Friend WithEvents GridControl3 As DevExpress.XtraGrid.GridControl
Friend WithEvents GridView3 As DevExpress.XtraGrid.Views.Grid.GridView
Friend WithEvents GridView1 As DevExpress.XtraGrid.Views.BandedGrid.BandedGridView
Friend WithEvents GridBand1 As DevExpress.XtraGrid.Views.BandedGrid.GridBand
Friend WithEvents GridView2 As DevExpress.XtraGrid.Views.BandedGrid.BandedGridView
Friend WithEvents GridBand2 As DevExpress.XtraGrid.Views.BandedGrid.GridBand
Friend WithEvents GridView3 As DevExpress.XtraGrid.Views.BandedGrid.BandedGridView
Friend WithEvents GridBand3 As DevExpress.XtraGrid.Views.BandedGrid.GridBand
Friend WithEvents BarButtonItemExportGrid1 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents RibbonPageGroup2 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
Friend WithEvents XtraSaveFileDialog As DevExpress.XtraEditors.XtraSaveFileDialog
End Class

View File

@ -117,4 +117,94 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="BarButtonItemExportGrid1.ImageOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAfdEVYdFRpdGxlAEV4cG9ydDtYc2x0O0V4cG9ydFRv
WHNsdDsT1nubAAAAd0lEQVQ4T91S2wmAMAzs1E6QHRzBHVzBTweKXMpJDBUN8cuDI6/LtZQ2VTWKiGbI
vYvBW/zVAJ0kusG0zFqhGQCjCK77ZjUw0pwGFPphzFl7rRmwgUgRF+Is1o83INkDvPb2DQCf80TARzOo
sP4PmHzylTPse9oOhn1G54TA0vAAAAAASUVORK5CYII=
</value>
</data>
<data name="BarButtonItemExportGrid1.ImageOptions.LargeImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAABl0RVh0U29m
dHdhcmUAQWRvYmUgSW1hZ2VSZWFkeXHJZTwAAAAfdEVYdFRpdGxlAEV4cG9ydDtYc2x0O0V4cG9ydFRv
WHNsdDsT1nubAAABNUlEQVRYR+WQPQ7CMAyFOV+PwgE4QdcOiIGpMxNiZGJAYuIOnZA4BAzhPYRRcJ02
paH8PemTa9dpPhg5596KORwSczgk5nBIzCHJ89x15AAywLM1rDuIOSQ4hBIf7hdFcS7LMkOrv/XQ+5jD
G51CgaqqTIlWgcli7vrAyD9mSVAAezX4LrkAoyWiBBirkuV+e+2Z0K4vwNwkTpSIFpCLpGfVz9LrXS3A
iATeZdhrFpAPsrJnWK131i4FGjhir1mAkQ9Lz+ojM0bvNoUS2GsX0JXxn/1fbO2GEiXQh7Z8hYD1Mlla
BWbjVQ0eShnrDozTCaymO15yhZFnHzXfoE0ngDN3Qr1Ub/4nAqE58jqBUNTeawRiQX5QICbe7ocLxMLg
TFqBJ/gMgS6kFlgD86IA67vA+3CjC4yA0LudSp2BAAAAAElFTkSuQmCC
</value>
</data>
<metadata name="XtraSaveFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAIAEBAAAAEACABoBQAAJgAAACAgAAABAAgAqAgAAI4FAAAoAAAAEAAAACAAAAABAAgAAAAAAEAB
AAAAAAAAAAAAAAABAAAAAAAA3ufvAM7n7wDG1tYAwMDAAL21tQCkoKAAraWUAISEhADvpUoAzpRKAPeM
MQC1lHsA72sAAMZrKQDOYwAArXNKAJRzYwCtezEAtUIAAGtrYwBrY1IAWlpSAHNaGABaUjkAUikQAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAA////AP7+/v7+/v7+/v7+/v7+/v7+BxAQExMTExMTExMTExAHBBYYGBgY
GBgYGBgYGBgYFAsAAAAADwAAAAAAAAAACxULAAAAAA8BBAQEBAMCAQsXCwAAAAAPAQYGBQUEAwELFwsA
AAAADwIEBAQEAwIBCxcLAAAAAA8AAAAAAAAAAAsXCwAAAAAPAQQEBAQDAgELFwsAAAAADwIFBgUFBAMB
CxcLAAAAAA8BAgICAgIBAQsXCwAAAAAPAAICAgICAQELFQsMDAwMDgwMDAwKCggRERMLDQ0NDQ0NDQ0N
CQkJDxIE/gQGBgYGBgYGBgYGBgYDAv7+/v7+/v7+/v7+/v7+/v7/////gAD//wAA//8AAP//AAD//wAA
//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//4AA////////KAAAACAAAABAAAAAAQAIAAAA
AACABAAAAAAAAAAAAAAAAQAAAAAAAN7r7wDW6+8A1ufvANbj5wDW3+cA3tvWAN7X1gDW3t4A1s/OANbL
xgDO294AztfeAM7V1gDOz84AzsvGAM7HxgDGzc4AxsXGAMbDvQDGvr0AxrKlAL28vQC9urUAvbS1AL2y
rQC9rK0Ava6lALWqpQC1pqUAtaScAL2ijAC9loQArZ6cAK2blACtlpQArZqMAK2UjACtjpQArYuMAKWM
hAClhIQA78NzAPe6ewD3qkoA755SAOeSSgDeqmMA55I5AO+WIQDvjhAA74oIAO+CAADeghAApYJ7AJSG
ewD/AP8AznEpANZ1EADedQAAzmUAAKV9ewCleWMAtXlaAK1tSgCceXMAnHFzAJR5ewCcbWsAhHFjAIxp
awCEbVoAlF1CAL19OQC1ZSEAvWUYAKVVMQCtSQgAnEkhAIRFIQClPAAAnDAAAEpt1gB7ZVoAe2FSAHNh
UgBzXVIAa1lSAGtVSgBjUUoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+
/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+
/v43CAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQgFNzdGU1VVVVVVVVVVVVVVVVVVVVVVVVVVVVVV
VVVVUjYFPk1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NTU1NVAlLFA4ODg4ODg4OUA4ODg4ODg4ODg4O
Dg4ODg4ODlBXD0sOAAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAAAAAUFgPSw4AAAAAAAAAAFAAACUoKCYk
IiEgHR0YEQwDAABQWA9LDgAAAAAAAAAAUAAACwsLCwoKCgoHBwQDAgEAAFBYD0sOAAAAAAAAAABQAAAA
AAAAAAAAAAAAAAAAAAAAUFgPSw4AAAAAAAAAAFAAADxDQUA8NScnJCMcFhAEAABQWA9LDgAAAAAAAAAA
UAAAAAAAAAAAAAAAAAAAAAAAAFBYD0sOAAAAAAAAAABQAAALCwsLCgoKCgcHBAMCAQAAUFgPSw4AAAAA
AAAAAFAAACUoKCYmIiEhHR0YEw0EAABQWA9LDgAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAFBYD0sO
AAAAAAAAAABQAAAXGRkXFxcVFRMSEAwKAgAAUFgPSw4AAAAAAAAAAFAAABcZGRcXFxUVExIRDAoDAABQ
WA9LDgAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAFBYD0sOAAAAAAAAAABQAAA8Q0FAPDUnJyQhGxYQ
BwEAUFgPSw4AAAAAAAAAAFAAAAAAAAAAAAAAAAAAAAAAAABQWA9LDgAAAAAAAAAAUAAACgsKCgoHBwQE
AwMCAgEAAFBYD0sOAAAAAAAAAABQAAAlKCckIiEdHRsXFRAMBwEAUFgPSw4AAAAAAAAAAFAAAAAAAAAA
AAAAAAAAAAAAAABQWA9LLikpKSkpKSkpOykpKSkpKSkpKSkpKSkpKSkpKVBYD0s6MzMzMzMzMzMzMzMz
MzMzMzMzMSswMSsxSEI0UFYJR0o7Ozs7Ozs7Ozs7Ozs7Ozs7OzsvKi8vKjlFUUlQRAYeTzgsLCwsLCws
LCwsLCwsLCwsLCwsLCwsLCwtTE4a/v4fP0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0s9/v7+/v7+/v7+
/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+
/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+/v7+////////////////AAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAf///////////////8=
</value>
</data>
</root>

View File

@ -1,75 +1,121 @@
Imports System.Drawing
Imports System.IO
Imports System.Windows.Forms
Imports DevExpress.Utils
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Columns
Imports DevExpress.XtraGrid.Views.Grid
Imports DevExpress.XtraPrinting
Imports DigitalData.Modules.Config
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.ZooFlow
Imports DigitalData.Modules.Language
Public Class frmDocumentResultList
Private _LogConfig As LogConfig
Private _Logger As Logger
Private _Config As ConfigManager(Of DocumentResultConfig)
Private _Environment As Environment
Private _ResultLists As List(Of DocumentResult)
Private _IsLoading As Boolean = True
Public Sub New(LogConfig As LogConfig, Environment As Environment, Params As ResultListParams)
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
Dim oConfigPath As String = Path.Combine(Application.UserAppDataPath, "DocumentResultList", Params.WindowGuid)
_LogConfig = LogConfig
_Logger = LogConfig.GetLogger()
_Config = New ConfigManager(Of DocumentResultConfig)(LogConfig, oConfigPath)
_Environment = Environment
_ResultLists = Params.Results
End Sub
Private Sub frmDocumentResultList_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim oCounter = 1
Try
' Load config
SplitContainerControl1.SplitterPosition = _Config.Config.SplitContainer1Distance
SwitchMainContainerHorizontal.Checked = _Config.Config.SplitContainer1Horizontal
SplitContainerControl2.SplitterPosition = _Config.Config.SplitContainer2Distance
SwitchDetailContainerHorizontal.Checked = _Config.Config.SplitContainer2Horizontal
For Each oList In _ResultLists
Dim oTotalResults = 0
For Each oList In _ResultLists
oTotalResults += oList.Datatable.Rows.Count
Next
Text = String.Format(Text, oTotalResults)
' Load Grids
For index = 0 To _ResultLists.Count - 1
Select Case index
Case 0
Dim oResult As DocumentResult = _ResultLists.Item(0)
GridBand1.Caption = $"{oResult.Title} ({oResult.Datatable.Rows.Count})"
CreateDocumentGrid(GridView1, oResult.Datatable)
Case 1
Dim oResult As DocumentResult = _ResultLists.Item(1)
GridBand2.Caption = $"{oResult.Title} ({oResult.Datatable.Rows.Count})"
CreateDocumentGrid(GridView2, oResult.Datatable)
Case 2
Dim oResult As DocumentResult = _ResultLists.Item(2)
GridBand3.Caption = $"{oResult.Title} ({oResult.Datatable.Rows.Count})"
CreateDocumentGrid(GridView3, oResult.Datatable)
Case Else
MessageBox.Show("You have more than three searches configured. This Window will only show the first three result lists!")
Exit For
End Select
Next
' Hide Grids depending on Result count
Select Case _ResultLists.Count
Case 1
CreateDocumentGrid(GridView1, oList.Datatable)
SplitContainerControl1.SetPanelCollapsed(True)
SplitContainerControl2.SetPanelCollapsed(True)
Case 2
CreateDocumentGrid(GridView2, oList.Datatable)
Case 3
CreateDocumentGrid(GridView3, oList.Datatable)
SplitContainerControl2.SetPanelCollapsed(True)
End Select
oCounter += 1
Next
Catch ex As Exception
_Logger.Error(ex)
MessageBox.Show("Error while loading results:" & vbNewLine & vbNewLine & ex.Message, Text)
Finally
_IsLoading = False
End Try
End Sub
Private Sub CreateDocumentGrid(GridView As GridView, Datatable As DataTable)
Dim oMyDocDatatable As New DataTable
Try
'Die Icon Colum erstellen und konfigurieren
Dim oColIcon As New DataColumn() With {
oMyDocDatatable.Columns.Add(New DataColumn() With {
.DataType = GetType(Image),
.ColumnName = "ICON",
.Caption = ""
}
oMyDocDatatable.Columns.Add(oColIcon)
Dim oColPath As New DataColumn() With {
})
oMyDocDatatable.Columns.Add(New DataColumn() With {
.DataType = GetType(String),
.ColumnName = "FULL_FILENAME",
.Caption = "Fullpath"
}
oMyDocDatatable.Columns.Add(oColPath)
Dim oColDocID As New DataColumn() With {
})
oMyDocDatatable.Columns.Add(New DataColumn() With {
.DataType = GetType(Int32),
.ColumnName = "DocID",
.Caption = "DocID"
}
oMyDocDatatable.Columns.Add(oColDocID)
Dim oColFilename As New DataColumn() With {
})
oMyDocDatatable.Columns.Add(New DataColumn() With {
.DataType = GetType(String),
.ColumnName = "Filename",
.Caption = "Filename"
}
oMyDocDatatable.Columns.Add(oColFilename)
})
Dim oRestColArray As New List(Of String)
For Each oCol As DataColumn In Datatable.Columns
@ -135,12 +181,12 @@ Public Class frmDocumentResultList
oNewRow.Item(2) = oDocID
oNewRow.Item(3) = oFilename
Dim i = 4 'Fängt bei 3 an, um die definierten Spalten zu überspringen
For Each Colname As String In oRestColArray
Dim oIndex = 4 'Fängt bei 4 an, um die definierten Spalten zu überspringen
For Each oColumnName As String In oRestColArray
Dim oRowValue
oRowValue = oRow.Item(Colname)
oNewRow.Item(i) = oRowValue.ToString
i += 1
oRowValue = oRow.Item(oColumnName)
oNewRow.Item(oIndex) = oRowValue.ToString
oIndex += 1
Next
oMyDocDatatable.Rows.Add(oNewRow)
Next
@ -157,30 +203,32 @@ Public Class frmDocumentResultList
Catch ex As Exception
End Try
Dim created, changed As String
Dim oCreated, oChanged As String
If _Environment.User.Language <> "de-DE" Then
changed = "Changed"
created = "Created"
oChanged = "Changed"
oCreated = "Created"
Else
changed = "Geändert"
created = "Erstellt"
oChanged = "Geändert"
oCreated = "Erstellt"
End If
Dim createdColumn = GridView.Columns(created)
If Not IsNothing(createdColumn) Then
createdColumn.DisplayFormat.FormatType = FormatType.DateTime
createdColumn.DisplayFormat.FormatString = _Environment.User.DateFormat & " HH:MM:ss"
Dim oCreatedColumn = GridView.Columns(oCreated)
If Not IsNothing(oCreatedColumn) Then
oCreatedColumn.DisplayFormat.FormatType = FormatType.DateTime
oCreatedColumn.DisplayFormat.FormatString = _Environment.User.DateFormat & " HH:MM:ss"
End If
Dim changedColumn = GridView.Columns(changed)
If Not IsNothing(changedColumn) Then
changedColumn.DisplayFormat.FormatType = FormatType.DateTime
changedColumn.DisplayFormat.FormatString = _Environment.User.DateFormat & " HH:MM:ss"
Dim oChangedColumn = GridView.Columns(oChanged)
If Not IsNothing(oChangedColumn) Then
oChangedColumn.DisplayFormat.FormatType = FormatType.DateTime
oChangedColumn.DisplayFormat.FormatString = _Environment.User.DateFormat & " HH:MM:ss"
End If
' Alle Spalten aus ReadOnly setzen, danach werden alle passenden auf nicht ReadOnly gesetzt
For Each column As GridColumn In GridView.Columns
column.OptionsColumn.AllowEdit = False
For Each oColumn As GridColumn In GridView.Columns
oColumn.OptionsColumn.AllowEdit = False
Next
GridView.Columns.Item("ICON").MaxWidth = 24
GridView.Columns.Item("ICON").MinWidth = 24
GridView.OptionsView.BestFitMaxRowCount = -1
@ -190,11 +238,47 @@ Public Class frmDocumentResultList
End Try
End Sub
Private Sub BarToggleSwitchItem1_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarToggleSwitchItem1.CheckedChanged
SplitContainerControl1.Horizontal = BarToggleSwitchItem1.Checked
Private Sub SwitchMainContainerHorizontal_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles SwitchMainContainerHorizontal.CheckedChanged
SplitContainerControl1.Horizontal = SwitchMainContainerHorizontal.Checked
If _Config IsNot Nothing And _IsLoading = False Then
_Config.Config.SplitContainer1Horizontal = SwitchMainContainerHorizontal.Checked
_Config.Save()
End If
End Sub
Private Sub BarToggleSwitchItem2_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarToggleSwitchItem2.CheckedChanged
SplitContainerControl2.Horizontal = BarToggleSwitchItem2.Checked
Private Sub BarToggleSwitchItem2_CheckedChanged(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles SwitchDetailContainerHorizontal.CheckedChanged
SplitContainerControl2.Horizontal = SwitchDetailContainerHorizontal.Checked
If _Config IsNot Nothing And _IsLoading = False Then
_Config.Config.SplitContainer2Horizontal = SwitchDetailContainerHorizontal.Checked
_Config.Save()
End If
End Sub
Private Sub BarButtonItemExportGrid1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItemExportGrid1.ItemClick
XtraSaveFileDialog.FileName = Utils.ConvertTextToSlug(GridBand1.Caption) & ".xlsx"
XtraSaveFileDialog.DefaultExt = ".xlsx"
If XtraSaveFileDialog.ShowDialog() = Windows.Forms.DialogResult.OK Then
Dim oOptions As New XlsxExportOptions() With {
.ExportMode = XlsxExportMode.SingleFile
}
GridControl1.ExportToXlsx(XtraSaveFileDialog.FileName, oOptions)
End If
End Sub
Private Sub SplitContainerControl1_SplitterPositionChanged(sender As Object, e As EventArgs) Handles SplitContainerControl1.SplitterPositionChanged
If _IsLoading = False Then
_Config.Config.SplitContainer1Distance = SplitContainerControl1.SplitterPosition
_Config.Save()
End If
End Sub
Private Sub SplitContainerControl2_SplitterPositionChanged(sender As Object, e As EventArgs) Handles SplitContainerControl2.SplitterPositionChanged
If _IsLoading = False Then
_Config.Config.SplitContainer2Distance = SplitContainerControl2.SplitterPosition
_Config.Save()
End If
End Sub
End Class

View File

@ -17,6 +17,10 @@ Public Class EventBus
End Get
End Property
''' <summary>
''' Register a form as an event listener.
''' </summary>
''' <param name="listener">The event listener, usually `Me`</param>
Public Sub Register(ByVal listener As Object)
If Not _Listeners.Any(Function(l) l.Listener.Equals(listener)) Then
_Listeners.Add(New EventListenerWrapper(listener))

View File

@ -62,8 +62,8 @@ Public Class ConfigManager(Of T)
''' </summary>
''' <seealso cref="ConfigSample"/>
''' <param name="LogConfig">LogConfig instance</param>
''' <param name="UserConfigPath">The path to check for a user config file, eg. AppData</param>
''' <param name="ComputerConfigPath">The path to check for a computer config file, eg. ProgramData</param>
''' <param name="UserConfigPath">The path to check for a user config file, eg. AppData (Usually Application.UserAppDataPath or Application.LocalUserAppDataPath)</param>
''' <param name="ComputerConfigPath">The path to check for a computer config file, eg. ProgramData (Usually Application.CommonAppDataPath)</param>
''' <param name="ForceUserConfig">Override values from ComputerConfig with UserConfig</param>
Public Sub New(LogConfig As LogConfig, UserConfigPath As String, ComputerConfigPath As String, Optional ForceUserConfig As Boolean = False)
_LogConfig = LogConfig
@ -87,8 +87,8 @@ Public Class ConfigManager(Of T)
''' <summary>
''' Creates a new ConfigManager with a single (user)config path
''' </summary>
''' <param name="LogConfig"></param>
''' <param name="ConfigPath"></param>
''' <param name="LogConfig">LogConfig instance</param>
''' <param name="ConfigPath">The path to check for a user config file, eg. AppData (Usually Application.UserAppDataPath or Application.LocalUserAppDataPath)</param>
Public Sub New(LogConfig As LogConfig, ConfigPath As String)
MyClass.New(LogConfig, ConfigPath, ConfigPath, ForceUserConfig:=True)
End Sub

View File

@ -1,4 +1,5 @@
''' <summary>
Imports System.Text
''' <summary>
''' Provides common utility functions that do not require a specific context.
''' </summary>
Public Class Utils
@ -35,4 +36,31 @@ Public Class Utils
Return value
End If
End Function
''' <summary>
''' Creates a "slug" from text that can be used as part of a valid URL.
''' Invalid characters are converted to hyphens. Punctuation that Is
''' perfect valid in a URL Is also converted to hyphens to keep the
''' result mostly text. Steps are taken to prevent leading, trailing,
''' And consecutive hyphens.
''' </summary>
''' <param name="s">The string to convert</param>
Public Shared Function ConvertTextToSlug(ByVal s As String) As String
Dim oBuilder As StringBuilder = New StringBuilder()
Dim oWasHyphen As Boolean = True
For Each oChar As Char In s
If Char.IsLetterOrDigit(oChar) Then
oBuilder.Append(Char.ToLower(oChar))
oWasHyphen = False
ElseIf Char.IsWhiteSpace(oChar) AndAlso Not oWasHyphen Then
oBuilder.Append("-"c)
oWasHyphen = True
End If
Next
If oWasHyphen AndAlso oBuilder.Length > 0 Then oBuilder.Length -= 1
Return oBuilder.ToString()
End Function
End Class

View File

@ -39,9 +39,6 @@ Public Class ClassInit
AddHandler oInit.ProgressChanged, AddressOf ProgressChanged
AddHandler oInit.InitCompleted, AddressOf InitCompleted
SplashScreenManager.ActivateParentOnSplashFormClosing = True
SplashScreenManager.ShowForm(_MainForm, GetType(frmSplash), False, False)
oInit.Run()
End If
End Sub

View File

@ -1,12 +1,8 @@
Public Class ClassUIConfig
Public Property SkinName As String = "Office 2016 Colorful"
Public Property FlowForm As New FlowFormConfig
Public Property EditFormConfigs As New List(Of EditFormConfig)
Public Class EditFormConfig
Public Property SysKey As String
Public Property SplitterDistance As Integer = 700
Public Property SplitterHorizontal As Boolean = True
Public Class FlowFormConfig
Public Property Location As New Point(0, 0)
End Class
End Class

View File

@ -28,6 +28,9 @@ Partial Public Class frmAdmin
AddHandler Init.Completed, AddressOf Init_Completed
Init.InitializeApplication()
' === Show Splash Screen ===
SplashScreenManager.ShowForm(Me, GetType(frmSplash), False, False)
' === Layout and Skin ===
UserLookAndFeel.Default.SetSkinStyle(My.UIConfig.SkinName)
@ -35,6 +38,28 @@ Partial Public Class frmAdmin
EventBus.Instance.Register(Me)
End Sub
Private Sub Init_Completed(sender As Object, e As EventArgs)
' === Initialization Complete ===
Loading = False
SplashScreenManager.CloseForm(False)
' === Setup Timers ===
AddHandler TimerRefreshData.Tick, AddressOf TimerRefreshData_Tick
TimerRefreshData.Enabled = True
' === Setup Flow Form ===
FlowForm = New frmFlowForm(My.Application.ModulesActive)
FlowForm.Location = My.UIConfig.FlowForm.Location
FlowForm.Show()
' === Load Data ===
RefreshData()
End Sub
Private Sub frmAdmin_Shown(sender As Object, e As EventArgs) Handles Me.Shown
Visible = False
End Sub
Private Sub frmMain_FormClosed(sender As Object, e As FormClosedEventArgs)
EventBus.Instance.Unregister(Me)
End Sub
@ -58,31 +83,10 @@ Partial Public Class frmAdmin
End Select
End Sub
Private Sub Init_Completed(sender As Object, e As EventArgs)
' === Initialization Complete ===
Loading = False
SplashScreenManager.CloseForm(False)
' === Setup Timers ===
AddHandler TimerRefreshData.Tick, AddressOf TimerRefreshData_Tick
TimerRefreshData.Enabled = True
' === Setup Flow Form ===
FlowForm = New frmFlowForm(My.Application.ModulesActive)
FlowForm.Show()
' === Load Data ===
RefreshData()
End Sub
Private Sub TimerRefreshData_Tick(sender As Object, e As EventArgs)
RefreshData()
End Sub
Private Sub frmMain_Shown(sender As Object, e As EventArgs)
WindowState = FormWindowState.Minimized
End Sub
Private Async Sub FlowForm_ClipboardChanged(sender As Object, e As IDataObject) Handles FlowForm.ClipboardChanged
If My.Application.ClipboardWatcher.UserProfiles.Rows.Count = 0 Then
Logger.Warn("Clipboard Changed but no profiles configured!")
@ -118,7 +122,7 @@ Partial Public Class frmAdmin
End Function)
oMatchingProfiles = oProfileFilter.ClearNotMatchedProfiles(oMatchingProfiles)
Catch ex As Exception
MsgBox("Fehler beim Laden der Profile. Möglicherweise liegt ein Konfigurationsfehler vor.", MsgBoxStyle.Critical, Text)
MsgBox("Fehler beim Laden der Profile. Möglicherweise liegt ein Konfigurationsfehler vor." & vbNewLine & vbNewLine & ex.Message, MsgBoxStyle.Critical, Text)
Exit Sub
End Try
@ -192,4 +196,6 @@ Partial Public Class frmAdmin
Logger.Error(ex)
End Try
End Sub
End Class