Modules/GUIs.ZooFlow/frmFlowForm.vb

379 lines
15 KiB
VB.net

Imports System.IO
Imports DevExpress.XtraSplashScreen
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Messaging
Public Class frmFlowForm
' Constants
Private Const OPACITY_INITIAL = 0
Private Const OPACITY_HIDDEN = 0.65
Private Const OPACITY_SHOWN = 0.85
Private ActiveModules As List(Of String)
Private Logger As Logger
Private Init As ClassInit
Private DTIDB_SEARCHES As DataTable
Private CLSFileDrop As ClassFileDrop
Private clsFilehandle As ClassFilehandle
' Runtime Flags
Private ApplicationLoading As Boolean = True
Private IDBSearchActive As Boolean = False
' Runtime Variables
Private ESCHitCount As Integer = 0
Private IndexForm As frmGlobix_Index
' Events
Public Event ClipboardChanged As EventHandler(Of IDataObject)
Public Sub New()
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
' === Hide form initially ===
Opacity = OPACITY_INITIAL
End Sub
Private Sub frmFlowForm_Load(sender As Object, e As EventArgs) Handles Me.Load
' === Initialize Logger ===
Logger = My.LogConfig.GetLogger()
' === Show Splash Screen ===
SplashScreenManager.ShowForm(Me, GetType(frmSplash), False, False)
' === Initialization ===
Init = New ClassInit(My.LogConfig, Me)
CLSFileDrop = New ClassFileDrop(My.LogConfig)
clsFilehandle = New ClassFilehandle(My.LogConfig)
AddHandler Init.Completed, AddressOf Init_Completed
Init.InitializeApplication()
End Sub
Private Sub Init_Completed(sender As Object, e As EventArgs)
' === Initialization Complete ===
ApplicationLoading = False
SplashScreenManager.CloseForm(False)
' === Setup Timers ===
AddHandler TimerRefreshData.Tick, AddressOf TimerRefreshData_Tick
TimerRefreshData.Enabled = True
' === Setup Flow Form ===
Location = My.UIConfig.FlowForm.Location
' === Register As Event Listener ===
EventBus.Instance.Register(Me)
' === Set Form Properties ===
TopMost = True
AllowDrop = True
ShowInTaskbar = False
Opacity = OPACITY_HIDDEN
Location = My.UIConfig.FlowForm.Location
' === Setup Event Handlers ===
AddHandler KeyDown, AddressOf frmFlowForm_KeyDown
AddHandler KeyUp, AddressOf frmFlowForm_KeyDown
For Each oControl As Control In Controls
AddHandler oControl.MouseEnter, AddressOf frmFlowForm_MouseEnter
AddHandler oControl.MouseLeave, AddressOf frmFlowForm_MouseLeave
Next
' TODO: Clean up
Dim oSQL = $"SELECT * FROM [dbo].[FNIDB_GET_SEARCH_PROFILES] ({My.Application.User.UserId},'{My.Application.User.Language}')"
Dim oDatatable As DataTable = My.DatabaseIDB.GetDatatable(oSQL)
PictureBoxSearch.Visible = False
If Not IsNothing(oDatatable) OrElse oDatatable.Rows.Count > 0 Then
IDBSearchActive = True
DTIDB_SEARCHES = oDatatable
PictureBoxSearch.Visible = True
End If
My.DTAttributes = My.DatabaseIDB.GetDatatable("SELECT * FROM TBIDB_ATTRIBUTE")
End Sub
Private Sub TimerRefreshData_Tick(sender As Object, e As EventArgs)
'TODO: Refresh Data
End Sub
Private Sub frmFlowForm_MouseLeave(sender As Object, e As EventArgs)
Opacity = OPACITY_HIDDEN
End Sub
Private Sub frmFlowForm_MouseEnter(sender As Object, e As EventArgs) Handles Me.MouseEnter, MyBase.MouseLeave
Opacity = OPACITY_SHOWN
End Sub
Private Sub frmFlowForm_MouseMove(ByVal sender As Object, ByVal e As MouseEventArgs) Handles Me.MouseMove, PictureBox1.MouseMove
If e.Button = MouseButtons.Left Then
ClassWin32.ReleaseCapture()
ClassWin32.SendMessage(Handle, ClassWin32.WM_NCLBUTTONDOWN, ClassWin32.HTCAPTION, 0)
End If
End Sub
Private Sub frmFlowForm_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs)
If e.KeyCode = Keys.Escape Then
If ESCHitCount > 0 Then
ExitZooflow()
Else
ESCHitCount += 1
End If
ElseIf e.KeyCode = Keys.D AndAlso (e.Control) Then
If ActiveModules.Contains(ClassConstants.MODULE_ZOOFLOW) Then
MsgBox("Search")
End If
End If
End Sub
Sub ExitZooflow()
Dim oResult As DialogResult = MessageBox.Show("Exit Zooflow", "Please Varify", MessageBoxButtons.YesNo)
If oResult = DialogResult.Yes Then
' Save Settings
My.UIConfig.FlowForm.Location = Location
My.UIConfigManager.Save()
' Exit
Application.Exit()
Else
ESCHitCount = 0
End If
End Sub
Public Sub OnEvent(Params As Object)
Logger.Debug("OnEvent called!")
End Sub
Private Sub PictureBoxSearch_Click(sender As Object, e As EventArgs) Handles PictureBoxSearch.Click
Cursor = Cursors.WaitCursor
If TheFormIsAlreadyLoaded("frmSearchStart") Then
Cursor = Cursors.Default
Exit Sub
End If
Dim oForm As New frmSearchStart(DTIDB_SEARCHES)
oForm.Show()
Cursor = Cursors.Default
If TimerCheckActiveForms.Enabled = False Then
TimerCheckActiveForms.Enabled = True
End If
End Sub
Private Sub PictureBoxSearch_MouseEnter(sender As Object, e As EventArgs) Handles PictureBoxSearch.MouseEnter
PictureBoxSearch.Image = My.Resources._2_LUPE_AKTIV_ZOO
End Sub
Private Sub PictureBoxSearch_MouseLeave(sender As Object, e As EventArgs) Handles PictureBoxSearch.MouseLeave
PictureBoxSearch.Image = My.Resources._2_LUPE_INAKTIV_ZOO
End Sub
Private Sub PictureBoxPM_MouseEnter(sender As Object, e As EventArgs) Handles PictureBoxPM.MouseEnter
PictureBoxPM.Image = My.Resources._3_PERSON_AKTIV_ZOO
End Sub
Private Sub PictureBoxPM_MouseLeave(sender As Object, e As EventArgs) Handles PictureBoxPM.MouseLeave
PictureBoxPM.Image = My.Resources._3_PERSON_INAKTIV_ZOO
End Sub
Private Sub PictureBoxGlobix_MouseEnter(sender As Object, e As EventArgs) Handles PictureBoxGlobix.MouseEnter
PictureBoxGlobix.Image = My.Resources._4_GLOBIX_AKTIV_ZOO
End Sub
Private Sub PictureBoxGlobix_MouseLeave(sender As Object, e As EventArgs) Handles PictureBoxGlobix.MouseLeave
PictureBoxGlobix.Image = My.Resources._4_GLOBIX_INAKTIV_ZOO
End Sub
Private Sub ZooFlowBeendenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles ZooFlowBeendenToolStripMenuItem.Click
ExitZooflow()
End Sub
Private Sub AlleAnzeigenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AlleAnzeigenToolStripMenuItem.Click
For Each oControl As Control In Me.Controls
oControl.Visible = True
Next
End Sub
Private Sub VerwaltungToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles VerwaltungToolStripMenuItem.Click
frmAdministrationZooFlow.Show()
End Sub
Private Sub frmFlowForm_DragEnter(sender As Object, e As DragEventArgs) Handles MyBase.DragEnter
PictureBox1.Image = My.Resources._1_LOGO_ZOO_FLOW_DROP3
e.Effect = DragDropEffects.Copy
Drag_Enter(sender, e)
End Sub
Private Sub frmFlowForm_DragDrop(sender As Object, e As DragEventArgs) Handles MyBase.DragDrop
DragDropForm(e)
End Sub
Private Sub frmFlowForm_DragLeave(sender As Object, e As EventArgs) Handles Me.DragLeave
PictureBox1.Image = My.Resources._1_LOGO_ZOO_FLOW1
End Sub
Private Sub PictureBoxAbo_MouseEnter(sender As Object, e As EventArgs) Handles PictureBoxAbo.MouseEnter
PictureBoxAbo.Image = My.Resources._2_ZOO_FLOW_Abo_MouseOver
End Sub
Private Sub PictureBoxAbo_MouseLeave(sender As Object, e As EventArgs) Handles PictureBoxAbo.MouseLeave
PictureBoxAbo.Image = My.Resources._2_ZOO_FLOW_Abo
End Sub
Private Sub PictureBoxAbo_Click(sender As Object, e As EventArgs) Handles PictureBoxAbo.Click
Cursor = Cursors.WaitCursor
If TheFormIsAlreadyLoaded("frmPreSearch") Then
Cursor = Cursors.Default
Exit Sub
End If
Dim oForm2 As New frmPreSearch()
oForm2.Show()
Cursor = Cursors.Default
End Sub
Private Function TheFormIsAlreadyLoaded(ByVal pFormName As String) As Boolean
TheFormIsAlreadyLoaded = False
For Each frm As Form In Application.OpenForms
If frm.Name.Equals(pFormName) Then
TheFormIsAlreadyLoaded = True
Exit Function
End If
Next
End Function
Private Function FormLoaded_Visible(ByVal pFormName As String) As Boolean
For Each frm As Form In Application.OpenForms
If frm.Name.Equals(pFormName) Then
Me.Visible = False
Exit Function
End If
Next
Me.Visible = True
TimerCheckActiveForms.Enabled = False
End Function
Private Sub UserKonfigurationToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles UserKonfigurationToolStripMenuItem.Click
End Sub
Private Sub DatenbankverbindungToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DatenbankverbindungToolStripMenuItem.Click
frmConfigDatabase.ShowDialog()
End Sub
Private Sub TimerCheckActiveForms_Tick(sender As Object, e As EventArgs) Handles TimerCheckActiveForms.Tick
FormLoaded_Visible("frmSearchStart")
If Me.Visible = False Then Exit Sub
End Sub
Private Sub NotifyIcon_DoubleClick(sender As Object, e As EventArgs) Handles NotifyIcon.DoubleClick
If Me.Visible = False Then
Me.Visible = True
TimerCheckActiveForms.Enabled = False
End If
End Sub
Private Sub PictureBox1_DragEnter(sender As Object, e As DragEventArgs) Handles PictureBox1.DragEnter
Drag_Enter(sender, e)
End Sub
Sub Drag_Enter(sender As Object, e As DragEventArgs)
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
e.Effect = DragDropEffects.All
' Console.WriteLine("DragEnter ...DragDrop")
ElseIf e.Data.GetDataPresent("FileGroupDescriptor") Then
'handle a message dragged from Outlook
e.Effect = DragDropEffects.Copy
' Console.WriteLine("DragEnter ...OutlookMessage")
ElseIf e.Data.GetDataPresent("aryFileGroupDescriptor") AndAlso (e.Data.GetDataPresent("FileContents")) Then
e.Effect = DragDropEffects.Copy
' Console.WriteLine("DragEnter ...Attachment from Outlook")
Else
'otherwise, do not handle
e.Effect = DragDropEffects.None
End If
End Sub
Sub DragDropForm(e As DragEventArgs)
If TheFormIsAlreadyLoaded("frmIndexFileList") Then
Cursor = Cursors.Default
MsgBox("Please index the active file first!", MsgBoxStyle.Exclamation, "Drag 'n Drop not allowed!")
Exit Sub
End If
'Erstmal alles löschen
My.Database.ExecuteNonQuery("DELETE FROM TBGI_FILES_USER WHERE UPPER(USER@WORK) = UPPER('" & Environment.UserName & "')")
If CLSFileDrop.Drop_File(e) = True Then
TimerCheckDroppedFiles.Start()
End If
End Sub
Private Sub PictureBox1_DragDrop(sender As Object, e As DragEventArgs) Handles PictureBox1.DragDrop
DragDropForm(e)
End Sub
Private Sub TimerCheckDroppedFiles_Tick(sender As Object, e As EventArgs) Handles TimerCheckDroppedFiles.Tick
TimerCheckDroppedFiles.Stop()
Check_Dropped_Files()
End Sub
Sub Check_Dropped_Files()
Try
My.Database.ExecuteNonQuery("DELETE FROM TBGI_FILES_USER WHERE WORKED = 1 AND UPPER(USER@WORK) = UPPER('" & Environment.UserName & "')")
Dim i As Integer
For Each Str As Object In ClassFileDrop.files_dropped
If Not Str Is Nothing Then
Logger.Info(">> Check Drop-File: " & Str.ToString)
Dim handleType As String = Str.Substring(0, Str.LastIndexOf("|") + 1)
Dim filename As String = Str.Substring(Str.LastIndexOf("|") + 1)
If My.Application.Globix.FileExistsinDropTable(filename) = False Then
clsFilehandle.Decide_FileHandle(filename, handleType)
i += 1
Else
' Console.WriteLine("File gibt es bereits")
End If
End If
Next
Dim sql As String = "SELECT * FROM TBGI_FILES_USER WHERE WORKED = 0 AND UPPER(USER@WORK) = UPPER('" & Environment.UserName & "')"
My.Application.Globix.DTACTUAL_FILES = Nothing
My.Application.Globix.DTACTUAL_FILES = My.Database.GetDatatable(sql, True)
My.Application.Globix.ABORT_INDEXING = False
Dim oOnlyFilesFromFilesystem = True
For Each oRow As DataRow In My.Application.Globix.DTACTUAL_FILES.Rows
If oRow.Item("HANDLE_TYPE").ToString <> "|DROPFROMFSYSTEM|" Then
oOnlyFilesFromFilesystem = False
Exit For
End If
Next
If My.Application.Globix.DTACTUAL_FILES.Rows.Count > 1 And oOnlyFilesFromFilesystem = False Then
frmGlobixIndexFileList.ShowDialog()
My.Application.Globix.DTACTUAL_FILES = Nothing
My.Application.Globix.DTACTUAL_FILES = My.Database.GetDatatable(sql)
End If
For Each oFileRow As DataRow In My.Application.Globix.DTACTUAL_FILES.Rows
Dim filestring As String = oFileRow.Item("FILENAME2WORK").ToString
My.Application.Globix.CURRENT_FILENAME = oFileRow.Item("FILENAME2WORK").ToString
My.Application.Globix.CURRENT_WORKFILE_GUID = oFileRow.Item(0)
My.Application.Globix.CURRENT_WORKFILE = oFileRow.Item("FILENAME2WORK").ToString
Logger.Info(">> CURRENT_WORKFILE: " & My.Application.Globix.CURRENT_WORKFILE)
If File.Exists(My.Application.Globix.CURRENT_WORKFILE) = True And My.Application.Globix.DTACTUAL_FILES.Rows.Count > 0 Then
Globix_Open_IndexDialog()
End If
Next
Show()
Catch ex As Exception
MsgBox("Unexpected Error in Check_Dropped_Files:" & vbNewLine & ex.Message, MsgBoxStyle.Critical)
End Try
End Sub
Sub Globix_Open_IndexDialog()
Try
Hide()
IndexForm.ShowDialog()
Catch ex As Exception
Logger.Error(ex)
MsgBox(ex.Message, MsgBoxStyle.Critical)
Finally
Show()
End Try
End Sub
End Class