From 94086d0c05af70858a78b2f29597730b077f5319 Mon Sep 17 00:00:00 2001 From: "Michael J. Seiferling" Date: Sat, 5 Aug 2017 14:00:52 -0600 Subject: [PATCH] Operator feature change and minor bug fixes --- GBM/Classes/clsGameFilter.vb | 10 ------ GBM/Forms/frmFilter.Designer.vb | 28 ++++++++-------- GBM/Forms/frmFilter.vb | 49 +++++++++++++++------------- GBM/Forms/frmGameManager.vb | 6 +++- GBM/Managers/mgrMonitorList.vb | 22 +++++++------ GBM/My Project/Resources.Designer.vb | 6 ++-- GBM/My Project/Resources.resx | 4 +-- 7 files changed, 63 insertions(+), 62 deletions(-) diff --git a/GBM/Classes/clsGameFilter.vb b/GBM/Classes/clsGameFilter.vb index e6c2f24..b1395d3 100644 --- a/GBM/Classes/clsGameFilter.vb +++ b/GBM/Classes/clsGameFilter.vb @@ -4,7 +4,6 @@ Private oField As clsGameFilterField Private oData As Object Private eNumericOperator As eNumericOperators = eNumericOperators.Equals - Private bNextBoolOperator As Boolean Public Enum eNumericOperators Equals = 1 @@ -41,15 +40,6 @@ End Set End Property - Public Property NextBoolOperator As Boolean - Get - Return bNextBoolOperator - End Get - Set(value As Boolean) - bNextBoolOperator = value - End Set - End Property - Public Property NumericOperator As eNumericOperators Get Return eNumericOperator diff --git a/GBM/Forms/frmFilter.Designer.vb b/GBM/Forms/frmFilter.Designer.vb index 7de0d3f..b2a9ae4 100644 --- a/GBM/Forms/frmFilter.Designer.vb +++ b/GBM/Forms/frmFilter.Designer.vb @@ -44,7 +44,7 @@ Partial Class frmFilter Me.lstFilter = New System.Windows.Forms.ListBox() Me.btnAddFilter = New System.Windows.Forms.Button() Me.cboFilterField = New System.Windows.Forms.ComboBox() - Me.grpNextFilterOperator = New System.Windows.Forms.GroupBox() + Me.grpFilterType = New System.Windows.Forms.GroupBox() Me.optOr = New System.Windows.Forms.RadioButton() Me.optAnd = New System.Windows.Forms.RadioButton() Me.txtStringFilter = New System.Windows.Forms.TextBox() @@ -61,7 +61,7 @@ Partial Class frmFilter Me.grpTagOptions.SuspendLayout() Me.grpGameFilter.SuspendLayout() CType(Me.numFilter, System.ComponentModel.ISupportInitialize).BeginInit() - Me.grpNextFilterOperator.SuspendLayout() + Me.grpFilterType.SuspendLayout() Me.grpSorting.SuspendLayout() Me.grpSortOptions.SuspendLayout() Me.SuspendLayout() @@ -190,7 +190,7 @@ Partial Class frmFilter Me.grpGameFilter.Controls.Add(Me.lstFilter) Me.grpGameFilter.Controls.Add(Me.btnAddFilter) Me.grpGameFilter.Controls.Add(Me.cboFilterField) - Me.grpGameFilter.Controls.Add(Me.grpNextFilterOperator) + Me.grpGameFilter.Controls.Add(Me.grpFilterType) Me.grpGameFilter.Controls.Add(Me.txtStringFilter) Me.grpGameFilter.Location = New System.Drawing.Point(12, 35) Me.grpGameFilter.Name = "grpGameFilter" @@ -287,16 +287,16 @@ Partial Class frmFilter Me.cboFilterField.Size = New System.Drawing.Size(150, 21) Me.cboFilterField.TabIndex = 1 ' - 'grpNextFilterOperator + 'grpFilterType ' - Me.grpNextFilterOperator.Controls.Add(Me.optOr) - Me.grpNextFilterOperator.Controls.Add(Me.optAnd) - Me.grpNextFilterOperator.Location = New System.Drawing.Point(259, 81) - Me.grpNextFilterOperator.Name = "grpNextFilterOperator" - Me.grpNextFilterOperator.Size = New System.Drawing.Size(106, 46) - Me.grpNextFilterOperator.TabIndex = 8 - Me.grpNextFilterOperator.TabStop = False - Me.grpNextFilterOperator.Text = "Next Filter" + Me.grpFilterType.Controls.Add(Me.optOr) + Me.grpFilterType.Controls.Add(Me.optAnd) + Me.grpFilterType.Location = New System.Drawing.Point(259, 81) + Me.grpFilterType.Name = "grpFilterType" + Me.grpFilterType.Size = New System.Drawing.Size(106, 46) + Me.grpFilterType.TabIndex = 8 + Me.grpFilterType.TabStop = False + Me.grpFilterType.Text = "Filter Type" ' 'optOr ' @@ -443,7 +443,7 @@ Partial Class frmFilter Me.grpGameFilter.ResumeLayout(False) Me.grpGameFilter.PerformLayout() CType(Me.numFilter, System.ComponentModel.ISupportInitialize).EndInit() - Me.grpNextFilterOperator.ResumeLayout(False) + Me.grpFilterType.ResumeLayout(False) Me.grpSorting.ResumeLayout(False) Me.grpSorting.PerformLayout() Me.grpSortOptions.ResumeLayout(False) @@ -465,7 +465,7 @@ Partial Class frmFilter Friend WithEvents btnOK As System.Windows.Forms.Button Friend WithEvents grpGameFilter As System.Windows.Forms.GroupBox Friend WithEvents txtStringFilter As System.Windows.Forms.TextBox - Friend WithEvents grpNextFilterOperator As System.Windows.Forms.GroupBox + Friend WithEvents grpFilterType As System.Windows.Forms.GroupBox Friend WithEvents optOr As System.Windows.Forms.RadioButton Friend WithEvents optAnd As System.Windows.Forms.RadioButton Friend WithEvents grpSorting As GroupBox diff --git a/GBM/Forms/frmFilter.vb b/GBM/Forms/frmFilter.vb index d2bd274..938de88 100644 --- a/GBM/Forms/frmFilter.vb +++ b/GBM/Forms/frmFilter.vb @@ -13,6 +13,7 @@ Public Class frmFilter Dim oGameFilters As New List(Of clsGameFilter) Dim oValidFields As New List(Of clsGameFilterField) Dim eCurrentFilterType As eFilterType = eFilterType.BaseFilter + Dim bAndOperator As Boolean = True Dim bSortAsc As Boolean = True Dim sSortField As String = "Name" Dim hshTags As New Hashtable @@ -46,6 +47,15 @@ Public Class frmFilter End Set End Property + Public Property AndOperator As Boolean + Get + Return bAndOperator + End Get + Set(value As Boolean) + bAndOperator = value + End Set + End Property + Public Property SortAsc As Boolean Get Return bSortAsc @@ -287,25 +297,24 @@ Public Class frmFilter Dim oListTag As KeyValuePair(Of String, String) 'Game Filters + If bAndOperator Then + optAnd.Checked = True + Else + optOr.Checked = True + End If + If oGameFilters.Count > 0 Then chkGameInfo.Checked = True For Each oFilter As clsGameFilter In oGameFilters Select Case oFilter.Field.Type Case clsGameFilterField.eDataType.fString - sFilter = oFilter.Field.FriendlyFieldName & " " & frmFilter_lstFilterContains & " """ & oFilter.Data & """ / " + sFilter = oFilter.Field.FriendlyFieldName & " " & frmFilter_lstFilterContains & " """ & oFilter.Data & """" Case clsGameFilterField.eDataType.fNumeric - oFilter.NumericOperator = DirectCast(cboNumericOps.SelectedValue, clsGameFilter.eNumericOperators) - sFilter = oFilter.Field.FriendlyFieldName & " " & oFilter.NumericOperatorAsString & " " & oFilter.Data & " / " + sFilter = oFilter.Field.FriendlyFieldName & " " & oFilter.NumericOperatorAsString & " " & oFilter.Data Case clsGameFilterField.eDataType.fBool - sFilter = oFilter.Field.FriendlyFieldName & " = " & oFilter.Data & " / " + sFilter = oFilter.Field.FriendlyFieldName & " = " & oFilter.Data End Select - If oFilter.NextBoolOperator Then - sFilter &= frmFilter_optAnd - Else - sFilter &= frmFilter_optOr - End If - iParameterIndex += 1 lstFilter.Items.Add(New KeyValuePair(Of clsGameFilter, String)(oFilter, sFilter)) @@ -374,27 +383,20 @@ Public Class frmFilter 'Build Filter oFilter.ID = "PARAM" & iParameterIndex oFilter.Field = cboFilterField.SelectedValue - oFilter.NextBoolOperator = optAnd.Checked Select Case oFilter.Field.Type Case clsGameFilterField.eDataType.fString oFilter.Data = txtStringFilter.Text - sFilter = oFilter.Field.FriendlyFieldName & " " & frmFilter_lstFilterContains & " """ & oFilter.Data & """ / " + sFilter = oFilter.Field.FriendlyFieldName & " " & frmFilter_lstFilterContains & " """ & oFilter.Data & """" Case clsGameFilterField.eDataType.fNumeric oFilter.Data = numFilter.Value oFilter.NumericOperator = DirectCast(cboNumericOps.SelectedValue, clsGameFilter.eNumericOperators) - sFilter = oFilter.Field.FriendlyFieldName & " " & oFilter.NumericOperatorAsString & " " & oFilter.Data & " / " + sFilter = oFilter.Field.FriendlyFieldName & " " & oFilter.NumericOperatorAsString & " " & oFilter.Data Case clsGameFilterField.eDataType.fBool oFilter.Data = cboBoolFilter.SelectedValue - sFilter = oFilter.Field.FriendlyFieldName & " = " & oFilter.Data & " / " + sFilter = oFilter.Field.FriendlyFieldName & " = " & oFilter.Data End Select - If oFilter.NextBoolOperator Then - sFilter &= frmFilter_optAnd - Else - sFilter &= frmFilter_optOr - End If - oGameFilters.Add(oFilter) lstFilter.Items.Add(New KeyValuePair(Of clsGameFilter, String)(oFilter, sFilter)) @@ -418,8 +420,9 @@ Public Class frmFilter If chkGameInfo.Checked Then - 'Set Filter Type + 'Set Filter Type(s) eCurrentFilterType = eFilterType.BaseFilter + bAndOperator = optAnd.Checked End If If chkTag.Checked Then @@ -515,7 +518,7 @@ Public Class frmFilter 'Set Form Text optOr.Text = frmFilter_optOr optAnd.Text = frmFilter_optAnd - grpNextFilterOperator.Text = frmFilter_grpNextFilterOperator + grpFilterType.Text = frmFilter_grpFilterType optAll.Text = frmFilter_optAll optAny.Text = frmFilter_optAny lblGameTags.Text = frmFilter_lblGameTags @@ -538,6 +541,7 @@ Public Class frmFilter grpSortOptions.Text = frmFilter_grpSortOptions 'Defaults + optAnd.Checked = True optSortAsc.Checked = True grpGameFilter.Enabled = False grpTagFilter.Enabled = False @@ -579,6 +583,7 @@ Public Class frmFilter If chkGameInfo.Checked Then grpGameFilter.Enabled = True Else + optAnd.Checked = True grpGameFilter.Enabled = False oGameFilters.Clear() lstFilter.Items.Clear() diff --git a/GBM/Forms/frmGameManager.vb b/GBM/Forms/frmGameManager.vb index ae4d61a..ba39c2f 100644 --- a/GBM/Forms/frmGameManager.vb +++ b/GBM/Forms/frmGameManager.vb @@ -22,6 +22,7 @@ Public Class frmGameManager Private oCurrentTagFilters As New List(Of clsTag) Private oCurrentFilters As New List(Of clsGameFilter) Private eCurrentFilter As frmFilter.eFilterType = frmFilter.eFilterType.BaseFilter + Private bCurrentAndOperator As Boolean = True Private bCurrentSortAsc As Boolean = True Private sCurrentSortField As String = "Name" Private WithEvents tmFilterTimer As Timer @@ -225,9 +226,11 @@ Public Class frmGameManager If optCustom.Checked Then If Not bRetainFilter Then frm = New frmFilter + frm.TagFilters = oCurrentTagFilters frm.GameFilters = oCurrentFilters frm.FilterType = eCurrentFilter + frm.AndOperator = bCurrentAndOperator frm.SortAsc = bCurrentSortAsc frm.SortField = sCurrentSortField @@ -236,6 +239,7 @@ Public Class frmGameManager oCurrentTagFilters = frm.TagFilters oCurrentFilters = frm.GameFilters eCurrentFilter = frm.FilterType + bCurrentAndOperator = frm.AndOperator bCurrentSortAsc = frm.SortAsc sCurrentSortField = frm.SortField End If @@ -247,7 +251,7 @@ Public Class frmGameManager sCurrentSortField = "Name" End If - GameData = mgrMonitorList.ReadFilteredList(oCurrentTagFilters, oCurrentFilters, eCurrentFilter, bCurrentSortAsc, sCurrentSortField) + GameData = mgrMonitorList.ReadFilteredList(oCurrentTagFilters, oCurrentFilters, eCurrentFilter, bCurrentAndOperator, bCurrentSortAsc, sCurrentSortField) If optPendingRestores.Checked Then oRestoreData = mgrRestore.CompareManifests diff --git a/GBM/Managers/mgrMonitorList.vb b/GBM/Managers/mgrMonitorList.vb index 890c053..e5eacee 100644 --- a/GBM/Managers/mgrMonitorList.vb +++ b/GBM/Managers/mgrMonitorList.vb @@ -497,8 +497,8 @@ Public Class mgrMonitorList End Sub 'Filter Functions - Private Shared Function BuildFilterQuery(ByVal oTagFilters As List(Of clsTag), ByVal oFilters As List(Of clsGameFilter), ByVal eFilterType As frmFilter.eFilterType, ByVal bSortAsc As Boolean, - ByVal sSortField As String, ByRef hshParams As Hashtable) As String + Private Shared Function BuildFilterQuery(ByVal oTagFilters As List(Of clsTag), ByVal oFilters As List(Of clsGameFilter), ByVal eFilterType As frmFilter.eFilterType, ByVal bAndOperator As Boolean, + ByVal bSortAsc As Boolean, ByVal sSortField As String, ByRef hshParams As Hashtable) As String Dim sSQL As String = String.Empty Dim iCounter As Integer = 0 Dim sBaseSelect As String = "MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder, Parameter FROM monitorlist" @@ -564,7 +564,7 @@ Public Class mgrMonitorList iCounter += 1 If iCounter <> oFilters.Count Then - If oFilter.NextBoolOperator Then + If bAndOperator Then sSQL &= " AND " Else sSQL &= " OR " @@ -581,8 +581,8 @@ Public Class mgrMonitorList End Function - Public Shared Function ReadFilteredList(ByVal oTagFilters As List(Of clsTag), ByVal oFilters As List(Of clsGameFilter), ByVal eFilterType As frmFilter.eFilterType, ByVal bSortAsc As Boolean, - ByVal sSortField As String, Optional ByVal iSelectDB As mgrSQLite.Database = mgrSQLite.Database.Local) As OrderedDictionary + Public Shared Function ReadFilteredList(ByVal oTagFilters As List(Of clsTag), ByVal oFilters As List(Of clsGameFilter), ByVal eFilterType As frmFilter.eFilterType, ByVal bAndOperator As Boolean, + ByVal bSortAsc As Boolean, ByVal sSortField As String, Optional ByVal iSelectDB As mgrSQLite.Database = mgrSQLite.Database.Local) As OrderedDictionary Dim oDatabase As New mgrSQLite(iSelectDB) Dim oData As DataSet Dim sSQL As String = String.Empty @@ -591,7 +591,7 @@ Public Class mgrMonitorList Dim hshParams As New Hashtable Dim iCounter As Integer = 0 - sSQL = BuildFilterQuery(oTagFilters, oFilters, eFilterType, bSortAsc, sSortField, hshParams) + sSQL = BuildFilterQuery(oTagFilters, oFilters, eFilterType, bAndOperator, bSortAsc, sSortField, hshParams) oData = oDatabase.ReadParamData(sSQL, hshParams) @@ -606,8 +606,8 @@ Public Class mgrMonitorList 'Import / Export Functions - Public Shared Function ReadListForExport(ByVal oTagFilters As List(Of clsTag), ByVal oFilters As List(Of clsGameFilter), ByVal eFilterType As frmFilter.eFilterType, ByVal bSortAsc As Boolean, - ByVal sSortField As String, Optional ByVal iSelectDB As mgrSQLite.Database = mgrSQLite.Database.Local) As List(Of Game) + Public Shared Function ReadListForExport(ByVal oTagFilters As List(Of clsTag), ByVal oFilters As List(Of clsGameFilter), ByVal eFilterType As frmFilter.eFilterType, ByVal bAndOperator As Boolean, + ByVal bSortAsc As Boolean, ByVal sSortField As String, Optional ByVal iSelectDB As mgrSQLite.Database = mgrSQLite.Database.Local) As List(Of Game) Dim oDatabase As New mgrSQLite(iSelectDB) Dim oData As DataSet Dim sSQL As String = String.Empty @@ -616,7 +616,7 @@ Public Class mgrMonitorList Dim oGame As Game Dim hshParams As New Hashtable - sSQL = BuildFilterQuery(oTagFilters, oFilters, eFilterType, bSortAsc, sSortField, hshParams) + sSQL = BuildFilterQuery(oTagFilters, oFilters, eFilterType, bAndOperator, bSortAsc, sSortField, hshParams) oData = oDatabase.ReadParamData(sSQL, hshParams) @@ -711,6 +711,7 @@ Public Class mgrMonitorList Dim oTagFilters As New List(Of clsTag) Dim oFilters As New List(Of clsGameFilter) Dim eCurrentFilter As frmFilter.eFilterType = frmFilter.eFilterType.BaseFilter + Dim bAndOperator As Boolean = True Dim bSortAsc As Boolean = True Dim sSortField As String = "Name" @@ -720,11 +721,12 @@ Public Class mgrMonitorList oTagFilters = frm.TagFilters oFilters = frm.GameFilters eCurrentFilter = frm.FilterType + bAndOperator = frm.AndOperator bSortAsc = frm.SortAsc sSortField = frm.SortField End If - oList = ReadListForExport(oTagFilters, oFilters, eCurrentFilter, bSortAsc, sSortField) + oList = ReadListForExport(oTagFilters, oFilters, eCurrentFilter, bAndOperator, bSortAsc, sSortField) bSuccess = mgrXML.SerializeAndExport(oList, sLocation) diff --git a/GBM/My Project/Resources.Designer.vb b/GBM/My Project/Resources.Designer.vb index 7e01667..2e9ef39 100644 --- a/GBM/My Project/Resources.Designer.vb +++ b/GBM/My Project/Resources.Designer.vb @@ -1159,11 +1159,11 @@ Namespace My.Resources End Property ''' - ''' Looks up a localized string similar to Next Filter. + ''' Looks up a localized string similar to Filter Type. ''' - Friend ReadOnly Property frmFilter_grpNextFilterOperator() As String + Friend ReadOnly Property frmFilter_grpFilterType() As String Get - Return ResourceManager.GetString("frmFilter_grpNextFilterOperator", resourceCulture) + Return ResourceManager.GetString("frmFilter_grpFilterType", resourceCulture) End Get End Property diff --git a/GBM/My Project/Resources.resx b/GBM/My Project/Resources.resx index 1f1b3dc..11162f3 100644 --- a/GBM/My Project/Resources.resx +++ b/GBM/My Project/Resources.resx @@ -1006,8 +1006,8 @@ Saved Game Explorer - - Next Filter + + Filter Type Options