Add enum field support (OS) to custom filter

This commit is contained in:
Michael J. Seiferling
2019-02-08 08:41:50 -06:00
parent 2bceca2976
commit cf2080916f
6 changed files with 88 additions and 27 deletions
+15
View File
@@ -4,6 +4,11 @@
fString = 1 fString = 1
fNumeric = 2 fNumeric = 2
fBool = 3 fBool = 3
fEnum = 4
End Enum
Public Enum eEnumFilterField As Integer
OS = 1
End Enum End Enum
<Flags()> Public Enum eFieldStatus <Flags()> Public Enum eFieldStatus
@@ -15,6 +20,7 @@
Private sFieldName As String Private sFieldName As String
Private sFriendlyFieldName As String Private sFriendlyFieldName As String
Private eType As eDataType Private eType As eDataType
Private eEnumField As eEnumFilterField
Private eStatus As eFieldStatus Private eStatus As eFieldStatus
Public Property FieldName As String Public Property FieldName As String
@@ -44,6 +50,15 @@
End Set End Set
End Property End Property
Public Property EnumField As eEnumFilterField
Get
Return eEnumField
End Get
Set(value As eEnumFilterField)
eEnumField = value
End Set
End Property
'This is a flag property - Setting a value will toggle that flag on and off. 'This is a flag property - Setting a value will toggle that flag on and off.
Public Property Status As eFieldStatus Public Property Status As eFieldStatus
Get Get
+10 -10
View File
@@ -40,7 +40,7 @@ Partial Class frmFilter
Me.grpGameFilter = New System.Windows.Forms.GroupBox() Me.grpGameFilter = New System.Windows.Forms.GroupBox()
Me.lblNot = New System.Windows.Forms.Label() Me.lblNot = New System.Windows.Forms.Label()
Me.chkNot = New System.Windows.Forms.CheckBox() Me.chkNot = New System.Windows.Forms.CheckBox()
Me.cboBoolFilter = New System.Windows.Forms.ComboBox() Me.cboListFilter = New System.Windows.Forms.ComboBox()
Me.numFilter = New System.Windows.Forms.NumericUpDown() Me.numFilter = New System.Windows.Forms.NumericUpDown()
Me.cboNumericOps = New System.Windows.Forms.ComboBox() Me.cboNumericOps = New System.Windows.Forms.ComboBox()
Me.lblCurrentFilters = New System.Windows.Forms.Label() Me.lblCurrentFilters = New System.Windows.Forms.Label()
@@ -229,7 +229,7 @@ Partial Class frmFilter
' '
Me.grpGameFilter.Controls.Add(Me.lblNot) Me.grpGameFilter.Controls.Add(Me.lblNot)
Me.grpGameFilter.Controls.Add(Me.chkNot) Me.grpGameFilter.Controls.Add(Me.chkNot)
Me.grpGameFilter.Controls.Add(Me.cboBoolFilter) Me.grpGameFilter.Controls.Add(Me.cboListFilter)
Me.grpGameFilter.Controls.Add(Me.numFilter) Me.grpGameFilter.Controls.Add(Me.numFilter)
Me.grpGameFilter.Controls.Add(Me.cboNumericOps) Me.grpGameFilter.Controls.Add(Me.cboNumericOps)
Me.grpGameFilter.Controls.Add(Me.lblCurrentFilters) Me.grpGameFilter.Controls.Add(Me.lblCurrentFilters)
@@ -265,14 +265,14 @@ Partial Class frmFilter
Me.chkNot.TabIndex = 10 Me.chkNot.TabIndex = 10
Me.chkNot.UseVisualStyleBackColor = True Me.chkNot.UseVisualStyleBackColor = True
' '
'cboBoolFilter 'cboListFilter
' '
Me.cboBoolFilter.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList Me.cboListFilter.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.cboBoolFilter.FormattingEnabled = True Me.cboListFilter.FormattingEnabled = True
Me.cboBoolFilter.Location = New System.Drawing.Point(187, 36) Me.cboListFilter.Location = New System.Drawing.Point(187, 36)
Me.cboBoolFilter.Name = "cboBoolFilter" Me.cboListFilter.Name = "cboListFilter"
Me.cboBoolFilter.Size = New System.Drawing.Size(136, 21) Me.cboListFilter.Size = New System.Drawing.Size(136, 21)
Me.cboBoolFilter.TabIndex = 3 Me.cboListFilter.TabIndex = 3
' '
'numFilter 'numFilter
' '
@@ -549,7 +549,7 @@ Partial Class frmFilter
Friend WithEvents lblFields As Label Friend WithEvents lblFields As Label
Friend WithEvents cboNumericOps As ComboBox Friend WithEvents cboNumericOps As ComboBox
Friend WithEvents numFilter As NumericUpDown Friend WithEvents numFilter As NumericUpDown
Friend WithEvents cboBoolFilter As ComboBox Friend WithEvents cboListFilter As ComboBox
Friend WithEvents lblSortFields As Label Friend WithEvents lblSortFields As Label
Friend WithEvents Label1 As Label Friend WithEvents Label1 As Label
Friend WithEvents grpSortOptions As GroupBox Friend WithEvents grpSortOptions As GroupBox
+50 -16
View File
@@ -242,6 +242,15 @@ Public Class frmFilter
oField.Status = clsGameFilterField.eFieldStatus.ValidFilter oField.Status = clsGameFilterField.eFieldStatus.ValidFilter
oValidFields.Add(oField) oValidFields.Add(oField)
'OS
oField = New clsGameFilterField
oField.FieldName = "OS"
oField.FriendlyFieldName = frmFilter_FieldOS
oField.Type = clsGameFilterField.eDataType.fEnum
oField.EnumField = clsGameFilterField.eEnumFilterField.OS
oField.Status = clsGameFilterField.eFieldStatus.ValidFilter
oValidFields.Add(oField)
'IsRegEx 'IsRegEx
oField = New clsGameFilterField oField = New clsGameFilterField
oField.FieldName = "IsRegEx" oField.FieldName = "IsRegEx"
@@ -359,7 +368,7 @@ Public Class frmFilter
sFilter = oFilter.Field.FriendlyFieldName & " " & frmFilter_lstFilterContains & " """ & oFilter.Data & """" sFilter = oFilter.Field.FriendlyFieldName & " " & frmFilter_lstFilterContains & " """ & oFilter.Data & """"
Case clsGameFilterField.eDataType.fNumeric Case clsGameFilterField.eDataType.fNumeric
sFilter = oFilter.Field.FriendlyFieldName & " " & oFilter.NumericOperatorAsString & " " & oFilter.Data sFilter = oFilter.Field.FriendlyFieldName & " " & oFilter.NumericOperatorAsString & " " & oFilter.Data
Case clsGameFilterField.eDataType.fBool Case clsGameFilterField.eDataType.fBool, clsGameFilterField.eDataType.fEnum
sFilter = oFilter.Field.FriendlyFieldName & " = " & oFilter.Data sFilter = oFilter.Field.FriendlyFieldName & " = " & oFilter.Data
End Select End Select
@@ -413,23 +422,22 @@ Public Class frmFilter
End Sub End Sub
Private Sub ChangeFilterMode() Private Sub ChangeFilterMode()
Dim oFilterType As clsGameFilterField.eDataType = DirectCast(cboFilterField.SelectedValue, clsGameFilterField).Type Dim oFilter As clsGameFilterField = DirectCast(cboFilterField.SelectedValue, clsGameFilterField)
'Reset 'Reset
cboNumericOps.SelectedIndex = 0 cboNumericOps.SelectedIndex = 0
cboBoolFilter.SelectedIndex = 0
numFilter.Value = 0 numFilter.Value = 0
txtStringFilter.Text = String.Empty txtStringFilter.Text = String.Empty
chkNot.Checked = False chkNot.Checked = False
'Reset Visibilty 'Reset Visibilty
cboBoolFilter.Visible = False cboListFilter.Visible = False
cboNumericOps.Visible = False cboNumericOps.Visible = False
numFilter.Visible = False numFilter.Visible = False
txtStringFilter.Visible = False txtStringFilter.Visible = False
'Set Visiblity 'Set Visiblity
Select Case oFilterType Select Case oFilter.Type
Case clsGameFilterField.eDataType.fString Case clsGameFilterField.eDataType.fString
txtStringFilter.Visible = True txtStringFilter.Visible = True
Case clsGameFilterField.eDataType.fNumeric Case clsGameFilterField.eDataType.fNumeric
@@ -437,7 +445,13 @@ Public Class frmFilter
numFilter.Visible = True numFilter.Visible = True
txtStringFilter.Visible = False txtStringFilter.Visible = False
Case clsGameFilterField.eDataType.fBool Case clsGameFilterField.eDataType.fBool
cboBoolFilter.Visible = True LoadComboAsBool()
cboListFilter.SelectedIndex = 0
cboListFilter.Visible = True
Case clsGameFilterField.eDataType.fEnum
LoadComboAsEnum(oFilter.EnumField)
cboListFilter.SelectedIndex = 0
cboListFilter.Visible = True
End Select End Select
End Sub End Sub
@@ -458,8 +472,8 @@ Public Class frmFilter
oFilter.Data = numFilter.Value oFilter.Data = numFilter.Value
oFilter.NumericOperator = DirectCast(cboNumericOps.SelectedValue, clsGameFilter.eNumericOperators) 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 Case clsGameFilterField.eDataType.fBool, clsGameFilterField.eDataType.fEnum
oFilter.Data = cboBoolFilter.SelectedValue oFilter.Data = cboListFilter.SelectedValue
sFilter = oFilter.Field.FriendlyFieldName & " = " & oFilter.Data sFilter = oFilter.Field.FriendlyFieldName & " = " & oFilter.Data
End Select End Select
@@ -531,20 +545,40 @@ Public Class frmFilter
End Sub End Sub
Private Sub LoadCombos() Private Sub LoadComboAsBool()
Dim oFilterFields As New List(Of KeyValuePair(Of clsGameFilterField, String))
Dim oSortFields As New List(Of KeyValuePair(Of String, String))
Dim oNumericOperators As New List(Of KeyValuePair(Of clsGameFilter.eNumericOperators, String))
Dim oBoolOperators As New List(Of KeyValuePair(Of Boolean, String)) Dim oBoolOperators As New List(Of KeyValuePair(Of Boolean, String))
'cboBoolFilter 'cboListFilter (Boolean)
cboBoolFilter.ValueMember = "Key" cboListFilter.ValueMember = "Key"
cboBoolFilter.DisplayMember = "Value" cboListFilter.DisplayMember = "Value"
oBoolOperators.Add(New KeyValuePair(Of Boolean, String)(True, frmFilter_cboBoolFilterEnabled)) oBoolOperators.Add(New KeyValuePair(Of Boolean, String)(True, frmFilter_cboBoolFilterEnabled))
oBoolOperators.Add(New KeyValuePair(Of Boolean, String)(False, frmFilter_cboBoolFilterDisabled)) oBoolOperators.Add(New KeyValuePair(Of Boolean, String)(False, frmFilter_cboBoolFilterDisabled))
cboBoolFilter.DataSource = oBoolOperators cboListFilter.DataSource = oBoolOperators
End Sub
Private Sub LoadComboAsEnum(ByVal eEnum As clsGameFilterField.eEnumFilterField)
Dim oEnums As New List(Of KeyValuePair(Of Integer, String))
'cboListFilter (Enum)
cboListFilter.ValueMember = "Key"
cboListFilter.DisplayMember = "Value"
Select Case eEnum
Case clsGameFilterField.eEnumFilterField.OS
For Each v As Object In [Enum].GetValues(GetType(clsGame.eOS))
oEnums.Add(New KeyValuePair(Of Integer, String)(v, [Enum].GetName(GetType(clsGame.eOS), v)))
Next
End Select
cboListFilter.DataSource = oEnums
End Sub
Private Sub LoadCombos()
Dim oFilterFields As New List(Of KeyValuePair(Of clsGameFilterField, String))
Dim oSortFields As New List(Of KeyValuePair(Of String, String))
Dim oNumericOperators As New List(Of KeyValuePair(Of clsGameFilter.eNumericOperators, String))
'cboNumericOps 'cboNumericOps
cboNumericOps.ValueMember = "Key" cboNumericOps.ValueMember = "Key"
+1 -1
View File
@@ -678,7 +678,7 @@ Public Class mgrMonitorList
Case clsGameFilterField.eDataType.fNumeric Case clsGameFilterField.eDataType.fNumeric
sSQL &= oFilter.Field.FieldName & " " & oFilter.NumericOperatorAsString & " @" & oFilter.ID sSQL &= oFilter.Field.FieldName & " " & oFilter.NumericOperatorAsString & " @" & oFilter.ID
hshParams.Add(oFilter.ID, oFilter.Data) hshParams.Add(oFilter.ID, oFilter.Data)
Case clsGameFilterField.eDataType.fBool Case clsGameFilterField.eDataType.fBool, clsGameFilterField.eDataType.fEnum
sSQL &= oFilter.Field.FieldName & " = @" & oFilter.ID sSQL &= oFilter.Field.FieldName & " = @" & oFilter.ID
hshParams.Add(oFilter.ID, oFilter.Data) hshParams.Add(oFilter.ID, oFilter.Data)
End Select End Select
+9
View File
@@ -1185,6 +1185,15 @@ Namespace My.Resources
End Get End Get
End Property End Property
'''<summary>
''' Looks up a localized string similar to OS.
'''</summary>
Friend ReadOnly Property frmFilter_FieldOS() As String
Get
Return ResourceManager.GetString("frmFilter_FieldOS", resourceCulture)
End Get
End Property
'''<summary> '''<summary>
''' Looks up a localized string similar to Parameter. ''' Looks up a localized string similar to Parameter.
'''</summary> '''</summary>
+3
View File
@@ -2293,4 +2293,7 @@
<data name="frmGameManager_btnAdvancedConfig" xml:space="preserve"> <data name="frmGameManager_btnAdvancedConfig" xml:space="preserve">
<value>&amp;Advanced Configuration...</value> <value>&amp;Advanced Configuration...</value>
</data> </data>
<data name="frmFilter_FieldOS" xml:space="preserve">
<value>OS</value>
</data>
</root> </root>