Added filtering by tags
This commit is contained in:
Generated
+126
@@ -0,0 +1,126 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class frmFilter
|
||||
Inherits System.Windows.Forms.Form
|
||||
|
||||
'Form overrides dispose to clean up the component list.
|
||||
<System.Diagnostics.DebuggerNonUserCode()> _
|
||||
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
|
||||
Try
|
||||
If disposing AndAlso components IsNot Nothing Then
|
||||
components.Dispose()
|
||||
End If
|
||||
Finally
|
||||
MyBase.Dispose(disposing)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Required by the Windows Form Designer
|
||||
Private components As System.ComponentModel.IContainer
|
||||
|
||||
'NOTE: The following procedure is required by the Windows Form Designer
|
||||
'It can be modified using the Windows Form Designer.
|
||||
'Do not modify it using the code editor.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Me.btnOK = New System.Windows.Forms.Button()
|
||||
Me.lblGameTags = 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.lstFilter = New System.Windows.Forms.ListBox()
|
||||
Me.lstTags = New System.Windows.Forms.ListBox()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'btnOK
|
||||
'
|
||||
Me.btnOK.Location = New System.Drawing.Point(297, 229)
|
||||
Me.btnOK.Name = "btnOK"
|
||||
Me.btnOK.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnOK.TabIndex = 13
|
||||
Me.btnOK.Text = "&OK"
|
||||
Me.btnOK.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lblGameTags
|
||||
'
|
||||
Me.lblGameTags.AutoSize = True
|
||||
Me.lblGameTags.Location = New System.Drawing.Point(263, 8)
|
||||
Me.lblGameTags.Name = "lblGameTags"
|
||||
Me.lblGameTags.Size = New System.Drawing.Size(66, 13)
|
||||
Me.lblGameTags.TabIndex = 6
|
||||
Me.lblGameTags.Text = "Current Filter"
|
||||
'
|
||||
'lblTags
|
||||
'
|
||||
Me.lblTags.AutoSize = True
|
||||
Me.lblTags.Location = New System.Drawing.Point(49, 8)
|
||||
Me.lblTags.Name = "lblTags"
|
||||
Me.lblTags.Size = New System.Drawing.Size(77, 13)
|
||||
Me.lblTags.TabIndex = 7
|
||||
Me.lblTags.Text = "Available Tags"
|
||||
'
|
||||
'btnRemove
|
||||
'
|
||||
Me.btnRemove.Location = New System.Drawing.Point(168, 114)
|
||||
Me.btnRemove.Name = "btnRemove"
|
||||
Me.btnRemove.Size = New System.Drawing.Size(48, 23)
|
||||
Me.btnRemove.TabIndex = 10
|
||||
Me.btnRemove.Text = "< <"
|
||||
Me.btnRemove.UseVisualStyleBackColor = True
|
||||
'
|
||||
'btnAdd
|
||||
'
|
||||
Me.btnAdd.Location = New System.Drawing.Point(168, 85)
|
||||
Me.btnAdd.Name = "btnAdd"
|
||||
Me.btnAdd.Size = New System.Drawing.Size(48, 23)
|
||||
Me.btnAdd.TabIndex = 9
|
||||
Me.btnAdd.Text = "> >"
|
||||
Me.btnAdd.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lstFilter
|
||||
'
|
||||
Me.lstFilter.FormattingEnabled = True
|
||||
Me.lstFilter.Location = New System.Drawing.Point(222, 24)
|
||||
Me.lstFilter.Name = "lstFilter"
|
||||
Me.lstFilter.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended
|
||||
Me.lstFilter.Size = New System.Drawing.Size(150, 199)
|
||||
Me.lstFilter.TabIndex = 11
|
||||
'
|
||||
'lstTags
|
||||
'
|
||||
Me.lstTags.FormattingEnabled = True
|
||||
Me.lstTags.Location = New System.Drawing.Point(12, 24)
|
||||
Me.lstTags.Name = "lstTags"
|
||||
Me.lstTags.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended
|
||||
Me.lstTags.Size = New System.Drawing.Size(150, 199)
|
||||
Me.lstTags.TabIndex = 8
|
||||
'
|
||||
'frmFilter
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(384, 261)
|
||||
Me.Controls.Add(Me.btnOK)
|
||||
Me.Controls.Add(Me.lblGameTags)
|
||||
Me.Controls.Add(Me.lblTags)
|
||||
Me.Controls.Add(Me.btnRemove)
|
||||
Me.Controls.Add(Me.btnAdd)
|
||||
Me.Controls.Add(Me.lstFilter)
|
||||
Me.Controls.Add(Me.lstTags)
|
||||
Me.MaximizeBox = False
|
||||
Me.MinimizeBox = False
|
||||
Me.Name = "frmFilter"
|
||||
Me.ShowIcon = False
|
||||
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
|
||||
Me.Text = "Filter by Tags"
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
Friend WithEvents btnOK As System.Windows.Forms.Button
|
||||
Friend WithEvents lblGameTags 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 lstFilter As System.Windows.Forms.ListBox
|
||||
Friend WithEvents lstTags As System.Windows.Forms.ListBox
|
||||
End Class
|
||||
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -0,0 +1,119 @@
|
||||
Public Class frmFilter
|
||||
|
||||
Dim oFilters As New List(Of clsTag)
|
||||
Dim hshTags As New Hashtable
|
||||
Dim bShutdown As Boolean = False
|
||||
|
||||
Public Property Filters As List(Of clsTag)
|
||||
Get
|
||||
Return oFilters
|
||||
End Get
|
||||
Set(value As List(Of clsTag))
|
||||
oFilters = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private Sub AddTag()
|
||||
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)
|
||||
lstFilter.Items.Add(oData)
|
||||
lstTags.Items.Remove(oData)
|
||||
ElseIf lstTags.SelectedItems.Count > 1 Then
|
||||
oTags = New List(Of KeyValuePair(Of String, String))
|
||||
|
||||
For Each oData In lstTags.SelectedItems
|
||||
oTags.Add(oData)
|
||||
Next
|
||||
|
||||
For Each kp As KeyValuePair(Of String, String) In oTags
|
||||
lstFilter.Items.Add(kp)
|
||||
lstTags.Items.Remove(kp)
|
||||
Next
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub RemoveTag()
|
||||
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)
|
||||
lstTags.Items.Add(oData)
|
||||
ElseIf lstFilter.SelectedItems.Count > 1 Then
|
||||
oTags = New List(Of KeyValuePair(Of String, String))
|
||||
|
||||
For Each oData In lstFilter.SelectedItems
|
||||
oTags.Add(oData)
|
||||
Next
|
||||
|
||||
For Each kp As KeyValuePair(Of String, String) In oTags
|
||||
lstFilter.Items.Remove(kp)
|
||||
lstTags.Items.Add(kp)
|
||||
Next
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub LoadData()
|
||||
Dim oTag As clsTag
|
||||
Dim oData As KeyValuePair(Of String, String)
|
||||
|
||||
'Handle Data
|
||||
hshTags = mgrTags.ReadTags()
|
||||
|
||||
'Handle Lists
|
||||
lstTags.Items.Clear()
|
||||
lstFilter.Items.Clear()
|
||||
|
||||
lstTags.ValueMember = "Key"
|
||||
lstTags.DisplayMember = "Value"
|
||||
lstFilter.ValueMember = "Key"
|
||||
lstFilter.DisplayMember = "Value"
|
||||
|
||||
For Each de As DictionaryEntry In hshTags
|
||||
oTag = DirectCast(de.Value, clsTag)
|
||||
oData = New KeyValuePair(Of String, String)(oTag.ID, oTag.Name)
|
||||
lstTags.Items.Add(oData)
|
||||
Next
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub GetFilters()
|
||||
Dim oData As KeyValuePair(Of String, String)
|
||||
Dim oTag As clsTag
|
||||
|
||||
For Each oData In lstFilter.Items
|
||||
oTag = DirectCast(hshTags(oData.Value), clsTag)
|
||||
Filters.Add(oTag)
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Private Sub frmGameTags_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
||||
LoadData()
|
||||
End Sub
|
||||
|
||||
Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
|
||||
GetFilters()
|
||||
bShutdown = True
|
||||
Me.close
|
||||
End Sub
|
||||
|
||||
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
|
||||
AddTag()
|
||||
End Sub
|
||||
|
||||
Private Sub btnRemove_Click(sender As Object, e As EventArgs) Handles btnRemove.Click
|
||||
RemoveTag()
|
||||
End Sub
|
||||
|
||||
Private Sub frmFilter_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
|
||||
If Not bShutdown Then
|
||||
e.Cancel = True
|
||||
End If
|
||||
End Sub
|
||||
End Class
|
||||
Generated
+27
-13
@@ -45,7 +45,6 @@ Partial Class frmGameManager
|
||||
Me.chkMonitorOnly = New System.Windows.Forms.CheckBox()
|
||||
Me.grpExtra = New System.Windows.Forms.GroupBox()
|
||||
Me.lblTags = New System.Windows.Forms.Label()
|
||||
Me.btnTags = New System.Windows.Forms.Button()
|
||||
Me.btnIconBrowse = New System.Windows.Forms.Button()
|
||||
Me.txtIcon = New System.Windows.Forms.TextBox()
|
||||
Me.lblVersion = New System.Windows.Forms.Label()
|
||||
@@ -59,6 +58,7 @@ Partial Class frmGameManager
|
||||
Me.txtAppPath = New System.Windows.Forms.TextBox()
|
||||
Me.nudHours = New System.Windows.Forms.NumericUpDown()
|
||||
Me.lblHours = New System.Windows.Forms.Label()
|
||||
Me.btnTags = New System.Windows.Forms.Button()
|
||||
Me.grpStats = New System.Windows.Forms.GroupBox()
|
||||
Me.btnOpenRestorePath = New System.Windows.Forms.Button()
|
||||
Me.btnOpenBackupFile = New System.Windows.Forms.Button()
|
||||
@@ -77,6 +77,7 @@ Partial Class frmGameManager
|
||||
Me.btnCancel = New System.Windows.Forms.Button()
|
||||
Me.chkEnabled = New System.Windows.Forms.CheckBox()
|
||||
Me.grpFilter = New System.Windows.Forms.GroupBox()
|
||||
Me.optTag = New System.Windows.Forms.RadioButton()
|
||||
Me.optBackupData = New System.Windows.Forms.RadioButton()
|
||||
Me.optPendingRestores = New System.Windows.Forms.RadioButton()
|
||||
Me.optAllGames = New System.Windows.Forms.RadioButton()
|
||||
@@ -329,15 +330,6 @@ Partial Class frmGameManager
|
||||
Me.lblTags.Text = "#Tags"
|
||||
Me.lblTags.TextAlign = System.Drawing.ContentAlignment.MiddleRight
|
||||
'
|
||||
'btnTags
|
||||
'
|
||||
Me.btnTags.Location = New System.Drawing.Point(535, 360)
|
||||
Me.btnTags.Name = "btnTags"
|
||||
Me.btnTags.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnTags.TabIndex = 22
|
||||
Me.btnTags.Text = "Tags..."
|
||||
Me.btnTags.UseVisualStyleBackColor = True
|
||||
'
|
||||
'btnIconBrowse
|
||||
'
|
||||
Me.btnIconBrowse.Location = New System.Drawing.Point(444, 96)
|
||||
@@ -449,6 +441,15 @@ Partial Class frmGameManager
|
||||
Me.lblHours.TabIndex = 0
|
||||
Me.lblHours.Text = "Hours:"
|
||||
'
|
||||
'btnTags
|
||||
'
|
||||
Me.btnTags.Location = New System.Drawing.Point(535, 360)
|
||||
Me.btnTags.Name = "btnTags"
|
||||
Me.btnTags.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnTags.TabIndex = 22
|
||||
Me.btnTags.Text = "Tags..."
|
||||
Me.btnTags.UseVisualStyleBackColor = True
|
||||
'
|
||||
'grpStats
|
||||
'
|
||||
Me.grpStats.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
@@ -596,10 +597,10 @@ Partial Class frmGameManager
|
||||
'lstGames
|
||||
'
|
||||
Me.lstGames.FormattingEnabled = True
|
||||
Me.lstGames.Location = New System.Drawing.Point(12, 112)
|
||||
Me.lstGames.Location = New System.Drawing.Point(12, 138)
|
||||
Me.lstGames.Name = "lstGames"
|
||||
Me.lstGames.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended
|
||||
Me.lstGames.Size = New System.Drawing.Size(220, 407)
|
||||
Me.lstGames.Size = New System.Drawing.Size(220, 381)
|
||||
Me.lstGames.Sorted = True
|
||||
Me.lstGames.TabIndex = 1
|
||||
'
|
||||
@@ -625,16 +626,28 @@ Partial Class frmGameManager
|
||||
'
|
||||
'grpFilter
|
||||
'
|
||||
Me.grpFilter.Controls.Add(Me.optTag)
|
||||
Me.grpFilter.Controls.Add(Me.optBackupData)
|
||||
Me.grpFilter.Controls.Add(Me.optPendingRestores)
|
||||
Me.grpFilter.Controls.Add(Me.optAllGames)
|
||||
Me.grpFilter.Location = New System.Drawing.Point(12, 12)
|
||||
Me.grpFilter.Name = "grpFilter"
|
||||
Me.grpFilter.Size = New System.Drawing.Size(220, 91)
|
||||
Me.grpFilter.Size = New System.Drawing.Size(220, 113)
|
||||
Me.grpFilter.TabIndex = 0
|
||||
Me.grpFilter.TabStop = False
|
||||
Me.grpFilter.Text = "Games Filter"
|
||||
'
|
||||
'optTag
|
||||
'
|
||||
Me.optTag.AutoSize = True
|
||||
Me.optTag.Location = New System.Drawing.Point(6, 87)
|
||||
Me.optTag.Name = "optTag"
|
||||
Me.optTag.Size = New System.Drawing.Size(49, 17)
|
||||
Me.optTag.TabIndex = 3
|
||||
Me.optTag.TabStop = True
|
||||
Me.optTag.Text = "Tags"
|
||||
Me.optTag.UseVisualStyleBackColor = True
|
||||
'
|
||||
'optBackupData
|
||||
'
|
||||
Me.optBackupData.AutoSize = True
|
||||
@@ -768,4 +781,5 @@ Partial Class frmGameManager
|
||||
Friend WithEvents btnOpenRestorePath As System.Windows.Forms.Button
|
||||
Friend WithEvents btnTags As System.Windows.Forms.Button
|
||||
Friend WithEvents lblTags As System.Windows.Forms.Label
|
||||
Friend WithEvents optTag As System.Windows.Forms.RadioButton
|
||||
End Class
|
||||
|
||||
@@ -205,8 +205,16 @@ Public Class frmGameManager
|
||||
Dim oRestoreData As New SortedList
|
||||
Dim oGame As clsGame
|
||||
Dim oBackup As clsBackup
|
||||
Dim frm As frmFilter
|
||||
Dim oFilters As New List(Of clsTag)
|
||||
|
||||
AppData = mgrMonitorList.ReadList(mgrMonitorList.eListTypes.ListByKey)
|
||||
If optTag.Checked Then
|
||||
frm = New frmFilter
|
||||
frm.ShowDialog()
|
||||
oFilters = frm.Filters
|
||||
End If
|
||||
|
||||
AppData = mgrMonitorList.ReadFilteredList(oFilters)
|
||||
|
||||
If optPendingRestores.Checked Then
|
||||
oRestoreData = mgrRestore.CompareManifests
|
||||
@@ -1182,7 +1190,7 @@ Public Class frmGameManager
|
||||
TriggerSelectedRestore()
|
||||
End Sub
|
||||
|
||||
Private Sub optGamesFilter_CheckedChanged(sender As Object, e As EventArgs) Handles optPendingRestores.CheckedChanged, optAllGames.CheckedChanged
|
||||
Private Sub optGamesFilter_Click(sender As Object, e As EventArgs) Handles optPendingRestores.Click, optAllGames.Click, optBackupData.Click, optTag.Click
|
||||
lstGames.ClearSelected()
|
||||
eCurrentMode = eModes.Disabled
|
||||
ModeChange()
|
||||
|
||||
@@ -542,7 +542,10 @@ Public Class frmMain
|
||||
|
||||
Private Sub OpenTags()
|
||||
Dim frm As New frmTags
|
||||
PauseScan()
|
||||
frm.ShowDialog()
|
||||
If oSettings.Sync Then mgrMonitorList.SyncMonitorLists()
|
||||
ResumeScan()
|
||||
End Sub
|
||||
|
||||
Private Sub OpenGameManager(Optional ByVal bPendingRestores As Boolean = False)
|
||||
@@ -555,7 +558,7 @@ Public Class frmMain
|
||||
If oSettings.Sync Then mgrMonitorList.SyncMonitorLists()
|
||||
ResumeScan()
|
||||
|
||||
'Handle manual backup trigger
|
||||
'Handle backup trigger
|
||||
If frm.TriggerBackup Then
|
||||
RunManualBackup(frm.BackupList)
|
||||
End If
|
||||
@@ -1128,7 +1131,7 @@ Public Class frmMain
|
||||
|
||||
If slItems.Count > 0 Then
|
||||
For Each oItem As clsBackup In slItems.Values
|
||||
UpdateLog("[Sync Notifier] " & oItem.Name & " entry removed from local manfiest.", False)
|
||||
UpdateLog(oItem.Name & " entry removed from local manfiest.", False)
|
||||
Next
|
||||
MsgBox(slItems.Count & " entries removed from the local manifest.")
|
||||
Else
|
||||
|
||||
@@ -126,6 +126,12 @@
|
||||
<Compile Include="Forms\frmAdvancedImport.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\frmFilter.Designer.vb">
|
||||
<DependentUpon>frmFilter.vb</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\frmFilter.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\frmGameManager.Designer.vb">
|
||||
<DependentUpon>frmGameManager.vb</DependentUpon>
|
||||
</Compile>
|
||||
@@ -221,6 +227,9 @@
|
||||
<EmbeddedResource Include="Forms\frmAdvancedImport.resx">
|
||||
<DependentUpon>frmAdvancedImport.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\frmFilter.resx">
|
||||
<DependentUpon>frmFilter.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\frmGameManager.resx">
|
||||
<DependentUpon>frmGameManager.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
||||
@@ -5,7 +5,6 @@ Public Class mgrMonitorList
|
||||
Public Enum eListTypes As Integer
|
||||
FullList = 1
|
||||
ScanList = 2
|
||||
ListByKey = 3
|
||||
End Enum
|
||||
|
||||
Public Shared Event UpdateLog(sLogUpdate As String, bTrayUpdate As Boolean, objIcon As System.Windows.Forms.ToolTipIcon, bTimeStamp As Boolean)
|
||||
@@ -40,16 +39,17 @@ Public Class mgrMonitorList
|
||||
End Sub
|
||||
|
||||
Public Shared Sub ExportMonitorList(ByVal sLocation As String)
|
||||
'Dim hshList As Hashtable = ReadList(eListTypes.FullList, mgrSQLite.Database.Local)
|
||||
'Dim bSuccess As Boolean
|
||||
'bSuccess = mgrXML.ExportMonitorList(hshList, sLocation)
|
||||
Dim frm As New frmFilter
|
||||
Dim oList As List(Of Game)
|
||||
Dim bSuccess As Boolean = False
|
||||
|
||||
frm.ShowDialog()
|
||||
oList = ReadListForExport(frm.Filters)
|
||||
|
||||
Dim oList As List(Of Game) = ReadListForExport()
|
||||
Dim bSuccess As Boolean
|
||||
bSuccess = mgrXML.SerializeAndExport(oList, sLocation)
|
||||
|
||||
|
||||
If bSuccess Then
|
||||
MsgBox("Export Complete. " & oList.Count & " entries have been exported.", MsgBoxStyle.Information, "Game Backup Monitor")
|
||||
MsgBox("Export Complete. " & oList.Count & " item(s) have been exported.", MsgBoxStyle.Information, "Game Backup Monitor")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
@@ -255,6 +255,59 @@ Public Class mgrMonitorList
|
||||
Return True
|
||||
End Function
|
||||
|
||||
|
||||
Public Shared Function ReadFilteredList(ByVal oFilters As List(Of clsTag), Optional ByVal iSelectDB As mgrSQLite.Database = mgrSQLite.Database.Local) As Hashtable
|
||||
Dim oDatabase As New mgrSQLite(iSelectDB)
|
||||
Dim oData As DataSet
|
||||
Dim sSQL As String
|
||||
Dim hshList As New Hashtable
|
||||
Dim oGame As clsGame
|
||||
Dim hshParams As New Hashtable
|
||||
Dim iCounter As Integer = 0
|
||||
|
||||
If oFilters.Count > 0 Then
|
||||
sSQL = "SELECT DISTINCT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly FROM monitorlist "
|
||||
sSQL &= "NATURAL JOIN gametags WHERE gametags.TagID IN ("
|
||||
|
||||
For Each oTag As clsTag In oFilters
|
||||
sSQL &= "@TagID" & iCounter & ","
|
||||
hshParams.Add("TagID" & iCounter, oTag.ID)
|
||||
iCounter += 1
|
||||
Next
|
||||
|
||||
sSQL = sSQL.TrimEnd(",")
|
||||
sSQL &= ") ORDER BY Name Asc"
|
||||
Else
|
||||
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly FROM monitorlist ORDER BY Name Asc"
|
||||
End If
|
||||
|
||||
oData = oDatabase.ReadParamData(sSQL, hshParams)
|
||||
|
||||
For Each dr As DataRow In oData.Tables(0).Rows
|
||||
oGame = New clsGame
|
||||
oGame.ID = CStr(dr(0))
|
||||
oGame.Name = CStr(dr(1))
|
||||
oGame.ProcessName = CStr(dr(2))
|
||||
If Not IsDBNull(dr(3)) Then oGame.Path = CStr(dr(3))
|
||||
oGame.AbsolutePath = CBool(dr(4))
|
||||
oGame.FolderSave = CBool(dr(5))
|
||||
If Not IsDBNull(dr(6)) Then oGame.FileType = CStr(dr(6))
|
||||
oGame.AppendTimeStamp = CBool(dr(7))
|
||||
If Not IsDBNull(dr(8)) Then oGame.ExcludeList = CStr(dr(8))
|
||||
If Not IsDBNull(dr(9)) Then oGame.ProcessPath = CStr(dr(9))
|
||||
If Not IsDBNull(dr(10)) Then oGame.Icon = CStr(dr(10))
|
||||
oGame.Hours = CDbl(dr(11))
|
||||
If Not IsDBNull(dr(12)) Then oGame.Version = CStr(dr(12))
|
||||
If Not IsDBNull(dr(13)) Then oGame.Company = CStr(dr(13))
|
||||
oGame.Enabled = CBool(dr(14))
|
||||
oGame.MonitorOnly = CBool(dr(15))
|
||||
|
||||
hshList.Add(oGame.ID, oGame)
|
||||
Next
|
||||
|
||||
Return hshList
|
||||
End Function
|
||||
|
||||
Public Shared Function ReadList(ByVal eListType As eListTypes, Optional ByVal iSelectDB As mgrSQLite.Database = mgrSQLite.Database.Local) As Hashtable
|
||||
Dim oDatabase As New mgrSQLite(iSelectDB)
|
||||
Dim oData As DataSet
|
||||
@@ -310,24 +363,38 @@ Public Class mgrMonitorList
|
||||
End If
|
||||
|
||||
If oGame.Enabled Then hshList.Add(oGame.ProcessName, oGame)
|
||||
Case eListTypes.ListByKey
|
||||
hshList.Add(oGame.ID, oGame)
|
||||
End Select
|
||||
Next
|
||||
|
||||
Return hshList
|
||||
End Function
|
||||
|
||||
Public Shared Function ReadListForExport(Optional ByVal iSelectDB As mgrSQLite.Database = mgrSQLite.Database.Local) As List(Of Game)
|
||||
Public Shared Function ReadListForExport(ByVal oFilters As List(Of clsTag), Optional ByVal iSelectDB As mgrSQLite.Database = mgrSQLite.Database.Local) As List(Of Game)
|
||||
Dim oDatabase As New mgrSQLite(iSelectDB)
|
||||
Dim oData As DataSet
|
||||
Dim sSQL As String
|
||||
Dim sID As String
|
||||
Dim oList As New List(Of Game)
|
||||
Dim oGame As Game
|
||||
Dim hshParams As New Hashtable
|
||||
Dim iCounter As Integer = 0
|
||||
|
||||
sSQL = "SELECT * from monitorlist ORDER BY Name Asc"
|
||||
oData = oDatabase.ReadParamData(sSQL, New Hashtable)
|
||||
If oFilters.Count > 0 Then
|
||||
sSQL = "SELECT DISTINCT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, ExcludeList FROM monitorlist NATURAL JOIN gametags WHERE gametags.TagID IN ("
|
||||
|
||||
For Each oTag As clsTag In oFilters
|
||||
sSQL &= "@TagID" & iCounter & ","
|
||||
hshParams.Add("TagID" & iCounter, oTag.ID)
|
||||
iCounter += 1
|
||||
Next
|
||||
|
||||
sSQL = sSQL.TrimEnd(",")
|
||||
sSQL &= ") ORDER BY Name Asc"
|
||||
Else
|
||||
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, ExcludeList from monitorlist ORDER BY Name Asc"
|
||||
End If
|
||||
|
||||
oData = oDatabase.ReadParamData(sSQL, hshParams)
|
||||
|
||||
For Each dr As DataRow In oData.Tables(0).Rows
|
||||
oGame = New Game
|
||||
@@ -338,7 +405,7 @@ Public Class mgrMonitorList
|
||||
oGame.AbsolutePath = CBool(dr(4))
|
||||
oGame.FolderSave = CBool(dr(5))
|
||||
If Not IsDBNull(dr(6)) Then oGame.FileType = CStr(dr(6))
|
||||
If Not IsDBNull(dr(8)) Then oGame.ExcludeList = CStr(dr(8))
|
||||
If Not IsDBNull(dr(7)) Then oGame.ExcludeList = CStr(dr(7))
|
||||
oGame.Tags = mgrGameTags.GetTagsByGameForExport(sID)
|
||||
oList.Add(oGame)
|
||||
Next
|
||||
|
||||
@@ -164,7 +164,7 @@
|
||||
Dim hshParams As Hashtable
|
||||
Dim oParamList As New List(Of Hashtable)
|
||||
|
||||
sSQL = "INSERT OR REPLACE INTO tags VALUES (COALESCE((SELECT TagID FROM tags WHERE Name = @Name), @ID), @Name);"
|
||||
sSQL = "INSERT OR REPLACE INTO tags VALUES (@ID, @Name);"
|
||||
|
||||
For Each oTag As clsTag In hshTags.Values
|
||||
hshParams = New Hashtable
|
||||
|
||||
@@ -83,6 +83,8 @@ Public Class mgrXML
|
||||
oSerializer = New XmlSerializer(oList.GetType(), New XmlRootAttribute("gbm"))
|
||||
oWriter = New StreamWriter(sLocation)
|
||||
oSerializer.Serialize(oWriter.BaseStream, oList)
|
||||
oWriter.Flush()
|
||||
oWriter.Close()
|
||||
Return True
|
||||
Catch ex As Exception
|
||||
MsgBox("An error occured exporting the XML data." & vbCrLf & vbCrLf & ex.Message, MsgBoxStyle.Exclamation, "Game Backup Monitor")
|
||||
|
||||
Reference in New Issue
Block a user