09-08-2023
This commit is contained in:
173
Connectors.Form/frmMain.vb
Normal file
173
Connectors.Form/frmMain.vb
Normal file
@@ -0,0 +1,173 @@
|
||||
Imports System.ComponentModel
|
||||
Imports DigitalData.Modules.Config
|
||||
Imports DigitalData.Modules.Database
|
||||
Imports DigitalData.Modules.Logging
|
||||
|
||||
Partial Public Class frmMain
|
||||
Private LogConfig As LogConfig
|
||||
Private Logger As Logger
|
||||
Private ConfigManager As ConfigManager(Of Config)
|
||||
Private Database As MSSQLServer
|
||||
Private Sync As ISync
|
||||
|
||||
Public Sub New()
|
||||
InitializeComponent()
|
||||
End Sub
|
||||
|
||||
Private Async Sub frmMain_Load(sender As Object, e As EventArgs) Handles Me.Load
|
||||
Try
|
||||
LogConfig = New LogConfig(LogConfig.PathType.CustomPath, IO.Path.Combine(Application.StartupPath, "Log"))
|
||||
ConfigManager = New ConfigManager(Of Config)(LogConfig, Application.StartupPath)
|
||||
LogConfig.Debug = ConfigManager.Config.Debug
|
||||
Logger = LogConfig.GetLogger()
|
||||
|
||||
SyncTimer.Interval = ConfigManager.Config.TimerIntervalMin * 60 * 1_000
|
||||
|
||||
AddInfoEntry("Application started.")
|
||||
AddInfoEntry("Version: {0}", Application.ProductVersion)
|
||||
AddInfoEntry("Timer Interval: {0} min", ConfigManager.Config.TimerIntervalMin.ToString)
|
||||
AddDivider()
|
||||
|
||||
Database = New MSSQLServer(LogConfig, ConfigManager.Config.ConnectionString)
|
||||
Sync = InitializeModule(ConfigManager.Config.ActiveModule)
|
||||
|
||||
' Load Form Title from Module
|
||||
Text = Sync.Name
|
||||
|
||||
If Sync Is Nothing Then
|
||||
AddWarnEntry("ActiveModule '{0}' is not implemented!", ConfigManager.Config.ActiveModule)
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
If Database.DBInitialized = False Then
|
||||
AddWarnEntry("Database could not be initialized. Please check connection string.")
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
If ConfigManager.Config.Autostart And Sync.TestConfigIsComplete() Then
|
||||
Await Sync.Run()
|
||||
End If
|
||||
|
||||
If ConfigManager.Config.TimerIntervalMin > 0 Then
|
||||
StartTimer()
|
||||
End If
|
||||
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
AddWarnEntry($"Error while loading the application: {ex.Message}")
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Function InitializeModule(pActiveModule As String) As ISync
|
||||
Dim oSync As ISync
|
||||
|
||||
Select Case pActiveModule
|
||||
Case "slt"
|
||||
oSync = New slt.sltSync(LogConfig, Database, ConfigManager.Config)
|
||||
AddHandler oSync.OnLogEntry, AddressOf Sync_OnLogEntry
|
||||
|
||||
Case "Sharepoint"
|
||||
oSync = New Sharepoint.SharepointSync(LogConfig, Database, ConfigManager.Config)
|
||||
AddHandler oSync.OnLogEntry, AddressOf Sync_OnLogEntry
|
||||
|
||||
Case Else
|
||||
|
||||
Return Nothing
|
||||
|
||||
End Select
|
||||
|
||||
Return oSync
|
||||
End Function
|
||||
|
||||
Private Sub Sync_OnLogEntry(sender As Object, e As String)
|
||||
AddInfoEntry(e)
|
||||
End Sub
|
||||
|
||||
Private Async Function frmMain_Closing(sender As Object, e As CancelEventArgs) As Threading.Tasks.Task Handles Me.Closing
|
||||
Try
|
||||
If Sync IsNot Nothing AndAlso Sync.IsLoggedIn Then
|
||||
AddInfoEntry("Logging out..")
|
||||
Await Sync.Cleanup()
|
||||
End If
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
AddWarnEntry($"Error while closing the application: {ex.Message}")
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Sub StartTimer()
|
||||
If Sync.TestConfigIsComplete() = False Then
|
||||
AddInfoEntry("Configuration is incomplete. Stopping.")
|
||||
AddDivider()
|
||||
Else
|
||||
AddInfoEntry("Starting timer..")
|
||||
btnStopSync.Enabled = True
|
||||
btnSyncStart.Enabled = False
|
||||
SyncTimer.Enabled = True
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub StopTimer()
|
||||
AddInfoEntry("Stopping timer..")
|
||||
btnStopSync.Enabled = False
|
||||
btnSyncStart.Enabled = True
|
||||
SyncTimer.Enabled = False
|
||||
End Sub
|
||||
|
||||
Private Async Function Timer_Elapsed(sender As Object, e As System.EventArgs) As Threading.Tasks.Task Handles SyncTimer.Tick
|
||||
Await Sync.Run()
|
||||
End Function
|
||||
|
||||
Private Sub AddInfoEntry(pMessage As String, ParamArray pArgs As Object())
|
||||
Logger.Info(pMessage, pArgs)
|
||||
ListBoxControl1.Items.Add(Now & " " & String.Format(pMessage, pArgs))
|
||||
End Sub
|
||||
|
||||
Private Sub AddWarnEntry(pMessage As String, ParamArray pArgs As Object())
|
||||
Logger.Info(pMessage, pArgs)
|
||||
ListBoxControl1.Items.Add(String.Format(pMessage, pArgs))
|
||||
End Sub
|
||||
|
||||
Private Sub AddDivider()
|
||||
ListBoxControl1.Items.Add("=====================================")
|
||||
End Sub
|
||||
|
||||
Private Sub BarButtonItem1_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem1.ItemClick
|
||||
Try
|
||||
Dim oPath = LogConfig.LogDirectory
|
||||
Process.Start("explorer.exe", oPath)
|
||||
Catch ex As Exception
|
||||
Logger.Error(ex)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub btnSyncStart_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnSyncStart.ItemClick
|
||||
StartTimer()
|
||||
End Sub
|
||||
|
||||
Private Sub btnStopSync_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnStopSync.ItemClick
|
||||
StopTimer()
|
||||
End Sub
|
||||
|
||||
Private Sub btnToggleWindow_Click(sender As Object, e As EventArgs) Handles btnToggleWindow.Click
|
||||
ToggleWindow()
|
||||
End Sub
|
||||
|
||||
Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
|
||||
Close()
|
||||
End Sub
|
||||
|
||||
Private Sub TrayIcon_MouseDoubleClick(sender As Object, e As MouseEventArgs) Handles TrayIcon.MouseDoubleClick
|
||||
ToggleWindow()
|
||||
End Sub
|
||||
|
||||
Private Sub ToggleWindow()
|
||||
If Visible = True Then
|
||||
Hide()
|
||||
Else
|
||||
WindowState = FormWindowState.Minimized
|
||||
Show()
|
||||
WindowState = FormWindowState.Normal
|
||||
End If
|
||||
End Sub
|
||||
End Class
|
||||
Reference in New Issue
Block a user