splash screen

This commit is contained in:
Jonathan Jenne 2023-12-14 14:52:19 +01:00
parent d8742332ec
commit eea1bd2177
13 changed files with 657 additions and 107 deletions

View File

@ -3,6 +3,7 @@ Imports DigitalData.Modules.Logging
Public Class State
Public Property UserId As Integer
Public Property User As User
Public Property Config As Config
Public Property DbConfig As DbConfig
Public Property LogConfig As LogConfig

View File

@ -1,4 +1,6 @@
Imports System.Drawing
Imports System.IO
Imports System.Threading
Imports DevExpress.Utils.Svg
Imports EnvelopeGenerator.Common.Constants
@ -94,4 +96,16 @@ Public Class Helpers
Return False
End Try
End Function
Public Shared Async Function CopyFileAsync(sourceFile As String, destinationFile As String) As Task
Dim fileOptions = IO.FileOptions.Asynchronous Or IO.FileOptions.SequentialScan
Dim bufferSize = 4096
Using sourceStream = New FileStream(sourceFile, FileMode.Open, FileAccess.Read, FileShare.Read, bufferSize, fileOptions)
Using destinationStream = New FileStream(destinationFile, FileMode.CreateNew, FileAccess.Write, FileShare.None, bufferSize, fileOptions)
Await sourceStream.CopyToAsync(destinationStream, bufferSize).ConfigureAwait(False)
End Using
End Using
End Function
End Class

View File

@ -167,8 +167,8 @@ Public Class EnvelopeModel
oSql += " [CONTRACT_TYPE] = @CONTRACT_TYPE, "
oSql += " [LANGUAGE] = @LANGUAGE, "
oSql += " [CERTIFICATION_TYPE] = @CERTIFICATION_TYPE, "
oSql += " [EXPIRES_DAYS] = @EXPIRES_DAYS, "
oSql += " [EXPIRES_WARNING_DAYS] = @EXPIRES_WARNING_DAYS, "
oSql += " [EXPIRES_WHEN_DAYS] = @EXPIRES_WHEN_DAYS, "
oSql += " [EXPIRES_WARNING_WHEN_DAYS] = @EXPIRES_WARNING_WHEN_DAYS, "
oSql += " [FIRST_REMINDER_DAYS] = @FIRST_REMINDER_DAYS, "
oSql += " [FINAL_EMAIL_TO_CREATOR] = @FINAL_EMAIL_TO_CREATOR, "
oSql += " [FINAL_EMAIL_TO_RECEIVERS] = @FINAL_EMAIL_TO_RECEIVERS, "
@ -188,8 +188,8 @@ Public Class EnvelopeModel
oCommand.Parameters.Add("CONTRACT_TYPE", SqlDbType.Int).Value = pEnvelope.ContractType
oCommand.Parameters.Add("LANGUAGE", SqlDbType.NVarChar).Value = pEnvelope.Language
oCommand.Parameters.Add("CERTIFICATION_TYPE", SqlDbType.Int).Value = pEnvelope.CertificationType
oCommand.Parameters.Add("EXPIRES_DAYS", SqlDbType.Int).Value = pEnvelope.ExpiresWhenDays
oCommand.Parameters.Add("EXPIRES_WARNING_DAYS", SqlDbType.Int).Value = pEnvelope.ExpiresWarningWhenDays
oCommand.Parameters.Add("EXPIRES_WHEN_DAYS", SqlDbType.Int).Value = pEnvelope.ExpiresWhenDays
oCommand.Parameters.Add("EXPIRES_WARNING_WHEN_DAYS", SqlDbType.Int).Value = pEnvelope.ExpiresWarningWhenDays
oCommand.Parameters.Add("FIRST_REMINDER_DAYS", SqlDbType.Int).Value = pEnvelope.FirstReminderDays
oCommand.Parameters.Add("FINAL_EMAIL_TO_CREATOR", SqlDbType.Int).Value = pEnvelope.FinalEmailToCreator
oCommand.Parameters.Add("FINAL_EMAIL_TO_RECEIVERS", SqlDbType.Int).Value = pEnvelope.FinalEmailToReceivers

