From 97cf2618e3c8c64a90408e565067dc3c96e753e5 Mon Sep 17 00:00:00 2001 From: MikeMaximus Date: Thu, 22 Jun 2017 11:43:03 -0600 Subject: [PATCH] Tweaks for issue #79 --- GBM/Forms/frmChooseGame.vb | 6 ++-- GBM/Forms/frmGameManager.Designer.vb | 54 ++++++++++++++-------------- GBM/Forms/frmGameManager.vb | 7 ++++ GBM/Forms/frmMain.vb | 2 +- GBM/Managers/mgrMonitorList.vb | 25 +++++++++++++ GBM/My Project/Resources.Designer.vb | 9 +++++ GBM/My Project/Resources.resx | 3 ++ 7 files changed, 76 insertions(+), 30 deletions(-) diff --git a/GBM/Forms/frmChooseGame.vb b/GBM/Forms/frmChooseGame.vb index f79125e..a0690dc 100644 --- a/GBM/Forms/frmChooseGame.vb +++ b/GBM/Forms/frmChooseGame.vb @@ -30,8 +30,10 @@ Public Class frmChooseGame lstGameBox.DisplayMember = "Value" For Each o As clsGame In Process.DuplicateList - lstGameBox.Items.Add(New KeyValuePair(Of String, String)(o.ID, o.Name)) - oGamesHash.Add(o.ID, o) + If o.Parameter = String.Empty Then + lstGameBox.Items.Add(New KeyValuePair(Of String, String)(o.ID, o.Name)) + oGamesHash.Add(o.ID, o) + End If Next lstGameBox.SelectedIndex = 0 diff --git a/GBM/Forms/frmGameManager.Designer.vb b/GBM/Forms/frmGameManager.Designer.vb index 9f8379b..b1316a0 100644 --- a/GBM/Forms/frmGameManager.Designer.vb +++ b/GBM/Forms/frmGameManager.Designer.vb @@ -28,6 +28,8 @@ Partial Class frmGameManager Me.btnBackup = New System.Windows.Forms.Button() Me.btnClose = New System.Windows.Forms.Button() Me.grpConfig = New System.Windows.Forms.GroupBox() + Me.txtParameter = New System.Windows.Forms.TextBox() + Me.lblParameter = New System.Windows.Forms.Label() Me.chkCleanFolder = New System.Windows.Forms.CheckBox() Me.lblLimit = New System.Windows.Forms.Label() Me.nudLimit = New System.Windows.Forms.NumericUpDown() @@ -96,8 +98,6 @@ Partial Class frmGameManager Me.cmsDeleteBackup = New System.Windows.Forms.ContextMenuStrip(Me.components) Me.cmsDeleteOne = New System.Windows.Forms.ToolStripMenuItem() Me.cmsDeleteAll = New System.Windows.Forms.ToolStripMenuItem() - Me.lblParameter = New System.Windows.Forms.Label() - Me.txtParameter = New System.Windows.Forms.TextBox() Me.grpConfig.SuspendLayout() CType(Me.nudLimit, System.ComponentModel.ISupportInitialize).BeginInit() Me.grpExtra.SuspendLayout() @@ -182,13 +182,29 @@ Partial Class frmGameManager Me.grpConfig.TabStop = False Me.grpConfig.Text = "Configuration" ' + 'txtParameter + ' + Me.txtParameter.Location = New System.Drawing.Point(333, 45) + Me.txtParameter.Name = "txtParameter" + Me.txtParameter.Size = New System.Drawing.Size(150, 20) + Me.txtParameter.TabIndex = 7 + ' + 'lblParameter + ' + Me.lblParameter.AutoSize = True + Me.lblParameter.Location = New System.Drawing.Point(269, 48) + Me.lblParameter.Name = "lblParameter" + Me.lblParameter.Size = New System.Drawing.Size(58, 13) + Me.lblParameter.TabIndex = 6 + Me.lblParameter.Text = "Parameter:" + ' 'chkCleanFolder ' Me.chkCleanFolder.AutoSize = True Me.chkCleanFolder.Location = New System.Drawing.Point(329, 101) Me.chkCleanFolder.Name = "chkCleanFolder" Me.chkCleanFolder.Size = New System.Drawing.Size(136, 17) - Me.chkCleanFolder.TabIndex = 11 + Me.chkCleanFolder.TabIndex = 13 Me.chkCleanFolder.Text = "Delete folder on restore" Me.chkCleanFolder.UseVisualStyleBackColor = True ' @@ -198,7 +214,7 @@ Partial Class frmGameManager Me.lblLimit.Location = New System.Drawing.Point(375, 130) Me.lblLimit.Name = "lblLimit" Me.lblLimit.Size = New System.Drawing.Size(68, 13) - Me.lblLimit.TabIndex = 14 + Me.lblLimit.TabIndex = 16 Me.lblLimit.Text = "Backup Limit" Me.lblLimit.Visible = False ' @@ -208,7 +224,7 @@ Partial Class frmGameManager Me.nudLimit.Minimum = New Decimal(New Integer() {2, 0, 0, 0}) Me.nudLimit.Name = "nudLimit" Me.nudLimit.Size = New System.Drawing.Size(40, 20) - Me.nudLimit.TabIndex = 13 + Me.nudLimit.TabIndex = 15 Me.nudLimit.Value = New Decimal(New Integer() {2, 0, 0, 0}) Me.nudLimit.Visible = False ' @@ -217,7 +233,7 @@ Partial Class frmGameManager Me.btnExclude.Location = New System.Drawing.Point(9, 125) Me.btnExclude.Name = "btnExclude" Me.btnExclude.Size = New System.Drawing.Size(175, 23) - Me.btnExclude.TabIndex = 9 + Me.btnExclude.TabIndex = 11 Me.btnExclude.Text = "E&xclude Items..." Me.btnExclude.UseVisualStyleBackColor = True ' @@ -226,7 +242,7 @@ Partial Class frmGameManager Me.btnInclude.Location = New System.Drawing.Point(9, 97) Me.btnInclude.Name = "btnInclude" Me.btnInclude.Size = New System.Drawing.Size(175, 23) - Me.btnInclude.TabIndex = 8 + Me.btnInclude.TabIndex = 10 Me.btnInclude.Text = "In&clude Items..." Me.btnInclude.UseVisualStyleBackColor = True ' @@ -245,7 +261,7 @@ Partial Class frmGameManager Me.btnSavePathBrowse.Location = New System.Drawing.Point(489, 71) Me.btnSavePathBrowse.Name = "btnSavePathBrowse" Me.btnSavePathBrowse.Size = New System.Drawing.Size(30, 20) - Me.btnSavePathBrowse.TabIndex = 7 + Me.btnSavePathBrowse.TabIndex = 9 Me.btnSavePathBrowse.Text = "..." Me.btnSavePathBrowse.UseVisualStyleBackColor = True ' @@ -309,7 +325,7 @@ Partial Class frmGameManager Me.chkTimeStamp.Location = New System.Drawing.Point(190, 129) Me.chkTimeStamp.Name = "chkTimeStamp" Me.chkTimeStamp.Size = New System.Drawing.Size(133, 17) - Me.chkTimeStamp.TabIndex = 12 + Me.chkTimeStamp.TabIndex = 14 Me.chkTimeStamp.Text = "Save multiple backups" Me.chkTimeStamp.UseVisualStyleBackColor = True ' @@ -319,7 +335,7 @@ Partial Class frmGameManager Me.chkFolderSave.Location = New System.Drawing.Point(190, 101) Me.chkFolderSave.Name = "chkFolderSave" Me.chkFolderSave.Size = New System.Drawing.Size(109, 17) - Me.chkFolderSave.TabIndex = 10 + Me.chkFolderSave.TabIndex = 12 Me.chkFolderSave.Text = "Save entire folder" Me.chkFolderSave.UseVisualStyleBackColor = True ' @@ -328,7 +344,7 @@ Partial Class frmGameManager Me.txtSavePath.Location = New System.Drawing.Point(69, 71) Me.txtSavePath.Name = "txtSavePath" Me.txtSavePath.Size = New System.Drawing.Size(414, 20) - Me.txtSavePath.TabIndex = 6 + Me.txtSavePath.TabIndex = 8 ' 'txtProcess ' @@ -823,22 +839,6 @@ Partial Class frmGameManager Me.cmsDeleteAll.Size = New System.Drawing.Size(114, 22) Me.cmsDeleteAll.Text = "&All Files" ' - 'lblParameter - ' - Me.lblParameter.AutoSize = True - Me.lblParameter.Location = New System.Drawing.Point(269, 48) - Me.lblParameter.Name = "lblParameter" - Me.lblParameter.Size = New System.Drawing.Size(58, 13) - Me.lblParameter.TabIndex = 15 - Me.lblParameter.Text = "Parameter:" - ' - 'txtParameter - ' - Me.txtParameter.Location = New System.Drawing.Point(333, 45) - Me.txtParameter.Name = "txtParameter" - Me.txtParameter.Size = New System.Drawing.Size(150, 20) - Me.txtParameter.TabIndex = 16 - ' 'frmGameManager ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) diff --git a/GBM/Forms/frmGameManager.vb b/GBM/Forms/frmGameManager.vb index 39d6b3c..c6d473f 100644 --- a/GBM/Forms/frmGameManager.vb +++ b/GBM/Forms/frmGameManager.vb @@ -1259,6 +1259,13 @@ Public Class frmGameManager Return False End If + If oApp.Parameter <> String.Empty Then + If mgrMonitorList.DoDuplicateParameterCheck(oApp.ProcessName, oApp.Parameter, , oApp.ID) Then + mgrCommon.ShowMessage(frmGameManager_ErrorProcessParameterDupe, MsgBoxStyle.Exclamation) + Return False + End If + End If + Return True End Function diff --git a/GBM/Forms/frmMain.vb b/GBM/Forms/frmMain.vb index 8ebece1..baaaa80 100644 --- a/GBM/Forms/frmMain.vb +++ b/GBM/Forms/frmMain.vb @@ -1463,7 +1463,7 @@ Public Class frmMain Private Sub CheckForSavedDuplicate() For Each o As clsGame In oProcess.DuplicateList - If o.ProcessPath.ToLower = oProcess.GameInfo.ProcessPath.ToLower Then + If o.ProcessPath.ToLower = oProcess.GameInfo.ProcessPath.ToLower And o.Parameter = String.Empty Then oProcess.GameInfo = o oProcess.Duplicate = False End If diff --git a/GBM/Managers/mgrMonitorList.vb b/GBM/Managers/mgrMonitorList.vb index 7e36f73..3dd8a4b 100644 --- a/GBM/Managers/mgrMonitorList.vb +++ b/GBM/Managers/mgrMonitorList.vb @@ -268,6 +268,31 @@ Public Class mgrMonitorList End If End Function + Public Shared Function DoDuplicateParameterCheck(ByVal sProcess As String, ByVal sParameter As String, Optional ByVal iSelectDB As mgrSQLite.Database = mgrSQLite.Database.Local, Optional ByVal sExcludeID As String = "") As Boolean + Dim oDatabase As New mgrSQLite(iSelectDB) + Dim sSQL As String + Dim oData As DataSet + Dim hshParams As New Hashtable + + sSQL = "SELECT * FROM monitorlist WHERE Process = @Process AND Parameter = @Parameter" + + hshParams.Add("Process", sProcess) + hshParams.Add("Parameter", sParameter) + + If sExcludeID <> String.Empty Then + sSQL &= " AND MonitorID <> @MonitorID" + hshParams.Add("MonitorID", sExcludeID) + End If + + oData = oDatabase.ReadParamData(sSQL, hshParams) + + If oData.Tables(0).Rows.Count > 0 Then + Return True + Else + Return False + End If + End Function + 'Sync Functions Public Shared Sub DoListAddUpdateSync(ByVal hshGames As Hashtable, Optional ByVal iSelectDB As mgrSQLite.Database = mgrSQLite.Database.Local, Optional ByVal eSyncFields As clsGame.eOptionalSyncFields = clsGame.eOptionalSyncFields.None) diff --git a/GBM/My Project/Resources.Designer.vb b/GBM/My Project/Resources.Designer.vb index 839d2c2..db68857 100644 --- a/GBM/My Project/Resources.Designer.vb +++ b/GBM/My Project/Resources.Designer.vb @@ -1635,6 +1635,15 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized string similar to A game with this exact process and parameter already exists.. + ''' + Friend ReadOnly Property frmGameManager_ErrorProcessParameterDupe() As String + Get + Return ResourceManager.GetString("frmGameManager_ErrorProcessParameterDupe", resourceCulture) + End Get + End Property + ''' ''' Looks up a localized string similar to You must enter a valid game name.. ''' diff --git a/GBM/My Project/Resources.resx b/GBM/My Project/Resources.resx index 09b045f..a1fac24 100644 --- a/GBM/My Project/Resources.resx +++ b/GBM/My Project/Resources.resx @@ -1786,4 +1786,7 @@ Parameter: + + A game with this exact process and parameter already exists. + \ No newline at end of file