189 lines
6.5 KiB
VB.net
189 lines
6.5 KiB
VB.net
Imports System.ComponentModel
|
|
Imports DevExpress.XtraEditors.ViewInfo
|
|
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()
|
|
|
|
AddInfoEntry("Application started.")
|
|
AddInfoEntry("Version: {0}", Application.ProductVersion)
|
|
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
|
|
|
|
btnForceSync.Enabled = True
|
|
|
|
If ConfigManager.Config.Autostart And Sync.TestConfigIsComplete() Then
|
|
btnForceSync.Enabled = False
|
|
Await Sync.Run()
|
|
btnForceSync.Enabled = True
|
|
End If
|
|
|
|
If ConfigManager.Config.TimerIntervalMin > 0 Then
|
|
AddInfoEntry("Timer Interval: {0} min", ConfigManager.Config.TimerIntervalMin.ToString)
|
|
SyncTimer.Interval = ConfigManager.Config.TimerIntervalMin * 60 * 1_000
|
|
StartTimer()
|
|
Else
|
|
AddInfoEntry("Timer Interval: Off", ConfigManager.Config.TimerIntervalMin.ToString)
|
|
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
|
|
btnForceSync.Enabled = False
|
|
Await Sync.Run()
|
|
btnForceSync.Enabled = True
|
|
End Function
|
|
|
|
Private Sub AddInfoEntry(pMessage As String, ParamArray pArgs As Object())
|
|
Logger.Info(pMessage, pArgs)
|
|
ListBoxControl1.Items.Add(Now & " " & String.Format(pMessage, pArgs))
|
|
ListBoxControl1.MakeItemVisible(ListBoxControl1.Items.Count - 1)
|
|
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
|
|
|
|
Private Async Sub btnForceSync_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles btnForceSync.ItemClick
|
|
btnForceSync.Enabled = False
|
|
Await Sync.Run()
|
|
btnForceSync.Enabled = True
|
|
End Sub
|
|
End Class
|