Operator feature change and minor bug fixes

This commit is contained in:
Michael J. Seiferling
2017-08-05 14:00:52 -06:00
parent 6e2298df49
commit 94086d0c05
7 changed files with 63 additions and 62 deletions
-10
View File
@@ -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
+14 -14
View File
@@ -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
+27 -22
View File
@@ -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()
+5 -1
View File
@@ -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
+12 -10
View File
@@ -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)
+3 -3
View File
@@ -1159,11 +1159,11 @@ Namespace My.Resources
End Property
'''<summary>
''' Looks up a localized string similar to Next Filter.
''' Looks up a localized string similar to Filter Type.
'''</summary>
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
+2 -2
View File
@@ -1006,8 +1006,8 @@
<data name="frmIncludeExclude_ToolTipTitle" xml:space="preserve">
<value>Saved Game Explorer</value>
</data>
<data name="frmFilter_grpNextFilterOperator" xml:space="preserve">
<value>Next Filter</value>
<data name="frmFilter_grpFilterType" xml:space="preserve">
<value>Filter Type</value>
</data>
<data name="frmFilter_grpTagOptions" xml:space="preserve">
<value>Options</value>