View File

@ -149,12 +149,14 @@ Public Class EnvelopeEditorController
End Try
End Function
Public Function CreateDocument(pDocumentFilePath As String) As EnvelopeDocument
Public Async Function CreateDocument(pDocumentFilePath As String) As Threading.Tasks.Task(Of EnvelopeDocument)
Try
Dim oFileInfo = New FileInfo(pDocumentFilePath)
Dim oTempFiles As New TempFiles(State.LogConfig)
Dim oTempFilePath = Path.Combine(oTempFiles.TempPath, Guid.NewGuid().ToString + oFileInfo.Extension)
File.Copy(oFileInfo.FullName, oTempFilePath, True)
Await Helpers.CopyFileAsync(oFileInfo.FullName, oTempFilePath)
'File.Copy(oFileInfo.FullName, oTempFilePath, True)
Dim oFileInfoTemp = New FileInfo(oTempFilePath)

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -227,6 +227,7 @@
<ItemGroup>
<Content Include="11121780_fi_rr_file_signature_icon.ico" />
<Content Include="DD_signFLOW_icon_256.ico" />
<Content Include="DD_signFLOW_Preloader.png" />
<Content Include="MailLicense.xml">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>

View File

@ -28,25 +28,33 @@ Partial Public Class frmEnvelopeEditor
InitializeComponent()
End Sub
Private Sub btnNewFile_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnNewFile.ItemClick
Private Async Sub btnNewFile_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnNewFile.ItemClick
Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
' prüfen ob es schon eine Datei gibt
If Documents.Count > 0 Then
MsgBox(Resources.Envelope.Only_one_file_is_allowed, MsgBoxStyle.Information, Text)
Return
End If
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
Dim oDocument = Controller.CreateDocument(OpenFileDialog1.FileName)
If oDocument IsNot Nothing Then
Documents.Add(oDocument)
Else
MsgBox(Resources.Envelope.Document_Could_Not_Be_Saved, MsgBoxStyle.Critical, Text)
Try
' prüfen ob es schon eine Datei gibt
If Documents.Count > 0 Then
MsgBox(Resources.Envelope.Only_one_file_is_allowed, MsgBoxStyle.Information, Text)
Return
End If
End If
RibbonPageGroupAddSignature_Enabled()
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
Dim oDocument = Await Controller.CreateDocument(OpenFileDialog1.FileName)
If oDocument IsNot Nothing Then
Documents.Add(oDocument)
Else
MsgBox(Resources.Envelope.Document_Could_Not_Be_Saved, MsgBoxStyle.Critical, Text)
End If
End If
Catch ex As Exception
Logger.Error(ex)
Finally
SplashScreenManager.CloseOverlayForm(oHandle)
RibbonPageGroupAddSignature_Enabled()
End Try
End Sub
Private Sub frmEditor_Load(sender As Object, e As EventArgs) Handles Me.Load

View File

