Usability updates for filters and wizards
This commit is contained in:
@@ -194,22 +194,21 @@ Public Class frmAddWizard
|
|||||||
End Function
|
End Function
|
||||||
|
|
||||||
Private Sub DoSave()
|
Private Sub DoSave()
|
||||||
Dim oGames As New List(Of clsGame)
|
|
||||||
Dim hshDupeCheck As New Hashtable
|
Dim hshDupeCheck As New Hashtable
|
||||||
Dim sExistingGame As String
|
Dim sNewGame As String = oGameToSave.ProcessName & ":" & oGameToSave.Name
|
||||||
Dim sNewGame As String = oGameToSave.Name & ":" & oGameToSave.ProcessName
|
|
||||||
|
|
||||||
For Each o As clsGame In GameData.Values
|
For Each o As clsGame In GameData.Values
|
||||||
oGames.Add(o)
|
hshDupeCheck.Add(o.CompoundKey, String.Empty)
|
||||||
sExistingGame = o.Name & ":" & o.ProcessName
|
|
||||||
hshDupeCheck.Add(sExistingGame, String.Empty)
|
|
||||||
Next
|
Next
|
||||||
|
|
||||||
If hshDupeCheck.Contains(sNewGame) Then
|
If hshDupeCheck.Contains(sNewGame) Then
|
||||||
MsgBox("The monitor list already contains a game with this exact name and process.", MsgBoxStyle.Exclamation, "Game Backup Monitor")
|
MsgBox("A game with this exact name and process already exists.", MsgBoxStyle.Exclamation, "Game Backup Monitor")
|
||||||
Else
|
Else
|
||||||
mgrMonitorList.DoListAdd(oGameToSave)
|
mgrMonitorList.DoListAdd(oGameToSave)
|
||||||
MsgBox(oGameToSave.Name & " has been added to the monitor list.", MsgBoxStyle.Exclamation, "Game Backup Monitor")
|
If MsgBox(oGameToSave.Name & " has been saved." & vbCrLf & vbCrLf &
|
||||||
|
"Would you like to add tags for " & oGameToSave.Name & "?", MsgBoxStyle.YesNo, "Game Backup Monitor") = MsgBoxResult.Yes Then
|
||||||
|
OpenTags(oGameToSave)
|
||||||
|
End If
|
||||||
Me.Close()
|
Me.Close()
|
||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
@@ -397,6 +396,16 @@ Public Class frmAddWizard
|
|||||||
txtBox.Text = frm.BuilderString
|
txtBox.Text = frm.BuilderString
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
Private Sub OpenTags(ByVal oGame As clsGame)
|
||||||
|
Dim frm As New frmGameTags
|
||||||
|
Dim sMonitorIDs As New List(Of String)
|
||||||
|
sMonitorIDs.Add(oGame.ID)
|
||||||
|
|
||||||
|
frm.IDList = sMonitorIDs
|
||||||
|
frm.GameName = oGame.Name
|
||||||
|
frm.ShowDialog()
|
||||||
|
End Sub
|
||||||
|
|
||||||
Private Sub btnBack_Click(sender As Object, e As EventArgs) Handles btnBack.Click
|
Private Sub btnBack_Click(sender As Object, e As EventArgs) Handles btnBack.Click
|
||||||
ValidateBack()
|
ValidateBack()
|
||||||
End Sub
|
End Sub
|
||||||
|
|||||||
+10
-6
@@ -1,12 +1,14 @@
|
|||||||
Public Class frmFilter
|
Public Class frmFilter
|
||||||
|
|
||||||
Public Enum eFilterType As Integer
|
Public Enum eFilterType As Integer
|
||||||
Any = 1
|
NoFilter = 1
|
||||||
All = 2
|
AnyTag = 2
|
||||||
|
AllTags = 3
|
||||||
|
NoTags = 4
|
||||||
End Enum
|
End Enum
|
||||||
|
|
||||||
Dim oFilters As New List(Of clsTag)
|
Dim oFilters As New List(Of clsTag)
|
||||||
Dim eCurrentFilterType As eFilterType = eFilterType.Any
|
Dim eCurrentFilterType As eFilterType = eFilterType.AnyTag
|
||||||
Dim hshTags As New Hashtable
|
Dim hshTags As New Hashtable
|
||||||
Dim bShutdown As Boolean = False
|
Dim bShutdown As Boolean = False
|
||||||
|
|
||||||
@@ -103,10 +105,12 @@
|
|||||||
Next
|
Next
|
||||||
|
|
||||||
'Set Filter Type
|
'Set Filter Type
|
||||||
If optAll.Checked Then
|
If Filters.Count = 0 Then
|
||||||
eCurrentFilterType = eFilterType.All
|
eCurrentFilterType = eFilterType.NoTags
|
||||||
|
ElseIf optAll.Checked Then
|
||||||
|
eCurrentFilterType = eFilterType.AllTags
|
||||||
Else
|
Else
|
||||||
eCurrentFilterType = eFilterType.Any
|
eCurrentFilterType = eFilterType.AnyTag
|
||||||
End If
|
End If
|
||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
|
|||||||
@@ -16,6 +16,8 @@ Public Class frmGameManager
|
|||||||
Private oRemoteBackupData As SortedList
|
Private oRemoteBackupData As SortedList
|
||||||
Private bIsDirty As Boolean = False
|
Private bIsDirty As Boolean = False
|
||||||
Private bIsLoading As Boolean = False
|
Private bIsLoading As Boolean = False
|
||||||
|
Private oCurrentFilters As New List(Of clsTag)
|
||||||
|
Private eCurrentFilter As frmFilter.eFilterType = frmFilter.eFilterType.NoFilter
|
||||||
|
|
||||||
Private Enum eModes As Integer
|
Private Enum eModes As Integer
|
||||||
View = 1
|
View = 1
|
||||||
@@ -201,22 +203,25 @@ Public Class frmGameManager
|
|||||||
End If
|
End If
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub LoadData()
|
Private Sub LoadData(Optional ByVal bRetainFilter As Boolean = True)
|
||||||
Dim oRestoreData As New SortedList
|
Dim oRestoreData As New SortedList
|
||||||
Dim oGame As clsGame
|
Dim oGame As clsGame
|
||||||
Dim oBackup As clsBackup
|
Dim oBackup As clsBackup
|
||||||
Dim frm As frmFilter
|
Dim frm As frmFilter
|
||||||
Dim oFilters As New List(Of clsTag)
|
|
||||||
Dim eCurrentFilter As frmFilter.eFilterType = frmFilter.eFilterType.Any
|
|
||||||
|
|
||||||
If optTag.Checked Then
|
If optTag.Checked Then
|
||||||
|
If Not bRetainFilter Then
|
||||||
frm = New frmFilter
|
frm = New frmFilter
|
||||||
frm.ShowDialog()
|
frm.ShowDialog()
|
||||||
oFilters = frm.Filters
|
oCurrentFilters = frm.Filters
|
||||||
eCurrentFilter = frm.FilterType
|
eCurrentFilter = frm.FilterType
|
||||||
End If
|
End If
|
||||||
|
Else
|
||||||
|
oCurrentFilters.Clear()
|
||||||
|
eCurrentFilter = frmFilter.eFilterType.NoFilter
|
||||||
|
End If
|
||||||
|
|
||||||
AppData = mgrMonitorList.ReadFilteredList(oFilters, eCurrentFilter)
|
AppData = mgrMonitorList.ReadFilteredList(oCurrentFilters, eCurrentFilter)
|
||||||
|
|
||||||
If optPendingRestores.Checked Then
|
If optPendingRestores.Checked Then
|
||||||
oRestoreData = mgrRestore.CompareManifests
|
oRestoreData = mgrRestore.CompareManifests
|
||||||
@@ -492,7 +497,18 @@ Public Class frmGameManager
|
|||||||
frm.IDList = sMonitorIDs
|
frm.IDList = sMonitorIDs
|
||||||
frm.GameName = CurrentGame.Name
|
frm.GameName = CurrentGame.Name
|
||||||
frm.ShowDialog()
|
frm.ShowDialog()
|
||||||
FillTags(CurrentGame.ID)
|
|
||||||
|
'Only update visible tags if one item is selected
|
||||||
|
If lstGames.SelectedItems.Count = 1 Then FillTags(CurrentGame.ID)
|
||||||
|
|
||||||
|
'If a tag filter is enabled, reload list to reflect changes
|
||||||
|
If optTag.Checked Then
|
||||||
|
LoadData()
|
||||||
|
End If
|
||||||
|
|
||||||
|
'If the selected game(s) no longer match the filter, disable the form
|
||||||
|
If lstGames.SelectedIndex = -1 Then eCurrentMode = eModes.Disabled
|
||||||
|
ModeChange()
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub GetBackupInfo(ByVal oApp As clsGame)
|
Private Sub GetBackupInfo(ByVal oApp As clsGame)
|
||||||
@@ -801,7 +817,6 @@ Public Class frmGameManager
|
|||||||
WipeControls(grpExtra.Controls)
|
WipeControls(grpExtra.Controls)
|
||||||
WipeControls(grpStats.Controls)
|
WipeControls(grpStats.Controls)
|
||||||
pbIcon.Image = My.Resources.Unknown
|
pbIcon.Image = My.Resources.Unknown
|
||||||
lblTags.Text = String.Empty
|
|
||||||
lblSync.Visible = False
|
lblSync.Visible = False
|
||||||
btnSave.Enabled = False
|
btnSave.Enabled = False
|
||||||
btnCancel.Enabled = False
|
btnCancel.Enabled = False
|
||||||
@@ -816,6 +831,7 @@ Public Class frmGameManager
|
|||||||
btnRestore.Enabled = False
|
btnRestore.Enabled = False
|
||||||
btnMarkAsRestored.Enabled = False
|
btnMarkAsRestored.Enabled = False
|
||||||
btnTags.Enabled = False
|
btnTags.Enabled = False
|
||||||
|
lblTags.Visible = False
|
||||||
btnInclude.Text = "In&clude Items..."
|
btnInclude.Text = "In&clude Items..."
|
||||||
btnExclude.Text = "E&xclude Items..."
|
btnExclude.Text = "E&xclude Items..."
|
||||||
Case eModes.MultiSelect
|
Case eModes.MultiSelect
|
||||||
@@ -840,6 +856,7 @@ Public Class frmGameManager
|
|||||||
btnRestore.Enabled = True
|
btnRestore.Enabled = True
|
||||||
btnMarkAsRestored.Enabled = True
|
btnMarkAsRestored.Enabled = True
|
||||||
btnTags.Enabled = True
|
btnTags.Enabled = True
|
||||||
|
lblTags.Visible = False
|
||||||
End Select
|
End Select
|
||||||
|
|
||||||
IsLoading = False
|
IsLoading = False
|
||||||
@@ -1257,7 +1274,7 @@ Public Class frmGameManager
|
|||||||
lstGames.ClearSelected()
|
lstGames.ClearSelected()
|
||||||
eCurrentMode = eModes.Disabled
|
eCurrentMode = eModes.Disabled
|
||||||
ModeChange()
|
ModeChange()
|
||||||
LoadData()
|
LoadData(False)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub btnInclude_Click(sender As Object, e As EventArgs) Handles btnInclude.Click
|
Private Sub btnInclude_Click(sender As Object, e As EventArgs) Handles btnInclude.Click
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ Public Class frmStartUpWizard
|
|||||||
Private Sub DownloadSettings()
|
Private Sub DownloadSettings()
|
||||||
If MsgBox("Would you like to import from the latest pre-configured game list?", MsgBoxStyle.YesNo, "Game Backup Monitor") = MsgBoxResult.Yes Then
|
If MsgBox("Would you like to import from the latest pre-configured game list?", MsgBoxStyle.YesNo, "Game Backup Monitor") = MsgBoxResult.Yes Then
|
||||||
If mgrMonitorList.DoImport(mgrPath.OfficialImportURL) Then
|
If mgrMonitorList.DoImport(mgrPath.OfficialImportURL) Then
|
||||||
oGameData = mgrMonitorList.ReadList(mgrMonitorList.eListTypes.ScanList)
|
oGameData = mgrMonitorList.ReadList(mgrMonitorList.eListTypes.FullList)
|
||||||
If oSettings.Sync Then mgrMonitorList.SyncMonitorLists()
|
If oSettings.Sync Then mgrMonitorList.SyncMonitorLists()
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
@@ -80,7 +80,7 @@ Public Class frmStartUpWizard
|
|||||||
|
|
||||||
Private Sub LoadGameSettings()
|
Private Sub LoadGameSettings()
|
||||||
'Load Game XML
|
'Load Game XML
|
||||||
oGameData = mgrMonitorList.ReadList(mgrMonitorList.eListTypes.ScanList)
|
oGameData = mgrMonitorList.ReadList(mgrMonitorList.eListTypes.FullList)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub OpenGameWizard()
|
Private Sub OpenGameWizard()
|
||||||
|
|||||||
@@ -39,12 +39,19 @@ Public Class mgrMonitorList
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Public Shared Sub ExportMonitorList(ByVal sLocation As String)
|
Public Shared Sub ExportMonitorList(ByVal sLocation As String)
|
||||||
Dim frm As New frmFilter
|
|
||||||
Dim oList As List(Of Game)
|
Dim oList As List(Of Game)
|
||||||
Dim bSuccess As Boolean = False
|
Dim bSuccess As Boolean = False
|
||||||
|
Dim oFilters As New List(Of clsTag)
|
||||||
|
Dim eCurrentFilter As frmFilter.eFilterType = frmFilter.eFilterType.NoFilter
|
||||||
|
|
||||||
|
If MsgBox("Would you like to apply a filter to your export?", MsgBoxStyle.YesNo, "Game Backup Monitor") = MsgBoxResult.Yes Then
|
||||||
|
Dim frm As New frmFilter
|
||||||
frm.ShowDialog()
|
frm.ShowDialog()
|
||||||
oList = ReadListForExport(frm.Filters, frm.FilterType)
|
oFilters = frm.Filters
|
||||||
|
eCurrentFilter = frm.FilterType
|
||||||
|
End If
|
||||||
|
|
||||||
|
oList = ReadListForExport(oFilters, eCurrentFilter)
|
||||||
|
|
||||||
bSuccess = mgrXML.SerializeAndExport(oList, sLocation)
|
bSuccess = mgrXML.SerializeAndExport(oList, sLocation)
|
||||||
|
|
||||||
@@ -266,9 +273,11 @@ Public Class mgrMonitorList
|
|||||||
Dim hshParams As New Hashtable
|
Dim hshParams As New Hashtable
|
||||||
Dim iCounter As Integer = 0
|
Dim iCounter As Integer = 0
|
||||||
|
|
||||||
If oFilters.Count > 0 Then
|
|
||||||
Select Case eFilterType
|
Select Case eFilterType
|
||||||
Case frmFilter.eFilterType.Any
|
Case frmFilter.eFilterType.NoFilter
|
||||||
|
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly FROM monitorlist ORDER BY Name Asc"
|
||||||
|
Case frmFilter.eFilterType.AnyTag
|
||||||
sSQL = "SELECT DISTINCT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly FROM monitorlist "
|
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 ("
|
sSQL &= "NATURAL JOIN gametags WHERE gametags.TagID IN ("
|
||||||
|
|
||||||
@@ -280,7 +289,7 @@ Public Class mgrMonitorList
|
|||||||
|
|
||||||
sSQL = sSQL.TrimEnd(",")
|
sSQL = sSQL.TrimEnd(",")
|
||||||
sSQL &= ") ORDER BY Name Asc"
|
sSQL &= ") ORDER BY Name Asc"
|
||||||
Case frmFilter.eFilterType.All
|
Case frmFilter.eFilterType.AllTags
|
||||||
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly FROM monitorlist WHERE MonitorID IN "
|
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly FROM monitorlist WHERE MonitorID IN "
|
||||||
|
|
||||||
For Each oTag As clsTag In oFilters
|
For Each oTag As clsTag In oFilters
|
||||||
@@ -293,10 +302,9 @@ Public Class mgrMonitorList
|
|||||||
Next
|
Next
|
||||||
|
|
||||||
sSQL &= " ORDER BY Name Asc"
|
sSQL &= " ORDER BY Name Asc"
|
||||||
|
Case frmFilter.eFilterType.NoTags
|
||||||
|
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly FROM monitorlist WHERE MonitorID NOT IN (SELECT MonitorID FROM gametags) ORDER BY Name Asc"
|
||||||
End Select
|
End Select
|
||||||
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)
|
oData = oDatabase.ReadParamData(sSQL, hshParams)
|
||||||
|
|
||||||
@@ -382,9 +390,10 @@ Public Class mgrMonitorList
|
|||||||
Dim hshParams As New Hashtable
|
Dim hshParams As New Hashtable
|
||||||
Dim iCounter As Integer = 0
|
Dim iCounter As Integer = 0
|
||||||
|
|
||||||
If oFilters.Count > 0 Then
|
|
||||||
Select Case eFilterType
|
Select Case eFilterType
|
||||||
Case frmFilter.eFilterType.Any
|
Case frmFilter.eFilterType.NoFilter
|
||||||
|
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly FROM monitorlist ORDER BY Name Asc"
|
||||||
|
Case frmFilter.eFilterType.AnyTag
|
||||||
sSQL = "SELECT DISTINCT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly FROM monitorlist "
|
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 ("
|
sSQL &= "NATURAL JOIN gametags WHERE gametags.TagID IN ("
|
||||||
|
|
||||||
@@ -396,7 +405,7 @@ Public Class mgrMonitorList
|
|||||||
|
|
||||||
sSQL = sSQL.TrimEnd(",")
|
sSQL = sSQL.TrimEnd(",")
|
||||||
sSQL &= ") ORDER BY Name Asc"
|
sSQL &= ") ORDER BY Name Asc"
|
||||||
Case frmFilter.eFilterType.All
|
Case frmFilter.eFilterType.AllTags
|
||||||
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly FROM monitorlist WHERE MonitorID IN "
|
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly FROM monitorlist WHERE MonitorID IN "
|
||||||
|
|
||||||
For Each oTag As clsTag In oFilters
|
For Each oTag As clsTag In oFilters
|
||||||
@@ -409,10 +418,9 @@ Public Class mgrMonitorList
|
|||||||
Next
|
Next
|
||||||
|
|
||||||
sSQL &= " ORDER BY Name Asc"
|
sSQL &= " ORDER BY Name Asc"
|
||||||
|
Case frmFilter.eFilterType.NoTags
|
||||||
|
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly FROM monitorlist WHERE MonitorID NOT IN (SELECT MonitorID FROM gametags) ORDER BY Name Asc"
|
||||||
End Select
|
End Select
|
||||||
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)
|
oData = oDatabase.ReadParamData(sSQL, hshParams)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user