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