@ -55,10 +55,13 @@ Partial Class frmMain
Me.btnShowDocument = New DevExpress.XtraBars.BarButtonItem()
Me.btnContactReceiver = New DevExpress.XtraBars.BarButtonItem()
Me.txtEnvelopeIdLabel = New DevExpress.XtraBars.BarStaticItem()
Me.btnOpenLogDirectory = New DevExpress.XtraBars.BarButtonItem()
Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageEnvelopeActions = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPageGroup2 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonPage2 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.RibbonPageGroup3 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
Me.RibbonStatusBar = New DevExpress.XtraBars.Ribbon.RibbonStatusBar()
Me.XtraTabPage2 = New DevExpress.XtraTab.XtraTabPage()
Me.GridCompleted = New DevExpress.XtraGrid.GridControl()
@ -274,13 +277,13 @@ Partial Class frmMain
Me.RibbonControl.ExpandCollapseItem.Id = 0
Me.RibbonControl.ExpandCollapseItem.ImageOptions.ImageIndex = CType(resources.GetObject("RibbonControl.ExpandCollapseItem.ImageOptions.ImageIndex"), Integer)
Me.RibbonControl.ExpandCollapseItem.ImageOptions.LargeImageIndex = CType(resources.GetObject("RibbonControl.ExpandCollapseItem.ImageOptions.LargeImageIndex"), Integer)
Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.RibbonControl.SearchEditItem, Me.btnCreateEnvelope, Me.btnEditEnvelope, Me.btnDeleteEnvelope, Me.BarButtonItem1, Me.txtRefreshLabel, Me.btnShowDocument, Me.btnContactReceiver, Me.txtEnvelopeIdLabel})
Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.RibbonControl.SearchEditItem, Me.btnCreateEnvelope, Me.btnEditEnvelope, Me.btnDeleteEnvelope, Me.BarButtonItem1, Me.txtRefreshLabel, Me.btnShowDocument, Me.btnContactReceiver, Me.txtEnvelopeIdLabel, Me.btnOpenLogDirectory})
resources.ApplyResources(Me.RibbonControl, "RibbonControl")
Me.RibbonControl.MaxItemId = 10
Me.RibbonControl.MaxItemId = 12
Me.RibbonControl.Name = "RibbonControl"
Me.RibbonControl.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1})
Me.RibbonControl.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1, Me.RibbonPage2})
Me.RibbonControl.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False]
Me.RibbonControl.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.Hide
Me.RibbonControl.ShowPageHeadersMode = DevExpress.XtraBars.Ribbon.ShowPageHeadersMode.Show
Me.RibbonControl.ShowToolbarCustomizeItem = False
Me.RibbonControl.StatusBar = Me.RibbonStatusBar
Me.RibbonControl.Toolbar.ShowCustomizeItem = False
@ -361,6 +364,13 @@ Partial Class frmMain
Me.txtEnvelopeIdLabel.PaintStyle = DevExpress.XtraBars.BarItemPaintStyle.CaptionGlyph
Me.txtEnvelopeIdLabel.Tag = "Envelope-ID: {0}"
'
'btnOpenLogDirectory
'
resources.ApplyResources(Me.btnOpenLogDirectory, "btnOpenLogDirectory")
Me.btnOpenLogDirectory.Id = 10
Me.btnOpenLogDirectory.ImageOptions.SvgImage = CType(resources.GetObject("btnOpenLogDirectory.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.btnOpenLogDirectory.Name = "btnOpenLogDirectory"
'
'RibbonPage1
'
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageEnvelopeActions, Me.RibbonPageGroup1, Me.RibbonPageGroup2})
@ -389,6 +399,18 @@ Partial Class frmMain
Me.RibbonPageGroup2.Name = "RibbonPageGroup2"
resources.ApplyResources(Me.RibbonPageGroup2, "RibbonPageGroup2")
'
'RibbonPage2
'
Me.RibbonPage2.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageGroup3})
Me.RibbonPage2.Name = "RibbonPage2"
resources.ApplyResources(Me.RibbonPage2, "RibbonPage2")
'
'RibbonPageGroup3
'
Me.RibbonPageGroup3.ItemLinks.Add(Me.btnOpenLogDirectory)
Me.RibbonPageGroup3.Name = "RibbonPageGroup3"
resources.ApplyResources(Me.RibbonPageGroup3, "RibbonPageGroup3")
'
'RibbonStatusBar
'
Me.RibbonStatusBar.ItemLinks.Add(Me.txtRefreshLabel)
@ -615,4 +637,7 @@ Partial Class frmMain
Friend WithEvents ColHistoryUserReferenceCompleted As DevExpress.XtraGrid.Columns.GridColumn
Friend WithEvents ColHistoryDateCompleted As DevExpress.XtraGrid.Columns.GridColumn
Friend WithEvents txtEnvelopeIdLabel As DevExpress.XtraBars.BarStaticItem
Friend WithEvents btnOpenLogDirectory As DevExpress.XtraBars.BarButtonItem
Friend WithEvents RibbonPage2 As DevExpress.XtraBars.Ribbon.RibbonPage
Friend WithEvents RibbonPageGroup3 As DevExpress.XtraBars.Ribbon.RibbonPageGroup
End Class

