From 83135acb900f7be9f470120488fa396b88ceee8f Mon Sep 17 00:00:00 2001 From: "Michael J. Seiferling" Date: Sat, 5 Dec 2015 10:42:55 -0600 Subject: [PATCH] Added backup threshold setting (Issue 19) --- GBM/Forms/frmMain.vb | 47 ++++++++++++++++-------- GBM/Forms/frmSettings.Designer.vb | 60 +++++++++++++++++++++++++------ GBM/Forms/frmSettings.vb | 4 +++ GBM/Managers/mgrSQLite.vb | 13 ++++--- GBM/Managers/mgrSettings.vb | 27 +++++++++++++- 5 files changed, 121 insertions(+), 30 deletions(-) diff --git a/GBM/Forms/frmMain.vb b/GBM/Forms/frmMain.vb index 2216e22..2fea5fa 100644 --- a/GBM/Forms/frmMain.vb +++ b/GBM/Forms/frmMain.vb @@ -267,24 +267,31 @@ Public Class frmMain eCurrentOperation = eOperation.Backup OperationStarted(False) - If oProcess.GameInfo.MonitorOnly = False Then - If oSettings.DisableConfirmation Then - bDoBackup = True - Else - If MsgBox("Do you wish to backup data from " & oProcess.GameInfo.Name & "?", MsgBoxStyle.YesNo, "Game Backup Monitor") = MsgBoxResult.Yes Then + If SupressBackup() Then + bDoBackup = False + UpdateLog(oProcess.GameInfo.Name & " backup was cancelled due to session time.", False) + SetLastAction(oProcess.GameInfo.CroppedName & " backup was cancelled due to session time") + OperationEnded() + Else + If oProcess.GameInfo.MonitorOnly = False Then + If oSettings.DisableConfirmation Then bDoBackup = True Else - bDoBackup = False - UpdateLog(oProcess.GameInfo.Name & " backup was cancelled.", False) - SetLastAction(oProcess.GameInfo.CroppedName & " backup was cancelled") - OperationEnded() + If MsgBox("Do you wish to backup data from " & oProcess.GameInfo.Name & "?", MsgBoxStyle.YesNo, "Game Backup Monitor") = MsgBoxResult.Yes Then + bDoBackup = True + Else + bDoBackup = False + UpdateLog(oProcess.GameInfo.Name & " backup was cancelled.", False) + SetLastAction(oProcess.GameInfo.CroppedName & " backup was cancelled") + OperationEnded() + End If End If + Else + bDoBackup = False + UpdateLog(oProcess.GameInfo.Name & " is set to monitor only.", False) + SetLastAction(oProcess.GameInfo.CroppedName & " monitoring ended") + OperationEnded() End If - Else - bDoBackup = False - UpdateLog(oProcess.GameInfo.Name & " is set to monitor only.", False) - SetLastAction(oProcess.GameInfo.CroppedName & " monitoring ended") - OperationEnded() End If If bDoBackup Then @@ -564,6 +571,18 @@ Public Class frmMain oProcess.StartTime = Now : oProcess.EndTime = Now End Sub + Private Function SupressBackup() As Boolean + If oSettings.SupressBackup Then + If oProcess.TimeSpent.Minutes > oSettings.SupressBackupThreshold Then + Return False + Else + Return True + End If + Else + Return False + End If + End Function + 'Functions handling the opening of other windows Private Sub OpenAbout() MsgBox("Game Backup Monitor" & vbCrLf & sVersion & vbCrLf & sRevision & vbCrLf & Chr(169) & sConstCopyright & vbCrLf & vbCrLf & diff --git a/GBM/Forms/frmSettings.Designer.vb b/GBM/Forms/frmSettings.Designer.vb index b65407f..f0087cf 100644 --- a/GBM/Forms/frmSettings.Designer.vb +++ b/GBM/Forms/frmSettings.Designer.vb @@ -38,6 +38,9 @@ Partial Class frmSettings Me.btnSave = New System.Windows.Forms.Button() Me.btnCancel = New System.Windows.Forms.Button() Me.grpBackup = New System.Windows.Forms.GroupBox() + Me.Label1 = New System.Windows.Forms.Label() + Me.nudSupressBackupThreshold = New System.Windows.Forms.NumericUpDown() + Me.chkSupressBackup = New System.Windows.Forms.CheckBox() Me.chkCheckSum = New System.Windows.Forms.CheckBox() Me.chkRestoreOnLaunch = New System.Windows.Forms.CheckBox() Me.chkOverwriteWarning = New System.Windows.Forms.CheckBox() @@ -45,6 +48,7 @@ Partial Class frmSettings Me.grpGeneral.SuspendLayout() Me.grpPaths.SuspendLayout() Me.grpBackup.SuspendLayout() + CType(Me.nudSupressBackupThreshold, System.ComponentModel.ISupportInitialize).BeginInit() Me.SuspendLayout() ' 'chkMonitorOnStartup @@ -60,10 +64,10 @@ Partial Class frmSettings 'chkBackupConfirm ' Me.chkBackupConfirm.AutoSize = True - Me.chkBackupConfirm.Location = New System.Drawing.Point(6, 19) + Me.chkBackupConfirm.Location = New System.Drawing.Point(6, 42) Me.chkBackupConfirm.Name = "chkBackupConfirm" Me.chkBackupConfirm.Size = New System.Drawing.Size(160, 17) - Me.chkBackupConfirm.TabIndex = 0 + Me.chkBackupConfirm.TabIndex = 1 Me.chkBackupConfirm.Text = "Disable backup confirmation" Me.chkBackupConfirm.UseVisualStyleBackColor = True ' @@ -137,7 +141,7 @@ Partial Class frmSettings Me.grpPaths.Controls.Add(Me.btnBackupFolder) Me.grpPaths.Controls.Add(Me.lblBackupFolder) Me.grpPaths.Controls.Add(Me.txtBackupFolder) - Me.grpPaths.Location = New System.Drawing.Point(12, 331) + Me.grpPaths.Location = New System.Drawing.Point(12, 360) Me.grpPaths.Name = "grpPaths" Me.grpPaths.Size = New System.Drawing.Size(360, 60) Me.grpPaths.TabIndex = 2 @@ -172,7 +176,7 @@ Partial Class frmSettings 'btnSave ' Me.btnSave.DialogResult = System.Windows.Forms.DialogResult.OK - Me.btnSave.Location = New System.Drawing.Point(216, 397) + Me.btnSave.Location = New System.Drawing.Point(216, 426) Me.btnSave.Name = "btnSave" Me.btnSave.Size = New System.Drawing.Size(75, 23) Me.btnSave.TabIndex = 3 @@ -182,7 +186,7 @@ Partial Class frmSettings 'btnCancel ' Me.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel - Me.btnCancel.Location = New System.Drawing.Point(297, 397) + Me.btnCancel.Location = New System.Drawing.Point(297, 426) Me.btnCancel.Name = "btnCancel" Me.btnCancel.Size = New System.Drawing.Size(75, 23) Me.btnCancel.TabIndex = 4 @@ -191,6 +195,9 @@ Partial Class frmSettings ' 'grpBackup ' + Me.grpBackup.Controls.Add(Me.Label1) + Me.grpBackup.Controls.Add(Me.nudSupressBackupThreshold) + Me.grpBackup.Controls.Add(Me.chkSupressBackup) Me.grpBackup.Controls.Add(Me.chkCheckSum) Me.grpBackup.Controls.Add(Me.chkRestoreOnLaunch) Me.grpBackup.Controls.Add(Me.chkOverwriteWarning) @@ -198,11 +205,38 @@ Partial Class frmSettings Me.grpBackup.Controls.Add(Me.chkBackupConfirm) Me.grpBackup.Location = New System.Drawing.Point(12, 183) Me.grpBackup.Name = "grpBackup" - Me.grpBackup.Size = New System.Drawing.Size(360, 142) + Me.grpBackup.Size = New System.Drawing.Size(360, 171) Me.grpBackup.TabIndex = 1 Me.grpBackup.TabStop = False Me.grpBackup.Text = "Backup and Restore Options" ' + 'Label1 + ' + Me.Label1.AutoSize = True + Me.Label1.Location = New System.Drawing.Point(286, 135) + Me.Label1.Name = "Label1" + Me.Label1.Size = New System.Drawing.Size(43, 13) + Me.Label1.TabIndex = 7 + Me.Label1.Text = "minutes" + ' + 'nudSupressBackupThreshold + ' + Me.nudSupressBackupThreshold.Location = New System.Drawing.Point(229, 133) + Me.nudSupressBackupThreshold.Maximum = New Decimal(New Integer() {999, 0, 0, 0}) + Me.nudSupressBackupThreshold.Name = "nudSupressBackupThreshold" + Me.nudSupressBackupThreshold.Size = New System.Drawing.Size(51, 20) + Me.nudSupressBackupThreshold.TabIndex = 6 + ' + 'chkSupressBackup + ' + Me.chkSupressBackup.AutoSize = True + Me.chkSupressBackup.Location = New System.Drawing.Point(6, 134) + Me.chkSupressBackup.Name = "chkSupressBackup" + Me.chkSupressBackup.Size = New System.Drawing.Size(217, 17) + Me.chkSupressBackup.TabIndex = 5 + Me.chkSupressBackup.Text = "Backup only when session time exceeds" + Me.chkSupressBackup.UseVisualStyleBackColor = True + ' 'chkCheckSum ' Me.chkCheckSum.AutoSize = True @@ -236,18 +270,18 @@ Partial Class frmSettings 'chkCreateFolder ' Me.chkCreateFolder.AutoSize = True - Me.chkCreateFolder.Location = New System.Drawing.Point(6, 42) + Me.chkCreateFolder.Location = New System.Drawing.Point(6, 19) Me.chkCreateFolder.Name = "chkCreateFolder" - Me.chkCreateFolder.Size = New System.Drawing.Size(211, 17) - Me.chkCreateFolder.TabIndex = 1 - Me.chkCreateFolder.Text = "Create a sub-folder for each application" + Me.chkCreateFolder.Size = New System.Drawing.Size(186, 17) + Me.chkCreateFolder.TabIndex = 0 + Me.chkCreateFolder.Text = "Create a sub-folder for each game" Me.chkCreateFolder.UseVisualStyleBackColor = True ' 'frmSettings ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font - Me.ClientSize = New System.Drawing.Size(384, 431) + Me.ClientSize = New System.Drawing.Size(384, 461) Me.Controls.Add(Me.grpBackup) Me.Controls.Add(Me.btnCancel) Me.Controls.Add(Me.btnSave) @@ -267,6 +301,7 @@ Partial Class frmSettings Me.grpPaths.PerformLayout() Me.grpBackup.ResumeLayout(False) Me.grpBackup.PerformLayout() + CType(Me.nudSupressBackupThreshold, System.ComponentModel.ISupportInitialize).EndInit() Me.ResumeLayout(False) End Sub @@ -290,4 +325,7 @@ Partial Class frmSettings Friend WithEvents chkCheckSum As System.Windows.Forms.CheckBox Friend WithEvents chkStartWindows As System.Windows.Forms.CheckBox Friend WithEvents chkTimeTracking As System.Windows.Forms.CheckBox + Friend WithEvents Label1 As Label + Friend WithEvents nudSupressBackupThreshold As NumericUpDown + Friend WithEvents chkSupressBackup As CheckBox End Class diff --git a/GBM/Forms/frmSettings.vb b/GBM/Forms/frmSettings.vb index c1237e0..28ec0d0 100644 --- a/GBM/Forms/frmSettings.vb +++ b/GBM/Forms/frmSettings.vb @@ -54,6 +54,8 @@ oSettings.ShowOverwriteWarning = chkOverwriteWarning.Checked oSettings.RestoreOnLaunch = chkRestoreOnLaunch.Checked oSettings.TimeTracking = chkTimeTracking.Checked + oSettings.SupressBackup = chkSupressBackup.Checked + oSettings.SupressBackupThreshold = nudSupressBackupThreshold.Value 'We need to clear all checksums its turned off If chkCheckSum.Checked = False And oSettings.CheckSum = True Then @@ -104,6 +106,8 @@ chkSync.Checked = oSettings.Sync chkCheckSum.Checked = oSettings.CheckSum chkTimeTracking.Checked = oSettings.TimeTracking + chkSupressBackup.Checked = oSettings.SupressBackup + nudSupressBackupThreshold.Value = oSettings.SupressBackupThreshold End Sub Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click diff --git a/GBM/Managers/mgrSQLite.vb b/GBM/Managers/mgrSQLite.vb index 248b2f7..62bc26b 100644 --- a/GBM/Managers/mgrSQLite.vb +++ b/GBM/Managers/mgrSQLite.vb @@ -69,9 +69,10 @@ Public Class mgrSQLite SQLiteConnection.CreateFile(sDatabaseLocation) 'Add Tables (Settings) - sSql = "CREATE TABLE settings (SettingsID INTEGER NOT NULL PRIMARY KEY, MonitorOnStartup BOOLEAN NOT NULL, StartToTray BOOLEAN NOT NULL, ShowDetectionToolTips BOOLEAN NOT NULL, " & _ - "DisableConfirmation BOOLEAN NOT NULL, CreateSubFolder BOOLEAN NOT NULL, ShowOverwriteWarning BOOLEAN NOT NULL, RestoreOnLaunch BOOLEAN NOT NULL, " & _ - "BackupFolder TEXT NOT NULL, Sync BOOLEAN NOT NULL, CheckSum BOOLEAN NOT NULL, StartWithWindows BOOLEAN NOT NULL, TimeTracking BOOLEAN NOT NULL);" + sSql = "CREATE TABLE settings (SettingsID INTEGER NOT NULL PRIMARY KEY, MonitorOnStartup BOOLEAN NOT NULL, StartToTray BOOLEAN NOT NULL, ShowDetectionToolTips BOOLEAN NOT NULL, " & + "DisableConfirmation BOOLEAN NOT NULL, CreateSubFolder BOOLEAN NOT NULL, ShowOverwriteWarning BOOLEAN NOT NULL, RestoreOnLaunch BOOLEAN NOT NULL, " & + "BackupFolder TEXT NOT NULL, Sync BOOLEAN NOT NULL, CheckSum BOOLEAN NOT NULL, StartWithWindows BOOLEAN NOT NULL, TimeTracking BOOLEAN NOT NULL, " & + "SupressBackup BOOLEAN NOT NULL, SupressBackupThreshold INTEGER NOT NULL);" 'Add Tables (Monitor List) sSql &= "CREATE TABLE monitorlist (MonitorID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL, Process TEXT NOT NULL, Path TEXT, " & _ @@ -486,7 +487,11 @@ Public Class mgrSQLite 'Backup DB before starting BackupDB("v94") - sSQL = "PRAGMA user_version=95" + 'Add new setting + sSQL = "ALTER TABLE settings ADD COLUMN SupressBackup BOOLEAN NOT NULL DEFAULT 0;" + sSQL &= "ALTER TABLE settings ADD COLUMN SupressBackupThreshold INTEGER NOT NULL DEFAULT 10;" + + sSQL &= "PRAGMA user_version=95" RunParamQuery(sSQL, New Hashtable) End If diff --git a/GBM/Managers/mgrSettings.vb b/GBM/Managers/mgrSettings.vb index 784be0b..2c2ab32 100644 --- a/GBM/Managers/mgrSettings.vb +++ b/GBM/Managers/mgrSettings.vb @@ -12,6 +12,8 @@ Public Class mgrSettings Private bSync As Boolean = True Private bCheckSum As Boolean = True Private bTimeTracking As Boolean = True + Private bSupressBackup As Boolean = False + Private iSupressBackupThreshold As Integer = 10 Private sBackupFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments).TrimEnd(New Char() {"\", "/"}) Property StartWithWindows As Boolean @@ -113,6 +115,24 @@ Public Class mgrSettings End Set End Property + Property SupressBackup As Boolean + Get + Return bSupressBackup + End Get + Set(value As Boolean) + bSupressBackup = value + End Set + End Property + + Property SupressBackupThreshold As Integer + Get + Return iSupressBackupThreshold + End Get + Set(value As Integer) + iSupressBackupThreshold = value + End Set + End Property + Property BackupFolder As String Get Return sBackupFolder @@ -131,7 +151,8 @@ Public Class mgrSettings oDatabase.RunParamQuery(sSQL, New Hashtable) sSQL = "INSERT INTO settings VALUES (1, @MonitorOnStartup, @StartToTray, @ShowDetectionToolTips, @DisableConfirmation, " - sSQL &= "@CreateSubFolder, @ShowOverwriteWarning, @RestoreOnLaunch, @BackupFolder, @Sync, @CheckSum, @StartWithWindows, @TimeTracking)" + sSQL &= "@CreateSubFolder, @ShowOverwriteWarning, @RestoreOnLaunch, @BackupFolder, @Sync, @CheckSum, @StartWithWindows, " + sSQL &= "@TimeTracking, @SupressBackup, @SupressBackupThreshold)" hshParams.Add("MonitorOnStartup", MonitorOnStartup) hshParams.Add("StartToTray", StartToTray) @@ -145,6 +166,8 @@ Public Class mgrSettings hshParams.Add("CheckSum", CheckSum) hshParams.Add("StartWithWindows", StartWithWindows) hshParams.Add("TimeTracking", TimeTracking) + hshParams.Add("SupressBackup", SupressBackup) + hshParams.Add("SupressBackupThreshold", SupressBackupThreshold) oDatabase.RunParamQuery(sSQL, hshParams) End Sub @@ -172,6 +195,8 @@ Public Class mgrSettings CheckSum = CBool(dr("CheckSum")) StartWithWindows = CBool(dr("StartWithWindows")) TimeTracking = CBool(dr("TimeTracking")) + SupressBackup = CBool(dr("SupressBackup")) + SupressBackupThreshold = CInt(dr("SupressBackupThreshold")) Next oDatabase.Disconnect()