From 87f93ed4f5b1a87d19618a29b6813d32b4f5c67f Mon Sep 17 00:00:00 2001 From: "Michael J. Seiferling" Date: Sun, 21 Aug 2016 23:11:26 -0600 Subject: [PATCH] Updates and fixes for pass 2 --- GBM/Forms/frmGameManager.Designer.vb | 27 +++++++++++ GBM/Forms/frmGameManager.resx | 3 ++ GBM/Forms/frmGameManager.vb | 69 ++++++++++++++++++---------- GBM/Managers/mgrBackup.vb | 2 +- GBM/Managers/mgrManifest.vb | 9 ++-- GBM/My Project/Resources.Designer.vb | 24 ++++++++-- GBM/My Project/Resources.resx | 12 +++-- 7 files changed, 113 insertions(+), 33 deletions(-) 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