Enhancement for issue #81

This commit is contained in:
Michael J. Seiferling
2017-06-12 09:59:04 -06:00
parent 50563e3be0
commit be8cb66136
2 changed files with 134 additions and 45 deletions
+52 -6
View File
@@ -7,6 +7,7 @@ Public Class frmGameManager
Private bPendingRestores As Boolean = False Private bPendingRestores As Boolean = False
Private oCurrentBackupItem As clsBackup Private oCurrentBackupItem As clsBackup
Private oCurrentGame As clsGame Private oCurrentGame As clsGame
Private oTagsToSave As New List(Of KeyValuePair(Of String, String))
Private bDisableExternalFunctions As Boolean = False Private bDisableExternalFunctions As Boolean = False
Private bTriggerBackup As Boolean = False Private bTriggerBackup As Boolean = False
Private bTriggerRestore As Boolean = False Private bTriggerRestore As Boolean = False
@@ -526,17 +527,30 @@ Public Class frmGameManager
Dim oApp As clsGame Dim oApp As clsGame
Dim sMonitorIDs As New List(Of String) Dim sMonitorIDs As New List(Of String)
If eCurrentMode = eModes.Add Then
'Use a dummy ID
sMonitorIDs.Add(Guid.NewGuid.ToString)
frm.GameName = txtName.Text
frm.NewMode = True
frm.TagList = oTagsToSave
Else
For Each oData In lstGames.SelectedItems For Each oData In lstGames.SelectedItems
oApp = DirectCast(AppData(oData.Key), clsGame) oApp = DirectCast(AppData(oData.Key), clsGame)
sMonitorIDs.Add(oApp.ID) sMonitorIDs.Add(oApp.ID)
Next Next
frm.GameName = CurrentGame.Name
frm.NewMode = False
End If
frm.IDList = sMonitorIDs frm.IDList = sMonitorIDs
frm.GameName = CurrentGame.Name
frm.ShowDialog() frm.ShowDialog()
If eCurrentMode = eModes.Add Then
oTagsToSave = frm.TagList
FillTagsbyList(frm.TagList)
Else
'Only update visible tags if one item is selected 'Only update visible tags if one item is selected
If lstGames.SelectedItems.Count = 1 Then FillTags(CurrentGame.ID) If lstGames.SelectedItems.Count = 1 Then FillTagsbyID(CurrentGame.ID)
'If a tag filter is enabled, reload list to reflect changes 'If a tag filter is enabled, reload list to reflect changes
If optCustom.Checked Then If optCustom.Checked Then
@@ -546,6 +560,8 @@ Public Class frmGameManager
'If the selected game(s) no longer match the filter, disable the form 'If the selected game(s) no longer match the filter, disable the form
If lstGames.SelectedIndex = -1 Then eCurrentMode = eModes.Disabled If lstGames.SelectedIndex = -1 Then eCurrentMode = eModes.Disabled
ModeChange() ModeChange()
End If
End Sub End Sub
Private Sub UpdateBackupInfo(ByVal sManifestID As String) Private Sub UpdateBackupInfo(ByVal sManifestID As String)
@@ -731,7 +747,7 @@ Public Class frmGameManager
txtVersion.Text = oApp.Version txtVersion.Text = oApp.Version
txtIcon.Text = oApp.Icon txtIcon.Text = oApp.Icon
FillTags(oData.Key) FillTagsbyID(oData.Key)
'Icon 'Icon
If IO.File.Exists(oApp.Icon) Then If IO.File.Exists(oApp.Icon) Then
@@ -756,7 +772,7 @@ Public Class frmGameManager
IsLoading = False IsLoading = False
End Sub End Sub
Private Sub FillTags(ByVal sID As String) Private Sub FillTagsbyID(ByVal sID As String)
Dim hshTags As Hashtable Dim hshTags As Hashtable
Dim oTag As clsTag Dim oTag As clsTag
Dim sTags As String = String.Empty Dim sTags As String = String.Empty
@@ -772,6 +788,17 @@ Public Class frmGameManager
lblTags.Text = sTags.TrimEnd(cTrim) lblTags.Text = sTags.TrimEnd(cTrim)
End Sub End Sub
Private Sub FillTagsbyList(ByVal oList As List(Of KeyValuePair(Of String, String)))
Dim sTags As String = String.Empty
Dim cTrim() As Char = {",", " "}
For Each kp As KeyValuePair(Of String, String) In oList
sTags &= "#" & kp.Value & ", "
Next
lblTags.Text = sTags.TrimEnd(cTrim)
End Sub
Private Sub DirtyCheck_ValueChanged(sender As Object, e As EventArgs) Private Sub DirtyCheck_ValueChanged(sender As Object, e As EventArgs)
If Not IsLoading And Not eCurrentMode = eModes.MultiSelect Then If Not IsLoading And Not eCurrentMode = eModes.MultiSelect Then
IsDirty = True IsDirty = True
@@ -817,6 +844,7 @@ Public Class frmGameManager
Select Case eCurrentMode Select Case eCurrentMode
Case eModes.Add Case eModes.Add
oTagsToSave.Clear()
grpFilter.Enabled = False grpFilter.Enabled = False
lstGames.Enabled = False lstGames.Enabled = False
lblQuickFilter.Enabled = False lblQuickFilter.Enabled = False
@@ -844,8 +872,9 @@ Public Class frmGameManager
btnOpenRestorePath.Enabled = False btnOpenRestorePath.Enabled = False
chkEnabled.Checked = True chkEnabled.Checked = True
chkMonitorOnly.Checked = False chkMonitorOnly.Checked = False
btnTags.Enabled = False btnTags.Enabled = True
lblTags.Visible = False lblTags.Text = String.Empty
lblTags.Visible = True
btnInclude.Text = frmGameManager_btnInclude btnInclude.Text = frmGameManager_btnInclude
btnExclude.Text = frmGameManager_btnExclude btnExclude.Text = frmGameManager_btnExclude
btnImport.Enabled = False btnImport.Enabled = False
@@ -1053,6 +1082,22 @@ Public Class frmGameManager
End If End If
End Sub End Sub
Private Sub SaveTags(ByVal sID As String)
Dim oGameTag As clsGameTag
Dim oGameTags As List(Of clsGameTag)
If oTagsToSave.Count > 0 Then
oGameTags = New List(Of clsGameTag)
For Each kp As KeyValuePair(Of String, String) In oTagsToSave
oGameTag = New clsGameTag
oGameTag.MonitorID = sID
oGameTag.TagID = kp.Key
oGameTags.Add(oGameTag)
Next
mgrGameTags.DoGameTagAddBatch(oGameTags)
End If
End Sub
Private Sub SaveApp() Private Sub SaveApp()
Dim oData As KeyValuePair(Of String, String) Dim oData As KeyValuePair(Of String, String)
Dim oApp As New clsGame Dim oApp As New clsGame
@@ -1093,6 +1138,7 @@ Public Class frmGameManager
If CoreValidatation(oApp) Then If CoreValidatation(oApp) Then
bSuccess = True bSuccess = True
mgrMonitorList.DoListAdd(oApp) mgrMonitorList.DoListAdd(oApp)
SaveTags(oApp.ID)
eCurrentMode = eModes.View eCurrentMode = eModes.View
End If End If
Case eModes.Edit Case eModes.Edit
+58 -15
View File
@@ -2,8 +2,10 @@
Public Class frmGameTags Public Class frmGameTags
Dim sMonitorIDs As List(Of String) Private sMonitorIDs As List(Of String)
Dim sGameName As String = String.Empty Private sGameName As String = String.Empty
Private bNewMode As Boolean = False
Private oTagList As List(Of KeyValuePair(Of String, String))
Public Property IDList As List(Of String) Public Property IDList As List(Of String)
Get Get
@@ -23,6 +25,25 @@ Public Class frmGameTags
End Set End Set
End Property End Property
Public Property NewMode As Boolean
Get
Return bNewMode
End Get
Set(value As Boolean)
bNewMode = value
End Set
End Property
Public Property TagList As List(Of KeyValuePair(Of String, String))
Get
Return oTagList
End Get
Set(value As List(Of KeyValuePair(Of String, String)))
oTagList = value
End Set
End Property
Private Sub AddTag() Private Sub AddTag()
Dim oData As KeyValuePair(Of String, String) Dim oData As KeyValuePair(Of String, String)
Dim oTags As List(Of KeyValuePair(Of String, String)) Dim oTags As List(Of KeyValuePair(Of String, String))
@@ -40,7 +61,7 @@ Public Class frmGameTags
oGameTags.Add(oGameTag) oGameTags.Add(oGameTag)
Next Next
mgrGameTags.DoGameTagAddBatch(oGameTags) If Not bNewMode Then mgrGameTags.DoGameTagAddBatch(oGameTags)
lstGameTags.Items.Add(oData) lstGameTags.Items.Add(oData)
lstTags.Items.Remove(oData) lstTags.Items.Remove(oData)
@@ -60,7 +81,7 @@ Public Class frmGameTags
oGameTags.Add(oGameTag) oGameTags.Add(oGameTag)
Next Next
mgrGameTags.DoGameTagAddBatch(oGameTags) If Not bNewMode Then mgrGameTags.DoGameTagAddBatch(oGameTags)
lstGameTags.Items.Add(kp) lstGameTags.Items.Add(kp)
lstTags.Items.Remove(kp) lstTags.Items.Remove(kp)
@@ -86,7 +107,7 @@ Public Class frmGameTags
oGameTags.Add(oGameTag) oGameTags.Add(oGameTag)
Next Next
mgrGameTags.DoGameTagDelete(oGameTags) If Not bNewMode Then mgrGameTags.DoGameTagDelete(oGameTags)
lstGameTags.Items.Remove(oData) lstGameTags.Items.Remove(oData)
lstTags.Items.Add(oData) lstTags.Items.Add(oData)
@@ -106,7 +127,7 @@ Public Class frmGameTags
oGameTags.Add(oGameTag) oGameTags.Add(oGameTag)
Next Next
mgrGameTags.DoGameTagDelete(oGameTags) If Not bNewMode Then mgrGameTags.DoGameTagDelete(oGameTags)
lstGameTags.Items.Remove(kp) lstGameTags.Items.Remove(kp)
lstTags.Items.Add(kp) lstTags.Items.Add(kp)
@@ -121,16 +142,8 @@ Public Class frmGameTags
Dim oTag As clsTag Dim oTag As clsTag
Dim oData As KeyValuePair(Of String, String) Dim oData As KeyValuePair(Of String, String)
'Handle Data 'Load Tags
hshTags = mgrTags.ReadTags() 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 'Handle Lists
lstTags.Items.Clear() lstTags.Items.Clear()
@@ -141,11 +154,32 @@ Public Class frmGameTags
lstGameTags.ValueMember = "Key" lstGameTags.ValueMember = "Key"
lstGameTags.DisplayMember = "Value" lstGameTags.DisplayMember = "Value"
If bNewMode Then
For Each kp As KeyValuePair(Of String, String) In oTagList
If hshTags.ContainsKey(kp.Value) Then
hshTags.Remove(kp.Value)
End If
Next
For Each kp As KeyValuePair(Of String, String) In oTagList
lstGameTags.Items.Add(kp)
Next
Else
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
For Each de As DictionaryEntry In hshGameTags For Each de As DictionaryEntry In hshGameTags
oTag = DirectCast(de.Value, clsTag) oTag = DirectCast(de.Value, clsTag)
oData = New KeyValuePair(Of String, String)(oTag.ID, oTag.Name) oData = New KeyValuePair(Of String, String)(oTag.ID, oTag.Name)
lstGameTags.Items.Add(oData) lstGameTags.Items.Add(oData)
Next Next
End If
For Each de As DictionaryEntry In hshTags For Each de As DictionaryEntry In hshTags
oTag = DirectCast(de.Value, clsTag) oTag = DirectCast(de.Value, clsTag)
@@ -155,6 +189,14 @@ Public Class frmGameTags
End Sub End Sub
Private Sub BuildTagList()
Dim oData As KeyValuePair(Of String, String)
oTagList.Clear()
For Each oData In lstGameTags.Items
oTagList.Add(oData)
Next
End Sub
Private Sub OpenTags() Private Sub OpenTags()
Dim frm As New frmTags Dim frm As New frmTags
frm.ShowDialog() frm.ShowDialog()
@@ -185,6 +227,7 @@ Public Class frmGameTags
End Sub End Sub
Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
If bNewMode Then BuildTagList()
Me.Close() Me.Close()
End Sub End Sub