Custom Filter Enhancement Phase #3

This commit is contained in:
Michael J. Seiferling
2017-08-04 23:31:48 -06:00
parent 19812d1cd2
commit c0d6a79aa7
6 changed files with 401 additions and 225 deletions
+123 -96
View File
@@ -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
+134 -34
View File
@@ -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
+7 -4
View File
@@ -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
+18 -20
View File
@@ -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)
+93 -57
View File
@@ -924,6 +924,15 @@ Namespace My.Resources
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Add.
'''</summary>
Friend ReadOnly Property frmFilter_btnAddFilter() As String
Get
Return ResourceManager.GetString("frmFilter_btnAddFilter", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to &amp;OK.
'''</summary>
@@ -942,6 +951,15 @@ Namespace My.Resources
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Remove.
'''</summary>
Friend ReadOnly Property frmFilter_btnRemoveFilter() As String
Get
Return ResourceManager.GetString("frmFilter_btnRemoveFilter", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Game Information.
'''</summary>
@@ -960,6 +978,60 @@ Namespace My.Resources
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Company.
'''</summary>
Friend ReadOnly Property frmFilter_FieldCompany() As String
Get
Return ResourceManager.GetString("frmFilter_FieldCompany", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Hours.
'''</summary>
Friend ReadOnly Property frmFilter_FieldHours() As String
Get
Return ResourceManager.GetString("frmFilter_FieldHours", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Name.
'''</summary>
Friend ReadOnly Property frmFilter_FieldName() As String
Get
Return ResourceManager.GetString("frmFilter_FieldName", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Parameter.
'''</summary>
Friend ReadOnly Property frmFilter_FieldParameter() As String
Get
Return ResourceManager.GetString("frmFilter_FieldParameter", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Process.
'''</summary>
Friend ReadOnly Property frmFilter_FieldProcess() As String
Get
Return ResourceManager.GetString("frmFilter_FieldProcess", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Version.
'''</summary>
Friend ReadOnly Property frmFilter_FieldVersion() As String
Get
Return ResourceManager.GetString("frmFilter_FieldVersion", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Custom Filter.
'''</summary>
@@ -997,11 +1069,29 @@ Namespace My.Resources
End Property
'''<summary>
''' Looks up a localized string similar to Company:.
''' Looks up a localized string similar to Current Filters.
'''</summary>
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
'''<summary>
''' Looks up a localized string similar to Available Fields.
'''</summary>
Friend ReadOnly Property frmFilter_lblFields() As String
Get
Return ResourceManager.GetString("frmFilter_lblFields", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Filter.
'''</summary>
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
'''<summary>
''' Looks up a localized string similar to Name:.
'''</summary>
Friend ReadOnly Property frmFilter_lblName() As String
Get
Return ResourceManager.GetString("frmFilter_lblName", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Order By:.
'''</summary>
@@ -1032,15 +1113,6 @@ Namespace My.Resources
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Process:.
'''</summary>
Friend ReadOnly Property frmFilter_lblProcess() As String
Get
Return ResourceManager.GetString("frmFilter_lblProcess", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Available Tags.
'''</summary>
@@ -1104,42 +1176,6 @@ Namespace My.Resources
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Company.
'''</summary>
Friend ReadOnly Property frmFilter_SortCompany() As String
Get
Return ResourceManager.GetString("frmFilter_SortCompany", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Time Played.
'''</summary>
Friend ReadOnly Property frmFilter_SortHours() As String
Get
Return ResourceManager.GetString("frmFilter_SortHours", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Name.
'''</summary>
Friend ReadOnly Property frmFilter_SortName() As String
Get
Return ResourceManager.GetString("frmFilter_SortName", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Process.
'''</summary>
Friend ReadOnly Property frmFilter_SortProcess() As String
Get
Return ResourceManager.GetString("frmFilter_SortProcess", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to [PARAM] ([PARAM]).
'''</summary>
+26 -14
View File
@@ -895,18 +895,9 @@
<data name="frmFilter_FormName" xml:space="preserve">
<value>Custom Filter</value>
</data>
<data name="frmFilter_lblCompany" xml:space="preserve">
<value>Company:</value>
</data>
<data name="frmFilter_lblGameTags" xml:space="preserve">
<value>Current Filter</value>
</data>
<data name="frmFilter_lblName" xml:space="preserve">
<value>Name:</value>
</data>
<data name="frmFilter_lblProcess" xml:space="preserve">
<value>Process:</value>
</data>
<data name="frmFilter_lblTags" xml:space="preserve">
<value>Available Tags</value>
</data>
@@ -1813,16 +1804,37 @@
<data name="frmFilter_optSortDesc" xml:space="preserve">
<value>Descending</value>
</data>
<data name="frmFilter_SortCompany" xml:space="preserve">
<data name="frmFilter_FieldCompany" xml:space="preserve">
<value>Company</value>
</data>
<data name="frmFilter_SortHours" xml:space="preserve">
<value>Time Played</value>
<data name="frmFilter_FieldHours" xml:space="preserve">
<value>Hours</value>
</data>
<data name="frmFilter_SortName" xml:space="preserve">
<data name="frmFilter_FieldName" xml:space="preserve">
<value>Name</value>
</data>
<data name="frmFilter_SortProcess" xml:space="preserve">
<data name="frmFilter_FieldProcess" xml:space="preserve">
<value>Process</value>
</data>
<data name="frmFilter_btnAddFilter" xml:space="preserve">
<value>Add</value>
</data>
<data name="frmFilter_btnRemoveFilter" xml:space="preserve">
<value>Remove</value>
</data>
<data name="frmFilter_FieldParameter" xml:space="preserve">
<value>Parameter</value>
</data>
<data name="frmFilter_FieldVersion" xml:space="preserve">
<value>Version</value>
</data>
<data name="frmFilter_lblCurrentFilters" xml:space="preserve">
<value>Current Filters</value>
</data>
<data name="frmFilter_lblFields" xml:space="preserve">
<value>Available Fields</value>
</data>
<data name="frmFilter_lblFilterData" xml:space="preserve">
<value>Filter</value>
</data>
</root>