From ab0c7a05af1f0cfe0191d9fe92a00aaf4f203245 Mon Sep 17 00:00:00 2001 From: Dunestorm Date: Sat, 16 Mar 2019 10:17:38 +0000 Subject: [PATCH] Theme selector now shows preview, refactored ThemeEngine --- GBM/Forms/frmMain.vb | 2 +- GBM/Forms/frmSettings.Designer.vb | 60 +++++++++++++++++++++++-- GBM/Forms/frmSettings.vb | 20 +++++++++ GBM/Managers/mgrThemeEngine.vb | 74 +++++++++++++++++++++++++++---- 4 files changed, 142 insertions(+), 14 deletions(-) diff --git a/GBM/Forms/frmMain.vb b/GBM/Forms/frmMain.vb index ae99eff..ad70d85 100644 --- a/GBM/Forms/frmMain.vb +++ b/GBM/Forms/frmMain.vb @@ -60,7 +60,6 @@ Public Class frmMain Public WithEvents oRestore As New mgrRestore Public hshScanList As Hashtable Public oSettings As New mgrSettings - Public oThemeEngine As New mgrThemeEngine Delegate Sub UpdateNotifierCallBack(ByVal iCount As Integer) Delegate Sub UpdateLogCallBack(ByVal sLogUpdate As String, ByVal bTrayUpdate As Boolean, ByVal objIcon As System.Windows.Forms.ToolTipIcon, ByVal bTimeStamp As Boolean) @@ -1642,6 +1641,7 @@ Public Class frmMain #End Region #Region "Set application theme" + Dim oThemeEngine As New mgrThemeEngine() oThemeEngine.SetTheme(oSettings.ThemeSelection) 'Base Theme diff --git a/GBM/Forms/frmSettings.Designer.vb b/GBM/Forms/frmSettings.Designer.vb index c0e2afc..9f9f0fe 100644 --- a/GBM/Forms/frmSettings.Designer.vb +++ b/GBM/Forms/frmSettings.Designer.vb @@ -80,6 +80,10 @@ Partial Class frmSettings Me.chkAutoHideLog = New System.Windows.Forms.CheckBox() Me.cboThemeSelection = New System.Windows.Forms.ComboBox() Me.lblThemeSelection = New System.Windows.Forms.Label() + Me.btnPrevBase = New System.Windows.Forms.Button() + Me.btnPrevBaseSec = New System.Windows.Forms.Button() + Me.btnPrevHighlight = New System.Windows.Forms.Button() + Me.btnPrevHighlightSec = New System.Windows.Forms.Button() Me.grpFolderOptions.SuspendLayout() Me.grp7zGeneral.SuspendLayout() Me.pnlBackup.SuspendLayout() @@ -639,12 +643,16 @@ Partial Class frmSettings ' 'grpInterfaceOptions ' + Me.grpInterfaceOptions.Controls.Add(Me.btnPrevHighlightSec) + Me.grpInterfaceOptions.Controls.Add(Me.btnPrevHighlight) + Me.grpInterfaceOptions.Controls.Add(Me.btnPrevBaseSec) + Me.grpInterfaceOptions.Controls.Add(Me.btnPrevBase) Me.grpInterfaceOptions.Controls.Add(Me.chkAutoHideLog) Me.grpInterfaceOptions.Controls.Add(Me.cboThemeSelection) Me.grpInterfaceOptions.Controls.Add(Me.lblThemeSelection) Me.grpInterfaceOptions.Location = New System.Drawing.Point(6, 12) Me.grpInterfaceOptions.Name = "grpInterfaceOptions" - Me.grpInterfaceOptions.Size = New System.Drawing.Size(354, 97) + Me.grpInterfaceOptions.Size = New System.Drawing.Size(354, 82) Me.grpInterfaceOptions.TabIndex = 1 Me.grpInterfaceOptions.TabStop = False Me.grpInterfaceOptions.Text = "Interface Options" @@ -652,7 +660,7 @@ Partial Class frmSettings 'chkAutoHideLog ' Me.chkAutoHideLog.AutoSize = True - Me.chkAutoHideLog.Location = New System.Drawing.Point(12, 56) + Me.chkAutoHideLog.Location = New System.Drawing.Point(9, 56) Me.chkAutoHideLog.Name = "chkAutoHideLog" Me.chkAutoHideLog.Size = New System.Drawing.Size(167, 17) Me.chkAutoHideLog.TabIndex = 3 @@ -663,9 +671,9 @@ Partial Class frmSettings ' Me.cboThemeSelection.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.cboThemeSelection.FormattingEnabled = True - Me.cboThemeSelection.Location = New System.Drawing.Point(100, 23) + Me.cboThemeSelection.Location = New System.Drawing.Point(110, 23) Me.cboThemeSelection.Name = "cboThemeSelection" - Me.cboThemeSelection.Size = New System.Drawing.Size(121, 21) + Me.cboThemeSelection.Size = New System.Drawing.Size(114, 21) Me.cboThemeSelection.TabIndex = 1 ' 'lblThemeSelection @@ -677,6 +685,46 @@ Partial Class frmSettings Me.lblThemeSelection.TabIndex = 0 Me.lblThemeSelection.Text = "Theme Selection:" ' + 'btnPrevBase + ' + Me.btnPrevBase.Enabled = False + Me.btnPrevBase.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btnPrevBase.Location = New System.Drawing.Point(230, 23) + Me.btnPrevBase.Name = "btnPrevBase" + Me.btnPrevBase.Size = New System.Drawing.Size(21, 21) + Me.btnPrevBase.TabIndex = 4 + Me.btnPrevBase.UseVisualStyleBackColor = True + ' + 'btnPrevBaseSec + ' + Me.btnPrevBaseSec.Enabled = False + Me.btnPrevBaseSec.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btnPrevBaseSec.Location = New System.Drawing.Point(258, 23) + Me.btnPrevBaseSec.Name = "btnPrevBaseSec" + Me.btnPrevBaseSec.Size = New System.Drawing.Size(21, 21) + Me.btnPrevBaseSec.TabIndex = 5 + Me.btnPrevBaseSec.UseVisualStyleBackColor = True + ' + 'btnPrevHighlight + ' + Me.btnPrevHighlight.Enabled = False + Me.btnPrevHighlight.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btnPrevHighlight.Location = New System.Drawing.Point(285, 23) + Me.btnPrevHighlight.Name = "btnPrevHighlight" + Me.btnPrevHighlight.Size = New System.Drawing.Size(21, 21) + Me.btnPrevHighlight.TabIndex = 6 + Me.btnPrevHighlight.UseVisualStyleBackColor = True + ' + 'btnPrevHighlightSec + ' + Me.btnPrevHighlightSec.Enabled = False + Me.btnPrevHighlightSec.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btnPrevHighlightSec.Location = New System.Drawing.Point(312, 23) + Me.btnPrevHighlightSec.Name = "btnPrevHighlightSec" + Me.btnPrevHighlightSec.Size = New System.Drawing.Size(21, 21) + Me.btnPrevHighlightSec.TabIndex = 7 + Me.btnPrevHighlightSec.UseVisualStyleBackColor = True + ' 'frmSettings ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -788,4 +836,8 @@ Partial Class frmSettings Friend WithEvents chkAutoHideLog As CheckBox Friend WithEvents cboThemeSelection As ComboBox Friend WithEvents lblThemeSelection As Label + Friend WithEvents btnPrevBase As Button + Friend WithEvents btnPrevHighlightSec As Button + Friend WithEvents btnPrevHighlight As Button + Friend WithEvents btnPrevBaseSec As Button End Class diff --git a/GBM/Forms/frmSettings.vb b/GBM/Forms/frmSettings.vb index 3865060..2011c21 100644 --- a/GBM/Forms/frmSettings.vb +++ b/GBM/Forms/frmSettings.vb @@ -5,6 +5,7 @@ Public Class frmSettings Dim bShutdown As Boolean = False Dim bSyncSettingsChanged As Boolean = False Dim eCurrentSyncFields As clsGame.eOptionalSyncFields + Private oSettings As mgrSettings Property Settings As mgrSettings @@ -451,4 +452,23 @@ Public Class frmSettings Private Sub lstSettings_SelectedValueChanged(sender As Object, e As EventArgs) Handles lstSettings.SelectedValueChanged ChangePanel() End Sub + + Private Sub cboThemeSelection_SelectedValueChanged(sender As Object, e As EventArgs) Handles cboThemeSelection.SelectedValueChanged + 'Previews theme based on current combo-box selection. + Dim oThemeEngine As New mgrThemeEngine() + + If cboThemeSelection.SelectedIndex = 0 Then + oThemeEngine.SetTheme(cboThemeSelection.SelectedIndex) + ElseIf cboThemeSelection.SelectedIndex = 1 Then + oThemeEngine.SetTheme(cboThemeSelection.SelectedIndex) + End If + + 'Only set the theme once it has been defined. + If oThemeEngine.bThemeHasBeenDefined Then + btnPrevBase.BackColor = oThemeEngine.ColorBase + btnPrevBaseSec.BackColor = oThemeEngine.ColorBaseSecondary + btnPrevHighlight.BackColor = oThemeEngine.ColorHighlight + btnPrevHighlightSec.BackColor = oThemeEngine.ColorHighlightSecondary + End If + End Sub End Class \ No newline at end of file diff --git a/GBM/Managers/mgrThemeEngine.vb b/GBM/Managers/mgrThemeEngine.vb index 31317ad..496faf8 100644 --- a/GBM/Managers/mgrThemeEngine.vb +++ b/GBM/Managers/mgrThemeEngine.vb @@ -2,11 +2,67 @@ Public Class mgrThemeEngine - Public ReadOnly Property ColorBase As Color - Public ReadOnly Property ColorBaseSecondary As Color - Public ReadOnly Property ColorHighlight As Color - Public ReadOnly Property ColorHighlightSecondary As Color + Private _ColorBase As Color + Public Property ColorBase() As Color + Get + If _ColorBase = Nothing Then + Throw New NullReferenceException + End If + Return _ColorBase + End Get + Private Set(ByVal value As Color) + _ColorBase = value + End Set + End Property + Private _ColorBaseSecondary As Color + Public Property ColorBaseSecondary() As Color + Get + If _ColorBaseSecondary = Nothing Then + Throw New NullReferenceException + End If + Return _ColorBaseSecondary + End Get + Private Set(ByVal value As Color) + _ColorBaseSecondary = value + End Set + End Property + + Private _ColorHighlight As Color + Public Property ColorHighlight() As Color + Get + If _ColorHighlight = Nothing Then + Throw New NullReferenceException + End If + Return _ColorHighlight + End Get + Private Set(ByVal value As Color) + _ColorHighlight = value + End Set + End Property + + Private _ColorHighlightSecondary As Color + Public Property ColorHighlightSecondary() As Color + Get + If _ColorHighlightSecondary = Nothing Then + Throw New NullReferenceException + End If + Return _ColorHighlightSecondary + End Get + Private Set(ByVal value As Color) + _ColorHighlightSecondary = value + End Set + End Property + + Private _bThemeHasBeenDefined As Boolean + Public Property bThemeHasBeenDefined() As Boolean + Get + Return _bThemeHasBeenDefined + End Get + Private Set(ByVal value As Boolean) + _bThemeHasBeenDefined = value + End Set + End Property ''' ''' Supported themes. @@ -20,9 +76,7 @@ Public Class mgrThemeEngine ''' Configures the base colors for the overall theme based on input. ''' ''' - ''' - Public Function SetTheme(_eBaseTheme As eBaseTheme) - Dim selectedColor As Color + Public Sub SetTheme(_eBaseTheme As eBaseTheme) Select Case _eBaseTheme Case eBaseTheme.Dark _ColorBase = New ColorConverter().ConvertFromString( @@ -37,6 +91,8 @@ Public Class mgrThemeEngine _ColorHighlightSecondary = New ColorConverter().ConvertFromString( mgrThemeEngine_RGB_Dark_HighlightSecondary) + _bThemeHasBeenDefined = True + Case eBaseTheme.Light _ColorBase = New ColorConverter().ConvertFromString( mgrThemeEngine_RGB_Light_Base) @@ -50,7 +106,7 @@ Public Class mgrThemeEngine _ColorHighlightSecondary = New ColorConverter().ConvertFromString( mgrThemeEngine_RGB_Light_HighlightSecondary) + _bThemeHasBeenDefined = True End Select - Return selectedColor - End Function + End Sub End Class