Changes for issue #103

This commit is contained in:
MikeMaximus
2017-11-21 13:49:27 -06:00
parent ad4c666051
commit d610b2507e
7 changed files with 401 additions and 144 deletions
+10
View File
@@ -2,6 +2,7 @@
Private sID As String
Private oField As clsGameFilterField
Private bNot As Boolean
Private oData As Object
Private eNumericOperator As eNumericOperators = eNumericOperators.Equals
@@ -31,6 +32,15 @@
End Set
End Property
Public Property NotCondition As Boolean
Get
Return bNot
End Get
Set(value As Boolean)
bNot = value
End Set
End Property
Public Property Data As Object
Get
Return oData
+128 -55
View File
@@ -23,17 +23,23 @@ Partial Class frmFilter
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.grpTagFilter = New System.Windows.Forms.GroupBox()
Me.lblExcludeTags = New System.Windows.Forms.Label()
Me.btnExcludeRemove = New System.Windows.Forms.Button()
Me.btnExcludeAdd = New System.Windows.Forms.Button()
Me.lstExcludeTags = New System.Windows.Forms.ListBox()
Me.grpTagOptions = New System.Windows.Forms.GroupBox()
Me.optAll = New System.Windows.Forms.RadioButton()
Me.optAny = New System.Windows.Forms.RadioButton()
Me.lblGameTags = New System.Windows.Forms.Label()
Me.lblIncludeTags = New System.Windows.Forms.Label()
Me.lblTags = New System.Windows.Forms.Label()
Me.btnRemove = New System.Windows.Forms.Button()
Me.btnAdd = New System.Windows.Forms.Button()
Me.lstTagFilter = New System.Windows.Forms.ListBox()
Me.btnIncludeRemove = New System.Windows.Forms.Button()
Me.btnIncludeAdd = New System.Windows.Forms.Button()
Me.lstIncludeTags = 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.lblNot = New System.Windows.Forms.Label()
Me.chkNot = New System.Windows.Forms.CheckBox()
Me.cboBoolFilter = New System.Windows.Forms.ComboBox()
Me.numFilter = New System.Windows.Forms.NumericUpDown()
Me.cboNumericOps = New System.Windows.Forms.ComboBox()
@@ -68,19 +74,60 @@ Partial Class frmFilter
'
'grpTagFilter
'
Me.grpTagFilter.Controls.Add(Me.lblExcludeTags)
Me.grpTagFilter.Controls.Add(Me.btnExcludeRemove)
Me.grpTagFilter.Controls.Add(Me.btnExcludeAdd)
Me.grpTagFilter.Controls.Add(Me.lstExcludeTags)
Me.grpTagFilter.Controls.Add(Me.grpTagOptions)
Me.grpTagFilter.Controls.Add(Me.lblGameTags)
Me.grpTagFilter.Controls.Add(Me.lblIncludeTags)
Me.grpTagFilter.Controls.Add(Me.lblTags)
Me.grpTagFilter.Controls.Add(Me.btnRemove)
Me.grpTagFilter.Controls.Add(Me.btnAdd)
Me.grpTagFilter.Controls.Add(Me.lstTagFilter)
Me.grpTagFilter.Controls.Add(Me.btnIncludeRemove)
Me.grpTagFilter.Controls.Add(Me.btnIncludeAdd)
Me.grpTagFilter.Controls.Add(Me.lstIncludeTags)
Me.grpTagFilter.Controls.Add(Me.lstTags)
Me.grpTagFilter.Location = New System.Drawing.Point(12, 236)
Me.grpTagFilter.Name = "grpTagFilter"
Me.grpTagFilter.Size = New System.Drawing.Size(385, 198)
Me.grpTagFilter.Size = New System.Drawing.Size(410, 198)
Me.grpTagFilter.TabIndex = 3
Me.grpTagFilter.TabStop = False
'
'lblExcludeTags
'
Me.lblExcludeTags.AutoSize = True
Me.lblExcludeTags.Location = New System.Drawing.Point(313, 16)
Me.lblExcludeTags.Name = "lblExcludeTags"
Me.lblExcludeTags.Size = New System.Drawing.Size(72, 13)
Me.lblExcludeTags.TabIndex = 10
Me.lblExcludeTags.Text = "Exclude Tags"
'
'btnExcludeRemove
'
Me.btnExcludeRemove.Location = New System.Drawing.Point(261, 91)
Me.btnExcludeRemove.Name = "btnExcludeRemove"
Me.btnExcludeRemove.Size = New System.Drawing.Size(31, 23)
Me.btnExcludeRemove.TabIndex = 9
Me.btnExcludeRemove.Text = "<"
Me.btnExcludeRemove.UseVisualStyleBackColor = True
'
'btnExcludeAdd
'
Me.btnExcludeAdd.Location = New System.Drawing.Point(261, 62)
Me.btnExcludeAdd.Name = "btnExcludeAdd"
Me.btnExcludeAdd.Size = New System.Drawing.Size(31, 23)
Me.btnExcludeAdd.TabIndex = 8
Me.btnExcludeAdd.Text = ">"
Me.btnExcludeAdd.UseVisualStyleBackColor = True
'
'lstExcludeTags
'
Me.lstExcludeTags.FormattingEnabled = True
Me.lstExcludeTags.Location = New System.Drawing.Point(298, 32)
Me.lstExcludeTags.Name = "lstExcludeTags"
Me.lstExcludeTags.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended
Me.lstExcludeTags.Size = New System.Drawing.Size(103, 108)
Me.lstExcludeTags.Sorted = True
Me.lstExcludeTags.TabIndex = 7
'
'grpTagOptions
'
Me.grpTagOptions.Controls.Add(Me.optAll)
@@ -113,65 +160,65 @@ Partial Class frmFilter
Me.optAny.Text = "Any Tag"
Me.optAny.UseVisualStyleBackColor = True
'
'lblGameTags
'lblIncludeTags
'
Me.lblGameTags.AutoSize = True
Me.lblGameTags.Location = New System.Drawing.Point(271, 16)
Me.lblGameTags.Name = "lblGameTags"
Me.lblGameTags.Size = New System.Drawing.Size(66, 13)
Me.lblGameTags.TabIndex = 4
Me.lblGameTags.Text = "Current Filter"
Me.lblIncludeTags.AutoSize = True
Me.lblIncludeTags.Location = New System.Drawing.Point(23, 16)
Me.lblIncludeTags.Name = "lblIncludeTags"
Me.lblIncludeTags.Size = New System.Drawing.Size(69, 13)
Me.lblIncludeTags.TabIndex = 4
Me.lblIncludeTags.Text = "Include Tags"
'
'lblTags
'
Me.lblTags.AutoSize = True
Me.lblTags.Location = New System.Drawing.Point(43, 16)
Me.lblTags.Location = New System.Drawing.Point(165, 16)
Me.lblTags.Name = "lblTags"
Me.lblTags.Size = New System.Drawing.Size(77, 13)
Me.lblTags.TabIndex = 0
Me.lblTags.Text = "Available Tags"
'
'btnRemove
'btnIncludeRemove
'
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
Me.btnRemove.Text = "<"
Me.btnRemove.UseVisualStyleBackColor = True
Me.btnIncludeRemove.Location = New System.Drawing.Point(115, 91)
Me.btnIncludeRemove.Name = "btnIncludeRemove"
Me.btnIncludeRemove.Size = New System.Drawing.Size(31, 23)
Me.btnIncludeRemove.TabIndex = 3
Me.btnIncludeRemove.Text = ">"
Me.btnIncludeRemove.UseVisualStyleBackColor = True
'
'btnAdd
'btnIncludeAdd
'
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
Me.btnIncludeAdd.Location = New System.Drawing.Point(115, 62)
Me.btnIncludeAdd.Name = "btnIncludeAdd"
Me.btnIncludeAdd.Size = New System.Drawing.Size(31, 23)
Me.btnIncludeAdd.TabIndex = 2
Me.btnIncludeAdd.Text = "<"
Me.btnIncludeAdd.UseVisualStyleBackColor = True
'
'lstTagFilter
'lstIncludeTags
'
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
Me.lstIncludeTags.FormattingEnabled = True
Me.lstIncludeTags.Location = New System.Drawing.Point(6, 32)
Me.lstIncludeTags.Name = "lstIncludeTags"
Me.lstIncludeTags.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended
Me.lstIncludeTags.Size = New System.Drawing.Size(103, 108)
Me.lstIncludeTags.Sorted = True
Me.lstIncludeTags.TabIndex = 5
'
'lstTags
'
Me.lstTags.FormattingEnabled = True
Me.lstTags.Location = New System.Drawing.Point(6, 32)
Me.lstTags.Location = New System.Drawing.Point(152, 32)
Me.lstTags.Name = "lstTags"
Me.lstTags.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended
Me.lstTags.Size = New System.Drawing.Size(150, 108)
Me.lstTags.Size = New System.Drawing.Size(103, 108)
Me.lstTags.Sorted = True
Me.lstTags.TabIndex = 1
'
'btnOK
'
Me.btnOK.Location = New System.Drawing.Point(322, 526)
Me.btnOK.Location = New System.Drawing.Point(347, 526)
Me.btnOK.Name = "btnOK"
Me.btnOK.Size = New System.Drawing.Size(75, 23)
Me.btnOK.TabIndex = 6
@@ -180,6 +227,8 @@ Partial Class frmFilter
'
'grpGameFilter
'
Me.grpGameFilter.Controls.Add(Me.lblNot)
Me.grpGameFilter.Controls.Add(Me.chkNot)
Me.grpGameFilter.Controls.Add(Me.cboBoolFilter)
Me.grpGameFilter.Controls.Add(Me.numFilter)
Me.grpGameFilter.Controls.Add(Me.cboNumericOps)
@@ -194,15 +243,33 @@ Partial Class frmFilter
Me.grpGameFilter.Controls.Add(Me.txtStringFilter)
Me.grpGameFilter.Location = New System.Drawing.Point(12, 35)
Me.grpGameFilter.Name = "grpGameFilter"
Me.grpGameFilter.Size = New System.Drawing.Size(385, 172)
Me.grpGameFilter.Size = New System.Drawing.Size(410, 172)
Me.grpGameFilter.TabIndex = 1
Me.grpGameFilter.TabStop = False
'
'lblNot
'
Me.lblNot.AutoSize = True
Me.lblNot.Location = New System.Drawing.Point(161, 20)
Me.lblNot.Name = "lblNot"
Me.lblNot.Size = New System.Drawing.Size(24, 13)
Me.lblNot.TabIndex = 11
Me.lblNot.Text = "Not"
'
'chkNot
'
Me.chkNot.AutoSize = True
Me.chkNot.Location = New System.Drawing.Point(166, 39)
Me.chkNot.Name = "chkNot"
Me.chkNot.Size = New System.Drawing.Size(15, 14)
Me.chkNot.TabIndex = 10
Me.chkNot.UseVisualStyleBackColor = True
'
'cboBoolFilter
'
Me.cboBoolFilter.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.cboBoolFilter.FormattingEnabled = True
Me.cboBoolFilter.Location = New System.Drawing.Point(162, 36)
Me.cboBoolFilter.Location = New System.Drawing.Point(187, 36)
Me.cboBoolFilter.Name = "cboBoolFilter"
Me.cboBoolFilter.Size = New System.Drawing.Size(136, 21)
Me.cboBoolFilter.TabIndex = 3
@@ -210,7 +277,7 @@ Partial Class frmFilter
'numFilter
'
Me.numFilter.DecimalPlaces = 1
Me.numFilter.Location = New System.Drawing.Point(233, 37)
Me.numFilter.Location = New System.Drawing.Point(258, 37)
Me.numFilter.Maximum = New Decimal(New Integer() {1000000, 0, 0, 0})
Me.numFilter.Name = "numFilter"
Me.numFilter.Size = New System.Drawing.Size(65, 20)
@@ -220,7 +287,7 @@ Partial Class frmFilter
'
Me.cboNumericOps.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.cboNumericOps.FormattingEnabled = True
Me.cboNumericOps.Location = New System.Drawing.Point(162, 36)
Me.cboNumericOps.Location = New System.Drawing.Point(188, 36)
Me.cboNumericOps.Name = "cboNumericOps"
Me.cboNumericOps.Size = New System.Drawing.Size(65, 21)
Me.cboNumericOps.TabIndex = 3
@@ -237,7 +304,7 @@ Partial Class frmFilter
'lblFilterData
'
Me.lblFilterData.AutoSize = True
Me.lblFilterData.Location = New System.Drawing.Point(214, 20)
Me.lblFilterData.Location = New System.Drawing.Point(239, 20)
Me.lblFilterData.Name = "lblFilterData"
Me.lblFilterData.Size = New System.Drawing.Size(32, 13)
Me.lblFilterData.TabIndex = 2
@@ -271,7 +338,7 @@ Partial Class frmFilter
'
'btnAddFilter
'
Me.btnAddFilter.Location = New System.Drawing.Point(304, 34)
Me.btnAddFilter.Location = New System.Drawing.Point(329, 34)
Me.btnAddFilter.Name = "btnAddFilter"
Me.btnAddFilter.Size = New System.Drawing.Size(75, 23)
Me.btnAddFilter.TabIndex = 5
@@ -320,7 +387,7 @@ Partial Class frmFilter
'
'txtStringFilter
'
Me.txtStringFilter.Location = New System.Drawing.Point(162, 36)
Me.txtStringFilter.Location = New System.Drawing.Point(187, 36)
Me.txtStringFilter.Name = "txtStringFilter"
Me.txtStringFilter.Size = New System.Drawing.Size(136, 20)
Me.txtStringFilter.TabIndex = 3
@@ -332,7 +399,7 @@ Partial Class frmFilter
Me.grpSorting.Controls.Add(Me.cboSortField)
Me.grpSorting.Location = New System.Drawing.Point(12, 440)
Me.grpSorting.Name = "grpSorting"
Me.grpSorting.Size = New System.Drawing.Size(385, 80)
Me.grpSorting.Size = New System.Drawing.Size(410, 80)
Me.grpSorting.TabIndex = 4
Me.grpSorting.TabStop = False
Me.grpSorting.Text = "Sorting"
@@ -421,7 +488,7 @@ Partial Class 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, 561)
Me.ClientSize = New System.Drawing.Size(434, 561)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.grpSorting)
Me.Controls.Add(Me.chkTag)
@@ -455,11 +522,11 @@ Partial Class frmFilter
Friend WithEvents grpTagOptions As System.Windows.Forms.GroupBox
Friend WithEvents optAll As System.Windows.Forms.RadioButton
Friend WithEvents optAny As System.Windows.Forms.RadioButton
Friend WithEvents lblGameTags As System.Windows.Forms.Label
Friend WithEvents lblIncludeTags As System.Windows.Forms.Label
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 lstTagFilter As System.Windows.Forms.ListBox
Friend WithEvents btnIncludeRemove As System.Windows.Forms.Button
Friend WithEvents btnIncludeAdd As System.Windows.Forms.Button
Friend WithEvents lstIncludeTags 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
@@ -486,4 +553,10 @@ Partial Class frmFilter
Friend WithEvents lblSortFields As Label
Friend WithEvents Label1 As Label
Friend WithEvents grpSortOptions As GroupBox
Friend WithEvents lblExcludeTags As Label
Friend WithEvents btnExcludeRemove As Button
Friend WithEvents btnExcludeAdd As Button
Friend WithEvents lstExcludeTags As ListBox
Friend WithEvents lblNot As Label
Friend WithEvents chkNot As CheckBox
End Class
+88 -32
View File
@@ -9,7 +9,8 @@ Public Class frmFilter
NoTags = 4
End Enum
Dim oTagFilters As New List(Of clsTag)
Dim oIncludeTagFilters As New List(Of clsTag)
Dim oExcludeTagFilters As New List(Of clsTag)
Dim oGameFilters As New List(Of clsGameFilter)
Dim oValidFields As New List(Of clsGameFilterField)
Dim eCurrentFilterType As eFilterType = eFilterType.BaseFilter
@@ -28,12 +29,21 @@ Public Class frmFilter
End Set
End Property
Public Property TagFilters As List(Of clsTag)
Public Property IncludeTagFilters As List(Of clsTag)
Get
Return oTagFilters
Return oIncludeTagFilters
End Get
Set(value As List(Of clsTag))
oTagFilters = value
oIncludeTagFilters = value
End Set
End Property
Public Property ExcludeTagFilters As List(Of clsTag)
Get
Return oExcludeTagFilters
End Get
Set(value As List(Of clsTag))
oExcludeTagFilters = value
End Set
End Property
@@ -73,13 +83,13 @@ Public Class frmFilter
End Set
End Property
Private Sub AddTag()
Private Sub AddTag(ByRef lst As ListBox)
Dim oData As KeyValuePair(Of String, String)
Dim oTags As List(Of KeyValuePair(Of String, String))
If lstTags.SelectedItems.Count = 1 Then
oData = lstTags.SelectedItems(0)
lstTagFilter.Items.Add(oData)
lst.Items.Add(oData)
lstTags.Items.Remove(oData)
ElseIf lstTags.SelectedItems.Count > 1 Then
oTags = New List(Of KeyValuePair(Of String, String))
@@ -89,30 +99,30 @@ Public Class frmFilter
Next
For Each kp As KeyValuePair(Of String, String) In oTags
lstTagFilter.Items.Add(kp)
lst.Items.Add(kp)
lstTags.Items.Remove(kp)
Next
End If
End Sub
Private Sub RemoveTag()
Private Sub RemoveTag(ByRef lst As ListBox)
Dim oData As KeyValuePair(Of String, String)
Dim oTags As List(Of KeyValuePair(Of String, String))
If lstTagFilter.SelectedItems.Count = 1 Then
oData = lstTagFilter.SelectedItems(0)
lstTagFilter.Items.Remove(oData)
If lst.SelectedItems.Count = 1 Then
oData = lst.SelectedItems(0)
lst.Items.Remove(oData)
lstTags.Items.Add(oData)
ElseIf lstTagFilter.SelectedItems.Count > 1 Then
ElseIf lst.SelectedItems.Count > 1 Then
oTags = New List(Of KeyValuePair(Of String, String))
For Each oData In lstTagFilter.SelectedItems
For Each oData In lst.SelectedItems
oTags.Add(oData)
Next
For Each kp As KeyValuePair(Of String, String) In oTags
lstTagFilter.Items.Remove(kp)
lst.Items.Remove(kp)
lstTags.Items.Add(kp)
Next
End If
@@ -283,13 +293,17 @@ Public Class frmFilter
'Handle Lists
lstTags.Items.Clear()
lstTagFilter.Items.Clear()
lstIncludeTags.Items.Clear()
lstExcludeTags.Items.Clear()
lstTags.ValueMember = "Key"
lstTags.DisplayMember = "Value"
lstTagFilter.ValueMember = "Key"
lstTagFilter.DisplayMember = "Value"
lstIncludeTags.ValueMember = "Key"
lstIncludeTags.DisplayMember = "Value"
lstExcludeTags.ValueMember = "Key"
lstExcludeTags.DisplayMember = "Value"
For Each de As DictionaryEntry In hshTags
oTag = DirectCast(de.Value, clsTag)
@@ -322,16 +336,35 @@ Public Class frmFilter
sFilter = oFilter.Field.FriendlyFieldName & " = " & oFilter.Data
End Select
If oFilter.NotCondition Then
sFilter &= " (" & frmFilter_lblNot & ")"
End If
lstFilter.Items.Add(New KeyValuePair(Of clsGameFilter, String)(oFilter, sFilter))
Next
End If
'Tag Filters
If oTagFilters.Count > 0 Then
If oIncludeTagFilters.Count > 0 Then
chkTag.Checked = True
For Each oTag As clsTag In oTagFilters
For Each oTag As clsTag In oIncludeTagFilters
oListTag = New KeyValuePair(Of String, String)(oTag.ID, oTag.Name)
lstTagFilter.Items.Add(oListTag)
lstIncludeTags.Items.Add(oListTag)
lstTags.Items.Remove(oListTag)
Next
If eCurrentFilterType = eFilterType.AllTags Then
optAll.Checked = True
Else
optAny.Checked = True
End If
End If
If oExcludeTagFilters.Count > 0 Then
chkTag.Checked = True
For Each oTag As clsTag In oExcludeTagFilters
oListTag = New KeyValuePair(Of String, String)(oTag.ID, oTag.Name)
lstExcludeTags.Items.Add(oListTag)
lstTags.Items.Remove(oListTag)
Next
@@ -402,6 +435,13 @@ Public Class frmFilter
sFilter = oFilter.Field.FriendlyFieldName & " = " & oFilter.Data
End Select
If chkNot.Checked Then
oFilter.NotCondition = True
sFilter &= " (" & frmFilter_lblNot & ")"
Else
oFilter.NotCondition = False
End If
oGameFilters.Add(oFilter)
lstFilter.Items.Add(New KeyValuePair(Of clsGameFilter, String)(oFilter, sFilter))
@@ -431,14 +471,19 @@ Public Class frmFilter
If chkTag.Checked Then
'Set Tags
TagFilters.Clear()
For Each oData In lstTagFilter.Items
IncludeTagFilters.Clear()
For Each oData In lstIncludeTags.Items
oTag = DirectCast(hshTags(oData.Value), clsTag)
TagFilters.Add(oTag)
IncludeTagFilters.Add(oTag)
Next
ExcludeTagFilters.Clear()
For Each oData In lstExcludeTags.Items
oTag = DirectCast(hshTags(oData.Value), clsTag)
ExcludeTagFilters.Add(oTag)
Next
'Set Filter Type
If TagFilters.Count = 0 Then
If IncludeTagFilters.Count = 0 And ExcludeTagFilters.Count = 0 Then
eCurrentFilterType = eFilterType.NoTags
ElseIf optAll.Checked Then
eCurrentFilterType = eFilterType.AllTags
@@ -525,10 +570,13 @@ Public Class frmFilter
grpFilterType.Text = frmFilter_grpFilterType
optAll.Text = frmFilter_optAll
optAny.Text = frmFilter_optAny
lblGameTags.Text = frmFilter_lblGameTags
lblIncludeTags.Text = frmFilter_lblIncludeTags
lblExcludeTags.Text = frmFilter_lblExcludeTags
lblTags.Text = frmFilter_lblTags
btnRemove.Text = frmFilter_btnRemove
btnAdd.Text = frmFilter_btnAdd
btnIncludeRemove.Text = frmFilter_btnIncludeRemove
btnIncludeAdd.Text = frmFilter_btnIncludeAdd
btnExcludeRemove.Text = frmFilter_btnExcludeRemove
btnExcludeAdd.Text = frmFilter_btnExcludeAdd
btnOK.Text = frmFilter_btnOK
grpTagOptions.Text = frmFilter_grpTagOptions
chkTag.Text = frmFilter_chkTag
@@ -569,12 +617,20 @@ Public Class frmFilter
Me.Close()
End Sub
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
AddTag()
Private Sub btnIncludeAdd_Click(sender As Object, e As EventArgs) Handles btnIncludeAdd.Click
AddTag(lstIncludeTags)
End Sub
Private Sub btnRemove_Click(sender As Object, e As EventArgs) Handles btnRemove.Click
RemoveTag()
Private Sub btnExcludeAdd_Click(sender As Object, e As EventArgs) Handles btnExcludeAdd.Click
AddTag(lstExcludeTags)
End Sub
Private Sub btnExcludeRemove_Click(sender As Object, e As EventArgs) Handles btnExcludeRemove.Click
RemoveTag(lstExcludeTags)
End Sub
Private Sub btnIncludeRemove_Click(sender As Object, e As EventArgs) Handles btnIncludeRemove.Click
RemoveTag(lstIncludeTags)
End Sub
Private Sub frmFilter_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
@@ -599,7 +655,7 @@ Public Class frmFilter
grpTagFilter.Enabled = True
Else
grpTagFilter.Enabled = False
oTagFilters.Clear()
oIncludeTagFilters.Clear()
LoadTagData()
End If
End Sub
+9 -5
View File
@@ -19,7 +19,8 @@ Public Class frmGameManager
Private oRemoteBackupData As SortedList
Private bIsDirty As Boolean = False
Private bIsLoading As Boolean = False
Private oCurrentTagFilters As New List(Of clsTag)
Private oCurrentIncludeTagFilters As New List(Of clsTag)
Private oCurrentExcludeTagFilters As New List(Of clsTag)
Private oCurrentFilters As New List(Of clsGameFilter)
Private eCurrentFilter As frmFilter.eFilterType = frmFilter.eFilterType.BaseFilter
Private bCurrentAndOperator As Boolean = False
@@ -227,7 +228,8 @@ Public Class frmGameManager
If Not bRetainFilter Then
frm = New frmFilter
frm.TagFilters = oCurrentTagFilters
frm.IncludeTagFilters = oCurrentIncludeTagFilters
frm.ExcludeTagFilters = oCurrentExcludeTagFilters
frm.GameFilters = oCurrentFilters
frm.FilterType = eCurrentFilter
frm.AndOperator = bCurrentAndOperator
@@ -236,7 +238,8 @@ Public Class frmGameManager
frm.ShowDialog()
oCurrentTagFilters = frm.TagFilters
oCurrentIncludeTagFilters = frm.IncludeTagFilters
oCurrentExcludeTagFilters = frm.ExcludeTagFilters
oCurrentFilters = frm.GameFilters
eCurrentFilter = frm.FilterType
bCurrentAndOperator = frm.AndOperator
@@ -244,14 +247,15 @@ Public Class frmGameManager
sCurrentSortField = frm.SortField
End If
Else
oCurrentTagFilters.Clear()
oCurrentIncludeTagFilters.Clear()
oCurrentExcludeTagFilters.Clear()
oCurrentFilters.Clear()
eCurrentFilter = frmFilter.eFilterType.BaseFilter
bCurrentSortAsc = True
sCurrentSortField = "Name"
End If
GameData = mgrMonitorList.ReadFilteredList(oCurrentTagFilters, oCurrentFilters, eCurrentFilter, bCurrentAndOperator, bCurrentSortAsc, sCurrentSortField)
GameData = mgrMonitorList.ReadFilteredList(oCurrentIncludeTagFilters, oCurrentExcludeTagFilters, oCurrentFilters, eCurrentFilter, bCurrentAndOperator, bCurrentSortAsc, sCurrentSortField)
If optPendingRestores.Checked Then
oRestoreData = mgrRestore.CompareManifests
+80 -14
View File
@@ -500,8 +500,9 @@ 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 bAndOperator As Boolean,
ByVal bSortAsc As Boolean, ByVal sSortField As String, ByRef hshParams As Hashtable) As String
Private Shared Function BuildFilterQuery(ByVal oIncludeTagFilters As List(Of clsTag), ByVal oExcludeTagFilters 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, Comments FROM monitorlist"
@@ -517,10 +518,26 @@ Public Class mgrMonitorList
Case frmFilter.eFilterType.BaseFilter
sSQL = "SELECT " & sBaseSelect
Case frmFilter.eFilterType.AnyTag
If oExcludeTagFilters.Count > 0 And oIncludeTagFilters.Count = 0 Then
sSQL = "SELECT " & sBaseSelect
sSQL &= " WHERE MonitorID NOT IN (SELECT MonitorID FROM monitorlist NATURAL JOIN gametags WHERE gametags.TagID IN ("
For Each oTag As clsTag In oExcludeTagFilters
sSQL &= "@TagID" & iCounter & ","
hshParams.Add("TagID" & iCounter, oTag.ID)
iCounter += 1
Next
sSQL = sSQL.TrimEnd(",")
sSQL &= "))"
Else
sSQL = "SELECT DISTINCT " & sBaseSelect
sSQL &= " NATURAL JOIN gametags WHERE gametags.TagID IN ("
For Each oTag As clsTag In oTagFilters
For Each oTag As clsTag In oIncludeTagFilters
sSQL &= "@TagID" & iCounter & ","
hshParams.Add("TagID" & iCounter, oTag.ID)
iCounter += 1
@@ -528,17 +545,60 @@ Public Class mgrMonitorList
sSQL = sSQL.TrimEnd(",")
sSQL &= ")"
Case frmFilter.eFilterType.AllTags
sSQL = "SELECT " & sBaseSelect & " WHERE MonitorID IN "
For Each oTag As clsTag In oTagFilters
If oExcludeTagFilters.Count > 0 Then
sSQL &= " AND MonitorID NOT IN (SELECT MonitorID FROM monitorlist NATURAL JOIN gametags WHERE gametags.TagID IN ("
For Each oTag As clsTag In oExcludeTagFilters
sSQL &= "@TagID" & iCounter & ","
hshParams.Add("TagID" & iCounter, oTag.ID)
iCounter += 1
Next
sSQL = sSQL.TrimEnd(",")
sSQL &= "))"
End If
End If
Case frmFilter.eFilterType.AllTags
If oExcludeTagFilters.Count > 0 And oIncludeTagFilters.Count = 0 Then
sSQL = "SELECT " & sBaseSelect & " WHERE MonitorID NOT IN "
For Each oTag As clsTag In oExcludeTagFilters
sSQL &= "(SELECT MonitorID FROM gametags WHERE monitorlist.MonitorID = gametags.MonitorID And TagID = @TagID" & iCounter & ")"
If iCounter <> oTagFilters.Count - 1 Then
If iCounter <> oExcludeTagFilters.Count - 1 Then
sSQL &= " AND MonitorID IN "
End If
hshParams.Add("TagID" & iCounter, oTag.ID)
iCounter += 1
Next
Else
sSQL = "SELECT " & sBaseSelect & " WHERE MonitorID IN "
For Each oTag As clsTag In oIncludeTagFilters
sSQL &= "(SELECT MonitorID FROM gametags WHERE monitorlist.MonitorID = gametags.MonitorID And TagID = @TagID" & iCounter & ")"
If iCounter <> oIncludeTagFilters.Count - 1 Then
sSQL &= " AND MonitorID IN "
End If
hshParams.Add("TagID" & iCounter, oTag.ID)
iCounter += 1
Next
If oExcludeTagFilters.Count > 0 Then
sSQL &= " AND MonitorID NOT IN (SELECT MonitorID FROM monitorlist NATURAL JOIN gametags WHERE gametags.TagID IN ("
For Each oTag As clsTag In oExcludeTagFilters
sSQL &= "@TagID" & iCounter & ","
hshParams.Add("TagID" & iCounter, oTag.ID)
iCounter += 1
Next
sSQL = sSQL.TrimEnd(",")
sSQL &= "))"
End If
End If
Case frmFilter.eFilterType.NoTags
sSQL = "SELECT " & sBaseSelect & " WHERE MonitorID NOT IN (SELECT MonitorID FROM gametags)"
End Select
@@ -553,6 +613,10 @@ Public Class mgrMonitorList
iCounter = 0
For Each oFilter As clsGameFilter In oFilters
If oFilter.NotCondition Then
sSQL &= " NOT "
End If
Select Case oFilter.Field.Type
Case clsGameFilterField.eDataType.fString
sSQL &= oFilter.Field.FieldName & " LIKE @" & oFilter.ID
@@ -584,7 +648,7 @@ 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 bAndOperator As Boolean,
Public Shared Function ReadFilteredList(ByVal oIncludeTagFilters As List(Of clsTag), ByVal oExcludeTagFilters 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
@@ -594,7 +658,7 @@ Public Class mgrMonitorList
Dim hshParams As New Hashtable
Dim iCounter As Integer = 0
sSQL = BuildFilterQuery(oTagFilters, oFilters, eFilterType, bAndOperator, bSortAsc, sSortField, hshParams)
sSQL = BuildFilterQuery(oIncludeTagFilters, oExcludeTagFilters, oFilters, eFilterType, bAndOperator, bSortAsc, sSortField, hshParams)
oData = oDatabase.ReadParamData(sSQL, hshParams)
@@ -609,7 +673,7 @@ 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 bAndOperator As Boolean,
Public Shared Function ReadListForExport(ByVal oIncludeTagFilters As List(Of clsTag), ByVal oExcludeTagFilters 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
@@ -619,7 +683,7 @@ Public Class mgrMonitorList
Dim oGame As Game
Dim hshParams As New Hashtable
sSQL = BuildFilterQuery(oTagFilters, oFilters, eFilterType, bAndOperator, bSortAsc, sSortField, hshParams)
sSQL = BuildFilterQuery(oIncludeTagFilters, oExcludeTagFilters, oFilters, eFilterType, bAndOperator, bSortAsc, sSortField, hshParams)
oData = oDatabase.ReadParamData(sSQL, hshParams)
@@ -713,7 +777,8 @@ Public Class mgrMonitorList
Public Shared Sub ExportMonitorList(ByVal sLocation As String)
Dim oList As List(Of Game)
Dim bSuccess As Boolean = False
Dim oTagFilters As New List(Of clsTag)
Dim oIncludeTagFilters As New List(Of clsTag)
Dim oExcludeTagFilters 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
@@ -723,7 +788,8 @@ Public Class mgrMonitorList
If mgrCommon.ShowMessage(mgrMonitorList_ConfirmApplyFilter, MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
Dim frm As New frmFilter
frm.ShowDialog()
oTagFilters = frm.TagFilters
oIncludeTagFilters = frm.IncludeTagFilters
oExcludeTagFilters = frm.ExcludeTagFilters
oFilters = frm.GameFilters
eCurrentFilter = frm.FilterType
bAndOperator = frm.AndOperator
@@ -731,7 +797,7 @@ Public Class mgrMonitorList
sSortField = frm.SortField
End If
oList = ReadListForExport(oTagFilters, oFilters, eCurrentFilter, bAndOperator, bSortAsc, sSortField)
oList = ReadListForExport(oIncludeTagFilters, oExcludeTagFilters, oFilters, eCurrentFilter, bAndOperator, bSortAsc, sSortField)
bSuccess = mgrXML.SerializeAndExport(oList, sLocation)
+54 -18
View File
@@ -915,15 +915,6 @@ Namespace My.Resources
End Get
End Property
'''<summary>
''' Looks up a localized string similar to &gt;.
'''</summary>
Friend ReadOnly Property frmFilter_btnAdd() As String
Get
Return ResourceManager.GetString("frmFilter_btnAdd", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Add.
'''</summary>
@@ -934,20 +925,47 @@ Namespace My.Resources
End Property
'''<summary>
''' Looks up a localized string similar to &amp;OK.
''' Looks up a localized string similar to &gt;.
'''</summary>
Friend ReadOnly Property frmFilter_btnOK() As String
Friend ReadOnly Property frmFilter_btnExcludeAdd() As String
Get
Return ResourceManager.GetString("frmFilter_btnOK", resourceCulture)
Return ResourceManager.GetString("frmFilter_btnExcludeAdd", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to &lt;.
'''</summary>
Friend ReadOnly Property frmFilter_btnRemove() As String
Friend ReadOnly Property frmFilter_btnExcludeRemove() As String
Get
Return ResourceManager.GetString("frmFilter_btnRemove", resourceCulture)
Return ResourceManager.GetString("frmFilter_btnExcludeRemove", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to &lt;.
'''</summary>
Friend ReadOnly Property frmFilter_btnIncludeAdd() As String
Get
Return ResourceManager.GetString("frmFilter_btnIncludeAdd", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to &gt;.
'''</summary>
Friend ReadOnly Property frmFilter_btnIncludeRemove() As String
Get
Return ResourceManager.GetString("frmFilter_btnIncludeRemove", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to &amp;OK.
'''</summary>
Friend ReadOnly Property frmFilter_btnOK() As String
Get
Return ResourceManager.GetString("frmFilter_btnOK", resourceCulture)
End Get
End Property
@@ -1195,7 +1213,7 @@ Namespace My.Resources
End Property
'''<summary>
''' Looks up a localized string similar to Options.
''' Looks up a localized string similar to Include Options.
'''</summary>
Friend ReadOnly Property frmFilter_grpTagOptions() As String
Get
@@ -1212,6 +1230,15 @@ Namespace My.Resources
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Exclude Tags.
'''</summary>
Friend ReadOnly Property frmFilter_lblExcludeTags() As String
Get
Return ResourceManager.GetString("frmFilter_lblExcludeTags", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Available Fields.
'''</summary>
@@ -1231,11 +1258,20 @@ Namespace My.Resources
End Property
'''<summary>
''' Looks up a localized string similar to Current Filter.
''' Looks up a localized string similar to Include Tags.
'''</summary>
Friend ReadOnly Property frmFilter_lblGameTags() As String
Friend ReadOnly Property frmFilter_lblIncludeTags() As String
Get
Return ResourceManager.GetString("frmFilter_lblGameTags", resourceCulture)
Return ResourceManager.GetString("frmFilter_lblIncludeTags", resourceCulture)
End Get
End Property
'''<summary>
''' Looks up a localized string similar to Not.
'''</summary>
Friend ReadOnly Property frmFilter_lblNot() As String
Get
Return ResourceManager.GetString("frmFilter_lblNot", resourceCulture)
End Get
End Property
+19 -7
View File
@@ -883,20 +883,20 @@
<data name="frmFileFolderSearch_SwitchDrives" xml:space="preserve">
<value>Do you wish to search the [PARAM] drive?</value>
</data>
<data name="frmFilter_btnAdd" xml:space="preserve">
<value>&gt;</value>
<data name="frmFilter_btnIncludeAdd" xml:space="preserve">
<value>&lt;</value>
</data>
<data name="frmFilter_btnOK" xml:space="preserve">
<value>&amp;OK</value>
</data>
<data name="frmFilter_btnRemove" xml:space="preserve">
<value>&lt;</value>
<data name="frmFilter_btnIncludeRemove" xml:space="preserve">
<value>&gt;</value>
</data>
<data name="frmFilter_FormName" xml:space="preserve">
<value>Custom Filter</value>
</data>
<data name="frmFilter_lblGameTags" xml:space="preserve">
<value>Current Filter</value>
<data name="frmFilter_lblIncludeTags" xml:space="preserve">
<value>Include Tags</value>
</data>
<data name="frmFilter_lblTags" xml:space="preserve">
<value>Available Tags</value>
@@ -1010,7 +1010,7 @@
<value>Filter Type</value>
</data>
<data name="frmFilter_grpTagOptions" xml:space="preserve">
<value>Options</value>
<value>Include Options</value>
</data>
<data name="frmGameManager_grpConfig" xml:space="preserve">
<value>Configuration</value>
@@ -1888,4 +1888,16 @@
<data name="frmFilter_FieldComments" xml:space="preserve">
<value>Comments</value>
</data>
<data name="frmFilter_btnExcludeAdd" xml:space="preserve">
<value>&gt;</value>
</data>
<data name="frmFilter_btnExcludeRemove" xml:space="preserve">
<value>&lt;</value>
</data>
<data name="frmFilter_lblExcludeTags" xml:space="preserve">
<value>Exclude Tags</value>
</data>
<data name="frmFilter_lblNot" xml:space="preserve">
<value>Not</value>
</data>
</root>