diff --git a/GUIs.ClientSuite/frmConfigUser.Designer.vb b/GUIs.ClientSuite/frmConfigUser.Designer.vb
index d0d93885..fd1465bc 100644
--- a/GUIs.ClientSuite/frmConfigUser.Designer.vb
+++ b/GUIs.ClientSuite/frmConfigUser.Designer.vb
@@ -49,7 +49,7 @@ Partial Class frmConfigUser
Me.TabPageSupport.Controls.Add(Me.chkLogErrorsOnly)
Me.TabPageSupport.ImageOptions.Image = CType(resources.GetObject("TabPageSupport.ImageOptions.Image"), System.Drawing.Image)
Me.TabPageSupport.Name = "TabPageSupport"
- Me.TabPageSupport.Size = New System.Drawing.Size(703, 448)
+ Me.TabPageSupport.Size = New System.Drawing.Size(794, 403)
Me.TabPageSupport.Text = "Support"
'
'btnAppFolder
@@ -108,8 +108,6 @@ Partial Class frmConfigUser
'XtraTabControl1
'
Me.XtraTabControl1.Dock = System.Windows.Forms.DockStyle.Fill
- Me.XtraTabControl1.HeaderLocation = DevExpress.XtraTab.TabHeaderLocation.Left
- Me.XtraTabControl1.HeaderOrientation = DevExpress.XtraTab.TabOrientation.Horizontal
Me.XtraTabControl1.Location = New System.Drawing.Point(0, 0)
Me.XtraTabControl1.Name = "XtraTabControl1"
Me.XtraTabControl1.SelectedTabPage = Me.TabPageSupport
@@ -124,7 +122,7 @@ Partial Class frmConfigUser
Me.TabPageMain.Controls.Add(Me.cmbLanguage)
Me.TabPageMain.ImageOptions.Image = CType(resources.GetObject("TabPageMain.ImageOptions.Image"), System.Drawing.Image)
Me.TabPageMain.Name = "TabPageMain"
- Me.TabPageMain.Size = New System.Drawing.Size(703, 448)
+ Me.TabPageMain.Size = New System.Drawing.Size(700, 444)
Me.TabPageMain.Text = "Allgemein"
'
'Label1
diff --git a/Products.ClipboardWatcher/ClipboardWatcher.vbproj b/Products.ClipboardWatcher/ClipboardWatcher.vbproj
index 7483962a..9d6dd701 100644
--- a/Products.ClipboardWatcher/ClipboardWatcher.vbproj
+++ b/Products.ClipboardWatcher/ClipboardWatcher.vbproj
@@ -122,6 +122,10 @@
{903b2d7d-3b80-4be9-8713-7447b704e1b0}
Logging
+
+ {D0FB36EB-783D-40E1-B71E-A0B84B2FE567}
+ ZooFlow
+
\ No newline at end of file
diff --git a/Products.ClipboardWatcher/frmMatch.vb b/Products.ClipboardWatcher/frmMatch.vb
index 0497d3a4..0000349a 100644
--- a/Products.ClipboardWatcher/frmMatch.vb
+++ b/Products.ClipboardWatcher/frmMatch.vb
@@ -1,4 +1,6 @@
-'''
+Imports DigitalData.Modules.Logging
+Imports ZooFlow
+'''
'''
''' Selfcontained:
''' - Config (Location of Window)
@@ -13,10 +15,16 @@
''' - Matching Profiles as List Of ProfileData
''' - Clipboard Content as String
'''
-
-
Public Class frmMatch
+ Public Sub New(LogConfig As LogConfig, Environment As ClassEnvironment)
+ ' Dieser Aufruf ist für den Designer erforderlich.
+ InitializeComponent()
+
+ ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
+
+ End Sub
+
Private Sub frmMatch_Load(sender As Object, e As EventArgs) Handles MyBase.Load
End Sub
-End Class
\ No newline at end of file
+End Class
diff --git a/ZooFlow/ApplicationEvents.vb b/ZooFlow/ApplicationEvents.vb
index 1316755f..cce43f6a 100644
--- a/ZooFlow/ApplicationEvents.vb
+++ b/ZooFlow/ApplicationEvents.vb
@@ -30,6 +30,8 @@ Namespace My
Dim oUIConfigManager As New ConfigManager(Of ClassUIConfig)(oLogConfig, oUIConfigPath, oUIConfigPath)
LogConfig = oLogConfig
+ LogConfig.Debug = oSystemConfigManager.Config.LogDebug
+
SystemConfigManager = oSystemConfigManager
UIConfigManager = oUIConfigManager
diff --git a/ZooFlow/ClassConstants.vb b/ZooFlow/ClassConstants.vb
index da07d4d5..84f843ec 100644
--- a/ZooFlow/ClassConstants.vb
+++ b/ZooFlow/ClassConstants.vb
@@ -6,20 +6,8 @@
Public Const SERVICE_MAX_CONNECTIONS = 10000
Public Const SERVICE_OPEN_TIMEOUT = 3
- Public Const CONTROL_TEXTEDIT = "TextBox"
- Public Const CONTROL_MEMOEDIT = "Memoedit"
- Public Const CONTROL_COMBOEDIT = "Combobox"
- Public Const CONTROL_CHECKEDIT = "Checkbox"
- Public Const CONTROL_RADIOEDIT = "Radiobutton"
- Public Const CONTROL_DATEEDIT = "Datepicker"
-
Public Const FOLDER_NAME_LAYOUT = "Layout"
- Public Const ATTRIBUTE_ID_COLUMN = "RECORD_ID"
-
- Public Const DB_USER_ATTRIBUTE_ID = 1
- Public Const DB_USER_ATTRIBUTE_SYSKEY = "001"
-
- Public Const DB_GROUP_ATTRIBUTE_ID = 2
- Public Const DB_GROUP_ATTRIBUTE_SYSKEY = "002"
+ Public Const MODULE_CLIPBOARDWATCHER = "CW"
+ Public Const MODULE_GLOBAL_INDEXER = "GLOBIX"
End Class
diff --git a/ZooFlow/ClassErrorHandler.vb b/ZooFlow/ClassErrorHandler.vb
index bceded3f..6bdd70c6 100644
--- a/ZooFlow/ClassErrorHandler.vb
+++ b/ZooFlow/ClassErrorHandler.vb
@@ -15,7 +15,7 @@ Public Class ClassErrorHandler
MsgBox(GetMessage(Exception), MsgBoxStyle.Critical, "Unexpected Error")
End Sub
- Private Function GetMessage(Exception As Exception)
+ Private Function GetMessage(Exception As Exception) As String
Dim oTargetSite = Exception.TargetSite
Dim oMethodName = GetMethodName(Exception)
Dim oFormName = GetFormName(Exception)
diff --git a/ZooFlow/ClassInit.vb b/ZooFlow/ClassInit.vb
index fd047200..dffc0732 100644
--- a/ZooFlow/ClassInit.vb
+++ b/ZooFlow/ClassInit.vb
@@ -2,12 +2,20 @@
Imports DevExpress.XtraSplashScreen
Imports DigitalData.Modules.Database
Imports DigitalData.Modules.Filesystem
+Imports DigitalData.Modules.Language.Utils
+Imports DigitalData.Modules.Logging
+Imports ZooFlow.ClassInitLoader
+Imports ZooFlow.ClassConstants
Public Class ClassInit
Private _MainForm As frmMain
+ Private _Logger As Logger
- Public Sub New(ParentForm As frmMain)
+ Public Event Completed As EventHandler
+
+ Public Sub New(LogConfig As LogConfig, ParentForm As frmMain)
_MainForm = ParentForm
+ _Logger = LogConfig.GetLogger()
End Sub
Public Sub InitializeApplication()
@@ -17,17 +25,16 @@ Public Class ClassInit
' Init User
' Zeile -> Objekt / NameValue List
- If Not InitializeDatabase() Then
- MsgBox("Verbindung konnte nicht hergestellt werden! Anwendung wird beendet", MsgBoxStyle.Critical, _MainForm.Text)
+ If Not SetupDatabase() Then
+ MsgBox("Keine Verbindungs-Informationen hinterlegt. Anwendung wird beendet.", MsgBoxStyle.Critical, _MainForm.Text)
Application.Exit()
Else
Dim oInit As New ClassInitLoader()
+
+ ' === Init Schritte definieren
oInit.AddStep("Checking connectivity..", AddressOf CheckConnectivity, True)
- oInit.AddStep("Checking connectivity..2", AddressOf CheckConnectivity, True)
- oInit.AddStep("Checking connectivity..3", AddressOf CheckConnectivity, True)
- oInit.AddStep("Checking connectivity..4", AddressOf CheckConnectivity, True)
- oInit.AddStep("Checking connectivity..5", AddressOf CheckConnectivity, True)
- oInit.AddStep("Checking connectivity..6", AddressOf CheckConnectivity, True)
+ oInit.AddStep("Initializing User..", AddressOf InitializeUser, True)
+ ' === Init Schritte definieren
AddHandler oInit.ProgressChanged, AddressOf ProgressChanged
AddHandler oInit.InitCompleted, AddressOf InitCompleted
@@ -36,34 +43,9 @@ Public Class ClassInit
SplashScreenManager.ShowForm(_MainForm, GetType(frmSplash), False, False)
oInit.Run()
-
-
End If
End Sub
-
- Private Sub ProgressChanged(sender As Object, Progress As ClassInitLoader.InitProgress)
- SplashScreenManager.Default.SendCommand(frmSplash.SplashScreenCommand.SetProgress, Progress.CurrentPercent)
- SplashScreenManager.Default.SendCommand(frmSplash.SplashScreenCommand.SetActionName, Progress.CurrentStep.Name)
- End Sub
-
- Private Sub InitCompleted(sender As Object, e As RunWorkerCompletedEventArgs)
- SplashScreenManager.CloseForm(False)
- End Sub
-
- Private Sub CheckConnectivity()
- Dim oCrypt As New EncryptionLegacy("!35452didalog=")
- Dim oBuilder = My.SystemConfig.GetConnectionStringBuilder(My.SystemConfig.ConnectionString)
- oBuilder.Password = oCrypt.DecryptData(oBuilder.Password)
- Dim oDecryptedConnectionString = oBuilder.ToString
-
- My.Database = New MSSQLServer(My.LogConfig, oDecryptedConnectionString)
-
- If My.Database.DBInitialized = False Then
- Throw New ApplicationException()
- End If
- End Sub
-
- Private Function InitializeDatabase() As Boolean
+ Private Function SetupDatabase() As Boolean
If My.SystemConfig.ConnectionString = String.Empty Then
Dim oResult = frmConfigDatabase.ShowDialog()
@@ -75,4 +57,121 @@ Public Class ClassInit
Return True
End Function
+
+ Private Sub ProgressChanged(sender As Object, Progress As InitProgress)
+ SplashScreenManager.Default.SendCommand(frmSplash.SplashScreenCommand.SetProgress, Progress.CurrentPercent)
+ SplashScreenManager.Default.SendCommand(frmSplash.SplashScreenCommand.SetActionName, Progress.CurrentStep.Name)
+ End Sub
+
+ Private Sub InitCompleted(sender As Object, e As RunWorkerCompletedEventArgs)
+ If Not IsNothing(e.Error) Then
+ MsgBox("Beim Initialisieren des Programms ist folgender Fehler aufgetreten:" & vbNewLine & vbNewLine & e.Error.Message, MsgBoxStyle.Critical, _MainForm.Text)
+ Application.ExitThread()
+ End If
+
+ ' Copy back state from MyApplication Helper to My.Application
+ Dim oMyApplication As My.MyApplication = DirectCast(e.Result, My.MyApplication)
+ My.Application.User = oMyApplication.User
+ My.Application.Modules = oMyApplication.Modules
+ My.Application.ModulesActive = oMyApplication.ModulesActive
+
+ RaiseEvent Completed(sender, Nothing)
+ End Sub
+
+ Private Sub CheckConnectivity(MyApplication As My.MyApplication)
+ Dim oCrypt As New EncryptionLegacy("!35452didalog=")
+ Dim oBuilder = My.SystemConfig.GetConnectionStringBuilder(My.SystemConfig.ConnectionString)
+ oBuilder.Password = oCrypt.DecryptData(oBuilder.Password)
+ Dim oDecryptedConnectionString = oBuilder.ToString
+
+ My.Database = New MSSQLServer(My.LogConfig, oDecryptedConnectionString)
+
+ If My.Database.DBInitialized = False Then
+ _Logger.Warn("Datenbank konnte nicht initialisiert werden!")
+ Throw New InitException("Datenbank konnte nicht initialisiert werden!")
+ End If
+ End Sub
+
+ Private Sub InitializeUser(MyApplication As My.MyApplication)
+ Try
+ Dim oSql As String = My.Common.Queries.FNDD_MODULE_INIT(MyApplication.User.UserName)
+ Dim oDatatable As DataTable = My.Database.GetDatatable(oSql)
+
+ If oDatatable.Rows.Count <= 1 Then
+ Throw New InitException("Benutzer konnte nicht gefunden werden!")
+ End If
+
+ For Each oRow As DataRow In oDatatable.Rows
+ Dim oType As String = oRow("TYPE").ToString
+
+ Select Case oType
+ Case "USER"
+ HandleUserInfo(MyApplication, oRow)
+
+ Case MODULE_CLIPBOARDWATCHER
+ HandleModuleInfo(MyApplication, oType, oRow)
+
+ Case MODULE_GLOBAL_INDEXER
+ HandleModuleInfo(MyApplication, oType, oRow)
+ End Select
+ Next
+ Catch ex As Exception
+ _Logger.Error(ex)
+ Throw New InitException("Fehler beim Laden des Benutzers!")
+ End Try
+ End Sub
+
+ Private Sub HandleUserInfo(MyApplication As My.MyApplication, Row As DataRow)
+ Dim oValue As Object = Row.Item("VALUE")
+ Dim oName As String = Row.Item("NAME").ToString
+
+ Select Case oName
+ Case "USER_ID"
+ MyApplication.User.UserId = CInt(oValue)
+ Case "USER_PRENAME"
+ MyApplication.User.GivenName = NotNull(oValue.ToString, String.Empty)
+ Case "USER_SURNAME"
+ MyApplication.User.Surname = NotNull(oValue.ToString, String.Empty)
+ Case "USER_SHORTNAME"
+ MyApplication.User.ShortName = NotNull(oValue.ToString, String.Empty)
+ Case "USER_EMAIL"
+ MyApplication.User.Email = NotNull(oValue.ToString, String.Empty)
+ Case "USER_DATE_FORMAT"
+ MyApplication.User.DateFormat = NotNull(oValue.ToString, "dd.MM.yyyy")
+ Case "USER_LANGUAGE"
+ MyApplication.User.Language = NotNull(oValue.ToString, "de-DE")
+ End Select
+ End Sub
+
+ Private Sub HandleModuleInfo(MyApplication As My.MyApplication, ModuleName As String, Row As DataRow)
+ Dim oValue As Object = Row.Item("VALUE")
+ Dim oName As String = Row.Item("NAME").ToString
+
+ If Not MyApplication.Modules.ContainsKey(ModuleName) Then
+ MyApplication.Modules.Item(ModuleName) = New ClassModuleState()
+ End If
+
+ Select Case oName
+ Case "MODULE_ACCESS"
+ If CBool(oValue) Then
+ SyncLock MyApplication.ModulesActive
+ MyApplication.ModulesActive.Add(ModuleName)
+ End SyncLock
+ End If
+ MyApplication.Modules.Item(ModuleName).HasAccess = CBool(oValue)
+
+ Case "IS_ADMIN"
+ MyApplication.Modules.Item(ModuleName).IsAdmin = CBool(oValue)
+
+ Case "USER_COUNT_LOGGED_IN"
+ MyApplication.Modules.Item(ModuleName).LoggedIn = CInt(oValue) + 1
+
+ Case "RESULT"
+ Dim oLines = oValue.ToString.Split("|"c)
+ _Logger.Debug("Access Result for Module {0}", ModuleName)
+ For Each oLine In oLines
+ _Logger.Debug(oLine.Trim)
+ Next
+ End Select
+ End Sub
End Class
diff --git a/ZooFlow/ClassInitLoader.vb b/ZooFlow/ClassInitLoader.vb
index 4a8e58e2..a765d941 100644
--- a/ZooFlow/ClassInitLoader.vb
+++ b/ZooFlow/ClassInitLoader.vb
@@ -14,7 +14,7 @@ Public Class ClassInitLoader
_Logger = My.LogConfig.GetLogger()
End Sub
- Public Sub AddStep(Name As String, Action As Action, Optional Fatal As Boolean = False)
+ Public Sub AddStep(Name As String, Action As Action(Of Object), Optional Fatal As Boolean = False)
Steps.Add(New InitStep() With {
.Name = Name,
.Action = Action,
@@ -38,26 +38,27 @@ Public Class ClassInitLoader
RaiseEvent InitCompleted(sender, e)
End Sub
- _Worker.RunWorkerAsync()
+ _Worker.RunWorkerAsync(My.Application)
Return True
End Function
Private Sub DoWork(sender As Object, e As DoWorkEventArgs)
+ Dim oMyApplication As My.MyApplication = DirectCast(e.Argument, My.MyApplication)
Dim oStepCounter = 0
For Each oStep In Steps
_CurrentStep = oStep
Try
- oStep.Action.Invoke()
+ oStep.Action.Invoke(oMyApplication)
Catch ex As Exception
_Logger.Error(ex)
_Logger.Warn("Init Step '{0}' failed!", oStep.Name)
If oStep.Fatal Then
_Logger.Warn("Fatal error in '{0}'. Init will be aborted!", oStep.Name)
- e.Cancel = True
+ Throw ex
End If
End Try
@@ -68,6 +69,8 @@ Public Class ClassInitLoader
Threading.Thread.Sleep(600)
Next
+
+ e.Result = oMyApplication
End Sub
Public Class InitProgress
@@ -83,10 +86,18 @@ Public Class ClassInitLoader
'''
''' The function to execute
'''
- Public Action As Action
+ Public Action As Action(Of Object)
'''
''' Should init be aborted if this step fails?
'''
Public Fatal As Boolean
End Class
+
+ Public Class InitException
+ Inherits ApplicationException
+
+ Public Sub New(message As String)
+ MyBase.New(message)
+ End Sub
+ End Class
End Class
\ No newline at end of file
diff --git a/ZooFlow/Common/ClassCommon.vb b/ZooFlow/Common/ClassCommon.vb
new file mode 100644
index 00000000..8c9fc458
--- /dev/null
+++ b/ZooFlow/Common/ClassCommon.vb
@@ -0,0 +1,3 @@
+Public Class ClassCommon
+ Public Property Queries As New ClassCommonQueries
+End Class
diff --git a/ZooFlow/Common/ClassCommonQueries.vb b/ZooFlow/Common/ClassCommonQueries.vb
new file mode 100644
index 00000000..bd537361
--- /dev/null
+++ b/ZooFlow/Common/ClassCommonQueries.vb
@@ -0,0 +1,9 @@
+Public Class ClassCommonQueries
+ Public Function FNDD_CHECK_USER_MODULE(Username As String, Optional ClientId As Integer = 1) As String
+ Return String.Format("SELECT * FROM [dbo].[FNDD_CHECK_USER_MODULE] ('{0}','CW',{1})", Username, ClientId)
+ End Function
+
+ Public Function FNDD_MODULE_INIT(Username As String) As String
+ Return String.Format("SELECT * FROM [dbo].[FNZF_GET_MODULE_INFO] ('{0}')", Username)
+ End Function
+End Class
diff --git a/ZooFlow/My Project/AssemblyInfo.vb b/ZooFlow/My Project/AssemblyInfo.vb
index 2c61ccf1..efe02308 100644
--- a/ZooFlow/My Project/AssemblyInfo.vb
+++ b/ZooFlow/My Project/AssemblyInfo.vb
@@ -32,5 +32,5 @@ Imports System.Runtime.InteropServices
' You can specify all the values or you can default the Build and Revision Numbers
' by using the '*' as shown below:
' [assembly: AssemblyVersion("1.0.*")]
-
+
diff --git a/ZooFlow/MyApplication.vb b/ZooFlow/MyApplication.vb
index 0a7de47c..7d1362cb 100644
--- a/ZooFlow/MyApplication.vb
+++ b/ZooFlow/MyApplication.vb
@@ -26,6 +26,8 @@ Namespace My
Property LogConfig As LogConfig
Property MainForm As frmMain
Property Database As MSSQLServer
+
+ Property Common As New ClassCommon
End Module
'''
@@ -36,6 +38,8 @@ Namespace My
' User Config
Public User As New ClassUserState()
Public Service As New ClassServiceState()
+ Public Modules As New Dictionary(Of String, ClassModuleState)
+ Public ModulesActive As New List(Of String)
End Class
End Namespace
diff --git a/ZooFlow/State/ClassModuleState.vb b/ZooFlow/State/ClassModuleState.vb
new file mode 100644
index 00000000..f3cc51e9
--- /dev/null
+++ b/ZooFlow/State/ClassModuleState.vb
@@ -0,0 +1,5 @@
+Public Class ClassModuleState
+ Public HasAccess As Boolean
+ Public IsAdmin As Boolean
+ Public LoggedIn As Integer
+End Class
\ No newline at end of file
diff --git a/ZooFlow/State/ClassUserState.vb b/ZooFlow/State/ClassUserState.vb
index 41bc5b75..87a03133 100644
--- a/ZooFlow/State/ClassUserState.vb
+++ b/ZooFlow/State/ClassUserState.vb
@@ -4,10 +4,15 @@
''' Helper Class to hold User State
'''
Public Class ClassUserState
+ Public UserId As Integer
Public UserName As String
+ Public Surname As String
+ Public GivenName As String
+ Public ShortName As String
+ Public Email As String
Public MachineName As String
+ Public DateFormat As String
Public Language As String
- Public IsAdmin As Boolean
'''
''' Initialize user object with values that can be read from the environment
diff --git a/ZooFlow/ZooFlow.vbproj b/ZooFlow/ZooFlow.vbproj
index b5f3d878..5e9cc517 100644
--- a/ZooFlow/ZooFlow.vbproj
+++ b/ZooFlow/ZooFlow.vbproj
@@ -45,6 +45,7 @@
+
@@ -86,6 +87,8 @@
+
+
@@ -111,6 +114,12 @@
Form
+
+ frmSettings.vb
+
+
+ Form
+
frmSplash.vb
@@ -123,6 +132,7 @@
+
@@ -134,6 +144,9 @@
frmFlowForm.vb
+
+ frmSettings.vb
+
frmSplash.vb
@@ -185,6 +198,10 @@
{EAF0EA75-5FA7-485D-89C7-B2D843B03A96}
Database
+
+ {d3c8cfed-d6f6-43a8-9bdf-454145d0352f}
+ Language
+
{903B2D7D-3B80-4BE9-8713-7447B704E1B0}
Logging
diff --git a/ZooFlow/frmFlowForm.vb b/ZooFlow/frmFlowForm.vb
index 39982041..2744044e 100644
--- a/ZooFlow/frmFlowForm.vb
+++ b/ZooFlow/frmFlowForm.vb
@@ -1,8 +1,17 @@
Public Class frmFlowForm
Private WithEvents Watcher As ClassClipboardWatcher = ClassClipboardWatcher.Singleton
+ Private ActiveModules As List(Of String)
Public Event ClipboardChanged As EventHandler(Of IDataObject)
+ Public Sub New(ActiveModules As List(Of String))
+ ' Dieser Aufruf ist für den Designer erforderlich.
+ InitializeComponent()
+
+ ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
+ Me.ActiveModules = ActiveModules
+ End Sub
+
Private Sub frmFlowForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
AllowDrop = True
ShowInTaskbar = False
@@ -11,21 +20,25 @@
End Sub
Private Sub frmFlowForm_DragOver(sender As Object, e As DragEventArgs) Handles Me.DragOver
- If e.Data.GetDataPresent(DataFormats.FileDrop) Then
- ' Handle file dragged from Windows
- e.Effect = DragDropEffects.Copy
- SetBitmap(My.Resources.CW_hatwas_klein)
- ElseIf e.Data.GetDataPresent("FileGroupDescriptor") Then
- ' Handle a message dragged from Outlook
- e.Effect = DragDropEffects.Copy
- SetBitmap(My.Resources.CW_hatwas_klein)
- ElseIf e.Data.GetDataPresent("aryFileGroupDescriptor") AndAlso (e.Data.GetDataPresent("FileContents")) Then
- ' Handle a message dragged from Thunderbird?
- e.Effect = DragDropEffects.Copy
- SetBitmap(My.Resources.CW_hatwas_klein)
- Else
- ' Otherwise, do not handle
+ If ActiveModules.Contains(ClassConstants.MODULE_GLOBAL_INDEXER) Then
e.Effect = DragDropEffects.None
+ Else
+ If e.Data.GetDataPresent(DataFormats.FileDrop) Then
+ ' Handle file dragged from Windows
+ e.Effect = DragDropEffects.Copy
+ SetBitmap(My.Resources.CW_hatwas_klein)
+ ElseIf e.Data.GetDataPresent("FileGroupDescriptor") Then
+ ' Handle a message dragged from Outlook
+ e.Effect = DragDropEffects.Copy
+ SetBitmap(My.Resources.CW_hatwas_klein)
+ ElseIf e.Data.GetDataPresent("aryFileGroupDescriptor") AndAlso (e.Data.GetDataPresent("FileContents")) Then
+ ' Handle a message dragged from Thunderbird?
+ e.Effect = DragDropEffects.Copy
+ SetBitmap(My.Resources.CW_hatwas_klein)
+ Else
+ ' Otherwise, do not handle
+ e.Effect = DragDropEffects.None
+ End If
End If
End Sub
@@ -34,7 +47,9 @@
End Sub
Private Sub Watcher_ClipboardChanged(sender As Object, e As IDataObject) Handles Watcher.ClipboardChanged
- RaiseEvent ClipboardChanged(sender, e)
+ If ActiveModules.Contains(ClassConstants.MODULE_CLIPBOARDWATCHER) Then
+ RaiseEvent ClipboardChanged(sender, e)
+ End If
End Sub
'''
diff --git a/ZooFlow/frmMain.Designer.vb b/ZooFlow/frmMain.Designer.vb
index 67bac805..9e303944 100644
--- a/ZooFlow/frmMain.Designer.vb
+++ b/ZooFlow/frmMain.Designer.vb
@@ -24,35 +24,68 @@
''' the contents of this method with the code editor.
'''
Private Sub InitializeComponent()
- Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMain))
+ Me.components = New System.ComponentModel.Container()
Dim SplashScreenManager As DevExpress.XtraSplashScreen.SplashScreenManager = New DevExpress.XtraSplashScreen.SplashScreenManager(Me, GetType(Global.ZooFlow.frmSplash), True, True)
+ Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMain))
Me.ribbonControl1 = New DevExpress.XtraBars.Ribbon.RibbonControl()
+ Me.ApplicationMenu = New DevExpress.XtraBars.Ribbon.ApplicationMenu(Me.components)
+ Me.ButtonSettings = New DevExpress.XtraBars.BarButtonItem()
+ Me.ButtonExit = New DevExpress.XtraBars.BarButtonItem()
Me.ribbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
Me.ribbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
- Me.NotifyIconMain = New System.Windows.Forms.NotifyIcon()
- Me.ContextMenuStripMain = New System.Windows.Forms.ContextMenuStrip()
+ Me.NotifyIconMain = New System.Windows.Forms.NotifyIcon(Me.components)
+ Me.ContextMenuStripMain = New System.Windows.Forms.ContextMenuStrip(Me.components)
Me.AnzeigenVersteckenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.AdministrationToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.ToolStripSeparator2 = New System.Windows.Forms.ToolStripSeparator()
Me.ToolStripMenuItem1 = New System.Windows.Forms.ToolStripMenuItem()
Me.ToolStripSeparator1 = New System.Windows.Forms.ToolStripSeparator()
Me.BeendenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
- Me.ToastNotificationsManager = New DevExpress.XtraBars.ToastNotifications.ToastNotificationsManager()
+ Me.ToastNotificationsManager = New DevExpress.XtraBars.ToastNotifications.ToastNotificationsManager(Me.components)
+ Me.SkinDropDownButtonItem1 = New DevExpress.XtraBars.SkinDropDownButtonItem()
CType(Me.ribbonControl1, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.ApplicationMenu, System.ComponentModel.ISupportInitialize).BeginInit()
Me.ContextMenuStripMain.SuspendLayout()
CType(Me.ToastNotificationsManager, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
+ 'SplashScreenManager
+ '
+ SplashScreenManager.ClosingDelay = 500
+ '
'ribbonControl1
'
+ Me.ribbonControl1.ApplicationButtonDropDownControl = Me.ApplicationMenu
Me.ribbonControl1.ExpandCollapseItem.Id = 0
- Me.ribbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.ribbonControl1.ExpandCollapseItem})
+ Me.ribbonControl1.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.ribbonControl1.ExpandCollapseItem, Me.ButtonSettings, Me.ButtonExit, Me.SkinDropDownButtonItem1})
Me.ribbonControl1.Location = New System.Drawing.Point(0, 0)
- Me.ribbonControl1.MaxItemId = 1
+ Me.ribbonControl1.MaxItemId = 4
Me.ribbonControl1.Name = "ribbonControl1"
+ Me.ribbonControl1.PageHeaderItemLinks.Add(Me.SkinDropDownButtonItem1)
Me.ribbonControl1.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.ribbonPage1})
Me.ribbonControl1.Size = New System.Drawing.Size(906, 143)
'
+ 'ApplicationMenu
+ '
+ Me.ApplicationMenu.ItemLinks.Add(Me.ButtonSettings)
+ Me.ApplicationMenu.ItemLinks.Add(Me.ButtonExit)
+ Me.ApplicationMenu.Name = "ApplicationMenu"
+ Me.ApplicationMenu.Ribbon = Me.ribbonControl1
+ '
+ 'ButtonSettings
+ '
+ Me.ButtonSettings.Caption = "Einstellungen"
+ Me.ButtonSettings.Id = 1
+ Me.ButtonSettings.ImageOptions.Image = CType(resources.GetObject("BarButtonItem1.ImageOptions.Image"), System.Drawing.Image)
+ Me.ButtonSettings.Name = "ButtonSettings"
+ '
+ 'ButtonExit
+ '
+ Me.ButtonExit.Caption = "Beenden"
+ Me.ButtonExit.Id = 2
+ Me.ButtonExit.ImageOptions.Image = CType(resources.GetObject("BarButtonItem2.ImageOptions.Image"), System.Drawing.Image)
+ Me.ButtonExit.Name = "ButtonExit"
+ '
'ribbonPage1
'
Me.ribbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.ribbonPageGroup1})
@@ -119,9 +152,10 @@
"ncididunt ut labore et dolore magna aliqua.", "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor i" &
"ncididunt ut labore et dolore magna aliqua.", DevExpress.XtraBars.ToastNotifications.ToastNotificationTemplate.Text01)})
'
- 'SplashScreenManager
+ 'SkinDropDownButtonItem1
'
- SplashScreenManager.ClosingDelay = 500
+ Me.SkinDropDownButtonItem1.Id = 3
+ Me.SkinDropDownButtonItem1.Name = "SkinDropDownButtonItem1"
'
'frmMain
'
@@ -133,6 +167,7 @@
Me.Ribbon = Me.ribbonControl1
Me.Text = "Zoo Flow"
CType(Me.ribbonControl1, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.ApplicationMenu, System.ComponentModel.ISupportInitialize).EndInit()
Me.ContextMenuStripMain.ResumeLayout(False)
CType(Me.ToastNotificationsManager, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
@@ -154,4 +189,8 @@
Friend WithEvents BeendenToolStripMenuItem As ToolStripMenuItem
Friend WithEvents AnzeigenVersteckenToolStripMenuItem As ToolStripMenuItem
Friend WithEvents ToastNotificationsManager As DevExpress.XtraBars.ToastNotifications.ToastNotificationsManager
+ Friend WithEvents ApplicationMenu As DevExpress.XtraBars.Ribbon.ApplicationMenu
+ Friend WithEvents ButtonSettings As DevExpress.XtraBars.BarButtonItem
+ Friend WithEvents ButtonExit As DevExpress.XtraBars.BarButtonItem
+ Friend WithEvents SkinDropDownButtonItem1 As DevExpress.XtraBars.SkinDropDownButtonItem
End Class
diff --git a/ZooFlow/frmMain.resx b/ZooFlow/frmMain.resx
index 342c831d..f573d651 100644
--- a/ZooFlow/frmMain.resx
+++ b/ZooFlow/frmMain.resx
@@ -117,13 +117,121 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
-
- 17, 17
-
-
- 153, 17
+
+ 702, 17
+
+
+ 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
+ X9ttAMYAAAAASUVORK5CYII=
+
+
+
+ 189, 17
+
+
+ 325, 17
+
AAABAAQAEBAAAAEACABoBQAARgAAABAQAAABABgAaAMAAK4FAAAgIAAAAQAIAKgIAAAWCQAAICAAAAEA
@@ -259,6 +367,6 @@
- 331, 17
+ 503, 17
\ No newline at end of file
diff --git a/ZooFlow/frmMain.vb b/ZooFlow/frmMain.vb
index 13f3c7a4..fc2eeecf 100644
--- a/ZooFlow/frmMain.vb
+++ b/ZooFlow/frmMain.vb
@@ -3,24 +3,41 @@ Imports DevExpress.XtraSplashScreen
Imports DigitalData.Modules.Logging
Imports DigitalData.Modules.Filesystem
Imports DigitalData.Modules.Database
+Imports DevExpress.LookAndFeel
+Imports ZooFlow.ClassConstants
Partial Public Class frmMain
- Private WithEvents FlowForm As New frmFlowForm()
+ Private WithEvents FlowForm As frmFlowForm
+ Private Init As ClassInit
+ Private Loading As Boolean = True
Private Logger As Logger = My.LogConfig.GetLogger
Public Sub New()
InitializeComponent()
-
End Sub
Private Sub frmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- Dim oInit As New ClassInit(Me)
- oInit.InitializeApplication()
+ ' === Initialization ===
+ Init = New ClassInit(My.LogConfig, Me)
+ AddHandler Init.Completed, AddressOf Init_Completed
+ Init.InitializeApplication()
+
+ ' === Layout and Skin ===
+ UserLookAndFeel.Default.SetSkinStyle(My.UIConfig.SkinName)
+ End Sub
+
+ Private Sub Init_Completed(sender As Object, e As EventArgs)
+ ' Initialization Complete
+ Loading = False
+ SplashScreenManager.CloseForm(False)
+
+ ' Setup Flow Form
+ FlowForm = New frmFlowForm(My.Application.ModulesActive)
+ FlowForm.Show()
End Sub
Private Sub frmMain_Shown(sender As Object, e As EventArgs) Handles Me.Shown
Hide()
- FlowForm.Show()
End Sub
Private Sub FlowForm_ClipboardChanged(sender As Object, e As IDataObject) Handles FlowForm.ClipboardChanged
@@ -50,20 +67,27 @@ Partial Public Class frmMain
Hide()
Else
Show()
+ BringToFront()
End If
End Sub
-
-
Private Sub ProgressChanged(sender As Object, Progress As ClassInitLoader.InitProgress)
SplashScreenManager.Default.SendCommand(frmSplash.SplashScreenCommand.SetProgress, Progress.CurrentPercent)
SplashScreenManager.Default.SendCommand(frmSplash.SplashScreenCommand.SetActionName, Progress.CurrentStep.Name)
End Sub
- Private Sub InitCompleted(sender As Object, e As RunWorkerCompletedEventArgs)
- SplashScreenManager.CloseForm(False)
+ Private Sub ButtonSettings_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles ButtonSettings.ItemClick
+ frmSettings.ShowDialog()
End Sub
+ Private Sub ButtonExit_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles ButtonExit.ItemClick
+ End Sub
+ Private Sub frmMain_StyleChanged(sender As Object, e As EventArgs) Handles Me.StyleChanged
+ If Loading = False Then
+ My.UIConfig.SkinName = LookAndFeel.ActiveSkinName
+ My.UIConfigManager.Save()
+ End If
+ End Sub
End Class
diff --git a/ZooFlow/frmSettings.Designer.vb b/ZooFlow/frmSettings.Designer.vb
new file mode 100644
index 00000000..32d399c0
--- /dev/null
+++ b/ZooFlow/frmSettings.Designer.vb
@@ -0,0 +1,34 @@
+ _
+Partial Class frmSettings
+ Inherits DevExpress.XtraEditors.XtraForm
+
+ 'Form overrides dispose to clean up the component list.
+ _
+ Protected Overrides Sub Dispose(ByVal disposing As Boolean)
+ If disposing AndAlso components IsNot Nothing Then
+ components.Dispose()
+ End If
+ MyBase.Dispose(disposing)
+ End Sub
+
+ 'Required by the Windows Form Designer
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTE: The following procedure is required by the Windows Form Designer
+ 'It can be modified using the Windows Form Designer.
+ 'Do not modify it using the code editor.
+ _
+ Private Sub InitializeComponent()
+ Me.SuspendLayout()
+ '
+ 'frmSettings
+ '
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.ClientSize = New System.Drawing.Size(784, 419)
+ Me.Name = "frmSettings"
+ Me.Text = "frmSettings"
+ Me.ResumeLayout(False)
+
+ End Sub
+End Class
diff --git a/ZooFlow/frmSettings.resx b/ZooFlow/frmSettings.resx
new file mode 100644
index 00000000..1af7de15
--- /dev/null
+++ b/ZooFlow/frmSettings.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/ZooFlow/frmSettings.vb b/ZooFlow/frmSettings.vb
new file mode 100644
index 00000000..a36d927e
--- /dev/null
+++ b/ZooFlow/frmSettings.vb
@@ -0,0 +1,3 @@
+Public Class frmSettings
+
+End Class
\ No newline at end of file