Usability updates for filters and wizards
This commit is contained in:
@@ -194,22 +194,21 @@ Public Class frmAddWizard
|
||||
End Function
|
||||
|
||||
Private Sub DoSave()
|
||||
Dim oGames As New List(Of clsGame)
|
||||
Dim hshDupeCheck As New Hashtable
|
||||
Dim sExistingGame As String
|
||||
Dim sNewGame As String = oGameToSave.Name & ":" & oGameToSave.ProcessName
|
||||
Dim sNewGame As String = oGameToSave.ProcessName & ":" & oGameToSave.Name
|
||||
|
||||
For Each o As clsGame In GameData.Values
|
||||
oGames.Add(o)
|
||||
sExistingGame = o.Name & ":" & o.ProcessName
|
||||
hshDupeCheck.Add(sExistingGame, String.Empty)
|
||||
hshDupeCheck.Add(o.CompoundKey, String.Empty)
|
||||
Next
|
||||
|
||||
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
|
||||
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()
|
||||
End If
|
||||
End Sub
|
||||
@@ -397,6 +396,16 @@ Public Class frmAddWizard
|
||||
txtBox.Text = frm.BuilderString
|
||||
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
|
||||
ValidateBack()
|
||||
End Sub
|
||||
|
||||
+10
-6
@@ -1,12 +1,14 @@
|
||||
Public Class frmFilter
|
||||
|
||||
Public Enum eFilterType As Integer
|
||||
Any = 1
|
||||
All = 2
|
||||
NoFilter = 1
|
||||
AnyTag = 2
|
||||
AllTags = 3
|
||||
NoTags = 4
|
||||
End Enum
|
||||
|
||||
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 bShutdown As Boolean = False
|
||||
|
||||
@@ -103,10 +105,12 @@
|
||||
Next
|
||||
|
||||
'Set Filter Type
|
||||
If optAll.Checked Then
|
||||
eCurrentFilterType = eFilterType.All
|
||||
If Filters.Count = 0 Then
|
||||
eCurrentFilterType = eFilterType.NoTags
|
||||
ElseIf optAll.Checked Then
|
||||
eCurrentFilterType = eFilterType.AllTags
|
||||
Else
|
||||
eCurrentFilterType = eFilterType.Any
|
||||
eCurrentFilterType = eFilterType.AnyTag
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
@@ -16,6 +16,8 @@ Public Class frmGameManager
|
||||
Private oRemoteBackupData As SortedList
|
||||
Private bIsDirty 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
|
||||
View = 1
|
||||
@@ -201,22 +203,25 @@ Public Class frmGameManager
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub LoadData()
|
||||
Private Sub LoadData(Optional ByVal bRetainFilter As Boolean = True)
|
||||
Dim oRestoreData As New SortedList
|
||||
Dim oGame As clsGame
|
||||
Dim oBackup As clsBackup
|
||||
Dim frm As frmFilter
|
||||
Dim oFilters As New List(Of clsTag)
|
||||
Dim eCurrentFilter As frmFilter.eFilterType = frmFilter.eFilterType.Any
|
||||
|
||||
If optTag.Checked Then
|
||||
If Not bRetainFilter Then
|
||||
frm = New frmFilter
|
||||
frm.ShowDialog()
|
||||
oFilters = frm.Filters
|
||||
oCurrentFilters = frm.Filters
|
||||
eCurrentFilter = frm.FilterType
|
||||
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
|
||||
oRestoreData = mgrRestore.CompareManifests
|
||||
@@ -492,7 +497,18 @@ Public Class frmGameManager
|
||||
frm.IDList = sMonitorIDs
|
||||
frm.GameName = CurrentGame.Name
|
||||
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
|
||||
|
||||
Private Sub GetBackupInfo(ByVal oApp As clsGame)
|
||||
@@ -801,7 +817,6 @@ 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
|
||||
@@ -816,6 +831,7 @@ Public Class frmGameManager
|
||||
btnRestore.Enabled = False
|
||||
btnMarkAsRestored.Enabled = False
|
||||
btnTags.Enabled = False
|
||||
lblTags.Visible = False
|
||||
btnInclude.Text = "In&clude Items..."
|
||||
btnExclude.Text = "E&xclude Items..."
|
||||
Case eModes.MultiSelect
|
||||
@@ -840,6 +856,7 @@ Public Class frmGameManager
|
||||
btnRestore.Enabled = True
|
||||
btnMarkAsRestored.Enabled = True
|
||||
btnTags.Enabled = True
|
||||
lblTags.Visible = False
|
||||
End Select
|
||||
|
||||
IsLoading = False
|
||||
@@ -1257,7 +1274,7 @@ Public Class frmGameManager
|
||||
lstGames.ClearSelected()
|
||||
eCurrentMode = eModes.Disabled
|
||||
ModeChange()
|
||||
LoadData()
|
||||
LoadData(False)
|
||||
End Sub
|
||||
|
||||
Private Sub btnInclude_Click(sender As Object, e As EventArgs) Handles btnInclude.Click
|
||||
|
||||
@@ -72,7 +72,7 @@ Public Class frmStartUpWizard
|
||||
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 mgrMonitorList.DoImport(mgrPath.OfficialImportURL) Then
|
||||
oGameData = mgrMonitorList.ReadList(mgrMonitorList.eListTypes.ScanList)
|
||||
oGameData = mgrMonitorList.ReadList(mgrMonitorList.eListTypes.FullList)
|
||||
If oSettings.Sync Then mgrMonitorList.SyncMonitorLists()
|
||||
End If
|
||||
End If
|
||||
@@ -80,7 +80,7 @@ Public Class frmStartUpWizard
|
||||
|
||||
Private Sub LoadGameSettings()
|
||||
'Load Game XML
|
||||
oGameData = mgrMonitorList.ReadList(mgrMonitorList.eListTypes.ScanList)
|
||||
oGameData = mgrMonitorList.ReadList(mgrMonitorList.eListTypes.FullList)
|
||||
End Sub
|
||||
|
||||
Private Sub OpenGameWizard()
|
||||
|
||||
@@ -39,12 +39,19 @@ Public Class mgrMonitorList
|
||||
End Sub
|
||||
|
||||
Public Shared Sub ExportMonitorList(ByVal sLocation As String)
|
||||
Dim frm As New frmFilter
|
||||
Dim oList As List(Of Game)
|
||||
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()
|
||||
oList = ReadListForExport(frm.Filters, frm.FilterType)
|
||||
oFilters = frm.Filters
|
||||
eCurrentFilter = frm.FilterType
|
||||
End If
|
||||
|
||||
oList = ReadListForExport(oFilters, eCurrentFilter)
|
||||
|
||||
bSuccess = mgrXML.SerializeAndExport(oList, sLocation)
|
||||
|
||||
@@ -266,9 +273,11 @@ Public Class mgrMonitorList
|
||||
Dim hshParams As New Hashtable
|
||||
Dim iCounter As Integer = 0
|
||||
|
||||
If oFilters.Count > 0 Then
|
||||
|
||||
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 &= "NATURAL JOIN gametags WHERE gametags.TagID IN ("
|
||||
|
||||
@@ -280,7 +289,7 @@ Public Class mgrMonitorList
|
||||
|
||||
sSQL = sSQL.TrimEnd(",")
|
||||
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 "
|
||||
|
||||
For Each oTag As clsTag In oFilters
|
||||
@@ -293,10 +302,9 @@ Public Class mgrMonitorList
|
||||
Next
|
||||
|
||||
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
|
||||
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)
|
||||
|
||||
@@ -382,9 +390,10 @@ Public Class mgrMonitorList
|
||||
Dim hshParams As New Hashtable
|
||||
Dim iCounter As Integer = 0
|
||||
|
||||
If oFilters.Count > 0 Then
|
||||
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 &= "NATURAL JOIN gametags WHERE gametags.TagID IN ("
|
||||
|
||||
@@ -396,7 +405,7 @@ Public Class mgrMonitorList
|
||||
|
||||
sSQL = sSQL.TrimEnd(",")
|
||||
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 "
|
||||
|
||||
For Each oTag As clsTag In oFilters
|
||||
@@ -409,10 +418,9 @@ Public Class mgrMonitorList
|
||||
Next
|
||||
|
||||
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
|
||||
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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user