2024-09-05 17:09:00 +02:00

95 lines
3.3 KiB
VB.net

Imports System.ComponentModel
Imports System.Globalization
Imports System.Threading
Imports DigitalData.Modules.Base
Public NotInheritable Class frmSplash
Private ReadOnly InitSteps As Integer = 4
Private ReadOnly Worker As New BackgroundWorker()
Private ReadOnly MainForm As Form
Private Sub frmSplash_KeyUp(sender As Object, e As KeyEventArgs) Handles Me.KeyUp
If e.KeyCode = Keys.Escape Then
ESC_Hidden = True
End If
End Sub
Private Sub frmSplash_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Version.Text = String.Format("Version {0}", My.Application.Info.Version.ToString)
Copyright.Text = String.Format("{0} {1}", My.Application.Info.Copyright, My.Application.Info.CompanyName)
BringToFront()
InitProgram()
End Sub
Private Sub InitProgram()
Worker.WorkerReportsProgress = True
AddHandler Worker.DoWork, AddressOf bw_DoWork
AddHandler Worker.ProgressChanged, AddressOf bw_ProgressChanged
AddHandler Worker.RunWorkerCompleted, AddressOf bw_RunWorkerCompleted
Worker.RunWorkerAsync()
End Sub
Private Function CalcProgress(_step As Integer)
Return _step * (100 / InitSteps)
End Function
Private Function bw_DoWork(sender As Object, e As System.ComponentModel.DoWorkEventArgs) As Task
Dim oProgress As String
'Try
Dim Init = New ClassInit()
oProgress = "Initializing Logger"
Worker.ReportProgress(CalcProgress(1), oProgress)
Init.InitLogger()
Thread.Sleep(200)
oProgress = "Initializing Base Config"
Worker.ReportProgress(CalcProgress(2), oProgress)
Init.InitBasics()
Thread.Sleep(200)
oProgress = "Initializing Database"
Worker.ReportProgress(CalcProgress(3), oProgress)
If Init.InitDatabase_New() = True Then
Thread.Sleep(200)
oProgress = "Initializing User-Configuration"
Worker.ReportProgress(CalcProgress(4), oProgress)
If My.Settings.GHOSTUSER <> String.Empty Then
Logger.Info($"GHOSTLogin [{My.Settings.GHOSTUSER}] is active!")
LogConfig.Debug = True
End If
If Init.InitUserLogin(My.Settings.GHOSTUSER) = False Then
If ERROR_INIT = "" Then
ERROR_INIT = "INVALID USER"
End If
End If
Thread.Sleep(200)
Else
ERROR_INIT = "DATABASE"
End If
' Catch ex As Exception
' ' MsgBox("Unexpected Error in bw_DoWork: " & vbNewLine & ex.Message, MsgBoxStyle.Critical)
' End Try
End Function
Private Sub bw_ProgressChanged(sender As Object, e As ProgressChangedEventArgs)
pbStatus.Value = e.ProgressPercentage
lblStatus.Text = e.UserState.ToString()
End Sub
Private Sub bw_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs)
' Bei Fehler MsgBox anzeigen und Programm beenden
If e.Error IsNot Nothing Then
MsgBox(e.Error.Message, MsgBoxStyle.Critical, "Unexpected Error in frmSplash")
Application.Exit()
End If
LanguageEx.SetApplicationLanguage(Logger, USER_LANGUAGE, USER_DATE_FORMAT)
' Wenn kein Fehler, Splashscreen schließen
Close()
End Sub
End Class