diff --git a/GBM/Forms/frmGameManager.Designer.vb b/GBM/Forms/frmGameManager.Designer.vb
index b9f31ff..f06a0ee 100644
--- a/GBM/Forms/frmGameManager.Designer.vb
+++ b/GBM/Forms/frmGameManager.Designer.vb
@@ -92,6 +92,9 @@ Partial Class frmGameManager
Me.cmsFile = New System.Windows.Forms.ToolStripMenuItem()
Me.txtQuickFilter = New System.Windows.Forms.TextBox()
Me.lblQuickFilter = New System.Windows.Forms.Label()
+ Me.cmsDeleteBackup = New System.Windows.Forms.ContextMenuStrip(Me.components)
+ Me.cmsDeleteOne = New System.Windows.Forms.ToolStripMenuItem()
+ Me.cmsDeleteAll = New System.Windows.Forms.ToolStripMenuItem()
Me.grpConfig.SuspendLayout()
CType(Me.nudLimit, System.ComponentModel.ISupportInitialize).BeginInit()
Me.grpExtra.SuspendLayout()
@@ -100,6 +103,7 @@ Partial Class frmGameManager
Me.grpStats.SuspendLayout()
Me.grpFilter.SuspendLayout()
Me.cmsImport.SuspendLayout()
+ Me.cmsDeleteBackup.SuspendLayout()
Me.SuspendLayout()
'
'btnAdd
@@ -785,6 +789,25 @@ Partial Class frmGameManager
Me.lblQuickFilter.TabIndex = 1
Me.lblQuickFilter.Text = "Quick Filter:"
'
+ 'cmsDeleteBackup
+ '
+ Me.cmsDeleteBackup.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.cmsDeleteOne, Me.cmsDeleteAll})
+ Me.cmsDeleteBackup.Name = "cmsDeleteBackup"
+ Me.cmsDeleteBackup.ShowImageMargin = False
+ Me.cmsDeleteBackup.Size = New System.Drawing.Size(128, 70)
+ '
+ 'cmsDeleteOne
+ '
+ Me.cmsDeleteOne.Name = "cmsDeleteOne"
+ Me.cmsDeleteOne.Size = New System.Drawing.Size(127, 22)
+ Me.cmsDeleteOne.Text = "&Selected File"
+ '
+ 'cmsDeleteAll
+ '
+ Me.cmsDeleteAll.Name = "cmsDeleteAll"
+ Me.cmsDeleteAll.Size = New System.Drawing.Size(127, 22)
+ Me.cmsDeleteAll.Text = "&All Files"
+ '
'frmGameManager
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@@ -829,6 +852,7 @@ Partial Class frmGameManager
Me.grpFilter.ResumeLayout(False)
Me.grpFilter.PerformLayout()
Me.cmsImport.ResumeLayout(False)
+ Me.cmsDeleteBackup.ResumeLayout(False)
Me.ResumeLayout(False)
Me.PerformLayout()
@@ -902,4 +926,7 @@ Partial Class frmGameManager
Friend WithEvents lblLimit As Label
Friend WithEvents nudLimit As NumericUpDown
Friend WithEvents cboRemoteBackup As ComboBox
+ Friend WithEvents cmsDeleteBackup As ContextMenuStrip
+ Friend WithEvents cmsDeleteOne As ToolStripMenuItem
+ Friend WithEvents cmsDeleteAll As ToolStripMenuItem
End Class
diff --git a/GBM/Forms/frmGameManager.resx b/GBM/Forms/frmGameManager.resx
index 82082bf..aa8299a 100644
--- a/GBM/Forms/frmGameManager.resx
+++ b/GBM/Forms/frmGameManager.resx
@@ -120,4 +120,7 @@
17, 17
+
+ 127, 17
+
\ No newline at end of file
diff --git a/GBM/Forms/frmGameManager.vb b/GBM/Forms/frmGameManager.vb
index ee91915..667bdee 100644
--- a/GBM/Forms/frmGameManager.vb
+++ b/GBM/Forms/frmGameManager.vb
@@ -637,9 +637,36 @@ Public Class frmGameManager
End Sub
+ Private Sub DeleteAllBackups()
+ Dim oBackupData As List(Of clsBackup)
+ Dim oBackup As clsBackup
+
+ If mgrCommon.ShowMessage(frmGameManager_ConfirmBackupDeleteAll, CurrentGame.Name, MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
+ oBackupData = mgrManifest.DoManifestGetByName(CurrentGame.Name, mgrSQLite.Database.Remote)
+
+ For Each oBackup In oBackupData
+ 'Delete the specific remote manifest entry
+ mgrManifest.DoManifestDeletebyID(oBackup, mgrSQLite.Database.Remote)
+ 'Delete referenced backup file from the backup folder
+ mgrCommon.DeleteFile(BackupFolder & oBackup.FileName)
+ Next
+
+ 'Delete local manifest entry
+ mgrManifest.DoManifestDeletebyName(CurrentBackupItem, mgrSQLite.Database.Local)
+
+ LoadBackupData()
+
+ If oCurrentGame.Temporary Then
+ LoadData()
+ eCurrentMode = eModes.Disabled
+ ModeChange()
+ Else
+ FillData()
+ End If
+ End If
+ End Sub
+
Private Sub DeleteBackup()
- 'Dim oDir As DirectoryInfo
- 'Dim sSubDir As String
If mgrCommon.ShowMessage(frmGameManager_ConfirmBackupDelete, Path.GetFileName(CurrentBackupItem.FileName), MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
'Delete the specific remote manifest entry
@@ -653,26 +680,6 @@ Public Class frmGameManager
'Delete referenced backup file from the backup folder
mgrCommon.DeleteFile(BackupFolder & CurrentBackupItem.FileName)
- 'Check if using backup sub-directories (Probably not the best way to check for this)
- 'If CurrentBackupItem.FileName.StartsWith(CurrentBackupItem.Name & Path.DirectorySeparatorChar) Then
- ' 'Build sub-dir backup path
- ' sSubDir = BackupFolder & CurrentBackupItem.Name
-
- ' If Directory.Exists(sSubDir) Then
- ' 'Check if there's any sub-directories or files remaining
- ' oDir = New DirectoryInfo(sSubDir)
- ' If oDir.GetDirectories.Length > 0 Or oDir.GetFiles.Length > 0 Then
- ' 'Confirm
- ' If mgrCommon.ShowMessage(frmGameManager_ConfirmBackupFolderDelete, New String() {sSubDir, oDir.GetDirectories.Length, oDir.GetFiles.Length}, MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
- ' If Directory.Exists(sSubDir) Then mgrCommon.DeleteDirectory(sSubDir, True)
- ' End If
- ' Else
- ' 'Folder is empty, delete the empty sub-folder
- ' If Directory.Exists(sSubDir) Then mgrCommon.DeleteDirectory(sSubDir)
- ' End If
- ' End If
- 'End If
-
LoadBackupData()
If oCurrentGame.Temporary Then
@@ -1008,6 +1015,7 @@ Public Class frmGameManager
lblLimit.Visible = True
Else
nudLimit.Visible = False
+ nudLimit.Value = nudLimit.Minimum
lblLimit.Visible = False
End If
End Sub
@@ -1300,7 +1308,8 @@ Public Class frmGameManager
RestoreList.Clear()
If lstGames.SelectedItems.Count = 1 Then
- RestoreList.Add(CurrentGame, CurrentBackupItem)
+ 'Filter out any games set to monitor only
+ If Not CurrentGame.MonitorOnly Then RestoreList.Add(CurrentGame, CurrentBackupItem)
Else
For Each oData In lstGames.SelectedItems
If oRemoteBackupData.Contains(oData.Value) Then
@@ -1437,6 +1446,8 @@ Public Class frmGameManager
cmsFile.Text = frmGameManager_cmsFile
lblQuickFilter.Text = frmGameManager_lblQuickFilter
lblLimit.Text = frmGameManager_lblLimit
+ cmsDeleteOne.Text = frmGameManager_cmsDeleteOne
+ cmsDeleteAll.Text = frmGameManager_cmsDeleteAll
'Init Filter Timer
tmFilterTimer = New Timer()
@@ -1544,9 +1555,21 @@ Public Class frmGameManager
End Sub
Private Sub btnDeleteBackup_Click(sender As Object, e As EventArgs) Handles btnDeleteBackup.Click
+ If cboRemoteBackup.Items.Count > 1 Then
+ cmsDeleteBackup.Show(btnDeleteBackup, New Drawing.Point(109, 11), ToolStripDropDownDirection.AboveRight)
+ Else
+ DeleteBackup()
+ End If
+ End Sub
+
+ Private Sub cmsDeleteOne_Click(sender As Object, e As EventArgs) Handles cmsDeleteOne.Click
DeleteBackup()
End Sub
+ Private Sub cmsDeleteAll_Click(sender As Object, e As EventArgs) Handles cmsDeleteAll.Click
+ DeleteAllBackups()
+ End Sub
+
Private Sub btnMarkAsRestored_Click(sender As Object, e As EventArgs) Handles btnMarkAsRestored.Click
MarkAsRestored()
End Sub
diff --git a/GBM/Managers/mgrBackup.vb b/GBM/Managers/mgrBackup.vb
index aca3638..df1b449 100644
--- a/GBM/Managers/mgrBackup.vb
+++ b/GBM/Managers/mgrBackup.vb
@@ -50,7 +50,7 @@ Public Class mgrBackup
oItem.CheckSum = sCheckSum
'Save Remote Manifest
- If mgrManifest.DoSpecificManifestCheck(oItem.Name, oItem.FileName, mgrSQLite.Database.Remote) Then
+ If mgrManifest.DoSpecificManifestCheck(oItem, mgrSQLite.Database.Remote) Then
mgrManifest.DoManifestUpdateByID(oItem, mgrSQLite.Database.Remote)
Else
mgrManifest.DoManifestAdd(oItem, mgrSQLite.Database.Remote)
diff --git a/GBM/Managers/mgrManifest.vb b/GBM/Managers/mgrManifest.vb
index 35a3ae8..a7a15ee 100644
--- a/GBM/Managers/mgrManifest.vb
+++ b/GBM/Managers/mgrManifest.vb
@@ -116,7 +116,7 @@
Return oBackupItem
End Function
- Public Shared Function DoSpecificManifestCheck(ByVal sName As String, ByVal sFileName As String, ByVal iSelectDB As mgrSQLite.Database) As Boolean
+ Public Shared Function DoSpecificManifestCheck(ByRef oItem As clsBackup, ByVal iSelectDB As mgrSQLite.Database) As Boolean
Dim oDatabase As New mgrSQLite(iSelectDB)
Dim oData As DataSet
Dim sSQL As String
@@ -125,12 +125,15 @@
sSQL = "SELECT * from manifest "
sSQL &= "WHERE Name = @Name AND FileName = @FileName"
- hshParams.Add("Name", sName)
- hshParams.Add("FileName", sFileName)
+ hshParams.Add("Name", oItem.Name)
+ hshParams.Add("FileName", oItem.FileName)
oData = oDatabase.ReadParamData(sSQL, hshParams)
If oData.Tables(0).Rows.Count > 0 Then
+ For Each dr As DataRow In oData.Tables(0).Rows
+ oItem.ID = CStr(dr("ManifestID"))
+ Next
Return True
Else
Return False
diff --git a/GBM/My Project/Resources.Designer.vb b/GBM/My Project/Resources.Designer.vb
index cc47a4b..cac209b 100644
--- a/GBM/My Project/Resources.Designer.vb
+++ b/GBM/My Project/Resources.Designer.vb
@@ -1374,6 +1374,24 @@ Namespace My.Resources
End Get
End Property
+ '''
+ ''' Looks up a localized string similar to &All Files.
+ '''
+ Friend ReadOnly Property frmGameManager_cmsDeleteAll() As String
+ Get
+ Return ResourceManager.GetString("frmGameManager_cmsDeleteAll", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' Looks up a localized string similar to &Selected File.
+ '''
+ Friend ReadOnly Property frmGameManager_cmsDeleteOne() As String
+ Get
+ Return ResourceManager.GetString("frmGameManager_cmsDeleteOne", resourceCulture)
+ End Get
+ End Property
+
'''
''' Looks up a localized string similar to &File....
'''
@@ -1429,11 +1447,11 @@ Namespace My.Resources
End Property
'''
- ''' Looks up a localized string similar to The backup folder [PARAM] still contains [PARAM] directories and [PARAM] files.[BR][BR]Do you want to delete the contents and remove the sub-folder for this game?.
+ ''' Looks up a localized string similar to This will delete all backup files for [PARAM]. This cannot be undone. [BR][BR]Do you want to continue?.
'''
- Friend ReadOnly Property frmGameManager_ConfirmBackupFolderDelete() As String
+ Friend ReadOnly Property frmGameManager_ConfirmBackupDeleteAll() As String
Get
- Return ResourceManager.GetString("frmGameManager_ConfirmBackupFolderDelete", resourceCulture)
+ Return ResourceManager.GetString("frmGameManager_ConfirmBackupDeleteAll", resourceCulture)
End Get
End Property
diff --git a/GBM/My Project/Resources.resx b/GBM/My Project/Resources.resx
index 0a1e2b3..96d9992 100644
--- a/GBM/My Project/Resources.resx
+++ b/GBM/My Project/Resources.resx
@@ -529,9 +529,6 @@
This will delete the selected backup file. This cannot be undone. [BR][BR]Do you want to delete [PARAM]?
-
- The backup folder [PARAM] still contains [PARAM] directories and [PARAM] files.[BR][BR]Do you want to delete the contents and remove the sub-folder for this game?
-
Are you sure you want to delete [PARAM]? This cannot be undone.[BR][BR]This will not delete any backup files that already exist for this game.
@@ -1720,4 +1717,13 @@
[PARAM] backup limit ([PARAM]) exceeded. [PARAM] was automatically removed.
+
+ &All Files
+
+
+ &Selected File
+
+
+ This will delete all backup files for [PARAM]. This cannot be undone. [BR][BR]Do you want to continue?
+
\ No newline at end of file