Add tagging support for games
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
Public Class clsGameTag
|
||||
Private sTagID As String = String.Empty
|
||||
Private sMonitorID As String = String.Empty
|
||||
|
||||
Property TagID As String
|
||||
Get
|
||||
Return sTagID
|
||||
End Get
|
||||
Set(value As String)
|
||||
sTagID = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Property MonitorID As String
|
||||
Get
|
||||
Return sMonitorID
|
||||
End Get
|
||||
Set(value As String)
|
||||
sMonitorID = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
End Class
|
||||
@@ -0,0 +1,23 @@
|
||||
Public Class clsTag
|
||||
Private sTagID As String = Guid.NewGuid.ToString
|
||||
Private sTagName As String = String.Empty
|
||||
|
||||
Property ID As String
|
||||
Get
|
||||
Return sTagID
|
||||
End Get
|
||||
Set(value As String)
|
||||
sTagID = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Property Name As String
|
||||
Get
|
||||
Return sTagName
|
||||
End Get
|
||||
Set(value As String)
|
||||
sTagName = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
End Class
|
||||
Generated
+36
-10
@@ -44,6 +44,8 @@ Partial Class frmGameManager
|
||||
Me.txtName = New System.Windows.Forms.TextBox()
|
||||
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()
|
||||
@@ -90,7 +92,7 @@ Partial Class frmGameManager
|
||||
'
|
||||
Me.btnAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnAdd.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.btnAdd.Location = New System.Drawing.Point(12, 528)
|
||||
Me.btnAdd.Location = New System.Drawing.Point(12, 527)
|
||||
Me.btnAdd.Name = "btnAdd"
|
||||
Me.btnAdd.Size = New System.Drawing.Size(30, 23)
|
||||
Me.btnAdd.TabIndex = 2
|
||||
@@ -101,7 +103,7 @@ Partial Class frmGameManager
|
||||
'
|
||||
Me.btnDelete.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnDelete.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.btnDelete.Location = New System.Drawing.Point(48, 528)
|
||||
Me.btnDelete.Location = New System.Drawing.Point(48, 527)
|
||||
Me.btnDelete.Name = "btnDelete"
|
||||
Me.btnDelete.Size = New System.Drawing.Size(30, 23)
|
||||
Me.btnDelete.TabIndex = 3
|
||||
@@ -111,7 +113,7 @@ Partial Class frmGameManager
|
||||
'btnBackup
|
||||
'
|
||||
Me.btnBackup.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnBackup.Location = New System.Drawing.Point(616, 527)
|
||||
Me.btnBackup.Location = New System.Drawing.Point(616, 526)
|
||||
Me.btnBackup.Name = "btnBackup"
|
||||
Me.btnBackup.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnBackup.TabIndex = 13
|
||||
@@ -121,7 +123,7 @@ Partial Class frmGameManager
|
||||
'btnClose
|
||||
'
|
||||
Me.btnClose.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnClose.Location = New System.Drawing.Point(697, 527)
|
||||
Me.btnClose.Location = New System.Drawing.Point(697, 526)
|
||||
Me.btnClose.Name = "btnClose"
|
||||
Me.btnClose.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnClose.TabIndex = 14
|
||||
@@ -295,6 +297,7 @@ Partial Class frmGameManager
|
||||
'grpExtra
|
||||
'
|
||||
Me.grpExtra.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.grpExtra.Controls.Add(Me.lblTags)
|
||||
Me.grpExtra.Controls.Add(Me.btnIconBrowse)
|
||||
Me.grpExtra.Controls.Add(Me.txtIcon)
|
||||
Me.grpExtra.Controls.Add(Me.lblVersion)
|
||||
@@ -313,7 +316,27 @@ Partial Class frmGameManager
|
||||
Me.grpExtra.Size = New System.Drawing.Size(534, 155)
|
||||
Me.grpExtra.TabIndex = 5
|
||||
Me.grpExtra.TabStop = False
|
||||
Me.grpExtra.Text = "Extra Information"
|
||||
Me.grpExtra.Text = "Game Information"
|
||||
'
|
||||
'lblTags
|
||||
'
|
||||
Me.lblTags.AutoEllipsis = True
|
||||
Me.lblTags.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.lblTags.Location = New System.Drawing.Point(163, 124)
|
||||
Me.lblTags.Name = "lblTags"
|
||||
Me.lblTags.Size = New System.Drawing.Size(311, 20)
|
||||
Me.lblTags.TabIndex = 0
|
||||
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
|
||||
'
|
||||
@@ -543,7 +566,7 @@ Partial Class frmGameManager
|
||||
'btnMarkAsRestored
|
||||
'
|
||||
Me.btnMarkAsRestored.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnMarkAsRestored.Location = New System.Drawing.Point(429, 527)
|
||||
Me.btnMarkAsRestored.Location = New System.Drawing.Point(429, 526)
|
||||
Me.btnMarkAsRestored.Name = "btnMarkAsRestored"
|
||||
Me.btnMarkAsRestored.Size = New System.Drawing.Size(100, 23)
|
||||
Me.btnMarkAsRestored.TabIndex = 11
|
||||
@@ -553,7 +576,7 @@ Partial Class frmGameManager
|
||||
'btnRestore
|
||||
'
|
||||
Me.btnRestore.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnRestore.Location = New System.Drawing.Point(535, 527)
|
||||
Me.btnRestore.Location = New System.Drawing.Point(535, 526)
|
||||
Me.btnRestore.Name = "btnRestore"
|
||||
Me.btnRestore.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnRestore.TabIndex = 12
|
||||
@@ -563,7 +586,7 @@ Partial Class frmGameManager
|
||||
'btnSave
|
||||
'
|
||||
Me.btnSave.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnSave.Location = New System.Drawing.Point(616, 361)
|
||||
Me.btnSave.Location = New System.Drawing.Point(616, 360)
|
||||
Me.btnSave.Name = "btnSave"
|
||||
Me.btnSave.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnSave.TabIndex = 8
|
||||
@@ -583,7 +606,7 @@ Partial Class frmGameManager
|
||||
'btnCancel
|
||||
'
|
||||
Me.btnCancel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnCancel.Location = New System.Drawing.Point(697, 361)
|
||||
Me.btnCancel.Location = New System.Drawing.Point(697, 360)
|
||||
Me.btnCancel.Name = "btnCancel"
|
||||
Me.btnCancel.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnCancel.TabIndex = 9
|
||||
@@ -649,8 +672,9 @@ Partial Class frmGameManager
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(784, 562)
|
||||
Me.ClientSize = New System.Drawing.Size(784, 561)
|
||||
Me.Controls.Add(Me.grpFilter)
|
||||
Me.Controls.Add(Me.btnTags)
|
||||
Me.Controls.Add(Me.chkEnabled)
|
||||
Me.Controls.Add(Me.btnCancel)
|
||||
Me.Controls.Add(Me.chkMonitorOnly)
|
||||
@@ -742,4 +766,6 @@ Partial Class frmGameManager
|
||||
Friend WithEvents optAllGames As System.Windows.Forms.RadioButton
|
||||
Friend WithEvents optBackupData As System.Windows.Forms.RadioButton
|
||||
Friend WithEvents btnOpenRestorePath As System.Windows.Forms.Button
|
||||
Friend WithEvents btnTags As System.Windows.Forms.Button
|
||||
Friend WithEvents lblTags As System.Windows.Forms.Label
|
||||
End Class
|
||||
|
||||
@@ -420,6 +420,22 @@ Public Class frmGameManager
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub OpenTags()
|
||||
Dim frm As New frmGameTags
|
||||
Dim oApp As clsGame
|
||||
Dim sMonitorIDs As New List(Of String)
|
||||
|
||||
For Each oData In lstGames.SelectedItems
|
||||
oApp = DirectCast(AppData(oData.Key), clsGame)
|
||||
sMonitorIDs.Add(oApp.ID)
|
||||
Next
|
||||
|
||||
frm.IDList = sMonitorIDs
|
||||
frm.GameName = CurrentGame.Name
|
||||
frm.ShowDialog()
|
||||
FillTags(CurrentGame.ID)
|
||||
End Sub
|
||||
|
||||
Private Sub GetBackupInfo(ByVal oApp As clsGame)
|
||||
Dim oBackupInfo As clsBackup
|
||||
Dim sFileName As String
|
||||
@@ -550,6 +566,8 @@ Public Class frmGameManager
|
||||
txtVersion.Text = oApp.Version
|
||||
txtIcon.Text = oApp.Icon
|
||||
|
||||
FillTags(oData.Key)
|
||||
|
||||
'Icon
|
||||
If IO.File.Exists(oApp.Icon) Then
|
||||
pbIcon.Image = Image.FromFile(oApp.Icon)
|
||||
@@ -573,6 +591,22 @@ Public Class frmGameManager
|
||||
IsLoading = False
|
||||
End Sub
|
||||
|
||||
Private Sub FillTags(ByVal sID As String)
|
||||
Dim hshTags As Hashtable
|
||||
Dim oTag As clsTag
|
||||
Dim sTags As String = String.Empty
|
||||
Dim cTrim() As Char = {",", " "}
|
||||
|
||||
hshTags = mgrGameTags.GetTagsByGame(sID)
|
||||
|
||||
For Each de As DictionaryEntry In hshTags
|
||||
oTag = DirectCast(de.Value, clsTag)
|
||||
sTags &= "#" & oTag.Name & ", "
|
||||
Next
|
||||
|
||||
lblTags.Text = sTags.TrimEnd(cTrim)
|
||||
End Sub
|
||||
|
||||
Private Sub DirtyCheck_ValueChanged(sender As Object, e As EventArgs)
|
||||
If Not IsLoading And Not eCurrentMode = eModes.MultiSelect Then
|
||||
IsDirty = True
|
||||
@@ -639,6 +673,8 @@ Public Class frmGameManager
|
||||
lblSync.Visible = False
|
||||
chkEnabled.Checked = True
|
||||
chkMonitorOnly.Checked = False
|
||||
btnTags.Enabled = False
|
||||
lblTags.Visible = False
|
||||
Case eModes.Edit
|
||||
grpFilter.Enabled = False
|
||||
lstGames.Enabled = False
|
||||
@@ -657,6 +693,8 @@ Public Class frmGameManager
|
||||
btnDeleteBackup.Enabled = False
|
||||
btnOpenBackupFile.Enabled = False
|
||||
btnOpenRestorePath.Enabled = False
|
||||
btnTags.Enabled = True
|
||||
lblTags.Visible = True
|
||||
Case eModes.View
|
||||
grpFilter.Enabled = True
|
||||
lstGames.Enabled = True
|
||||
@@ -670,6 +708,8 @@ Public Class frmGameManager
|
||||
btnAdd.Enabled = True
|
||||
btnDelete.Enabled = True
|
||||
btnBackup.Enabled = True
|
||||
btnTags.Enabled = True
|
||||
lblTags.Visible = True
|
||||
Case eModes.ViewTemp
|
||||
grpFilter.Enabled = True
|
||||
lstGames.Enabled = True
|
||||
@@ -683,6 +723,8 @@ Public Class frmGameManager
|
||||
btnAdd.Enabled = True
|
||||
btnDelete.Enabled = False
|
||||
btnBackup.Enabled = False
|
||||
btnTags.Enabled = False
|
||||
lblTags.Visible = False
|
||||
Case eModes.Disabled
|
||||
grpFilter.Enabled = True
|
||||
lstGames.Enabled = True
|
||||
@@ -690,6 +732,7 @@ Public Class frmGameManager
|
||||
WipeControls(grpExtra.Controls)
|
||||
WipeControls(grpStats.Controls)
|
||||
pbIcon.Image = My.Resources.Unknown
|
||||
lblTags.Text = String.Empty
|
||||
lblSync.Visible = False
|
||||
btnSave.Enabled = False
|
||||
btnCancel.Enabled = False
|
||||
@@ -703,6 +746,7 @@ Public Class frmGameManager
|
||||
btnBackup.Enabled = False
|
||||
btnRestore.Enabled = False
|
||||
btnMarkAsRestored.Enabled = False
|
||||
btnTags.Enabled = False
|
||||
Case eModes.MultiSelect
|
||||
lstGames.Enabled = True
|
||||
WipeControls(grpConfig.Controls)
|
||||
@@ -724,6 +768,7 @@ Public Class frmGameManager
|
||||
btnBackup.Enabled = True
|
||||
btnRestore.Enabled = True
|
||||
btnMarkAsRestored.Enabled = True
|
||||
btnTags.Enabled = True
|
||||
End Select
|
||||
|
||||
IsLoading = False
|
||||
@@ -1121,6 +1166,10 @@ Public Class frmGameManager
|
||||
OpenRestorePath()
|
||||
End Sub
|
||||
|
||||
Private Sub btnTags_Click(sender As Object, e As EventArgs) Handles btnTags.Click
|
||||
OpenTags()
|
||||
End Sub
|
||||
|
||||
Private Sub btnDeleteBackup_Click(sender As Object, e As EventArgs) Handles btnDeleteBackup.Click
|
||||
DeleteBackup()
|
||||
End Sub
|
||||
@@ -1140,4 +1189,5 @@ Public Class frmGameManager
|
||||
LoadData()
|
||||
End Sub
|
||||
|
||||
|
||||
End Class
|
||||
Generated
+138
@@ -0,0 +1,138 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class frmGameTags
|
||||
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.lstTags = New System.Windows.Forms.ListBox()
|
||||
Me.lstGameTags = New System.Windows.Forms.ListBox()
|
||||
Me.btnAdd = New System.Windows.Forms.Button()
|
||||
Me.btnRemove = New System.Windows.Forms.Button()
|
||||
Me.lblTags = New System.Windows.Forms.Label()
|
||||
Me.lblGameTags = New System.Windows.Forms.Label()
|
||||
Me.btnClose = New System.Windows.Forms.Button()
|
||||
Me.btnOpenTags = New System.Windows.Forms.Button()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'lstTags
|
||||
'
|
||||
Me.lstTags.FormattingEnabled = True
|
||||
Me.lstTags.Location = New System.Drawing.Point(12, 25)
|
||||
Me.lstTags.Name = "lstTags"
|
||||
Me.lstTags.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended
|
||||
Me.lstTags.Size = New System.Drawing.Size(150, 199)
|
||||
Me.lstTags.TabIndex = 0
|
||||
'
|
||||
'lstGameTags
|
||||
'
|
||||
Me.lstGameTags.FormattingEnabled = True
|
||||
Me.lstGameTags.Location = New System.Drawing.Point(222, 25)
|
||||
Me.lstGameTags.Name = "lstGameTags"
|
||||
Me.lstGameTags.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended
|
||||
Me.lstGameTags.Size = New System.Drawing.Size(150, 199)
|
||||
Me.lstGameTags.TabIndex = 3
|
||||
'
|
||||
'btnAdd
|
||||
'
|
||||
Me.btnAdd.Location = New System.Drawing.Point(168, 86)
|
||||
Me.btnAdd.Name = "btnAdd"
|
||||
Me.btnAdd.Size = New System.Drawing.Size(48, 23)
|
||||
Me.btnAdd.TabIndex = 1
|
||||
Me.btnAdd.Text = "> >"
|
||||
Me.btnAdd.UseVisualStyleBackColor = True
|
||||
'
|
||||
'btnRemove
|
||||
'
|
||||
Me.btnRemove.Location = New System.Drawing.Point(168, 115)
|
||||
Me.btnRemove.Name = "btnRemove"
|
||||
Me.btnRemove.Size = New System.Drawing.Size(48, 23)
|
||||
Me.btnRemove.TabIndex = 2
|
||||
Me.btnRemove.Text = "< <"
|
||||
Me.btnRemove.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lblTags
|
||||
'
|
||||
Me.lblTags.AutoSize = True
|
||||
Me.lblTags.Location = New System.Drawing.Point(49, 9)
|
||||
Me.lblTags.Name = "lblTags"
|
||||
Me.lblTags.Size = New System.Drawing.Size(77, 13)
|
||||
Me.lblTags.TabIndex = 0
|
||||
Me.lblTags.Text = "Available Tags"
|
||||
'
|
||||
'lblGameTags
|
||||
'
|
||||
Me.lblGameTags.AutoSize = True
|
||||
Me.lblGameTags.Location = New System.Drawing.Point(263, 9)
|
||||
Me.lblGameTags.Name = "lblGameTags"
|
||||
Me.lblGameTags.Size = New System.Drawing.Size(68, 13)
|
||||
Me.lblGameTags.TabIndex = 0
|
||||
Me.lblGameTags.Text = "Current Tags"
|
||||
'
|
||||
'btnClose
|
||||
'
|
||||
Me.btnClose.Location = New System.Drawing.Point(297, 230)
|
||||
Me.btnClose.Name = "btnClose"
|
||||
Me.btnClose.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnClose.TabIndex = 5
|
||||
Me.btnClose.Text = "&Close"
|
||||
Me.btnClose.UseVisualStyleBackColor = True
|
||||
'
|
||||
'btnOpenTags
|
||||
'
|
||||
Me.btnOpenTags.Location = New System.Drawing.Point(12, 230)
|
||||
Me.btnOpenTags.Name = "btnOpenTags"
|
||||
Me.btnOpenTags.Size = New System.Drawing.Size(90, 23)
|
||||
Me.btnOpenTags.TabIndex = 4
|
||||
Me.btnOpenTags.Text = "Setup &Tags..."
|
||||
Me.btnOpenTags.UseVisualStyleBackColor = True
|
||||
'
|
||||
'frmGameTags
|
||||
'
|
||||
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.btnOpenTags)
|
||||
Me.Controls.Add(Me.btnClose)
|
||||
Me.Controls.Add(Me.lblGameTags)
|
||||
Me.Controls.Add(Me.lblTags)
|
||||
Me.Controls.Add(Me.btnRemove)
|
||||
Me.Controls.Add(Me.btnAdd)
|
||||
Me.Controls.Add(Me.lstGameTags)
|
||||
Me.Controls.Add(Me.lstTags)
|
||||
Me.MaximizeBox = False
|
||||
Me.MinimizeBox = False
|
||||
Me.Name = "frmGameTags"
|
||||
Me.ShowIcon = False
|
||||
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
|
||||
Me.Text = "Edit Tags"
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
Friend WithEvents lstTags As System.Windows.Forms.ListBox
|
||||
Friend WithEvents lstGameTags As System.Windows.Forms.ListBox
|
||||
Friend WithEvents btnAdd As System.Windows.Forms.Button
|
||||
Friend WithEvents btnRemove As System.Windows.Forms.Button
|
||||
Friend WithEvents lblTags As System.Windows.Forms.Label
|
||||
Friend WithEvents lblGameTags As System.Windows.Forms.Label
|
||||
Friend WithEvents btnClose As System.Windows.Forms.Button
|
||||
Friend WithEvents btnOpenTags As System.Windows.Forms.Button
|
||||
End Class
|
||||
@@ -0,0 +1,190 @@
|
||||
Public Class frmGameTags
|
||||
|
||||
Dim sMonitorIDs As List(Of String)
|
||||
Dim sGameName As String = String.Empty
|
||||
|
||||
Public Property IDList As List(Of String)
|
||||
Get
|
||||
Return sMonitorIDs
|
||||
End Get
|
||||
Set(value As List(Of String))
|
||||
sMonitorIDs = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property GameName As String
|
||||
Get
|
||||
Return sGameName
|
||||
End Get
|
||||
Set(value As String)
|
||||
sGameName = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private Sub AddTag()
|
||||
Dim oData As KeyValuePair(Of String, String)
|
||||
Dim oTags As List(Of KeyValuePair(Of String, String))
|
||||
Dim oGameTag As clsGameTag
|
||||
Dim oGameTags As List(Of clsGameTag)
|
||||
|
||||
If lstTags.SelectedItems.Count = 1 Then
|
||||
oData = lstTags.SelectedItems(0)
|
||||
|
||||
oGameTags = New List(Of clsGameTag)
|
||||
For Each sID As String In IDList
|
||||
oGameTag = New clsGameTag
|
||||
oGameTag.MonitorID = sID
|
||||
oGameTag.TagID = oData.Key
|
||||
oGameTags.Add(oGameTag)
|
||||
Next
|
||||
|
||||
mgrGameTags.DoGameTagAddBatch(oGameTags)
|
||||
|
||||
lstGameTags.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
|
||||
oGameTags = New List(Of clsGameTag)
|
||||
For Each sID As String In IDList
|
||||
oGameTag = New clsGameTag
|
||||
oGameTag.MonitorID = sID
|
||||
oGameTag.TagID = kp.Key
|
||||
oGameTags.Add(oGameTag)
|
||||
Next
|
||||
|
||||
mgrGameTags.DoGameTagAddBatch(oGameTags)
|
||||
|
||||
lstGameTags.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))
|
||||
Dim oGameTag As clsGameTag
|
||||
Dim oGameTags As List(Of clsGameTag)
|
||||
|
||||
If lstGameTags.SelectedItems.Count = 1 Then
|
||||
oData = lstGameTags.SelectedItems(0)
|
||||
|
||||
oGameTags = New List(Of clsGameTag)
|
||||
For Each sID As String In IDList
|
||||
oGameTag = New clsGameTag
|
||||
oGameTag.MonitorID = sID
|
||||
oGameTag.TagID = oData.Key
|
||||
oGameTags.Add(oGameTag)
|
||||
Next
|
||||
|
||||
mgrGameTags.DoGameTagDelete(oGameTags)
|
||||
|
||||
lstGameTags.Items.Remove(oData)
|
||||
lstTags.Items.Add(oData)
|
||||
ElseIf lstGameTags.SelectedItems.Count > 1 Then
|
||||
oTags = New List(Of KeyValuePair(Of String, String))
|
||||
|
||||
For Each oData In lstGameTags.SelectedItems
|
||||
oTags.Add(oData)
|
||||
Next
|
||||
|
||||
For Each kp As KeyValuePair(Of String, String) In oTags
|
||||
oGameTags = New List(Of clsGameTag)
|
||||
For Each sID As String In IDList
|
||||
oGameTag = New clsGameTag
|
||||
oGameTag.MonitorID = sID
|
||||
oGameTag.TagID = kp.Key
|
||||
oGameTags.Add(oGameTag)
|
||||
Next
|
||||
|
||||
mgrGameTags.DoGameTagDelete(oGameTags)
|
||||
|
||||
lstGameTags.Items.Remove(kp)
|
||||
lstTags.Items.Add(kp)
|
||||
Next
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub LoadData()
|
||||
Dim hshTags As Hashtable
|
||||
Dim hshGameTags As Hashtable
|
||||
Dim oTag As clsTag
|
||||
Dim oData As KeyValuePair(Of String, String)
|
||||
|
||||
'Handle Data
|
||||
hshTags = mgrTags.ReadTags()
|
||||
hshGameTags = mgrGameTags.GetTagsByGameMulti(IDList)
|
||||
|
||||
For Each de As DictionaryEntry In hshGameTags
|
||||
oTag = DirectCast(de.Value, clsTag)
|
||||
If hshTags.ContainsKey(oTag.Name) Then
|
||||
hshTags.Remove(oTag.Name)
|
||||
End If
|
||||
Next
|
||||
|
||||
'Handle Lists
|
||||
lstTags.Items.Clear()
|
||||
lstGameTags.Items.Clear()
|
||||
|
||||
lstTags.ValueMember = "Key"
|
||||
lstTags.DisplayMember = "Value"
|
||||
lstGameTags.ValueMember = "Key"
|
||||
lstGameTags.DisplayMember = "Value"
|
||||
|
||||
For Each de As DictionaryEntry In hshGameTags
|
||||
oTag = DirectCast(de.Value, clsTag)
|
||||
oData = New KeyValuePair(Of String, String)(oTag.ID, oTag.Name)
|
||||
lstGameTags.Items.Add(oData)
|
||||
Next
|
||||
|
||||
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 OpenTags()
|
||||
Dim frm As New frmTags
|
||||
frm.ShowDialog()
|
||||
LoadData()
|
||||
End Sub
|
||||
|
||||
Private Sub SetForm()
|
||||
If IDList.Count > 1 Then
|
||||
Me.Text = "Edit Tags for Multiple Games"
|
||||
Else
|
||||
Me.Text = "Edit Tags for " & GameName
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub frmGameTags_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
||||
LoadData()
|
||||
SetForm()
|
||||
End Sub
|
||||
|
||||
Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
|
||||
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 btnOpenTags_Click(sender As Object, e As EventArgs) Handles btnOpenTags.Click
|
||||
OpenTags()
|
||||
End Sub
|
||||
End Class
|
||||
Generated
+18
-2
@@ -80,6 +80,8 @@ Partial Class frmMain
|
||||
Me.lblTimeSpent = New System.Windows.Forms.Label()
|
||||
Me.txtGameInfo = New System.Windows.Forms.TextBox()
|
||||
Me.btnCancelOperation = New System.Windows.Forms.Button()
|
||||
Me.gMonSetupTags = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.gMonTraySetupTags = New System.Windows.Forms.ToolStripMenuItem()
|
||||
Me.gMonTrayMenu.SuspendLayout()
|
||||
Me.gMonStatusStrip.SuspendLayout()
|
||||
Me.gMonMainMenu.SuspendLayout()
|
||||
@@ -126,7 +128,7 @@ Partial Class frmMain
|
||||
'
|
||||
'gMonTraySetup
|
||||
'
|
||||
Me.gMonTraySetup.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.gMonTraySetupAddWizard, Me.gMonTraySetupGameManager, Me.gMonTraySetupCustomVariables})
|
||||
Me.gMonTraySetup.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.gMonTraySetupAddWizard, Me.gMonTraySetupGameManager, Me.gMonTraySetupCustomVariables, Me.gMonTraySetupTags})
|
||||
Me.gMonTraySetup.Name = "gMonTraySetup"
|
||||
Me.gMonTraySetup.Size = New System.Drawing.Size(161, 22)
|
||||
Me.gMonTraySetup.Text = "&Setup"
|
||||
@@ -309,7 +311,7 @@ Partial Class frmMain
|
||||
'
|
||||
'gMonSetup
|
||||
'
|
||||
Me.gMonSetup.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.gMonSetupGameManager, Me.gMonSetupAddWizard, Me.gMonSetupCustomVariables})
|
||||
Me.gMonSetup.DropDownItems.AddRange(New System.Windows.Forms.ToolStripItem() {Me.gMonSetupGameManager, Me.gMonSetupAddWizard, Me.gMonSetupCustomVariables, Me.gMonSetupTags})
|
||||
Me.gMonSetup.Name = "gMonSetup"
|
||||
Me.gMonSetup.Size = New System.Drawing.Size(49, 20)
|
||||
Me.gMonSetup.Text = "&Setup"
|
||||
@@ -489,6 +491,18 @@ Partial Class frmMain
|
||||
Me.btnCancelOperation.Text = "&Cancel"
|
||||
Me.btnCancelOperation.UseVisualStyleBackColor = True
|
||||
'
|
||||
'gMonSetupTags
|
||||
'
|
||||
Me.gMonSetupTags.Name = "gMonSetupTags"
|
||||
Me.gMonSetupTags.Size = New System.Drawing.Size(201, 22)
|
||||
Me.gMonSetupTags.Text = "&Tags..."
|
||||
'
|
||||
'gMonTraySetupTags
|
||||
'
|
||||
Me.gMonTraySetupTags.Name = "gMonTraySetupTags"
|
||||
Me.gMonTraySetupTags.Size = New System.Drawing.Size(201, 22)
|
||||
Me.gMonTraySetupTags.Text = "&Tags"
|
||||
'
|
||||
'frmMain
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
@@ -582,4 +596,6 @@ Partial Class frmMain
|
||||
Friend WithEvents gMonHelpCheckforUpdates As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents btnCancelOperation As System.Windows.Forms.Button
|
||||
Friend WithEvents gMonStripAdminButton As ToolStripSplitButton
|
||||
Friend WithEvents gMonTraySetupTags As System.Windows.Forms.ToolStripMenuItem
|
||||
Friend WithEvents gMonSetupTags As System.Windows.Forms.ToolStripMenuItem
|
||||
End Class
|
||||
|
||||
@@ -540,6 +540,11 @@ Public Class frmMain
|
||||
"See gpl-3.0.html in the program folder for details.", MsgBoxStyle.Information, "Game Backup Monitor")
|
||||
End Sub
|
||||
|
||||
Private Sub OpenTags()
|
||||
Dim frm As New frmTags
|
||||
frm.ShowDialog()
|
||||
End Sub
|
||||
|
||||
Private Sub OpenGameManager(Optional ByVal bPendingRestores As Boolean = False)
|
||||
Dim frm As New frmGameManager
|
||||
PauseScan()
|
||||
@@ -1217,6 +1222,10 @@ Public Class frmMain
|
||||
OpenCustomVariables()
|
||||
End Sub
|
||||
|
||||
Private Sub gMonSetupTags_Click(sender As Object, e As EventArgs) Handles gMonSetupTags.Click, gMonTraySetupTags.Click
|
||||
OpenTags()
|
||||
End Sub
|
||||
|
||||
Private Sub gMonHelpAbout_Click(sender As Object, e As EventArgs) Handles gMonHelpAbout.Click
|
||||
OpenAbout()
|
||||
End Sub
|
||||
|
||||
Generated
+171
@@ -0,0 +1,171 @@
|
||||
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
|
||||
Partial Class frmTags
|
||||
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.grpTag = New System.Windows.Forms.GroupBox()
|
||||
Me.txtName = New System.Windows.Forms.TextBox()
|
||||
Me.lblName = New System.Windows.Forms.Label()
|
||||
Me.btnClose = New System.Windows.Forms.Button()
|
||||
Me.btnDelete = New System.Windows.Forms.Button()
|
||||
Me.btnAdd = New System.Windows.Forms.Button()
|
||||
Me.lstTags = New System.Windows.Forms.ListBox()
|
||||
Me.txtID = New System.Windows.Forms.TextBox()
|
||||
Me.btnCancel = New System.Windows.Forms.Button()
|
||||
Me.btnSave = New System.Windows.Forms.Button()
|
||||
Me.grpTag.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'grpTag
|
||||
'
|
||||
Me.grpTag.Controls.Add(Me.txtName)
|
||||
Me.grpTag.Controls.Add(Me.lblName)
|
||||
Me.grpTag.Location = New System.Drawing.Point(238, 12)
|
||||
Me.grpTag.Name = "grpTag"
|
||||
Me.grpTag.Size = New System.Drawing.Size(334, 50)
|
||||
Me.grpTag.TabIndex = 11
|
||||
Me.grpTag.TabStop = False
|
||||
Me.grpTag.Text = "Configuration"
|
||||
'
|
||||
'txtName
|
||||
'
|
||||
Me.txtName.Location = New System.Drawing.Point(50, 19)
|
||||
Me.txtName.Name = "txtName"
|
||||
Me.txtName.Size = New System.Drawing.Size(278, 20)
|
||||
Me.txtName.TabIndex = 1
|
||||
'
|
||||
'lblName
|
||||
'
|
||||
Me.lblName.AutoSize = True
|
||||
Me.lblName.Location = New System.Drawing.Point(6, 22)
|
||||
Me.lblName.Name = "lblName"
|
||||
Me.lblName.Size = New System.Drawing.Size(38, 13)
|
||||
Me.lblName.TabIndex = 0
|
||||
Me.lblName.Text = "Name:"
|
||||
'
|
||||
'btnClose
|
||||
'
|
||||
Me.btnClose.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnClose.Location = New System.Drawing.Point(497, 226)
|
||||
Me.btnClose.Name = "btnClose"
|
||||
Me.btnClose.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnClose.TabIndex = 14
|
||||
Me.btnClose.Text = "C&lose"
|
||||
Me.btnClose.UseVisualStyleBackColor = True
|
||||
'
|
||||
'btnDelete
|
||||
'
|
||||
Me.btnDelete.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnDelete.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.btnDelete.Location = New System.Drawing.Point(48, 226)
|
||||
Me.btnDelete.Name = "btnDelete"
|
||||
Me.btnDelete.Size = New System.Drawing.Size(30, 23)
|
||||
Me.btnDelete.TabIndex = 10
|
||||
Me.btnDelete.Text = "-"
|
||||
Me.btnDelete.UseVisualStyleBackColor = True
|
||||
'
|
||||
'btnAdd
|
||||
'
|
||||
Me.btnAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnAdd.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.btnAdd.Location = New System.Drawing.Point(12, 226)
|
||||
Me.btnAdd.Name = "btnAdd"
|
||||
Me.btnAdd.Size = New System.Drawing.Size(30, 23)
|
||||
Me.btnAdd.TabIndex = 9
|
||||
Me.btnAdd.Text = "+"
|
||||
Me.btnAdd.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lstTags
|
||||
'
|
||||
Me.lstTags.FormattingEnabled = True
|
||||
Me.lstTags.Location = New System.Drawing.Point(12, 12)
|
||||
Me.lstTags.Name = "lstTags"
|
||||
Me.lstTags.Size = New System.Drawing.Size(220, 212)
|
||||
Me.lstTags.Sorted = True
|
||||
Me.lstTags.TabIndex = 7
|
||||
'
|
||||
'txtID
|
||||
'
|
||||
Me.txtID.Enabled = False
|
||||
Me.txtID.Location = New System.Drawing.Point(377, 67)
|
||||
Me.txtID.Name = "txtID"
|
||||
Me.txtID.Size = New System.Drawing.Size(33, 20)
|
||||
Me.txtID.TabIndex = 8
|
||||
Me.txtID.TabStop = False
|
||||
Me.txtID.Visible = False
|
||||
'
|
||||
'btnCancel
|
||||
'
|
||||
Me.btnCancel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnCancel.Location = New System.Drawing.Point(497, 67)
|
||||
Me.btnCancel.Name = "btnCancel"
|
||||
Me.btnCancel.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnCancel.TabIndex = 13
|
||||
Me.btnCancel.Text = "&Cancel"
|
||||
Me.btnCancel.UseVisualStyleBackColor = True
|
||||
'
|
||||
'btnSave
|
||||
'
|
||||
Me.btnSave.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnSave.Location = New System.Drawing.Point(416, 67)
|
||||
Me.btnSave.Name = "btnSave"
|
||||
Me.btnSave.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnSave.TabIndex = 12
|
||||
Me.btnSave.Text = "&Save"
|
||||
Me.btnSave.UseVisualStyleBackColor = True
|
||||
'
|
||||
'frmTags
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(584, 261)
|
||||
Me.Controls.Add(Me.grpTag)
|
||||
Me.Controls.Add(Me.btnClose)
|
||||
Me.Controls.Add(Me.btnDelete)
|
||||
Me.Controls.Add(Me.btnAdd)
|
||||
Me.Controls.Add(Me.lstTags)
|
||||
Me.Controls.Add(Me.txtID)
|
||||
Me.Controls.Add(Me.btnCancel)
|
||||
Me.Controls.Add(Me.btnSave)
|
||||
Me.MaximizeBox = False
|
||||
Me.MinimizeBox = False
|
||||
Me.Name = "frmTags"
|
||||
Me.ShowIcon = False
|
||||
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
|
||||
Me.Text = "Tags"
|
||||
Me.grpTag.ResumeLayout(False)
|
||||
Me.grpTag.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
Friend WithEvents grpTag As System.Windows.Forms.GroupBox
|
||||
Friend WithEvents txtName As System.Windows.Forms.TextBox
|
||||
Friend WithEvents lblName As System.Windows.Forms.Label
|
||||
Friend WithEvents btnClose As System.Windows.Forms.Button
|
||||
Friend WithEvents btnDelete As System.Windows.Forms.Button
|
||||
Friend WithEvents btnAdd As System.Windows.Forms.Button
|
||||
Friend WithEvents lstTags As System.Windows.Forms.ListBox
|
||||
Friend WithEvents txtID As System.Windows.Forms.TextBox
|
||||
Friend WithEvents btnCancel As System.Windows.Forms.Button
|
||||
Friend WithEvents btnSave As System.Windows.Forms.Button
|
||||
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,307 @@
|
||||
Public Class frmTags
|
||||
|
||||
Dim hshTagData As Hashtable
|
||||
Private bIsDirty As Boolean = False
|
||||
Private bIsLoading As Boolean = False
|
||||
Private oCurrentTag As clsTag
|
||||
|
||||
Private Property IsDirty As Boolean
|
||||
Get
|
||||
Return bIsDirty
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
bIsDirty = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private Property IsLoading As Boolean
|
||||
Get
|
||||
Return bIsLoading
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
bIsLoading = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private Enum eModes As Integer
|
||||
View = 1
|
||||
Edit = 2
|
||||
Add = 3
|
||||
Disabled = 4
|
||||
End Enum
|
||||
|
||||
Private eCurrentMode As eModes = eModes.Disabled
|
||||
|
||||
Private Property TagData As Hashtable
|
||||
Get
|
||||
Return hshTagData
|
||||
End Get
|
||||
Set(value As Hashtable)
|
||||
hshTagData = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private Sub LoadData()
|
||||
TagData = mgrTags.ReadTags
|
||||
lstTags.Items.Clear()
|
||||
FormatAndFillList()
|
||||
End Sub
|
||||
|
||||
Private Function HandleDirty() As MsgBoxResult
|
||||
Dim oResult As MsgBoxResult
|
||||
|
||||
oResult = MsgBox("There are unsaved changes on this form. Do you want to save?", MsgBoxStyle.YesNoCancel, "Game Backup Monitor")
|
||||
|
||||
Select Case oResult
|
||||
Case MsgBoxResult.Yes
|
||||
IsDirty = False
|
||||
Case MsgBoxResult.No
|
||||
IsDirty = False
|
||||
Case MsgBoxResult.Cancel
|
||||
'No Change
|
||||
End Select
|
||||
|
||||
Return oResult
|
||||
|
||||
End Function
|
||||
|
||||
Private Sub FormatAndFillList()
|
||||
IsLoading = True
|
||||
|
||||
For Each oTag As clsTag In TagData.Values
|
||||
lstTags.Items.Add(oTag.Name)
|
||||
Next
|
||||
|
||||
IsLoading = False
|
||||
End Sub
|
||||
|
||||
Private Sub FillData()
|
||||
IsLoading = True
|
||||
|
||||
oCurrentTag = DirectCast(TagData(lstTags.SelectedItems(0).ToString), clsTag)
|
||||
|
||||
txtID.Text = oCurrentTag.ID
|
||||
txtName.Text = oCurrentTag.Name
|
||||
|
||||
IsLoading = False
|
||||
End Sub
|
||||
|
||||
Private Sub DirtyCheck_ValueChanged(sender As Object, e As EventArgs)
|
||||
If Not IsLoading Then
|
||||
IsDirty = True
|
||||
If Not eCurrentMode = eModes.Add Then EditTag()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub AssignDirtyHandlers(ByVal oCtls As GroupBox.ControlCollection)
|
||||
For Each ctl As Control In oCtls
|
||||
If TypeOf ctl Is TextBox Then
|
||||
AddHandler DirectCast(ctl, TextBox).TextChanged, AddressOf DirtyCheck_ValueChanged
|
||||
End If
|
||||
Next
|
||||
End Sub
|
||||
|
||||
Private Sub WipeControls(ByVal oCtls As GroupBox.ControlCollection)
|
||||
For Each ctl As Control In oCtls
|
||||
If TypeOf ctl Is TextBox Then
|
||||
DirectCast(ctl, TextBox).Text = String.Empty
|
||||
End If
|
||||
Next
|
||||
txtID.Text = String.Empty
|
||||
End Sub
|
||||
|
||||
Private Sub ModeChange()
|
||||
IsLoading = True
|
||||
|
||||
Select Case eCurrentMode
|
||||
Case eModes.Add
|
||||
grpTag.Enabled = True
|
||||
WipeControls(grpTag.Controls)
|
||||
btnSave.Enabled = True
|
||||
btnCancel.Enabled = True
|
||||
btnAdd.Enabled = False
|
||||
btnDelete.Enabled = False
|
||||
lstTags.Enabled = False
|
||||
Case eModes.Edit
|
||||
lstTags.Enabled = False
|
||||
grpTag.Enabled = True
|
||||
btnSave.Enabled = True
|
||||
btnCancel.Enabled = True
|
||||
btnAdd.Enabled = False
|
||||
btnDelete.Enabled = False
|
||||
Case eModes.View
|
||||
lstTags.Enabled = True
|
||||
grpTag.Enabled = True
|
||||
btnSave.Enabled = False
|
||||
btnCancel.Enabled = False
|
||||
btnAdd.Enabled = True
|
||||
btnDelete.Enabled = True
|
||||
Case eModes.Disabled
|
||||
lstTags.Enabled = True
|
||||
WipeControls(grpTag.Controls)
|
||||
grpTag.Enabled = False
|
||||
btnSave.Enabled = False
|
||||
btnCancel.Enabled = False
|
||||
btnAdd.Enabled = True
|
||||
btnDelete.Enabled = True
|
||||
End Select
|
||||
|
||||
IsLoading = False
|
||||
End Sub
|
||||
|
||||
Private Sub EditTag()
|
||||
eCurrentMode = eModes.Edit
|
||||
ModeChange()
|
||||
End Sub
|
||||
|
||||
Private Sub AddTag()
|
||||
eCurrentMode = eModes.Add
|
||||
ModeChange()
|
||||
txtName.Focus()
|
||||
End Sub
|
||||
|
||||
Private Sub CancelEdit()
|
||||
If bIsDirty Then
|
||||
Select Case HandleDirty()
|
||||
Case MsgBoxResult.Yes
|
||||
SaveTag()
|
||||
Case MsgBoxResult.No
|
||||
If lstTags.SelectedItems.Count > 0 Then
|
||||
eCurrentMode = eModes.View
|
||||
ModeChange()
|
||||
FillData()
|
||||
lstTags.Focus()
|
||||
Else
|
||||
eCurrentMode = eModes.Disabled
|
||||
ModeChange()
|
||||
End If
|
||||
Case MsgBoxResult.Cancel
|
||||
'Do Nothing
|
||||
End Select
|
||||
Else
|
||||
If lstTags.SelectedItems.Count > 0 Then
|
||||
eCurrentMode = eModes.View
|
||||
ModeChange()
|
||||
FillData()
|
||||
lstTags.Focus()
|
||||
Else
|
||||
eCurrentMode = eModes.Disabled
|
||||
ModeChange()
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub SaveTag()
|
||||
Dim oTag As New clsTag
|
||||
Dim bSuccess As Boolean = False
|
||||
|
||||
If txtID.Text <> String.Empty Then
|
||||
oTag.ID = txtID.Text
|
||||
End If
|
||||
oTag.Name = txtName.Text
|
||||
|
||||
Select Case eCurrentMode
|
||||
Case eModes.Add
|
||||
If CoreValidatation(oTag) Then
|
||||
bSuccess = True
|
||||
mgrTags.DoTagAdd(oTag)
|
||||
eCurrentMode = eModes.View
|
||||
End If
|
||||
Case eModes.Edit
|
||||
If CoreValidatation(oTag) Then
|
||||
bSuccess = True
|
||||
mgrTags.DoTagUpdate(oTag)
|
||||
eCurrentMode = eModes.View
|
||||
End If
|
||||
End Select
|
||||
|
||||
If bSuccess Then
|
||||
IsDirty = False
|
||||
LoadData()
|
||||
ModeChange()
|
||||
If eCurrentMode = eModes.View Then lstTags.SelectedIndex = lstTags.Items.IndexOf(oTag.Name)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub DeleteTag()
|
||||
Dim oTag As clsTag
|
||||
|
||||
If lstTags.SelectedItems.Count > 0 Then
|
||||
oTag = DirectCast(TagData(lstTags.SelectedItems(0).ToString), clsTag)
|
||||
|
||||
If MsgBox("Are you sure you want to delete " & oTag.Name & "? This cannot be undone." & vbCrLf & vbCrLf & "All games using this tag will have it removed.", MsgBoxStyle.YesNo, "Game Backup Monitor") = MsgBoxResult.Yes Then
|
||||
mgrTags.DoTagDelete(oTag.ID)
|
||||
LoadData()
|
||||
eCurrentMode = eModes.Disabled
|
||||
ModeChange()
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub SwitchTag()
|
||||
If lstTags.SelectedItems.Count > 0 Then
|
||||
eCurrentMode = eModes.View
|
||||
FillData()
|
||||
ModeChange()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Function CoreValidatation(ByVal oTag As clsTag) As Boolean
|
||||
If txtName.Text = String.Empty Then
|
||||
MsgBox("You must enter a valid tag name.", MsgBoxStyle.Exclamation, "Game Backup Monitor")
|
||||
txtName.Focus()
|
||||
Return False
|
||||
End If
|
||||
|
||||
If mgrTags.DoCheckDuplicate(oTag.Name, oTag.ID) Then
|
||||
MsgBox("A tag with this name already exists.", MsgBoxStyle.Exclamation, "Game Backup Monitor")
|
||||
txtName.Focus()
|
||||
Return False
|
||||
End If
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Private Sub frmTags_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
||||
LoadData()
|
||||
ModeChange()
|
||||
AssignDirtyHandlers(grpTag.Controls)
|
||||
End Sub
|
||||
|
||||
Private Sub lstTags_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lstTags.SelectedIndexChanged
|
||||
SwitchTag()
|
||||
End Sub
|
||||
|
||||
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
|
||||
AddTag()
|
||||
End Sub
|
||||
|
||||
Private Sub btnDelete_Click(sender As Object, e As EventArgs) Handles btnDelete.Click
|
||||
DeleteTag()
|
||||
End Sub
|
||||
|
||||
Private Sub btnSave_Click(sender As Object, e As EventArgs) Handles btnSave.Click
|
||||
SaveTag()
|
||||
End Sub
|
||||
|
||||
Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click
|
||||
CancelEdit()
|
||||
End Sub
|
||||
|
||||
Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
|
||||
Me.Close()
|
||||
End Sub
|
||||
|
||||
Private Sub frmTags_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
|
||||
If bIsDirty Then
|
||||
Select Case HandleDirty()
|
||||
Case MsgBoxResult.Yes
|
||||
SaveTag()
|
||||
Case MsgBoxResult.No
|
||||
'Do Nothing
|
||||
Case MsgBoxResult.Cancel
|
||||
e.Cancel = True
|
||||
End Select
|
||||
End If
|
||||
End Sub
|
||||
End Class
|
||||
Generated
+6
-6
@@ -51,7 +51,7 @@ Partial Class frmVariableManager
|
||||
'
|
||||
Me.btnDelete.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnDelete.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.btnDelete.Location = New System.Drawing.Point(48, 227)
|
||||
Me.btnDelete.Location = New System.Drawing.Point(48, 226)
|
||||
Me.btnDelete.Name = "btnDelete"
|
||||
Me.btnDelete.Size = New System.Drawing.Size(30, 23)
|
||||
Me.btnDelete.TabIndex = 2
|
||||
@@ -62,7 +62,7 @@ Partial Class frmVariableManager
|
||||
'
|
||||
Me.btnAdd.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnAdd.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
|
||||
Me.btnAdd.Location = New System.Drawing.Point(12, 227)
|
||||
Me.btnAdd.Location = New System.Drawing.Point(12, 226)
|
||||
Me.btnAdd.Name = "btnAdd"
|
||||
Me.btnAdd.Size = New System.Drawing.Size(30, 23)
|
||||
Me.btnAdd.TabIndex = 1
|
||||
@@ -72,7 +72,7 @@ Partial Class frmVariableManager
|
||||
'btnClose
|
||||
'
|
||||
Me.btnClose.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnClose.Location = New System.Drawing.Point(497, 227)
|
||||
Me.btnClose.Location = New System.Drawing.Point(497, 226)
|
||||
Me.btnClose.Name = "btnClose"
|
||||
Me.btnClose.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnClose.TabIndex = 6
|
||||
@@ -137,7 +137,7 @@ Partial Class frmVariableManager
|
||||
'btnCancel
|
||||
'
|
||||
Me.btnCancel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnCancel.Location = New System.Drawing.Point(497, 95)
|
||||
Me.btnCancel.Location = New System.Drawing.Point(497, 94)
|
||||
Me.btnCancel.Name = "btnCancel"
|
||||
Me.btnCancel.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnCancel.TabIndex = 5
|
||||
@@ -147,7 +147,7 @@ Partial Class frmVariableManager
|
||||
'btnSave
|
||||
'
|
||||
Me.btnSave.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
|
||||
Me.btnSave.Location = New System.Drawing.Point(416, 95)
|
||||
Me.btnSave.Location = New System.Drawing.Point(416, 94)
|
||||
Me.btnSave.Name = "btnSave"
|
||||
Me.btnSave.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnSave.TabIndex = 4
|
||||
@@ -168,7 +168,7 @@ Partial Class frmVariableManager
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(584, 262)
|
||||
Me.ClientSize = New System.Drawing.Size(584, 261)
|
||||
Me.Controls.Add(Me.txtID)
|
||||
Me.Controls.Add(Me.btnCancel)
|
||||
Me.Controls.Add(Me.btnSave)
|
||||
|
||||
@@ -113,9 +113,11 @@
|
||||
<Import Include="System.Windows.Forms" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Classes\clsGameTag.vb" />
|
||||
<Compile Include="Classes\clsPathVariable.vb" />
|
||||
<Compile Include="Classes\clsBackup.vb" />
|
||||
<Compile Include="Classes\clsGame.vb" />
|
||||
<Compile Include="Classes\clsTag.vb" />
|
||||
<Compile Include="Forms\frmAdvancedImport.Designer.vb">
|
||||
<DependentUpon>frmAdvancedImport.vb</DependentUpon>
|
||||
</Compile>
|
||||
@@ -134,6 +136,12 @@
|
||||
<Compile Include="Forms\frmFileFolderSearch.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\frmGameTags.Designer.vb">
|
||||
<DependentUpon>frmGameTags.vb</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\frmGameTags.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\frmStartUpWizard.Designer.vb">
|
||||
<DependentUpon>frmStartUpWizard.vb</DependentUpon>
|
||||
</Compile>
|
||||
@@ -165,6 +173,12 @@
|
||||
<DependentUpon>frmMain.vb</DependentUpon>
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\frmTags.Designer.vb">
|
||||
<DependentUpon>frmTags.vb</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Forms\frmTags.vb">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Forms\frmVariableManager.Designer.vb">
|
||||
<DependentUpon>frmVariableManager.vb</DependentUpon>
|
||||
</Compile>
|
||||
@@ -172,6 +186,7 @@
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Managers\mgrCommon.vb" />
|
||||
<Compile Include="Managers\mgrGameTags.vb" />
|
||||
<Compile Include="Managers\mgrHash.vb" />
|
||||
<Compile Include="Managers\mgrManifest.vb" />
|
||||
<Compile Include="Managers\mgrMonitorList.vb" />
|
||||
@@ -180,6 +195,7 @@
|
||||
<Compile Include="Managers\mgrSettings.vb" />
|
||||
<Compile Include="Managers\mgrBackup.vb" />
|
||||
<Compile Include="Managers\mgrSQLite.vb" />
|
||||
<Compile Include="Managers\mgrTags.vb" />
|
||||
<Compile Include="Managers\mgrVariables.vb" />
|
||||
<Compile Include="Managers\mgrXML.vb" />
|
||||
<Compile Include="Managers\mgrProcesses.vb" />
|
||||
@@ -209,6 +225,9 @@
|
||||
<EmbeddedResource Include="Forms\frmFileFolderSearch.resx">
|
||||
<DependentUpon>frmFileFolderSearch.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\frmGameTags.resx">
|
||||
<DependentUpon>frmGameTags.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\frmStartUpWizard.resx">
|
||||
<DependentUpon>frmStartUpWizard.vb</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
@@ -226,6 +245,9 @@
|
||||
<DependentUpon>frmMain.vb</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\frmTags.resx">
|
||||
<DependentUpon>frmTags.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Forms\frmVariableManager.resx">
|
||||
<DependentUpon>frmVariableManager.vb</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
||||
@@ -0,0 +1,135 @@
|
||||
Public Class mgrGameTags
|
||||
|
||||
Public Shared Sub DoGameTagAdd(ByVal oGameTag As clsGameTag)
|
||||
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local)
|
||||
Dim sSQL As String
|
||||
Dim hshParams As New Hashtable
|
||||
|
||||
sSQL = "INSERT INTO gametags VALUES (@TagID, @MonitorID)"
|
||||
hshParams.Add("TagID", oGameTag.TagID)
|
||||
hshParams.Add("MonitorID", oGameTag.MonitorID)
|
||||
oDatabase.RunParamQuery(sSQL, hshParams)
|
||||
End Sub
|
||||
|
||||
Public Shared Sub DoGameTagAddBatch(ByVal oGameTags As List(Of clsGameTag))
|
||||
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local)
|
||||
Dim sSQL As String
|
||||
Dim hshParams As Hashtable
|
||||
Dim oParamList As New List(Of Hashtable)
|
||||
|
||||
sSQL = "INSERT INTO gametags VALUES (@TagID, @MonitorID)"
|
||||
|
||||
For Each oGameTag As clsGameTag In oGameTags
|
||||
hshParams = New Hashtable
|
||||
hshParams.Add("TagID", oGameTag.TagID)
|
||||
hshParams.Add("MonitorID", oGameTag.MonitorID)
|
||||
oParamList.Add(hshParams)
|
||||
Next
|
||||
|
||||
oDatabase.RunMassParamQuery(sSQL, oParamList)
|
||||
End Sub
|
||||
|
||||
Public Shared Sub DoGameTagDelete(ByVal oGameTags As List(Of clsGameTag))
|
||||
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local)
|
||||
Dim sSQL As String
|
||||
Dim hshParams As Hashtable
|
||||
Dim oParamList As New List(Of Hashtable)
|
||||
|
||||
sSQL = "DELETE FROM gametags "
|
||||
sSQL &= "WHERE TagID = @TagID AND MonitorID = @MonitorID;"
|
||||
|
||||
For Each oGameTag As clsGameTag In oGameTags
|
||||
hshParams = New Hashtable
|
||||
hshParams.Add("TagID", oGameTag.TagID)
|
||||
hshParams.Add("MonitorID", oGameTag.MonitorID)
|
||||
oParamList.Add(hshParams)
|
||||
Next
|
||||
|
||||
oDatabase.RunMassParamQuery(sSQL, oParamList)
|
||||
End Sub
|
||||
|
||||
Public Shared Sub DoGameTagDeleteByGame(ByVal sMonitorID As String)
|
||||
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local)
|
||||
Dim sSQL As String
|
||||
Dim hshParams As New Hashtable
|
||||
|
||||
sSQL = "DELETE FROM gametags "
|
||||
sSQL &= "WHERE MonitorID = @ID;"
|
||||
|
||||
hshParams.Add("ID", sMonitorID)
|
||||
|
||||
oDatabase.RunParamQuery(sSQL, hshParams)
|
||||
End Sub
|
||||
|
||||
|
||||
Public Shared Sub DoGameTagDeleteByTag(ByVal sTagID As String)
|
||||
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local)
|
||||
Dim sSQL As String
|
||||
Dim hshParams As New Hashtable
|
||||
|
||||
sSQL = "DELETE FROM gametags "
|
||||
sSQL &= "WHERE TagID = @ID;"
|
||||
|
||||
hshParams.Add("ID", sTagID)
|
||||
|
||||
oDatabase.RunParamQuery(sSQL, hshParams)
|
||||
|
||||
End Sub
|
||||
|
||||
Public Shared Function GetTagsByGame(ByVal sMonitorID As String) As Hashtable
|
||||
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local)
|
||||
Dim oData As DataSet
|
||||
Dim sSQL As String
|
||||
Dim hshList As New Hashtable
|
||||
Dim hshParams As New Hashtable
|
||||
Dim oTag As clsTag
|
||||
|
||||
sSQL = "SELECT TagID, tags.Name FROM gametags NATURAL JOIN tags WHERE MonitorID = @ID"
|
||||
|
||||
hshParams.Add("ID", sMonitorID)
|
||||
|
||||
oData = oDatabase.ReadParamData(sSQL, hshParams)
|
||||
|
||||
For Each dr As DataRow In oData.Tables(0).Rows
|
||||
oTag = New clsTag
|
||||
oTag.ID = CStr(dr(0))
|
||||
oTag.Name = CStr(dr(1))
|
||||
hshList.Add(oTag.Name, oTag)
|
||||
Next
|
||||
|
||||
Return hshList
|
||||
End Function
|
||||
|
||||
Public Shared Function GetTagsByGameMulti(ByVal sMonitorIDs As List(Of String)) As Hashtable
|
||||
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local)
|
||||
Dim oData As DataSet
|
||||
Dim sSQL As String
|
||||
Dim hshList As New Hashtable
|
||||
Dim hshParams As New Hashtable
|
||||
Dim oTag As clsTag
|
||||
Dim iCounter As Integer
|
||||
|
||||
sSQL = "SELECT DISTINCT TagID, tags.Name FROM gametags NATURAL JOIN tags WHERE MonitorID IN ("
|
||||
|
||||
For Each s As String In sMonitorIDs
|
||||
sSQL &= "@MonitorID" & iCounter & ","
|
||||
hshParams.Add("MonitorID" & iCounter, s)
|
||||
iCounter += 1
|
||||
Next
|
||||
|
||||
sSQL = sSQL.TrimEnd(",")
|
||||
sSQL &= ")"
|
||||
|
||||
oData = oDatabase.ReadParamData(sSQL, hshParams)
|
||||
|
||||
For Each dr As DataRow In oData.Tables(0).Rows
|
||||
oTag = New clsTag
|
||||
oTag.ID = CStr(dr(0))
|
||||
oTag.Name = CStr(dr(1))
|
||||
hshList.Add(oTag.Name, oTag)
|
||||
Next
|
||||
|
||||
Return hshList
|
||||
End Function
|
||||
|
||||
End Class
|
||||
@@ -403,8 +403,10 @@ Public Class mgrMonitorList
|
||||
Dim sSQL As String
|
||||
Dim hshParams As New Hashtable
|
||||
|
||||
sSQL = "DELETE FROM monitorlist "
|
||||
sSQL &= "WHERE MonitorID = @MonitorID"
|
||||
sSQL = "DELETE FROM gametags "
|
||||
sSQL &= "WHERE MonitorID = @MonitorID;"
|
||||
sSQL &= "DELETE FROM monitorlist "
|
||||
sSQL &= "WHERE MonitorID = @MonitorID;"
|
||||
|
||||
hshParams.Add("MonitorID", sMonitorID)
|
||||
|
||||
@@ -418,7 +420,7 @@ Public Class mgrMonitorList
|
||||
Dim hshParams As New Hashtable
|
||||
Dim iCounter As Integer
|
||||
|
||||
sSQL = "DELETE FROM monitorlist "
|
||||
sSQL = "DELETE FROM gametags "
|
||||
sSQL &= "WHERE MonitorID IN ("
|
||||
|
||||
For Each s As String In sMonitorIDs
|
||||
@@ -428,7 +430,19 @@ Public Class mgrMonitorList
|
||||
Next
|
||||
|
||||
sSQL = sSQL.TrimEnd(",")
|
||||
sSQL &= ")"
|
||||
sSQL &= ");"
|
||||
|
||||
sSQL &= "DELETE FROM monitorlist "
|
||||
sSQL &= "WHERE MonitorID IN ("
|
||||
|
||||
For Each s As String In sMonitorIDs
|
||||
sSQL &= "@MonitorID" & iCounter & ","
|
||||
hshParams.Add("MonitorID" & iCounter, s)
|
||||
iCounter += 1
|
||||
Next
|
||||
|
||||
sSQL = sSQL.TrimEnd(",")
|
||||
sSQL &= ");"
|
||||
|
||||
oDatabase.RunParamQuery(sSQL, hshParams)
|
||||
End Sub
|
||||
|
||||
@@ -79,6 +79,12 @@ Public Class mgrSQLite
|
||||
"ProcessPath TEXT, Icon TEXT, Hours REAL, Version TEXT, Company TEXT, Enabled BOOLEAN NOT NULL, MonitorOnly BOOLEAN NOT NULL, " & _
|
||||
"PRIMARY KEY(Name, Process));"
|
||||
|
||||
'Add Tables (Tags)
|
||||
sSql &= "CREATE TABLE tags (TagID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL PRIMARY KEY); "
|
||||
|
||||
'Add Tables (Game Tags)
|
||||
sSql &= "CREATE TABLE gametags (TagID TEXT NOT NULL, MonitorID TEXT NOT NULL, PRIMARY KEY(TagID, MonitorID)); "
|
||||
|
||||
'Add Tables (Variables)
|
||||
sSql &= "CREATE TABLE variables (VariableID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL PRIMARY KEY, Path TEXT NOT NULL);"
|
||||
|
||||
@@ -114,6 +120,12 @@ Public Class mgrSQLite
|
||||
sSql &= "CREATE TABLE manifest (ManifestID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL PRIMARY KEY, FileName TEXT NOT NULL, RestorePath TEXT NOT NULL, " & _
|
||||
"AbsolutePath BOOLEAN NOT NULL, DateUpdated TEXT NOT NULL, UpdatedBy TEXT NOT NULL, CheckSum TEXT);"
|
||||
|
||||
'Add Tables (Remote Tags)
|
||||
sSql &= "CREATE TABLE tags (TagID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL PRIMARY KEY); "
|
||||
|
||||
'Add Tables (Remote Game Tags)
|
||||
sSql &= "CREATE TABLE gametags (TagID TEXT NOT NULL, MonitorID TEXT NOT NULL, PRIMARY KEY(TagID, MonitorID)); "
|
||||
|
||||
'Set Version
|
||||
sSql &= "PRAGMA user_version=" & mgrCommon.AppVersion
|
||||
|
||||
@@ -182,6 +194,32 @@ Public Class mgrSQLite
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Public Function RunMassParamQuery(ByVal sSQL As String, ByVal oParamList As List(Of Hashtable)) As Boolean
|
||||
Dim trans As SQLiteTransaction
|
||||
Dim command As SQLiteCommand
|
||||
|
||||
Connect()
|
||||
command = New SQLiteCommand(sSQL, db)
|
||||
trans = db.BeginTransaction()
|
||||
|
||||
Try
|
||||
For Each hshParams In oParamList
|
||||
BuildParams(command, hshParams)
|
||||
command.ExecuteNonQuery()
|
||||
Next
|
||||
trans.Commit()
|
||||
Catch e As Exception
|
||||
trans.Rollback()
|
||||
MsgBox("An error has occured attempting run the query." & vbCrLf & vbCrLf & sSQL & vbCrLf & vbCrLf & e.Message)
|
||||
Return False
|
||||
Finally
|
||||
command.Dispose()
|
||||
Disconnect()
|
||||
End Try
|
||||
|
||||
Return True
|
||||
End Function
|
||||
|
||||
Public Function ReadParamData(ByVal sSQL As String, ByVal hshParams As Hashtable) As DataSet
|
||||
Dim adapter As SQLiteDataAdapter
|
||||
Dim command As SQLiteCommand
|
||||
@@ -417,8 +455,13 @@ Public Class mgrSQLite
|
||||
'Backup DB before starting
|
||||
BackupDB("v93")
|
||||
|
||||
'Add Tags Tables
|
||||
sSQL = "CREATE TABLE tags (TagID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL PRIMARY KEY); "
|
||||
sSQL &= "CREATE TABLE gametags (TagID TEXT NOT NULL, MonitorID TEXT NOT NULL, PRIMARY KEY(TagID, MonitorID)); "
|
||||
|
||||
'Add new setting
|
||||
sSQL = "ALTER TABLE settings ADD COLUMN TimeTracking BOOLEAN NOT NULL DEFAULT 1;"
|
||||
sSQL &= "ALTER TABLE settings ADD COLUMN TimeTracking BOOLEAN NOT NULL DEFAULT 1;"
|
||||
|
||||
sSQL &= "PRAGMA user_version=94"
|
||||
|
||||
RunParamQuery(sSQL, New Hashtable)
|
||||
@@ -427,7 +470,11 @@ Public Class mgrSQLite
|
||||
'Backup DB before starting
|
||||
BackupDB("v93")
|
||||
|
||||
sSQL = "PRAGMA user_version=94"
|
||||
'Add Tags Tables
|
||||
sSQL = "CREATE TABLE tags (TagID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL PRIMARY KEY); "
|
||||
sSQL &= "CREATE TABLE gametags (TagID TEXT NOT NULL, MonitorID TEXT NOT NULL, PRIMARY KEY(TagID, MonitorID)); "
|
||||
|
||||
sSQL &= "PRAGMA user_version=94"
|
||||
|
||||
RunParamQuery(sSQL, New Hashtable)
|
||||
End If
|
||||
|
||||
@@ -0,0 +1,136 @@
|
||||
Public Class mgrTags
|
||||
|
||||
Public Shared Sub DoTagAdd(ByVal oTag As clsTag)
|
||||
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local)
|
||||
Dim sSQL As String
|
||||
Dim hshParams As New Hashtable
|
||||
|
||||
sSQL = "INSERT INTO tags VALUES (@ID, @Name)"
|
||||
hshParams.Add("ID", oTag.ID)
|
||||
hshParams.Add("Name", oTag.Name)
|
||||
oDatabase.RunParamQuery(sSQL, hshParams)
|
||||
End Sub
|
||||
|
||||
Public Shared Sub DoTagUpdate(ByVal oTag As clsTag)
|
||||
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local)
|
||||
Dim sSQL As String
|
||||
Dim hshParams As New Hashtable
|
||||
|
||||
sSQL = "UPDATE tags SET Name=@Name "
|
||||
sSQL &= "WHERE TagID = @ID"
|
||||
|
||||
hshParams.Add("Name", oTag.Name)
|
||||
hshParams.Add("ID", oTag.ID)
|
||||
|
||||
oDatabase.RunParamQuery(sSQL, hshParams)
|
||||
|
||||
End Sub
|
||||
|
||||
Public Shared Sub DoTagDelete(ByVal sTagID As String)
|
||||
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local)
|
||||
Dim sSQL As String
|
||||
Dim hshParams As New Hashtable
|
||||
|
||||
sSQL = "DELETE FROM gametags "
|
||||
sSQL &= "WHERE TagID = @ID;"
|
||||
sSQL = "DELETE FROM tags "
|
||||
sSQL &= "WHERE TagID = @ID;"
|
||||
|
||||
hshParams.Add("ID", sTagID)
|
||||
|
||||
oDatabase.RunParamQuery(sSQL, hshParams)
|
||||
|
||||
End Sub
|
||||
|
||||
Public Shared Function DoTagGetbyID(ByVal sTagID As String) As clsTag
|
||||
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local)
|
||||
Dim sSQL As String
|
||||
Dim oData As DataSet
|
||||
Dim oTag As New clsTag
|
||||
Dim hshParams As New Hashtable
|
||||
|
||||
sSQL = "SELECT * FROM tags "
|
||||
sSQL &= "WHERE TagID = @ID"
|
||||
|
||||
hshParams.Add("ID", sTagID)
|
||||
|
||||
oData = oDatabase.ReadParamData(sSQL, hshParams)
|
||||
|
||||
For Each dr As DataRow In oData.Tables(0).Rows
|
||||
oTag = New clsTag
|
||||
oTag.ID = CStr(dr(0))
|
||||
oTag.Name = CStr(dr(1))
|
||||
Next
|
||||
|
||||
Return oTag
|
||||
End Function
|
||||
|
||||
Public Shared Function DoTagGetbyName(ByVal sTagName As String) As clsTag
|
||||
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local)
|
||||
Dim sSQL As String
|
||||
Dim oData As DataSet
|
||||
Dim oTag As New clsTag
|
||||
Dim hshParams As New Hashtable
|
||||
|
||||
sSQL = "SELECT * FROM tags "
|
||||
sSQL &= "WHERE Name = @Name"
|
||||
|
||||
hshParams.Add("Name", sTagName)
|
||||
|
||||
oData = oDatabase.ReadParamData(sSQL, hshParams)
|
||||
|
||||
For Each dr As DataRow In oData.Tables(0).Rows
|
||||
oTag = New clsTag
|
||||
oTag.ID = CStr(dr(0))
|
||||
oTag.Name = CStr(dr(1))
|
||||
Next
|
||||
|
||||
Return oTag
|
||||
End Function
|
||||
|
||||
Public Shared Function DoCheckDuplicate(ByVal sTagName As String, Optional ByVal sExcludeID As String = "") As Boolean
|
||||
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local)
|
||||
Dim sSQL As String
|
||||
Dim oData As DataSet
|
||||
Dim hshParams As New Hashtable
|
||||
|
||||
sSQL = "SELECT * FROM tags "
|
||||
sSQL &= "WHERE Name = @Name"
|
||||
|
||||
hshParams.Add("Name", sTagName)
|
||||
|
||||
If sExcludeID <> String.Empty Then
|
||||
sSQL &= " AND TagID <> @TagID"
|
||||
hshParams.Add("TagID", sExcludeID)
|
||||
End If
|
||||
|
||||
oData = oDatabase.ReadParamData(sSQL, hshParams)
|
||||
|
||||
If oData.Tables(0).Rows.Count > 0 Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End Function
|
||||
|
||||
Public Shared Function ReadTags() As Hashtable
|
||||
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local)
|
||||
Dim oData As DataSet
|
||||
Dim sSQL As String
|
||||
Dim hshList As New Hashtable
|
||||
Dim oTag As clsTag
|
||||
|
||||
sSQL = "SELECT * from tags"
|
||||
oData = oDatabase.ReadParamData(sSQL, New Hashtable)
|
||||
|
||||
For Each dr As DataRow In oData.Tables(0).Rows
|
||||
oTag = New clsTag
|
||||
oTag.ID = CStr(dr(0))
|
||||
oTag.Name = CStr(dr(1))
|
||||
hshList.Add(oTag.Name, oTag)
|
||||
Next
|
||||
|
||||
Return hshList
|
||||
End Function
|
||||
|
||||
End Class
|
||||
@@ -1,6 +1,4 @@
|
||||
Imports System.IO
|
||||
|
||||
Public Class mgrVariables
|
||||
Public Class mgrVariables
|
||||
|
||||
Public Shared Sub DoPathUpdate(ByVal sOld As String, ByVal sNew As String)
|
||||
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local)
|
||||
|
||||
Reference in New Issue
Block a user