View File

@ -123,7 +123,7 @@
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="SplitContainerControl1.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 132</value>
<value>0, 160</value>
</data>
<data name="XtraTabControl1.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
<value>Fill</value>
@ -532,6 +532,27 @@
Y2xhc3M9IlllbGxvdyIgLz4NCiAgICA8cGF0aCBkPSJNMTYsMTguM0w0LDExLjRWMjNjMCwwLjUsMC41
LDEsMSwxaDIyYzAuNSwwLDEtMC41LDEtMVYxMS40TDE2LDE4LjN6IiBjbGFzcz0iWWVsbG93IiAvPg0K
ICA8L2c+DQo8L3N2Zz4L
</value>
</data>
<data name="btnOpenLogDirectory.Caption" xml:space="preserve">
<value>Öffne Log Verzeichnis</value>
</data>
<data name="btnOpenLogDirectory.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAJQCAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iT3BlbiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzIg
MzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJLnN0
MHtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8ZyBjbGFzcz0ic3QwIj4NCiAgICA8cGF0aCBkPSJN
Mi4yLDI1LjJsNS41LTEyYzAuMy0wLjcsMS0xLjIsMS44LTEuMkgyNlY5YzAtMC42LTAuNC0xLTEtMUgx
MlY1YzAtMC42LTAuNC0xLTEtMUgzQzIuNCw0LDIsNC40LDIsNXYyMCAgIGMwLDAuMiwwLDAuMywwLjEs
MC40QzIuMSwyNS4zLDIuMiwyNS4zLDIuMiwyNS4yeiIgY2xhc3M9IlllbGxvdyIgLz4NCiAgPC9nPg0K
ICA8cGF0aCBkPSJNMzEuMywxNEg5LjZMNCwyNmgyMS44YzAuNSwwLDEuMS0wLjMsMS4zLTAuN0wzMiwx
NC43QzMyLjEsMTQuMywzMS44LDE0LDMxLjMsMTR6IiBjbGFzcz0iWWVsbG93IiAvPg0KPC9zdmc+Cw==
</value>
</data>
<data name="RibbonControl.Location" type="System.Drawing.Point, System.Drawing">
@ -549,8 +570,14 @@
<data name="RibbonPage1.Text" xml:space="preserve">
<value>Start</value>
</data>
<data name="RibbonPageGroup3.Text" xml:space="preserve">
<value>Verzeichnisse</value>
</data>
<data name="RibbonPage2.Text" xml:space="preserve">
<value>Einstellungen</value>
</data>
<data name="RibbonControl.Size" type="System.Drawing.Size, System.Drawing">
<value>1088, 132</value>
<value>1088, 160</value>
</data>
<data name="RibbonStatusBar.Location" type="System.Drawing.Point, System.Drawing">
<value>0, 659</value>
@ -583,7 +610,7 @@
<value>2</value>
</data>
<data name="GridEnvelopes.Size" type="System.Drawing.Size, System.Drawing">
<value>1086, 494</value>
<value>1086, 466</value>
</data>
<data name="GridEnvelopes.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
@ -601,7 +628,7 @@
<value>0</value>
</data>
<data name="XtraTabPage1.Size" type="System.Drawing.Size, System.Drawing">
<value>1086, 494</value>
<value>1086, 466</value>
</data>
<data name="XtraTabPage1.Text" xml:space="preserve">
<value>Offene Umschläge</value>
@ -619,7 +646,7 @@
<value>0</value>
</data>
<data name="XtraTabControl1.Size" type="System.Drawing.Size, System.Drawing">
<value>1088, 517</value>
<value>1088, 489</value>
</data>
<data name="XtraTabControl1.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
@ -763,7 +790,7 @@
<value>195</value>
</data>
<data name="GridCompleted.Size" type="System.Drawing.Size, System.Drawing">
<value>1086, 494</value>
<value>1086, 466</value>
</data>
<data name="GridCompleted.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
@ -781,7 +808,7 @@
<value>0</value>
</data>
<data name="XtraTabPage2.Size" type="System.Drawing.Size, System.Drawing">
<value>1086, 494</value>
<value>1086, 466</value>
</data>
<data name="XtraTabPage2.Text" xml:space="preserve">
<value>Abgeschlossene Umschläge</value>
@ -841,7 +868,7 @@
<value>1</value>
</data>
<data name="SplitContainerControl1.Size" type="System.Drawing.Size, System.Drawing">
<value>1088, 527</value>
<value>1088, 499</value>
</data>
<data name="SplitContainerControl1.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
@ -873,7 +900,7 @@
<data name="frmMain.IconOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL
DgAACw4BQL7hQQAAEV9JREFUeF7tnT/LJUsRh+9H2A/hB1gT4zUxNjJ1E0PhgpnRmpm5iaGwBiYKgomC
DAAACwwBP0AiyAAAEV9JREFUeF7tnT/LJUsRh+9H2A/hB1gT4zUxNjJ1E0PhgpnRmpm5iaGwBiYKgomC
ICwKYiSLRoLiBgZq4g00MXmd394z67zz1jln/nRVV3c/BQ/c7Xveme453b/uquqe88nDw0NKfvSFLz6b
eDHxauLNxNuJ9xMPAIlRH1VfVZ9V31Uffmb18QyYhTXQQ5p4OaEHx0CH3lCfVt9WH08jCGZhFHoQE59O
vJuwHhpAr6jPVxcDs9CbqdFaFkkNrQcDMBoaCy+sseKNWejF1EgpHst7ABuNjZfW2PHCLCyNGnVpnNVo
@ -1106,6 +1133,12 @@
<data name="&gt;&gt;txtEnvelopeIdLabel.Type" xml:space="preserve">
<value>DevExpress.XtraBars.BarStaticItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;btnOpenLogDirectory.Name" xml:space="preserve">
<value>btnOpenLogDirectory</value>
</data>
<data name="&gt;&gt;btnOpenLogDirectory.Type" xml:space="preserve">
<value>DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;RibbonPage1.Name" xml:space="preserve">
<value>RibbonPage1</value>
</data>
@ -1130,6 +1163,18 @@
<data name="&gt;&gt;RibbonPageGroup2.Type" xml:space="preserve">
<value>DevExpress.XtraBars.Ribbon.RibbonPageGroup, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;RibbonPage2.Name" xml:space="preserve">
<value>RibbonPage2</value>
</data>
<data name="&gt;&gt;RibbonPage2.Type" xml:space="preserve">
<value>DevExpress.XtraBars.Ribbon.RibbonPage, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;RibbonPageGroup3.Name" xml:space="preserve">
<value>RibbonPageGroup3</value>
</data>
<data name="&gt;&gt;RibbonPageGroup3.Type" xml:space="preserve">
<value>DevExpress.XtraBars.Ribbon.RibbonPageGroup, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;ViewReceiversCompleted.Name" xml:space="preserve">
<value>ViewReceiversCompleted</value>
</data>

