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