diff --git a/GBM/Forms/frmFilter.Designer.vb b/GBM/Forms/frmFilter.Designer.vb
index 42778bc..c376553 100644
--- a/GBM/Forms/frmFilter.Designer.vb
+++ b/GBM/Forms/frmFilter.Designer.vb
@@ -30,19 +30,18 @@ Partial Class frmFilter
Me.lblTags = New System.Windows.Forms.Label()
Me.btnRemove = New System.Windows.Forms.Button()
Me.btnAdd = New System.Windows.Forms.Button()
- Me.lstFilter = New System.Windows.Forms.ListBox()
+ Me.lstTagFilter = New System.Windows.Forms.ListBox()
Me.lstTags = New System.Windows.Forms.ListBox()
Me.btnOK = New System.Windows.Forms.Button()
Me.grpGameFilter = New System.Windows.Forms.GroupBox()
+ Me.btnRemoveFilter = New System.Windows.Forms.Button()
+ Me.lstFilter = New System.Windows.Forms.ListBox()
+ Me.btnAddFilter = New System.Windows.Forms.Button()
+ Me.cboFilterField = New System.Windows.Forms.ComboBox()
Me.grpGameInfoOptions = New System.Windows.Forms.GroupBox()
Me.optOr = New System.Windows.Forms.RadioButton()
Me.optAnd = New System.Windows.Forms.RadioButton()
- Me.txtCompany = New System.Windows.Forms.TextBox()
- Me.lblCompany = New System.Windows.Forms.Label()
- Me.txtProcess = New System.Windows.Forms.TextBox()
- Me.lblProcess = New System.Windows.Forms.Label()
- Me.lblName = New System.Windows.Forms.Label()
- Me.txtName = New System.Windows.Forms.TextBox()
+ Me.txtFilterData = New System.Windows.Forms.TextBox()
Me.grpSorting = New System.Windows.Forms.GroupBox()
Me.optSortDesc = New System.Windows.Forms.RadioButton()
Me.optSortAsc = New System.Windows.Forms.RadioButton()
@@ -50,6 +49,9 @@ Partial Class frmFilter
Me.lblOrderBy = New System.Windows.Forms.Label()
Me.chkTag = New System.Windows.Forms.CheckBox()
Me.chkGameInfo = New System.Windows.Forms.CheckBox()
+ Me.lblFields = New System.Windows.Forms.Label()
+ Me.lblFilterData = New System.Windows.Forms.Label()
+ Me.lblCurrentFilters = New System.Windows.Forms.Label()
Me.grpTagFilter.SuspendLayout()
Me.grpTagOptions.SuspendLayout()
Me.grpGameFilter.SuspendLayout()
@@ -64,11 +66,11 @@ Partial Class frmFilter
Me.grpTagFilter.Controls.Add(Me.lblTags)
Me.grpTagFilter.Controls.Add(Me.btnRemove)
Me.grpTagFilter.Controls.Add(Me.btnAdd)
- Me.grpTagFilter.Controls.Add(Me.lstFilter)
+ Me.grpTagFilter.Controls.Add(Me.lstTagFilter)
Me.grpTagFilter.Controls.Add(Me.lstTags)
- Me.grpTagFilter.Location = New System.Drawing.Point(12, 213)
+ Me.grpTagFilter.Location = New System.Drawing.Point(12, 253)
Me.grpTagFilter.Name = "grpTagFilter"
- Me.grpTagFilter.Size = New System.Drawing.Size(385, 265)
+ Me.grpTagFilter.Size = New System.Drawing.Size(385, 198)
Me.grpTagFilter.TabIndex = 3
Me.grpTagFilter.TabStop = False
'
@@ -76,7 +78,7 @@ Partial Class frmFilter
'
Me.grpTagOptions.Controls.Add(Me.optAll)
Me.grpTagOptions.Controls.Add(Me.optAny)
- Me.grpTagOptions.Location = New System.Drawing.Point(6, 211)
+ Me.grpTagOptions.Location = New System.Drawing.Point(6, 146)
Me.grpTagOptions.Name = "grpTagOptions"
Me.grpTagOptions.Size = New System.Drawing.Size(150, 46)
Me.grpTagOptions.TabIndex = 6
@@ -124,7 +126,7 @@ Partial Class frmFilter
'
'btnRemove
'
- Me.btnRemove.Location = New System.Drawing.Point(162, 122)
+ Me.btnRemove.Location = New System.Drawing.Point(162, 88)
Me.btnRemove.Name = "btnRemove"
Me.btnRemove.Size = New System.Drawing.Size(61, 23)
Me.btnRemove.TabIndex = 3
@@ -133,22 +135,22 @@ Partial Class frmFilter
'
'btnAdd
'
- Me.btnAdd.Location = New System.Drawing.Point(162, 93)
+ Me.btnAdd.Location = New System.Drawing.Point(162, 59)
Me.btnAdd.Name = "btnAdd"
Me.btnAdd.Size = New System.Drawing.Size(61, 23)
Me.btnAdd.TabIndex = 2
Me.btnAdd.Text = ">"
Me.btnAdd.UseVisualStyleBackColor = True
'
- 'lstFilter
+ 'lstTagFilter
'
- Me.lstFilter.FormattingEnabled = True
- Me.lstFilter.Location = New System.Drawing.Point(229, 32)
- Me.lstFilter.Name = "lstFilter"
- Me.lstFilter.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended
- Me.lstFilter.Size = New System.Drawing.Size(150, 173)
- Me.lstFilter.Sorted = True
- Me.lstFilter.TabIndex = 5
+ Me.lstTagFilter.FormattingEnabled = True
+ Me.lstTagFilter.Location = New System.Drawing.Point(229, 32)
+ Me.lstTagFilter.Name = "lstTagFilter"
+ Me.lstTagFilter.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended
+ Me.lstTagFilter.Size = New System.Drawing.Size(150, 108)
+ Me.lstTagFilter.Sorted = True
+ Me.lstTagFilter.TabIndex = 5
'
'lstTags
'
@@ -156,13 +158,13 @@ Partial Class frmFilter
Me.lstTags.Location = New System.Drawing.Point(6, 32)
Me.lstTags.Name = "lstTags"
Me.lstTags.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended
- Me.lstTags.Size = New System.Drawing.Size(150, 173)
+ Me.lstTags.Size = New System.Drawing.Size(150, 108)
Me.lstTags.Sorted = True
Me.lstTags.TabIndex = 1
'
'btnOK
'
- Me.btnOK.Location = New System.Drawing.Point(322, 551)
+ Me.btnOK.Location = New System.Drawing.Point(322, 526)
Me.btnOK.Name = "btnOK"
Me.btnOK.Size = New System.Drawing.Size(75, 23)
Me.btnOK.TabIndex = 5
@@ -171,27 +173,64 @@ Partial Class frmFilter
'
'grpGameFilter
'
+ Me.grpGameFilter.Controls.Add(Me.lblCurrentFilters)
+ Me.grpGameFilter.Controls.Add(Me.lblFilterData)
+ Me.grpGameFilter.Controls.Add(Me.lblFields)
+ Me.grpGameFilter.Controls.Add(Me.btnRemoveFilter)
+ Me.grpGameFilter.Controls.Add(Me.lstFilter)
+ Me.grpGameFilter.Controls.Add(Me.btnAddFilter)
+ Me.grpGameFilter.Controls.Add(Me.cboFilterField)
Me.grpGameFilter.Controls.Add(Me.grpGameInfoOptions)
- Me.grpGameFilter.Controls.Add(Me.txtCompany)
- Me.grpGameFilter.Controls.Add(Me.lblCompany)
- Me.grpGameFilter.Controls.Add(Me.txtProcess)
- Me.grpGameFilter.Controls.Add(Me.lblProcess)
- Me.grpGameFilter.Controls.Add(Me.lblName)
- Me.grpGameFilter.Controls.Add(Me.txtName)
+ Me.grpGameFilter.Controls.Add(Me.txtFilterData)
Me.grpGameFilter.Location = New System.Drawing.Point(12, 35)
Me.grpGameFilter.Name = "grpGameFilter"
- Me.grpGameFilter.Size = New System.Drawing.Size(385, 150)
+ Me.grpGameFilter.Size = New System.Drawing.Size(385, 189)
Me.grpGameFilter.TabIndex = 1
Me.grpGameFilter.TabStop = False
'
+ 'btnRemoveFilter
+ '
+ Me.btnRemoveFilter.Location = New System.Drawing.Point(259, 153)
+ Me.btnRemoveFilter.Name = "btnRemoveFilter"
+ Me.btnRemoveFilter.Size = New System.Drawing.Size(75, 23)
+ Me.btnRemoveFilter.TabIndex = 8
+ Me.btnRemoveFilter.Text = "Remove"
+ Me.btnRemoveFilter.UseVisualStyleBackColor = True
+ '
+ 'lstFilter
+ '
+ Me.lstFilter.FormattingEnabled = True
+ Me.lstFilter.Location = New System.Drawing.Point(6, 81)
+ Me.lstFilter.Name = "lstFilter"
+ Me.lstFilter.Size = New System.Drawing.Size(247, 95)
+ Me.lstFilter.TabIndex = 6
+ '
+ 'btnAddFilter
+ '
+ Me.btnAddFilter.Location = New System.Drawing.Point(304, 34)
+ Me.btnAddFilter.Name = "btnAddFilter"
+ Me.btnAddFilter.Size = New System.Drawing.Size(75, 23)
+ Me.btnAddFilter.TabIndex = 4
+ Me.btnAddFilter.Text = "Add"
+ Me.btnAddFilter.UseVisualStyleBackColor = True
+ '
+ 'cboFilterField
+ '
+ Me.cboFilterField.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
+ Me.cboFilterField.FormattingEnabled = True
+ Me.cboFilterField.Location = New System.Drawing.Point(6, 36)
+ Me.cboFilterField.Name = "cboFilterField"
+ Me.cboFilterField.Size = New System.Drawing.Size(121, 21)
+ Me.cboFilterField.TabIndex = 1
+ '
'grpGameInfoOptions
'
Me.grpGameInfoOptions.Controls.Add(Me.optOr)
Me.grpGameInfoOptions.Controls.Add(Me.optAnd)
- Me.grpGameInfoOptions.Location = New System.Drawing.Point(14, 97)
+ Me.grpGameInfoOptions.Location = New System.Drawing.Point(259, 81)
Me.grpGameInfoOptions.Name = "grpGameInfoOptions"
Me.grpGameInfoOptions.Size = New System.Drawing.Size(106, 46)
- Me.grpGameInfoOptions.TabIndex = 6
+ Me.grpGameInfoOptions.TabIndex = 7
Me.grpGameInfoOptions.TabStop = False
Me.grpGameInfoOptions.Text = "Options"
'
@@ -216,53 +255,12 @@ Partial Class frmFilter
Me.optAnd.Text = "And"
Me.optAnd.UseVisualStyleBackColor = True
'
- 'txtCompany
+ 'txtFilterData
'
- Me.txtCompany.Location = New System.Drawing.Point(70, 71)
- Me.txtCompany.Name = "txtCompany"
- Me.txtCompany.Size = New System.Drawing.Size(309, 20)
- Me.txtCompany.TabIndex = 5
- '
- 'lblCompany
- '
- Me.lblCompany.AutoSize = True
- Me.lblCompany.Location = New System.Drawing.Point(11, 74)
- Me.lblCompany.Name = "lblCompany"
- Me.lblCompany.Size = New System.Drawing.Size(54, 13)
- Me.lblCompany.TabIndex = 4
- Me.lblCompany.Text = "Company:"
- '
- 'txtProcess
- '
- Me.txtProcess.Location = New System.Drawing.Point(70, 45)
- Me.txtProcess.Name = "txtProcess"
- Me.txtProcess.Size = New System.Drawing.Size(309, 20)
- Me.txtProcess.TabIndex = 3
- '
- 'lblProcess
- '
- Me.lblProcess.AutoSize = True
- Me.lblProcess.Location = New System.Drawing.Point(11, 48)
- Me.lblProcess.Name = "lblProcess"
- Me.lblProcess.Size = New System.Drawing.Size(48, 13)
- Me.lblProcess.TabIndex = 2
- Me.lblProcess.Text = "Process:"
- '
- 'lblName
- '
- Me.lblName.AutoSize = True
- Me.lblName.Location = New System.Drawing.Point(11, 22)
- Me.lblName.Name = "lblName"
- Me.lblName.Size = New System.Drawing.Size(38, 13)
- Me.lblName.TabIndex = 0
- Me.lblName.Text = "Name:"
- '
- 'txtName
- '
- Me.txtName.Location = New System.Drawing.Point(70, 19)
- Me.txtName.Name = "txtName"
- Me.txtName.Size = New System.Drawing.Size(309, 20)
- Me.txtName.TabIndex = 1
+ Me.txtFilterData.Location = New System.Drawing.Point(133, 36)
+ Me.txtFilterData.Name = "txtFilterData"
+ Me.txtFilterData.Size = New System.Drawing.Size(165, 20)
+ Me.txtFilterData.TabIndex = 3
'
'grpSorting
'
@@ -270,7 +268,7 @@ Partial Class frmFilter
Me.grpSorting.Controls.Add(Me.optSortAsc)
Me.grpSorting.Controls.Add(Me.cboSortField)
Me.grpSorting.Controls.Add(Me.lblOrderBy)
- Me.grpSorting.Location = New System.Drawing.Point(12, 484)
+ Me.grpSorting.Location = New System.Drawing.Point(12, 457)
Me.grpSorting.Name = "grpSorting"
Me.grpSorting.Size = New System.Drawing.Size(385, 61)
Me.grpSorting.TabIndex = 4
@@ -280,7 +278,7 @@ Partial Class frmFilter
'optSortDesc
'
Me.optSortDesc.AutoSize = True
- Me.optSortDesc.Location = New System.Drawing.Point(297, 26)
+ Me.optSortDesc.Location = New System.Drawing.Point(271, 26)
Me.optSortDesc.Name = "optSortDesc"
Me.optSortDesc.Size = New System.Drawing.Size(82, 17)
Me.optSortDesc.TabIndex = 3
@@ -291,7 +289,7 @@ Partial Class frmFilter
'optSortAsc
'
Me.optSortAsc.AutoSize = True
- Me.optSortAsc.Location = New System.Drawing.Point(216, 26)
+ Me.optSortAsc.Location = New System.Drawing.Point(190, 26)
Me.optSortAsc.Name = "optSortAsc"
Me.optSortAsc.Size = New System.Drawing.Size(75, 17)
Me.optSortAsc.TabIndex = 2
@@ -305,7 +303,7 @@ Partial Class frmFilter
Me.cboSortField.FormattingEnabled = True
Me.cboSortField.Location = New System.Drawing.Point(63, 25)
Me.cboSortField.Name = "cboSortField"
- Me.cboSortField.Size = New System.Drawing.Size(147, 21)
+ Me.cboSortField.Size = New System.Drawing.Size(121, 21)
Me.cboSortField.TabIndex = 1
'
'lblOrderBy
@@ -320,32 +318,59 @@ Partial Class frmFilter
'chkTag
'
Me.chkTag.AutoSize = True
- Me.chkTag.Location = New System.Drawing.Point(12, 192)
+ Me.chkTag.Location = New System.Drawing.Point(12, 230)
Me.chkTag.Name = "chkTag"
Me.chkTag.Size = New System.Drawing.Size(45, 17)
- Me.chkTag.TabIndex = 6
+ Me.chkTag.TabIndex = 2
Me.chkTag.Text = "Tag"
Me.chkTag.UseVisualStyleBackColor = True
'
'chkGameInfo
'
Me.chkGameInfo.AutoSize = True
- Me.chkGameInfo.Location = New System.Drawing.Point(12, 14)
+ Me.chkGameInfo.Location = New System.Drawing.Point(12, 12)
Me.chkGameInfo.Name = "chkGameInfo"
Me.chkGameInfo.Size = New System.Drawing.Size(109, 17)
- Me.chkGameInfo.TabIndex = 7
+ Me.chkGameInfo.TabIndex = 0
Me.chkGameInfo.Text = "Game Information"
Me.chkGameInfo.UseVisualStyleBackColor = True
'
+ 'lblFields
+ '
+ Me.lblFields.AutoSize = True
+ Me.lblFields.Location = New System.Drawing.Point(26, 20)
+ Me.lblFields.Name = "lblFields"
+ Me.lblFields.Size = New System.Drawing.Size(80, 13)
+ Me.lblFields.TabIndex = 0
+ Me.lblFields.Text = "Available Fields"
+ '
+ 'lblFilterData
+ '
+ Me.lblFilterData.AutoSize = True
+ Me.lblFilterData.Location = New System.Drawing.Point(199, 20)
+ Me.lblFilterData.Name = "lblFilterData"
+ Me.lblFilterData.Size = New System.Drawing.Size(32, 13)
+ Me.lblFilterData.TabIndex = 2
+ Me.lblFilterData.Text = "Filter "
+ '
+ 'lblCurrentFilters
+ '
+ Me.lblCurrentFilters.AutoSize = True
+ Me.lblCurrentFilters.Location = New System.Drawing.Point(94, 65)
+ Me.lblCurrentFilters.Name = "lblCurrentFilters"
+ Me.lblCurrentFilters.Size = New System.Drawing.Size(71, 13)
+ Me.lblCurrentFilters.TabIndex = 5
+ Me.lblCurrentFilters.Text = "Current Filters"
+ '
'frmFilter
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
- Me.ClientSize = New System.Drawing.Size(409, 586)
- Me.Controls.Add(Me.chkGameInfo)
- Me.Controls.Add(Me.chkTag)
+ Me.ClientSize = New System.Drawing.Size(409, 561)
Me.Controls.Add(Me.grpSorting)
+ Me.Controls.Add(Me.chkTag)
Me.Controls.Add(Me.grpGameFilter)
+ Me.Controls.Add(Me.chkGameInfo)
Me.Controls.Add(Me.grpTagFilter)
Me.Controls.Add(Me.btnOK)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
@@ -375,16 +400,11 @@ Partial Class frmFilter
Friend WithEvents lblTags As System.Windows.Forms.Label
Friend WithEvents btnRemove As System.Windows.Forms.Button
Friend WithEvents btnAdd As System.Windows.Forms.Button
- Friend WithEvents lstFilter As System.Windows.Forms.ListBox
+ Friend WithEvents lstTagFilter As System.Windows.Forms.ListBox
Friend WithEvents lstTags As System.Windows.Forms.ListBox
Friend WithEvents btnOK As System.Windows.Forms.Button
Friend WithEvents grpGameFilter As System.Windows.Forms.GroupBox
- Friend WithEvents txtProcess As System.Windows.Forms.TextBox
- Friend WithEvents lblProcess As System.Windows.Forms.Label
- Friend WithEvents lblName As System.Windows.Forms.Label
- Friend WithEvents txtName As System.Windows.Forms.TextBox
- Friend WithEvents txtCompany As System.Windows.Forms.TextBox
- Friend WithEvents lblCompany As System.Windows.Forms.Label
+ Friend WithEvents txtFilterData As System.Windows.Forms.TextBox
Friend WithEvents grpGameInfoOptions As System.Windows.Forms.GroupBox
Friend WithEvents optOr As System.Windows.Forms.RadioButton
Friend WithEvents optAnd As System.Windows.Forms.RadioButton
@@ -395,4 +415,11 @@ Partial Class frmFilter
Friend WithEvents lblOrderBy As Label
Friend WithEvents chkTag As CheckBox
Friend WithEvents chkGameInfo As CheckBox
+ Friend WithEvents cboFilterField As ComboBox
+ Friend WithEvents lstFilter As ListBox
+ Friend WithEvents btnAddFilter As Button
+ Friend WithEvents btnRemoveFilter As Button
+ Friend WithEvents lblCurrentFilters As Label
+ Friend WithEvents lblFilterData As Label
+ Friend WithEvents lblFields As Label
End Class
diff --git a/GBM/Forms/frmFilter.vb b/GBM/Forms/frmFilter.vb
index fc5be01..8515505 100644
--- a/GBM/Forms/frmFilter.vb
+++ b/GBM/Forms/frmFilter.vb
@@ -9,17 +9,63 @@ Public Class frmFilter
NoTags = 4
End Enum
+ Public Class clsFilter
+
+ Private sID As String
+ Private sField As String
+ Private oData As Object
+ Private bAndOperator As Boolean
+
+ Public Property ID As String
+ Get
+ Return sID
+ End Get
+ Set(value As String)
+ sID = value
+ End Set
+ End Property
+
+ Public Property Field As String
+ Get
+ Return sField
+ End Get
+ Set(value As String)
+ sField = value
+ End Set
+ End Property
+
+ Public Property Data As Object
+ Get
+ Return oData
+ End Get
+ Set(value As Object)
+ oData = value
+ End Set
+ End Property
+
+ Public Property AndOperator As Boolean
+ Get
+ Return bAndOperator
+ End Get
+ Set(value As Boolean)
+ bAndOperator = value
+ End Set
+ End Property
+
+ End Class
+
Dim oTagFilters As New List(Of clsTag)
- Dim hshStringFilters As New Hashtable
+ Dim oGameFilters As New List(Of clsFilter)
Dim eCurrentFilterType As eFilterType = eFilterType.BaseFilter
Dim bSortAsc As Boolean = True
Dim sSortField As String = "Name"
Dim hshTags As New Hashtable
Dim bShutdown As Boolean = False
+ Dim iParameterIndex As Integer = 0
- Public ReadOnly Property StringFilters As Hashtable
+ Public ReadOnly Property GameFilters As List(Of clsFilter)
Get
- Return hshStringFilters
+ Return oGameFilters
End Get
End Property
@@ -53,7 +99,7 @@ Public Class frmFilter
If lstTags.SelectedItems.Count = 1 Then
oData = lstTags.SelectedItems(0)
- lstFilter.Items.Add(oData)
+ lstTagFilter.Items.Add(oData)
lstTags.Items.Remove(oData)
ElseIf lstTags.SelectedItems.Count > 1 Then
oTags = New List(Of KeyValuePair(Of String, String))
@@ -63,7 +109,7 @@ Public Class frmFilter
Next
For Each kp As KeyValuePair(Of String, String) In oTags
- lstFilter.Items.Add(kp)
+ lstTagFilter.Items.Add(kp)
lstTags.Items.Remove(kp)
Next
End If
@@ -74,19 +120,19 @@ Public Class frmFilter
Dim oData As KeyValuePair(Of String, String)
Dim oTags As List(Of KeyValuePair(Of String, String))
- If lstFilter.SelectedItems.Count = 1 Then
- oData = lstFilter.SelectedItems(0)
- lstFilter.Items.Remove(oData)
+ If lstTagFilter.SelectedItems.Count = 1 Then
+ oData = lstTagFilter.SelectedItems(0)
+ lstTagFilter.Items.Remove(oData)
lstTags.Items.Add(oData)
- ElseIf lstFilter.SelectedItems.Count > 1 Then
+ ElseIf lstTagFilter.SelectedItems.Count > 1 Then
oTags = New List(Of KeyValuePair(Of String, String))
- For Each oData In lstFilter.SelectedItems
+ For Each oData In lstTagFilter.SelectedItems
oTags.Add(oData)
Next
For Each kp As KeyValuePair(Of String, String) In oTags
- lstFilter.Items.Remove(kp)
+ lstTagFilter.Items.Remove(kp)
lstTags.Items.Add(kp)
Next
End If
@@ -102,12 +148,12 @@ Public Class frmFilter
'Handle Lists
lstTags.Items.Clear()
- lstFilter.Items.Clear()
+ lstTagFilter.Items.Clear()
lstTags.ValueMember = "Key"
lstTags.DisplayMember = "Value"
- lstFilter.ValueMember = "Key"
- lstFilter.DisplayMember = "Value"
+ lstTagFilter.ValueMember = "Key"
+ lstTagFilter.DisplayMember = "Value"
For Each de As DictionaryEntry In hshTags
oTag = DirectCast(de.Value, clsTag)
@@ -117,6 +163,45 @@ Public Class frmFilter
End Sub
+ Private Sub AddFilter()
+ Dim oFilter As New clsFilter
+ Dim sFilter As String
+
+ lstFilter.ValueMember = "Key"
+ lstFilter.DisplayMember = "Value"
+
+ 'Build Filter
+ oFilter.ID = "PARAM" & iParameterIndex
+ oFilter.Field = cboFilterField.SelectedValue
+ oFilter.Data = txtFilterData.Text
+ oFilter.AndOperator = optAnd.Checked
+
+ oGameFilters.Add(oFilter)
+
+ 'Build String
+ sFilter = oFilter.Field & " / " & oFilter.Data & " / "
+ If oFilter.AndOperator Then
+ sFilter &= frmFilter_optAnd
+ Else
+ sFilter &= frmFilter_optOr
+ End If
+
+ lstFilter.Items.Add(New KeyValuePair(Of clsFilter, String)(oFilter, sFilter))
+
+ iParameterIndex += 1
+ End Sub
+
+ Private Sub RemoveFilter()
+ Dim oFilter As Object
+
+ If lstFilter.SelectedIndex <> -1 Then
+ oFilter = lstFilter.SelectedItem
+ oGameFilters.Remove(DirectCast(oFilter, KeyValuePair(Of clsFilter, String)).Key)
+ lstFilter.Items.Remove(oFilter)
+ End If
+
+ End Sub
+
Private Sub GetFilters()
Dim oData As KeyValuePair(Of String, String)
Dim oTag As clsTag
@@ -125,22 +210,11 @@ Public Class frmFilter
If chkGameInfo.Checked Then
'Set Filter Type
eCurrentFilterType = eFilterType.BaseFilter
-
- 'Set String Filter
- If txtName.Text <> String.Empty Then
- hshStringFilters.Add("Name", txtName.Text)
- End If
- If txtProcess.Text <> String.Empty Then
- hshStringFilters.Add("Process", txtProcess.Text)
- End If
- If txtCompany.Text <> String.Empty Then
- hshStringFilters.Add("Company", txtCompany.Text)
- End If
End If
If chkTag.Checked Then
'Set Tags
- For Each oData In lstFilter.Items
+ For Each oData In lstTagFilter.Items
oTag = DirectCast(hshTags(oData.Value), clsTag)
TagFilters.Add(oTag)
Next
@@ -167,20 +241,36 @@ Public Class frmFilter
End Sub
Private Sub LoadCombos()
+ Dim oFilterFields As New List(Of KeyValuePair(Of String, String))
Dim oSortFields As New List(Of KeyValuePair(Of String, String))
+ 'cboFilterField
+ cboFilterField.ValueMember = "Key"
+ cboFilterField.DisplayMember = "Value"
+
+ oFilterFields.Add(New KeyValuePair(Of String, String)("Name", frmFilter_FieldName))
+ oFilterFields.Add(New KeyValuePair(Of String, String)("Process", frmFilter_FieldProcess))
+ oFilterFields.Add(New KeyValuePair(Of String, String)("Parameter", frmFilter_FieldParameter))
+ oFilterFields.Add(New KeyValuePair(Of String, String)("Company", frmFilter_FieldCompany))
+ oFilterFields.Add(New KeyValuePair(Of String, String)("Version", frmFilter_FieldVersion))
+
+ cboFilterField.DataSource = oFilterFields
+
'cboSortField
cboSortField.ValueMember = "Key"
cboSortField.DisplayMember = "Value"
- oSortFields.Add(New KeyValuePair(Of String, String)("Name", frmFilter_SortName))
- oSortFields.Add(New KeyValuePair(Of String, String)("Process", frmFilter_SortProcess))
- oSortFields.Add(New KeyValuePair(Of String, String)("Company", frmFilter_SortCompany))
- oSortFields.Add(New KeyValuePair(Of String, String)("Hours", frmFilter_SortHours))
+ oSortFields.Add(New KeyValuePair(Of String, String)("Name", frmFilter_FieldName))
+ oSortFields.Add(New KeyValuePair(Of String, String)("Process", frmFilter_FieldProcess))
+ oSortFields.Add(New KeyValuePair(Of String, String)("Parameter", frmFilter_FieldParameter))
+ oSortFields.Add(New KeyValuePair(Of String, String)("Company", frmFilter_FieldCompany))
+ oSortFields.Add(New KeyValuePair(Of String, String)("Version", frmFilter_FieldVersion))
+ oSortFields.Add(New KeyValuePair(Of String, String)("Hours", frmFilter_FieldHours))
cboSortField.DataSource = oSortFields
- 'Select Default
+ 'Select Defaults
+ cboFilterField.SelectedIndex = 0
cboSortField.SelectedIndex = 0
End Sub
@@ -191,9 +281,6 @@ Public Class frmFilter
'Set Form Text
optOr.Text = frmFilter_optOr
optAnd.Text = frmFilter_optAnd
- lblCompany.Text = frmFilter_lblCompany
- lblProcess.Text = frmFilter_lblProcess
- lblName.Text = frmFilter_lblName
grpGameInfoOptions.Text = frmFilter_grpGameInfoOptions
optAll.Text = frmFilter_optAll
optAny.Text = frmFilter_optAny
@@ -209,6 +296,11 @@ Public Class frmFilter
lblOrderBy.Text = frmFilter_lblOrderBy
optSortAsc.Text = frmFilter_optSortAsc
optSortDesc.Text = frmFilter_optSortDesc
+ btnAddFilter.Text = frmFilter_btnAddFilter
+ btnRemoveFilter.Text = frmFilter_btnRemoveFilter
+ lblCurrentFilters.Text = frmFilter_lblCurrentFilters
+ lblFields.Text = frmFilter_lblFields
+ lblFilterData.Text = frmFilter_lblFilterData
'Defaults
optSortAsc.Checked = True
@@ -257,4 +349,12 @@ Public Class frmFilter
grpTagFilter.Enabled = False
End If
End Sub
+
+ Private Sub btnAddFilter_Click(sender As Object, e As EventArgs) Handles btnAddFilter.Click
+ AddFilter()
+ End Sub
+
+ Private Sub btnRemoveFilter_Click(sender As Object, e As EventArgs) Handles btnRemoveFilter.Click
+ RemoveFilter()
+ End Sub
End Class
\ No newline at end of file
diff --git a/GBM/Forms/frmGameManager.vb b/GBM/Forms/frmGameManager.vb
index feec031..7195522 100644
--- a/GBM/Forms/frmGameManager.vb
+++ b/GBM/Forms/frmGameManager.vb
@@ -20,7 +20,7 @@ Public Class frmGameManager
Private bIsDirty As Boolean = False
Private bIsLoading As Boolean = False
Private oCurrentTagFilters As New List(Of clsTag)
- Private oCurrentStringFilters As New Hashtable
+ Private oCurrentFilters As New List(Of frmFilter.clsFilter)
Private eCurrentFilter As frmFilter.eFilterType = frmFilter.eFilterType.BaseFilter
Private bCurrentSortAsc As Boolean = True
Private sCurrentSortField As String = "Name"
@@ -227,20 +227,20 @@ Public Class frmGameManager
frm = New frmFilter
frm.ShowDialog()
oCurrentTagFilters = frm.TagFilters
- oCurrentStringFilters = frm.StringFilters
+ oCurrentFilters = frm.GameFilters
eCurrentFilter = frm.FilterType
bCurrentSortAsc = frm.SortAsc
sCurrentSortField = frm.SortField
End If
Else
oCurrentTagFilters.Clear()
- oCurrentStringFilters.Clear()
+ oCurrentFilters.Clear()
eCurrentFilter = frmFilter.eFilterType.BaseFilter
bCurrentSortAsc = True
sCurrentSortField = "Name"
End If
- GameData = mgrMonitorList.ReadFilteredList(oCurrentTagFilters, oCurrentStringFilters, eCurrentFilter, bCurrentSortAsc, sCurrentSortField)
+ GameData = mgrMonitorList.ReadFilteredList(oCurrentTagFilters, oCurrentFilters, eCurrentFilter, bCurrentSortAsc, sCurrentSortField)
If optPendingRestores.Checked Then
oRestoreData = mgrRestore.CompareManifests
@@ -1550,6 +1550,9 @@ Public Class frmGameManager
AssignDirtyHandlers(grpExtra.Controls)
AssignDirtyHandlers(grpStats.Controls)
AssignDirtyHandlersMisc()
+
+ LoadData(False)
+ ModeChange()
End Sub
Private Sub lstGames_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lstGames.SelectedIndexChanged
diff --git a/GBM/Managers/mgrMonitorList.vb b/GBM/Managers/mgrMonitorList.vb
index 93e6ce3..5616839 100644
--- a/GBM/Managers/mgrMonitorList.vb
+++ b/GBM/Managers/mgrMonitorList.vb
@@ -497,7 +497,7 @@ Public Class mgrMonitorList
End Sub
'Filter Functions
- Private Shared Function BuildFilterQuery(ByVal oTagFilters As List(Of clsTag), ByVal hshStringFilters As Hashtable, ByVal eFilterType As frmFilter.eFilterType, ByVal bSortAsc As Boolean,
+ Private Shared Function BuildFilterQuery(ByVal oTagFilters As List(Of clsTag), ByVal oFilters As List(Of frmFilter.clsFilter), ByVal eFilterType As frmFilter.eFilterType, 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
@@ -541,7 +541,7 @@ Public Class mgrMonitorList
End Select
'Handle String Filters
- If hshStringFilters.Count > 0 Then
+ If oFilters.Count > 0 Then
If eFilterType = frmFilter.eFilterType.BaseFilter Then
sSQL &= " WHERE ("
Else
@@ -549,19 +549,17 @@ Public Class mgrMonitorList
End If
iCounter = 0
- For Each de As DictionaryEntry In hshStringFilters
- sSQL &= de.Key & " LIKE @" & de.Key
- hshParams.Add(de.Key, "%" & de.Value.ToString & "%")
+ For Each oFilter As frmFilter.clsFilter In oFilters
+ sSQL &= oFilter.Field & " LIKE @" & oFilter.ID
+ hshParams.Add(oFilter.ID, "%" & oFilter.Data & "%")
iCounter += 1
- If iCounter <> hshStringFilters.Count Then
- 'Select Case eFilterType
- 'Case frmFilter.eFilterType.FieldAnd
- 'sSQL &= " AND "
- 'Case frmFilter.eFilterType.FieldOr
- sSQL &= " OR "
- 'End Select
+ If iCounter <> oFilters.Count Then
+ If oFilter.AndOperator Then
+ sSQL &= " AND "
+ Else
+ sSQL &= " OR "
+ End If
End If
-
Next
sSQL &= ")"
End If
@@ -574,7 +572,7 @@ Public Class mgrMonitorList
End Function
- Public Shared Function ReadFilteredList(ByVal oTagFilters As List(Of clsTag), ByVal hshStringFilters As Hashtable, ByVal eFilterType As frmFilter.eFilterType, ByVal bSortAsc As Boolean,
+ Public Shared Function ReadFilteredList(ByVal oTagFilters As List(Of clsTag), ByVal oFilters As List(Of frmFilter.clsFilter), ByVal eFilterType As frmFilter.eFilterType, 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
@@ -584,7 +582,7 @@ Public Class mgrMonitorList
Dim hshParams As New Hashtable
Dim iCounter As Integer = 0
- sSQL = BuildFilterQuery(oTagFilters, hshStringFilters, eFilterType, bSortAsc, sSortField, hshParams)
+ sSQL = BuildFilterQuery(oTagFilters, oFilters, eFilterType, bSortAsc, sSortField, hshParams)
oData = oDatabase.ReadParamData(sSQL, hshParams)
@@ -599,7 +597,7 @@ Public Class mgrMonitorList
'Import / Export Functions
- Public Shared Function ReadListForExport(ByVal oTagFilters As List(Of clsTag), ByVal hshStringFilters As Hashtable, ByVal eFilterType As frmFilter.eFilterType, ByVal bSortAsc As Boolean,
+ Public Shared Function ReadListForExport(ByVal oTagFilters As List(Of clsTag), ByVal oFilters As List(Of frmFilter.clsFilter), 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)
Dim oDatabase As New mgrSQLite(iSelectDB)
Dim oData As DataSet
@@ -609,7 +607,7 @@ Public Class mgrMonitorList
Dim oGame As Game
Dim hshParams As New Hashtable
- sSQL = BuildFilterQuery(oTagFilters, hshStringFilters, eFilterType, bSortAsc, sSortField, hshParams)
+ sSQL = BuildFilterQuery(oTagFilters, oFilters, eFilterType, bSortAsc, sSortField, hshParams)
oData = oDatabase.ReadParamData(sSQL, hshParams)
@@ -702,7 +700,7 @@ Public Class mgrMonitorList
Dim oList As List(Of Game)
Dim bSuccess As Boolean = False
Dim oTagFilters As New List(Of clsTag)
- Dim oStringFilters As New Hashtable
+ Dim oFilters As New List(Of frmFilter.clsFilter)
Dim eCurrentFilter As frmFilter.eFilterType = frmFilter.eFilterType.BaseFilter
Dim bSortAsc As Boolean = True
Dim sSortField As String = "Name"
@@ -711,13 +709,13 @@ Public Class mgrMonitorList
Dim frm As New frmFilter
frm.ShowDialog()
oTagFilters = frm.TagFilters
- oStringFilters = frm.StringFilters
+ oFilters = frm.GameFilters
eCurrentFilter = frm.FilterType
bSortAsc = frm.SortAsc
sSortField = frm.SortField
End If
- oList = ReadListForExport(oTagFilters, oStringFilters, eCurrentFilter, bSortAsc, sSortField)
+ oList = ReadListForExport(oTagFilters, oFilters, eCurrentFilter, bSortAsc, sSortField)
bSuccess = mgrXML.SerializeAndExport(oList, sLocation)
diff --git a/GBM/My Project/Resources.Designer.vb b/GBM/My Project/Resources.Designer.vb
index b191d24..f2cb9a3 100644
--- a/GBM/My Project/Resources.Designer.vb
+++ b/GBM/My Project/Resources.Designer.vb
@@ -924,6 +924,15 @@ Namespace My.Resources
End Get
End Property
+ '''
+ ''' Looks up a localized string similar to Add.
+ '''
+ Friend ReadOnly Property frmFilter_btnAddFilter() As String
+ Get
+ Return ResourceManager.GetString("frmFilter_btnAddFilter", resourceCulture)
+ End Get
+ End Property
+
'''
''' Looks up a localized string similar to &OK.
'''
@@ -942,6 +951,15 @@ Namespace My.Resources
End Get
End Property
+ '''
+ ''' Looks up a localized string similar to Remove.
+ '''
+ Friend ReadOnly Property frmFilter_btnRemoveFilter() As String
+ Get
+ Return ResourceManager.GetString("frmFilter_btnRemoveFilter", resourceCulture)
+ End Get
+ End Property
+
'''
''' Looks up a localized string similar to Game Information.
'''
@@ -960,6 +978,60 @@ Namespace My.Resources
End Get
End Property
+ '''
+ ''' Looks up a localized string similar to Company.
+ '''
+ Friend ReadOnly Property frmFilter_FieldCompany() As String
+ Get
+ Return ResourceManager.GetString("frmFilter_FieldCompany", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' Looks up a localized string similar to Hours.
+ '''
+ Friend ReadOnly Property frmFilter_FieldHours() As String
+ Get
+ Return ResourceManager.GetString("frmFilter_FieldHours", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' Looks up a localized string similar to Name.
+ '''
+ Friend ReadOnly Property frmFilter_FieldName() As String
+ Get
+ Return ResourceManager.GetString("frmFilter_FieldName", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' Looks up a localized string similar to Parameter.
+ '''
+ Friend ReadOnly Property frmFilter_FieldParameter() As String
+ Get
+ Return ResourceManager.GetString("frmFilter_FieldParameter", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' Looks up a localized string similar to Process.
+ '''
+ Friend ReadOnly Property frmFilter_FieldProcess() As String
+ Get
+ Return ResourceManager.GetString("frmFilter_FieldProcess", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' Looks up a localized string similar to Version.
+ '''
+ Friend ReadOnly Property frmFilter_FieldVersion() As String
+ Get
+ Return ResourceManager.GetString("frmFilter_FieldVersion", resourceCulture)
+ End Get
+ End Property
+
'''
''' Looks up a localized string similar to Custom Filter.
'''
@@ -997,11 +1069,29 @@ Namespace My.Resources
End Property
'''
- ''' Looks up a localized string similar to Company:.
+ ''' Looks up a localized string similar to Current Filters.
'''
- Friend ReadOnly Property frmFilter_lblCompany() As String
+ Friend ReadOnly Property frmFilter_lblCurrentFilters() As String
Get
- Return ResourceManager.GetString("frmFilter_lblCompany", resourceCulture)
+ Return ResourceManager.GetString("frmFilter_lblCurrentFilters", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' Looks up a localized string similar to Available Fields.
+ '''
+ Friend ReadOnly Property frmFilter_lblFields() As String
+ Get
+ Return ResourceManager.GetString("frmFilter_lblFields", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' Looks up a localized string similar to Filter.
+ '''
+ Friend ReadOnly Property frmFilter_lblFilterData() As String
+ Get
+ Return ResourceManager.GetString("frmFilter_lblFilterData", resourceCulture)
End Get
End Property
@@ -1014,15 +1104,6 @@ Namespace My.Resources
End Get
End Property
- '''
- ''' Looks up a localized string similar to Name:.
- '''
- Friend ReadOnly Property frmFilter_lblName() As String
- Get
- Return ResourceManager.GetString("frmFilter_lblName", resourceCulture)
- End Get
- End Property
-
'''
''' Looks up a localized string similar to Order By:.
'''
@@ -1032,15 +1113,6 @@ Namespace My.Resources
End Get
End Property
- '''
- ''' Looks up a localized string similar to Process:.
- '''
- Friend ReadOnly Property frmFilter_lblProcess() As String
- Get
- Return ResourceManager.GetString("frmFilter_lblProcess", resourceCulture)
- End Get
- End Property
-
'''
''' Looks up a localized string similar to Available Tags.
'''
@@ -1104,42 +1176,6 @@ Namespace My.Resources
End Get
End Property
- '''
- ''' Looks up a localized string similar to Company.
- '''
- Friend ReadOnly Property frmFilter_SortCompany() As String
- Get
- Return ResourceManager.GetString("frmFilter_SortCompany", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Looks up a localized string similar to Time Played.
- '''
- Friend ReadOnly Property frmFilter_SortHours() As String
- Get
- Return ResourceManager.GetString("frmFilter_SortHours", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Looks up a localized string similar to Name.
- '''
- Friend ReadOnly Property frmFilter_SortName() As String
- Get
- Return ResourceManager.GetString("frmFilter_SortName", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Looks up a localized string similar to Process.
- '''
- Friend ReadOnly Property frmFilter_SortProcess() As String
- Get
- Return ResourceManager.GetString("frmFilter_SortProcess", resourceCulture)
- End Get
- End Property
-
'''
''' Looks up a localized string similar to [PARAM] ([PARAM]).
'''
diff --git a/GBM/My Project/Resources.resx b/GBM/My Project/Resources.resx
index ca92904..67376ae 100644
--- a/GBM/My Project/Resources.resx
+++ b/GBM/My Project/Resources.resx
@@ -895,18 +895,9 @@
Custom Filter
-
- Company:
-
Current Filter
-
- Name:
-
-
- Process:
-
Available Tags
@@ -1813,16 +1804,37 @@
Descending
-
+
Company
-
- Time Played
+
+ Hours
-
+
Name
-
+
Process
+
+ Add
+
+
+ Remove
+
+
+ Parameter
+
+
+ Version
+
+
+ Current Filters
+
+
+ Available Fields
+
+
+ Filter
+
\ No newline at end of file