View File

@ -315,4 +315,12 @@ Public Class frmMain
txtEnvelopeIdLabel.Caption = String.Format(txtEnvelopeIdLabel.Tag, oEnvelope.Id)
End Sub
Private Sub btnOpenLogDirectory_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnOpenLogDirectory.ItemClick
Try
Process.Start(LogConfig.LogDirectory)
Catch ex As Exception
Logger.Error(ex)
End Try
End Sub
End Class

View File

@ -22,19 +22,95 @@ Partial Class frmSplashScreen
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmSplashScreen))
Me.PictureEdit1 = New DevExpress.XtraEditors.PictureEdit()
Me.lblCopyright = New System.Windows.Forms.Label()
Me.lblVersion = New System.Windows.Forms.Label()
Me.pbStatus = New System.Windows.Forms.ProgressBar()
Me.lblStatus = New System.Windows.Forms.Label()
CType(Me.PictureEdit1.Properties, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'PictureEdit1
'
Me.PictureEdit1.Dock = System.Windows.Forms.DockStyle.Top
Me.PictureEdit1.EditValue = CType(resources.GetObject("PictureEdit1.EditValue"), Object)
Me.PictureEdit1.Location = New System.Drawing.Point(0, 0)
Me.PictureEdit1.Name = "PictureEdit1"
Me.PictureEdit1.Properties.BorderStyle = DevExpress.XtraEditors.Controls.BorderStyles.NoBorder
Me.PictureEdit1.Properties.ShowCameraMenuItem = DevExpress.XtraEditors.Controls.CameraMenuItemVisibility.[Auto]
Me.PictureEdit1.Size = New System.Drawing.Size(800, 204)
Me.PictureEdit1.TabIndex = 0
'
'lblCopyright
'
Me.lblCopyright.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.lblCopyright.AutoSize = True
Me.lblCopyright.Location = New System.Drawing.Point(137, 226)
Me.lblCopyright.Name = "lblCopyright"
Me.lblCopyright.RightToLeft = System.Windows.Forms.RightToLeft.No
Me.lblCopyright.Size = New System.Drawing.Size(68, 13)
Me.lblCopyright.TabIndex = 9
Me.lblCopyright.Tag = "Copyright {0}"
Me.lblCopyright.Text = "Copyright {0}"
'
'lblVersion
'
Me.lblVersion.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.lblVersion.AutoSize = True
Me.lblVersion.Location = New System.Drawing.Point(12, 226)
Me.lblVersion.Name = "lblVersion"
Me.lblVersion.Size = New System.Drawing.Size(91, 13)
Me.lblVersion.TabIndex = 8
Me.lblVersion.Tag = "Version {0}.{1:00}"
Me.lblVersion.Text = "Version {0}.{1:00}"
'
'pbStatus
'
Me.pbStatus.Dock = System.Windows.Forms.DockStyle.Bottom
Me.pbStatus.Location = New System.Drawing.Point(0, 280)
Me.pbStatus.Name = "pbStatus"
Me.pbStatus.Size = New System.Drawing.Size(800, 23)
Me.pbStatus.TabIndex = 6
'
'lblStatus
'
Me.lblStatus.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
Me.lblStatus.AutoSize = True
Me.lblStatus.BackColor = System.Drawing.SystemColors.Control
Me.lblStatus.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.lblStatus.Location = New System.Drawing.Point(12, 253)
Me.lblStatus.Name = "lblStatus"
Me.lblStatus.Size = New System.Drawing.Size(47, 15)
Me.lblStatus.TabIndex = 7
Me.lblStatus.Text = "{Status}"
Me.lblStatus.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
'
'frmSplashScreen
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(365, 204)
Me.ClientSize = New System.Drawing.Size(800, 303)
Me.Controls.Add(Me.lblCopyright)
Me.Controls.Add(Me.lblVersion)
Me.Controls.Add(Me.lblStatus)
Me.Controls.Add(Me.pbStatus)
Me.Controls.Add(Me.PictureEdit1)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
Me.Name = "frmSplashScreen"
Me.Opacity = 0R
Me.ShowIcon = False
Me.ShowInTaskbar = False
Me.Text = "frmSplashScreen"
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
Me.Text = "signFLOW"
CType(Me.PictureEdit1.Properties, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents PictureEdit1 As DevExpress.XtraEditors.PictureEdit
Friend WithEvents lblCopyright As Label
Friend WithEvents lblVersion As Label
Friend WithEvents pbStatus As ProgressBar
Friend WithEvents lblStatus As Label
End Class

View File

@ -117,4 +117,331 @@
<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="PictureEdit1.EditValue" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
AElFTkSuQmCC
</value>
</data>
</root>

View File

@ -6,6 +6,7 @@ Imports DigitalData.Modules.Config
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Logging
Imports EnvelopeGenerator.Common
Imports System.ComponentModel
Public Class frmSplashScreen
Private LogConfig As LogConfig
@ -13,83 +14,125 @@ Public Class frmSplashScreen
Private Database As MSSQLServer
Private ConfigManager As ConfigManager(Of Config)
Private State As State
Private WithEvents Worker As New BackgroundWorker() With {.WorkerReportsProgress = True}
Private Sub frmSplashScreen_Load(sender As Object, e As EventArgs) Handles MyBase.Load
lblVersion.Text = String.Format("Version {0}", My.Application.Info.Version.ToString)
lblCopyright.Text = My.Application.Info.Copyright
Me.BringToFront()
End Sub
Private Sub Worker_DoWork(sender As Object, e As DoWorkEventArgs) Handles Worker.DoWork
Dim oState As State = DirectCast(e.Argument, State)
Worker.ReportProgress(20, "Initialize Database")
Thread.Sleep(300)
Dim oConnectionString = MSSQLServer.DecryptConnectionString(oState.Config.ConnectionString)
Database = New MSSQLServer(oState.LogConfig, oConnectionString)
oState = New State With {
.UserId = 0,
.Config = oState.Config,
.DbConfig = New DbConfig(),
.LogConfig = LogConfig,
.Database = Database
}
If Database.DBInitialized = False Then
Throw New ApplicationException("Could not connect to the database. Application will close!")
End If
Worker.ReportProgress(40, "Initialize Confguration")
Thread.Sleep(300)
Dim ConfigModel = New ConfigModel(oState)
oState.DbConfig = ConfigModel.LoadConfiguration()
Worker.ReportProgress(60, "Initialize User")
Thread.Sleep(300)
Dim oUserModel = New UserModel(oState)
oState.UserId = oUserModel.SelectUserId()
Dim oUser = oUserModel.SelectUser()
Worker.ReportProgress(80, "Initialize Rights")
Thread.Sleep(300)
' This checks for module access and admin rights
oUserModel.CheckUserLogin(oUser)
Worker.ReportProgress(100, "Starting Application")
Thread.Sleep(300)
oState.User = oUser
e.Result = oState
End Sub
Private Sub Worker_ProgressChanged(sender As Object, e As ProgressChangedEventArgs) Handles Worker.ProgressChanged
pbStatus.Value = e.ProgressPercentage
lblStatus.Text = e.UserState.ToString()
End Sub
Private Sub Worker_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs) Handles Worker.RunWorkerCompleted
If e.Error IsNot Nothing Then
Logger.Error(e.Error)
MsgBox(e.Error.Message, MsgBoxStyle.Critical, Text)
Application.Exit()
End If
Dim oState As State = DirectCast(e.Result, State)
Dim oCultureInfo As CultureInfo
oCultureInfo = New CultureInfo(oState.user.Language)
Thread.CurrentThread.CurrentCulture = oCultureInfo
Thread.CurrentThread.CurrentUICulture = oCultureInfo
CultureInfo.DefaultThreadCurrentCulture = oCultureInfo
CultureInfo.DefaultThreadCurrentUICulture = oCultureInfo
If oState.User.HasAccess = False Then
Throw New ApplicationException("User is not activated for this module. Please contact your administrator. Application will close!")
End If
If Not String.IsNullOrEmpty(oState.DbConfig.ExternalProgramName) Then
Text = oState.DbConfig.ExternalProgramName
End If
Dim oForm As New frmMain(oState)
oForm.ShowDialog()
' Close this form after frmMain is closed
Close()
End Sub
Private Sub frmSplashScreen_Shown(sender As Object, e As EventArgs) Handles Me.Shown
Dim oLogPath = IO.Path.Combine(Application.LocalUserAppDataPath, "Log")
LogConfig = New LogConfig(LogConfig.PathType.CustomPath, oLogPath, CompanyName:="Digital Data", ProductName:="Envelope Generator")
Logger = LogConfig.GetLogger()
ConfigManager = New ConfigManager(Of Config)(LogConfig, Application.UserAppDataPath, Application.CommonAppDataPath, Application.StartupPath)
Try
ConfigManager = New ConfigManager(Of Config)(LogConfig, Application.UserAppDataPath, Application.CommonAppDataPath, Application.StartupPath)
If ConfigManager.Config.ConnectionString = String.Empty Then
Dim oSQLConfig As New frmSQLConfig(LogConfig)
If oSQLConfig.ShowDialog() = DialogResult.OK Then
ConfigManager.Config.ConnectionString = oSQLConfig.ConnectionString
ConfigManager.Save()
If ConfigManager.Config.ConnectionString = String.Empty Then
Dim oSQLConfig As New frmSQLConfig(LogConfig)
If oSQLConfig.ShowDialog() = DialogResult.OK Then
ConfigManager.Config.ConnectionString = oSQLConfig.ConnectionString
ConfigManager.Save()
Application.Restart()
Else
Throw New ApplicationException("No Database configured. Application will close!")
End If
MsgBox("Database configured. Application will restart.", MsgBoxStyle.Critical, Text)
Application.Restart()
Else
MsgBox("No Database configured. Application will close!", MsgBoxStyle.Critical, Text)
Application.Exit()
End If
End If
Dim oConnectionString = MSSQLServer.DecryptConnectionString(ConfigManager.Config.ConnectionString)
Database = New MSSQLServer(LogConfig, oConnectionString)
State = New State With {
.UserId = 0,
.Config = ConfigManager.Config,
.DbConfig = New DbConfig(),
.LogConfig = LogConfig,
.Database = Database
}
If Database.DBInitialized = False Then
Throw New ApplicationException("Could not connect to the database. Application will close!")
End If
Dim ConfigModel = New ConfigModel(State)
State.DbConfig = ConfigModel.LoadConfiguration()
Dim oUserModel = New UserModel(State)
State.UserId = oUserModel.SelectUserId()
Dim oUser = oUserModel.SelectUser()
oUser = oUserModel.CheckUserLogin(oUser)
Dim oCultureInfo As CultureInfo
oCultureInfo = New CultureInfo(oUser.Language)
Thread.CurrentThread.CurrentCulture = oCultureInfo
Thread.CurrentThread.CurrentUICulture = oCultureInfo
CultureInfo.DefaultThreadCurrentCulture = oCultureInfo
CultureInfo.DefaultThreadCurrentUICulture = oCultureInfo
If oUser.HasAccess = False Then
Throw New ApplicationException("User is not activated for this module. Please contact your administrator. Application will close!")
End If
If Not String.IsNullOrEmpty(State.DbConfig.ExternalProgramName) Then
Text = State.DbConfig.ExternalProgramName
End If
Dim oForm As New frmMain(State)
oForm.ShowDialog()
' Close this form after frmMain is closed
Close()
Catch ex As ApplicationException
Logger.Error(ex)
MsgBox(ex.Message, MsgBoxStyle.Critical, Text)
Application.Exit()
Catch ex As Exception
Logger.Error(ex)
MsgBox($"Unexpected error: {ex.Message}", MsgBoxStyle.Critical, Text)
Application.Exit()
End Try
Worker.RunWorkerAsync(New State() With {
.LogConfig = LogConfig,
.Config = ConfigManager.Config
})
End Sub
End Class