From eea1bd2177e8fd99961e71d9875b77f32fab2994 Mon Sep 17 00:00:00 2001 From: Jonathan Jenne Date: Thu, 14 Dec 2023 14:52:19 +0100 Subject: [PATCH] splash screen --- EnvelopeGenerator.Common/Entities/State.vb | 1 + EnvelopeGenerator.Common/Helpers.vb | 14 + .../Models/EnvelopeModel.vb | 8 +- .../Controllers/EnvelopeEditorController.vb | 6 +- .../DD_signFLOW_Preloader.png | Bin 0 -> 26279 bytes .../EnvelopeGenerator.Form.vbproj | 1 + EnvelopeGenerator.Form/frmEnvelopeEditor.vb | 36 +- EnvelopeGenerator.Form/frmMain.Designer.vb | 33 +- EnvelopeGenerator.Form/frmMain.resx | 63 +++- EnvelopeGenerator.Form/frmMain.vb | 8 + .../frmSplashScreen.Designer.vb | 82 ++++- EnvelopeGenerator.Form/frmSplashScreen.resx | 327 ++++++++++++++++++ EnvelopeGenerator.Form/frmSplashScreen.vb | 163 +++++---- 13 files changed, 646 insertions(+), 96 deletions(-) create mode 100644 EnvelopeGenerator.Form/DD_signFLOW_Preloader.png diff --git a/EnvelopeGenerator.Common/Entities/State.vb b/EnvelopeGenerator.Common/Entities/State.vb index b3a52da3..0668cb61 100644 --- a/EnvelopeGenerator.Common/Entities/State.vb +++ b/EnvelopeGenerator.Common/Entities/State.vb @@ -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 diff --git a/EnvelopeGenerator.Common/Helpers.vb b/EnvelopeGenerator.Common/Helpers.vb index d3c400c1..f40ea949 100644 --- a/EnvelopeGenerator.Common/Helpers.vb +++ b/EnvelopeGenerator.Common/Helpers.vb @@ -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 diff --git a/EnvelopeGenerator.Common/Models/EnvelopeModel.vb b/EnvelopeGenerator.Common/Models/EnvelopeModel.vb index d4c1a2ee..bfcf9256 100644 --- a/EnvelopeGenerator.Common/Models/EnvelopeModel.vb +++ b/EnvelopeGenerator.Common/Models/EnvelopeModel.vb @@ -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 diff --git a/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb b/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb index 9cf11049..fcf00d65 100644 --- a/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb +++ b/EnvelopeGenerator.Form/Controllers/EnvelopeEditorController.vb @@ -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) diff --git a/EnvelopeGenerator.Form/DD_signFLOW_Preloader.png b/EnvelopeGenerator.Form/DD_signFLOW_Preloader.png new file mode 100644 index 0000000000000000000000000000000000000000..db9a2cffd288c0d5a793731894991fbfc151129f GIT binary patch literal 26279 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 OQhxDDzD(9E=>GtKEQ{3u literal 0 HcmV?d00001 diff --git a/EnvelopeGenerator.Form/EnvelopeGenerator.Form.vbproj b/EnvelopeGenerator.Form/EnvelopeGenerator.Form.vbproj index 4707b327..73d27104 100644 --- a/EnvelopeGenerator.Form/EnvelopeGenerator.Form.vbproj +++ b/EnvelopeGenerator.Form/EnvelopeGenerator.Form.vbproj @@ -227,6 +227,7 @@ + PreserveNewest diff --git a/EnvelopeGenerator.Form/frmEnvelopeEditor.vb b/EnvelopeGenerator.Form/frmEnvelopeEditor.vb index 43f84f81..ce8a5a7b 100644 --- a/EnvelopeGenerator.Form/frmEnvelopeEditor.vb +++ b/EnvelopeGenerator.Form/frmEnvelopeEditor.vb @@ -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 + 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 - If OpenFileDialog1.ShowDialog() = DialogResult.OK Then - Dim oDocument = Controller.CreateDocument(OpenFileDialog1.FileName) + 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) + If oDocument IsNot Nothing Then + Documents.Add(oDocument) + Else + MsgBox(Resources.Envelope.Document_Could_Not_Be_Saved, MsgBoxStyle.Critical, Text) + End If End If - End If - RibbonPageGroupAddSignature_Enabled() + 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 diff --git a/EnvelopeGenerator.Form/frmMain.Designer.vb b/EnvelopeGenerator.Form/frmMain.Designer.vb index 3f82cc18..9e8d361c 100644 --- a/EnvelopeGenerator.Form/frmMain.Designer.vb +++ b/EnvelopeGenerator.Form/frmMain.Designer.vb @@ -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 diff --git a/EnvelopeGenerator.Form/frmMain.resx b/EnvelopeGenerator.Form/frmMain.resx index cab348a5..78e7454e 100644 --- a/EnvelopeGenerator.Form/frmMain.resx +++ b/EnvelopeGenerator.Form/frmMain.resx @@ -123,7 +123,7 @@ - 0, 132 + 0, 160 Fill @@ -532,6 +532,27 @@ Y2xhc3M9IlllbGxvdyIgLz4NCiAgICA8cGF0aCBkPSJNMTYsMTguM0w0LDExLjRWMjNjMCwwLjUsMC41 LDEsMSwxaDIyYzAuNSwwLDEtMC41LDEtMVYxMS40TDE2LDE4LjN6IiBjbGFzcz0iWWVsbG93IiAvPg0K ICA8L2c+DQo8L3N2Zz4L + + + + Öffne Log Verzeichnis + + + + AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40 + LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl + dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAJQCAAAC77u/ + PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi + IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv + MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh + Y2U9InByZXNlcnZlIiBpZD0iT3BlbiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzIg + MzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLlllbGxvd3tmaWxsOiNGRkIxMTU7fQoJLnN0 + MHtvcGFjaXR5OjAuNzU7fQo8L3N0eWxlPg0KICA8ZyBjbGFzcz0ic3QwIj4NCiAgICA8cGF0aCBkPSJN + Mi4yLDI1LjJsNS41LTEyYzAuMy0wLjcsMS0xLjIsMS44LTEuMkgyNlY5YzAtMC42LTAuNC0xLTEtMUgx + MlY1YzAtMC42LTAuNC0xLTEtMUgzQzIuNCw0LDIsNC40LDIsNXYyMCAgIGMwLDAuMiwwLDAuMywwLjEs + MC40QzIuMSwyNS4zLDIuMiwyNS4zLDIuMiwyNS4yeiIgY2xhc3M9IlllbGxvdyIgLz4NCiAgPC9nPg0K + ICA8cGF0aCBkPSJNMzEuMywxNEg5LjZMNCwyNmgyMS44YzAuNSwwLDEuMS0wLjMsMS4zLTAuN0wzMiwx + NC43QzMyLjEsMTQuMywzMS44LDE0LDMxLjMsMTR6IiBjbGFzcz0iWWVsbG93IiAvPg0KPC9zdmc+Cw== @@ -549,8 +570,14 @@ Start + + Verzeichnisse + + + Einstellungen + - 1088, 132 + 1088, 160 0, 659 @@ -583,7 +610,7 @@ 2 - 1086, 494 + 1086, 466 2 @@ -601,7 +628,7 @@ 0 - 1086, 494 + 1086, 466 Offene Umschläge @@ -619,7 +646,7 @@ 0 - 1088, 517 + 1088, 489 3 @@ -763,7 +790,7 @@ 195 - 1086, 494 + 1086, 466 3 @@ -781,7 +808,7 @@ 0 - 1086, 494 + 1086, 466 Abgeschlossene Umschläge @@ -841,7 +868,7 @@ 1 - 1088, 527 + 1088, 499 5 @@ -873,7 +900,7 @@ iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAL - DgAACw4BQL7hQQAAEV9JREFUeF7tnT/LJUsRh+9H2A/hB1gT4zUxNjJ1E0PhgpnRmpm5iaGwBiYKgomC + DAAACwwBP0AiyAAAEV9JREFUeF7tnT/LJUsRh+9H2A/hB1gT4zUxNjJ1E0PhgpnRmpm5iaGwBiYKgomC ICwKYiSLRoLiBgZq4g00MXmd394z67zz1jln/nRVV3c/BQ/c7Xveme453b/uquqe88nDw0NKfvSFLz6b eDHxauLNxNuJ9xMPAIlRH1VfVZ9V31Uffmb18QyYhTXQQ5p4OaEHx0CH3lCfVt9WH08jCGZhFHoQE59O vJuwHhpAr6jPVxcDs9CbqdFaFkkNrQcDMBoaCy+sseKNWejF1EgpHst7ABuNjZfW2PHCLCyNGnVpnNVo @@ -1106,6 +1133,12 @@ DevExpress.XtraBars.BarStaticItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + btnOpenLogDirectory + + + DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + RibbonPage1 @@ -1130,6 +1163,18 @@ DevExpress.XtraBars.Ribbon.RibbonPageGroup, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + RibbonPage2 + + + DevExpress.XtraBars.Ribbon.RibbonPage, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + + + RibbonPageGroup3 + + + DevExpress.XtraBars.Ribbon.RibbonPageGroup, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a + ViewReceiversCompleted diff --git a/EnvelopeGenerator.Form/frmMain.vb b/EnvelopeGenerator.Form/frmMain.vb index 7e00e2e5..fa4ba0b3 100644 --- a/EnvelopeGenerator.Form/frmMain.vb +++ b/EnvelopeGenerator.Form/frmMain.vb @@ -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 \ No newline at end of file diff --git a/EnvelopeGenerator.Form/frmSplashScreen.Designer.vb b/EnvelopeGenerator.Form/frmSplashScreen.Designer.vb index 4341c701..c16578d9 100644 --- a/EnvelopeGenerator.Form/frmSplashScreen.Designer.vb +++ b/EnvelopeGenerator.Form/frmSplashScreen.Designer.vb @@ -22,19 +22,95 @@ Partial Class frmSplashScreen 'Das Bearbeiten mit dem Code-Editor ist nicht möglich. _ 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 diff --git a/EnvelopeGenerator.Form/frmSplashScreen.resx b/EnvelopeGenerator.Form/frmSplashScreen.resx index 1af7de15..4d9d3568 100644 --- a/EnvelopeGenerator.Form/frmSplashScreen.resx +++ b/EnvelopeGenerator.Form/frmSplashScreen.resx @@ -117,4 +117,331 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + 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 + AElFTkSuQmCC + + \ No newline at end of file diff --git a/EnvelopeGenerator.Form/frmSplashScreen.vb b/EnvelopeGenerator.Form/frmSplashScreen.vb index 744034da..b19a1912 100644 --- a/EnvelopeGenerator.Form/frmSplashScreen.vb +++ b/EnvelopeGenerator.Form/frmSplashScreen.vb @@ -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 - Dim oLogPath = IO.Path.Combine(Application.LocalUserAppDataPath, "Log") - LogConfig = New LogConfig(LogConfig.PathType.CustomPath, oLogPath, CompanyName:="Digital Data", ProductName:="Envelope Generator") - Logger = LogConfig.GetLogger() + lblVersion.Text = String.Format("Version {0}", My.Application.Info.Version.ToString) + lblCopyright.Text = My.Application.Info.Copyright + Me.BringToFront() + End Sub - 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() - Application.Restart() - Else - Throw New ApplicationException("No Database configured. Application will close!") - End If - End If + Private Sub Worker_DoWork(sender As Object, e As DoWorkEventArgs) Handles Worker.DoWork - Dim oConnectionString = MSSQLServer.DecryptConnectionString(ConfigManager.Config.ConnectionString) - Database = New MSSQLServer(LogConfig, oConnectionString) + Dim oState As State = DirectCast(e.Argument, State) - State = New State With { - .UserId = 0, - .Config = ConfigManager.Config, - .DbConfig = New DbConfig(), - .LogConfig = LogConfig, - .Database = Database - } + Worker.ReportProgress(20, "Initialize Database") + Thread.Sleep(300) - If Database.DBInitialized = False Then - Throw New ApplicationException("Could not connect to the database. Application will close!") - End If + Dim oConnectionString = MSSQLServer.DecryptConnectionString(oState.Config.ConnectionString) + Database = New MSSQLServer(oState.LogConfig, oConnectionString) - Dim ConfigModel = New ConfigModel(State) - State.DbConfig = ConfigModel.LoadConfiguration() + oState = New State With { + .UserId = 0, + .Config = oState.Config, + .DbConfig = New DbConfig(), + .LogConfig = LogConfig, + .Database = Database + } - Dim oUserModel = New UserModel(State) - State.UserId = oUserModel.SelectUserId() + If Database.DBInitialized = False Then + Throw New ApplicationException("Could not connect to the database. Application will close!") + End If - Dim oUser = oUserModel.SelectUser() - oUser = oUserModel.CheckUserLogin(oUser) + Worker.ReportProgress(40, "Initialize Confguration") + Thread.Sleep(300) - Dim oCultureInfo As CultureInfo - oCultureInfo = New CultureInfo(oUser.Language) - Thread.CurrentThread.CurrentCulture = oCultureInfo - Thread.CurrentThread.CurrentUICulture = oCultureInfo - CultureInfo.DefaultThreadCurrentCulture = oCultureInfo - CultureInfo.DefaultThreadCurrentUICulture = oCultureInfo + Dim ConfigModel = New ConfigModel(oState) + oState.DbConfig = ConfigModel.LoadConfiguration() - If oUser.HasAccess = False Then - Throw New ApplicationException("User is not activated for this module. Please contact your administrator. Application will close!") - End If + Worker.ReportProgress(60, "Initialize User") + Thread.Sleep(300) - If Not String.IsNullOrEmpty(State.DbConfig.ExternalProgramName) Then - Text = State.DbConfig.ExternalProgramName - End If + Dim oUserModel = New UserModel(oState) + oState.UserId = oUserModel.SelectUserId() - Dim oForm As New frmMain(State) - oForm.ShowDialog() + Dim oUser = oUserModel.SelectUser() - ' Close this form after frmMain is closed - Close() + Worker.ReportProgress(80, "Initialize Rights") + Thread.Sleep(300) - Catch ex As ApplicationException - Logger.Error(ex) - MsgBox(ex.Message, MsgBoxStyle.Critical, Text) - Application.Exit() + ' 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 - Catch ex As Exception - Logger.Error(ex) - MsgBox($"Unexpected error: {ex.Message}", MsgBoxStyle.Critical, Text) + 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 - End Try + 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) + + 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() + + 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 + + Worker.RunWorkerAsync(New State() With { + .LogConfig = LogConfig, + .Config = ConfigManager.Config + }) + End Sub + + End Class \ No newline at end of file