diff --git a/GBM/Classes/XML Serialize Classes/Game.vb b/GBM/Classes/XML Serialize Classes/Game.vb index 862d065..0495bcb 100644 --- a/GBM/Classes/XML Serialize Classes/Game.vb +++ b/GBM/Classes/XML Serialize Classes/Game.vb @@ -14,6 +14,7 @@ Private sComments As String Private bIsRegEx As Boolean Private bRecurseSubFolders As Boolean + Private iOS As clsGame.eOS Private oTags As List(Of Tag) Property ID As String @@ -151,6 +152,15 @@ End Get End Property + Property OS As clsGame.eOS + Set(value As clsGame.eOS) + iOS = value + End Set + Get + Return iOS + End Get + End Property + Property Tags As List(Of Tag) Get Return oTags diff --git a/GBM/Classes/clsGame.vb b/GBM/Classes/clsGame.vb index 6a1fb97..7c30b7b 100644 --- a/GBM/Classes/clsGame.vb +++ b/GBM/Classes/clsGame.vb @@ -24,6 +24,7 @@ Public Class clsGame Private sComments As String = String.Empty Private bIsRegEx As Boolean = False Private bRecurseSubFolders As Boolean = True + Private iOS As eOS = mgrCommon.GetCurrentOS() Private oImportTags As New List(Of Tag) Private bImportUpdate As Boolean = False Private oCompiledRegEx As Regex @@ -38,6 +39,11 @@ Public Class clsGame MonitorGame = 64 End Enum + Public Enum eOS + Windows = 1 + Linux = 2 + End Enum + Property ID As String Set(value As String) If Not value Is Nothing Then @@ -254,6 +260,15 @@ Public Class clsGame End Set End Property + Property OS As eOS + Get + Return iOS + End Get + Set(value As eOS) + iOS = value + End Set + End Property + Property TruePath As String Set(value As String) sPath = value @@ -367,6 +382,9 @@ Public Class clsGame If RecurseSubFolders <> oGame.RecurseSubFolders Then Return False End If + If OS <> oGame.OS Then + Return False + End If 'Optional Sync Fields If (eSyncFields And eOptionalSyncFields.Company) = eOptionalSyncFields.Company Then @@ -446,6 +464,9 @@ Public Class clsGame If RecurseSubFolders <> oGame.RecurseSubFolders Then Return False End If + If OS <> oGame.OS Then + Return False + End If Return True End If End Function diff --git a/GBM/Forms/frmGameManager.Designer.vb b/GBM/Forms/frmGameManager.Designer.vb index e7fc41f..291c16e 100644 --- a/GBM/Forms/frmGameManager.Designer.vb +++ b/GBM/Forms/frmGameManager.Designer.vb @@ -28,6 +28,9 @@ 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.lblOS = New System.Windows.Forms.Label() + Me.cboOS = New System.Windows.Forms.ComboBox() + Me.chkRecurseSubFolders = New System.Windows.Forms.CheckBox() Me.btnGameID = New System.Windows.Forms.Button() Me.chkRegEx = New System.Windows.Forms.CheckBox() Me.lblComments = New System.Windows.Forms.Label() @@ -107,7 +110,6 @@ Partial Class frmGameManager Me.cmsDeleteAll = New System.Windows.Forms.ToolStripMenuItem() Me.btnProcesses = New System.Windows.Forms.Button() Me.ttFullPath = New System.Windows.Forms.ToolTip(Me.components) - Me.chkRecurseSubFolders = New System.Windows.Forms.CheckBox() Me.grpConfig.SuspendLayout() CType(Me.nudLimit, System.ComponentModel.ISupportInitialize).BeginInit() Me.grpExtra.SuspendLayout() @@ -164,6 +166,8 @@ Partial Class frmGameManager 'grpConfig ' Me.grpConfig.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) + Me.grpConfig.Controls.Add(Me.lblOS) + Me.grpConfig.Controls.Add(Me.cboOS) Me.grpConfig.Controls.Add(Me.chkRecurseSubFolders) Me.grpConfig.Controls.Add(Me.btnGameID) Me.grpConfig.Controls.Add(Me.chkRegEx) @@ -197,6 +201,35 @@ Partial Class frmGameManager Me.grpConfig.TabStop = False Me.grpConfig.Text = "Configuration" ' + 'lblOS + ' + Me.lblOS.AutoSize = True + Me.lblOS.Location = New System.Drawing.Point(363, 74) + Me.lblOS.Name = "lblOS" + Me.lblOS.Size = New System.Drawing.Size(25, 13) + Me.lblOS.TabIndex = 9 + Me.lblOS.Text = "OS:" + ' + 'cboOS + ' + Me.cboOS.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList + Me.cboOS.FormattingEnabled = True + Me.cboOS.Location = New System.Drawing.Point(394, 71) + Me.cboOS.Name = "cboOS" + Me.cboOS.Size = New System.Drawing.Size(126, 21) + Me.cboOS.TabIndex = 10 + ' + 'chkRecurseSubFolders + ' + Me.chkRecurseSubFolders.AutoSize = True + Me.chkRecurseSubFolders.Location = New System.Drawing.Point(489, 206) + Me.chkRecurseSubFolders.Name = "chkRecurseSubFolders" + Me.chkRecurseSubFolders.Size = New System.Drawing.Size(15, 14) + Me.chkRecurseSubFolders.TabIndex = 0 + Me.chkRecurseSubFolders.TabStop = False + Me.chkRecurseSubFolders.UseVisualStyleBackColor = True + Me.chkRecurseSubFolders.Visible = False + ' 'btnGameID ' Me.btnGameID.Location = New System.Drawing.Point(402, 17) @@ -222,7 +255,7 @@ Partial Class frmGameManager Me.lblComments.Location = New System.Drawing.Point(7, 181) Me.lblComments.Name = "lblComments" Me.lblComments.Size = New System.Drawing.Size(59, 13) - Me.lblComments.TabIndex = 19 + Me.lblComments.TabIndex = 21 Me.lblComments.Text = "Comments:" ' 'txtComments @@ -232,13 +265,13 @@ Partial Class frmGameManager Me.txtComments.Name = "txtComments" Me.txtComments.ScrollBars = System.Windows.Forms.ScrollBars.Vertical Me.txtComments.Size = New System.Drawing.Size(413, 71) - Me.txtComments.TabIndex = 20 + Me.txtComments.TabIndex = 22 ' 'txtParameter ' Me.txtParameter.Location = New System.Drawing.Point(70, 71) Me.txtParameter.Name = "txtParameter" - Me.txtParameter.Size = New System.Drawing.Size(414, 20) + Me.txtParameter.Size = New System.Drawing.Size(290, 20) Me.txtParameter.TabIndex = 8 ' 'lblParameter @@ -256,7 +289,7 @@ Partial Class frmGameManager Me.chkCleanFolder.Location = New System.Drawing.Point(330, 127) Me.chkCleanFolder.Name = "chkCleanFolder" Me.chkCleanFolder.Size = New System.Drawing.Size(136, 17) - Me.chkCleanFolder.TabIndex = 14 + Me.chkCleanFolder.TabIndex = 16 Me.chkCleanFolder.Text = "Delete folder on restore" Me.chkCleanFolder.UseVisualStyleBackColor = True ' @@ -266,7 +299,7 @@ Partial Class frmGameManager Me.lblLimit.Location = New System.Drawing.Point(376, 157) Me.lblLimit.Name = "lblLimit" Me.lblLimit.Size = New System.Drawing.Size(68, 13) - Me.lblLimit.TabIndex = 18 + Me.lblLimit.TabIndex = 20 Me.lblLimit.Text = "Backup Limit" Me.lblLimit.Visible = False ' @@ -275,7 +308,7 @@ Partial Class frmGameManager Me.nudLimit.Location = New System.Drawing.Point(330, 155) Me.nudLimit.Name = "nudLimit" Me.nudLimit.Size = New System.Drawing.Size(40, 20) - Me.nudLimit.TabIndex = 17 + Me.nudLimit.TabIndex = 19 Me.nudLimit.Visible = False ' 'btnExclude @@ -283,7 +316,7 @@ Partial Class frmGameManager Me.btnExclude.Location = New System.Drawing.Point(10, 152) Me.btnExclude.Name = "btnExclude" Me.btnExclude.Size = New System.Drawing.Size(175, 23) - Me.btnExclude.TabIndex = 15 + Me.btnExclude.TabIndex = 17 Me.btnExclude.Text = "E&xclude Items..." Me.btnExclude.UseVisualStyleBackColor = True ' @@ -292,7 +325,7 @@ Partial Class frmGameManager Me.btnInclude.Location = New System.Drawing.Point(10, 123) Me.btnInclude.Name = "btnInclude" Me.btnInclude.Size = New System.Drawing.Size(175, 23) - Me.btnInclude.TabIndex = 12 + Me.btnInclude.TabIndex = 14 Me.btnInclude.Text = "Incl&ude Items..." Me.btnInclude.UseVisualStyleBackColor = True ' @@ -311,7 +344,7 @@ Partial Class frmGameManager Me.btnSavePathBrowse.Location = New System.Drawing.Point(490, 97) Me.btnSavePathBrowse.Name = "btnSavePathBrowse" Me.btnSavePathBrowse.Size = New System.Drawing.Size(30, 20) - Me.btnSavePathBrowse.TabIndex = 11 + Me.btnSavePathBrowse.TabIndex = 13 Me.btnSavePathBrowse.Text = "..." Me.btnSavePathBrowse.UseVisualStyleBackColor = True ' @@ -330,7 +363,7 @@ Partial Class frmGameManager Me.lblSavePath.Location = New System.Drawing.Point(7, 101) Me.lblSavePath.Name = "lblSavePath" Me.lblSavePath.Size = New System.Drawing.Size(60, 13) - Me.lblSavePath.TabIndex = 9 + Me.lblSavePath.TabIndex = 11 Me.lblSavePath.Text = "Save Path:" ' 'lblProcess @@ -375,7 +408,7 @@ Partial Class frmGameManager Me.chkTimeStamp.Location = New System.Drawing.Point(191, 156) Me.chkTimeStamp.Name = "chkTimeStamp" Me.chkTimeStamp.Size = New System.Drawing.Size(133, 17) - Me.chkTimeStamp.TabIndex = 16 + Me.chkTimeStamp.TabIndex = 18 Me.chkTimeStamp.Text = "Save multiple backups" Me.chkTimeStamp.UseVisualStyleBackColor = True ' @@ -385,7 +418,7 @@ Partial Class frmGameManager Me.chkFolderSave.Location = New System.Drawing.Point(191, 127) Me.chkFolderSave.Name = "chkFolderSave" Me.chkFolderSave.Size = New System.Drawing.Size(109, 17) - Me.chkFolderSave.TabIndex = 13 + Me.chkFolderSave.TabIndex = 15 Me.chkFolderSave.Text = "Save entire folder" Me.chkFolderSave.UseVisualStyleBackColor = True ' @@ -394,7 +427,7 @@ Partial Class frmGameManager Me.txtSavePath.Location = New System.Drawing.Point(70, 97) Me.txtSavePath.Name = "txtSavePath" Me.txtSavePath.Size = New System.Drawing.Size(414, 20) - Me.txtSavePath.TabIndex = 10 + Me.txtSavePath.TabIndex = 12 ' 'txtProcess ' @@ -614,6 +647,7 @@ Partial Class frmGameManager Me.cboRemoteBackup.Name = "cboRemoteBackup" Me.cboRemoteBackup.Size = New System.Drawing.Size(387, 21) Me.cboRemoteBackup.TabIndex = 12 + Me.cboRemoteBackup.Tag = "wipe" ' 'lblRestorePathData ' @@ -927,17 +961,6 @@ Partial Class frmGameManager Me.ttFullPath.InitialDelay = 300 Me.ttFullPath.ReshowDelay = 60 ' - 'chkRecurseSubFolders - ' - Me.chkRecurseSubFolders.AutoSize = True - Me.chkRecurseSubFolders.Location = New System.Drawing.Point(489, 206) - Me.chkRecurseSubFolders.Name = "chkRecurseSubFolders" - Me.chkRecurseSubFolders.Size = New System.Drawing.Size(15, 14) - Me.chkRecurseSubFolders.TabIndex = 0 - Me.chkRecurseSubFolders.TabStop = False - Me.chkRecurseSubFolders.UseVisualStyleBackColor = True - Me.chkRecurseSubFolders.Visible = False - ' 'frmGameManager ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) @@ -1073,4 +1096,6 @@ Partial Class frmGameManager Friend WithEvents cmsOfficialWindows As ToolStripMenuItem Friend WithEvents cmsOfficialLinux As ToolStripMenuItem Friend WithEvents chkRecurseSubFolders As CheckBox + Friend WithEvents lblOS As Label + Friend WithEvents cboOS As ComboBox End Class diff --git a/GBM/Forms/frmGameManager.vb b/GBM/Forms/frmGameManager.vb index b125f9e..deefb9c 100644 --- a/GBM/Forms/frmGameManager.vb +++ b/GBM/Forms/frmGameManager.vb @@ -923,6 +923,7 @@ Public Class frmGameManager txtProcess.Text = oApp.ProcessName chkRegEx.Checked = oApp.IsRegEx txtParameter.Text = oApp.Parameter + cboOS.SelectedValue = CInt(oApp.OS) If oSettings.ShowResolvedPaths Then txtSavePath.Text = oApp.Path sttPath = oApp.TruePath @@ -1021,6 +1022,7 @@ Public Class frmGameManager Private Sub AssignDirtyHandlersMisc() AddHandler chkEnabled.CheckedChanged, AddressOf DirtyCheck_ValueChanged AddHandler chkMonitorOnly.CheckedChanged, AddressOf DirtyCheck_ValueChanged + AddHandler cboOS.SelectedValueChanged, AddressOf DirtyCheck_ValueChanged End Sub Private Sub WipeControls(ByVal oCtls As GroupBox.ControlCollection) @@ -1034,7 +1036,7 @@ Public Class frmGameManager ElseIf TypeOf ctl Is NumericUpDown Then DirectCast(ctl, NumericUpDown).Value = DirectCast(ctl, NumericUpDown).Minimum ElseIf TypeOf ctl Is ComboBox Then - DirectCast(ctl, ComboBox).DataSource = Nothing + If ctl.Tag = "wipe" Then DirectCast(ctl, ComboBox).DataSource = Nothing End If Next End Sub @@ -1364,6 +1366,7 @@ Public Class frmGameManager oApp.ProcessName = txtProcess.Text oApp.Parameter = txtParameter.Text + oApp.OS = CType(cboOS.SelectedValue, clsGame.eOS) oApp.Path = mgrPath.ValidatePathForOS(txtSavePath.Text) 'Only do a simple root check here in case the user doesn't really understand creating a proper configuration oApp.AbsolutePath = Path.IsPathRooted(oApp.Path) @@ -1815,6 +1818,21 @@ Public Class frmGameManager btnGameID.Text = frmGameManager_btnGameID btnImportBackup.Text = frmGameManager_btnImportBackup btnProcesses.Text = frmGameManager_btnProcesses + lblOS.Text = frmGameManager_lblOS + + 'Init Combos + Dim oComboItems As New List(Of KeyValuePair(Of Integer, String)) + + 'cboOS + cboOS.ValueMember = "Key" + cboOS.DisplayMember = "Value" + + oComboItems.Add(New KeyValuePair(Of Integer, String)(clsGame.eOS.Windows, App_WindowsOS)) + oComboItems.Add(New KeyValuePair(Of Integer, String)(clsGame.eOS.Linux, App_LinuxOS)) + + cboOS.DataSource = oComboItems + + If Not mgrCommon.IsUnix Then cboOS.Enabled = False 'Init Official Import Menu If mgrCommon.IsUnix Then diff --git a/GBM/Managers/mgrCommon.vb b/GBM/Managers/mgrCommon.vb index a620add..d592c89 100644 --- a/GBM/Managers/mgrCommon.vb +++ b/GBM/Managers/mgrCommon.vb @@ -259,6 +259,14 @@ Public Class mgrCommon Return False End Function + Public Shared Function GetCurrentOS() As clsGame.eOS + If IsUnix() Then + Return clsGame.eOS.Linux + Else + Return clsGame.eOS.Windows + End If + End Function + Public Shared Function IsElevated() As Boolean Dim oID As WindowsIdentity = WindowsIdentity.GetCurrent Dim oPrincipal As New WindowsPrincipal(oID) diff --git a/GBM/Managers/mgrMonitorList.vb b/GBM/Managers/mgrMonitorList.vb index d977501..d36ec7e 100644 --- a/GBM/Managers/mgrMonitorList.vb +++ b/GBM/Managers/mgrMonitorList.vb @@ -37,6 +37,7 @@ Public Class mgrMonitorList If Not IsDBNull(dr("Comments")) Then oGame.Comments = CStr(dr("Comments")) oGame.IsRegEx = CBool(dr("IsRegEx")) oGame.RecurseSubFolders = CBool(dr("RecurseSubFolders")) + oGame.OS = CInt(dr("OS")) 'Compile RegEx If oGame.IsRegEx Then @@ -71,6 +72,7 @@ Public Class mgrMonitorList hshParams.Add("Comments", oGame.Comments) hshParams.Add("IsRegEx", oGame.IsRegEx) hshParams.Add("RecurseSubFolders", oGame.RecurseSubFolders) + hshParams.Add("OS", oGame.OS) Return hshParams End Function @@ -106,7 +108,7 @@ Public Class mgrMonitorList sSQL = "INSERT INTO monitorlist VALUES (@ID, @Name, @Process, @Path, @AbsolutePath, @FolderSave, @FileType, @TimeStamp, " sSQL &= "@ExcludeList, @ProcessPath, @Icon, @Hours, @Version, @Company, @Enabled, @MonitorOnly, @BackupLimit, @CleanFolder, " - sSQL &= "@Parameter, @Comments, @IsRegEx, @RecurseSubFolders)" + sSQL &= "@Parameter, @Comments, @IsRegEx, @RecurseSubFolders, @OS)" 'Parameters hshParams = SetCoreParameters(oGame) @@ -123,7 +125,7 @@ Public Class mgrMonitorList sSQL = "UPDATE monitorlist SET MonitorID=@ID, Name=@Name, Process=@Process, Path=@Path, AbsolutePath=@AbsolutePath, FolderSave=@FolderSave, " sSQL &= "FileType=@FileType, TimeStamp=@TimeStamp, ExcludeList=@ExcludeList, ProcessPath=@ProcessPath, Icon=@Icon, " sSQL &= "Hours=@Hours, Version=@Version, Company=@Company, Enabled=@Enabled, MonitorOnly=@MonitorOnly, BackupLimit=@BackupLimit, " - sSQL &= "CleanFolder=@CleanFolder, Parameter=@Parameter, Comments=@Comments, IsRegEx=@IsRegEx, RecurseSubFolders=@RecurseSubFolders WHERE MonitorID=@QueryID;" + sSQL &= "CleanFolder=@CleanFolder, Parameter=@Parameter, Comments=@Comments, IsRegEx=@IsRegEx, RecurseSubFolders=@RecurseSubFolders, OS=@OS WHERE MonitorID=@QueryID;" sSQL &= "UPDATE gametags SET MonitorID=@ID WHERE MonitorID=@QueryID;" If iSelectDB = mgrSQLite.Database.Local Then @@ -374,11 +376,11 @@ Public Class mgrMonitorList sVersion = "(SELECT Version FROM monitorlist WHERE MonitorID=@ID)" End If - sSQL = "INSERT OR REPLACE INTO monitorlist (MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder, Parameter, Comments, IsRegEx, RecurseSubFolders) " + sSQL = "INSERT OR REPLACE INTO monitorlist (MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder, Parameter, Comments, IsRegEx, RecurseSubFolders, OS) " sSQL &= "VALUES (@ID, @Name, @Process, @Path, @AbsolutePath, @FolderSave, @FileType, " sSQL &= "@TimeStamp, @ExcludeList, " & sGamePath & ", " sSQL &= sIcon & ", @Hours, " & sVersion & ", " - sSQL &= sCompany & ", " & sMonitorGame & ", @MonitorOnly, @BackupLimit, @CleanFolder, @Parameter, @Comments, @IsRegEx, @RecurseSubFolders);" + sSQL &= sCompany & ", " & sMonitorGame & ", @MonitorOnly, @BackupLimit, @CleanFolder, @Parameter, @Comments, @IsRegEx, @RecurseSubFolders, @OS);" For Each oGame As clsGame In hshGames.Values hshParams = New Hashtable @@ -401,6 +403,7 @@ Public Class mgrMonitorList hshParams.Add("Comments", oGame.Comments) hshParams.Add("IsRegEx", oGame.IsRegEx) hshParams.Add("RecurseSubFolders", oGame.RecurseSubFolders) + hshParams.Add("OS", oGame.OS) 'Optional Parameters If (eSyncFields And clsGame.eOptionalSyncFields.Company) = clsGame.eOptionalSyncFields.Company Then @@ -556,7 +559,7 @@ Public Class mgrMonitorList ByRef hshParams As Hashtable) As String Dim sSQL As String = String.Empty Dim iCounter As Integer = 0 - Dim sBaseSelect As String = "MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder, Parameter, Comments, IsRegEx, RecurseSubFolders FROM monitorlist" + Dim sBaseSelect As String = "MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder, Parameter, Comments, IsRegEx, RecurseSubFolders, OS FROM monitorlist" Dim sSort As String = " ORDER BY " & sSortField If bSortAsc Then @@ -754,6 +757,7 @@ Public Class mgrMonitorList If Not IsDBNull(dr("Comments")) Then oGame.Comments = CStr(dr("Comments")) oGame.IsRegEx = CBool(dr("IsRegEx")) oGame.RecurseSubFolders = CBool(dr("RecurseSubFolders")) + oGame.OS = CInt(dr("OS")) oGame.Tags = mgrGameTags.GetTagsByGameForExport(oGame.ID) oList.Add(oGame) Next diff --git a/GBM/Managers/mgrSQLite.vb b/GBM/Managers/mgrSQLite.vb index 025dd3a..500c031 100644 --- a/GBM/Managers/mgrSQLite.vb +++ b/GBM/Managers/mgrSQLite.vb @@ -84,7 +84,8 @@ Public Class mgrSQLite sSql &= "CREATE TABLE monitorlist (MonitorID TEXT NOT NULL PRIMARY KEY, Name TEXT NOT NULL, Process TEXT NOT NULL, Path TEXT, " & "AbsolutePath BOOLEAN NOT NULL, FolderSave BOOLEAN NOT NULL, FileType TEXT, TimeStamp BOOLEAN NOT NULL, ExcludeList TEXT NOT NULL, " & "ProcessPath TEXT, Icon TEXT, Hours REAL, Version TEXT, Company TEXT, Enabled BOOLEAN NOT NULL, MonitorOnly BOOLEAN NOT NULL, " & - "BackupLimit INTEGER NOT NULL, CleanFolder BOOLEAN NOT NULL, Parameter TEXT, Comments TEXT, IsRegEx BOOLEAN NOT NULL, RecurseSubFolders NOT NULL);" + "BackupLimit INTEGER NOT NULL, CleanFolder BOOLEAN NOT NULL, Parameter TEXT, Comments TEXT, IsRegEx BOOLEAN NOT NULL, RecurseSubFolders NOT NULL, " & + "OS INTEGER NOT NULL);" 'Add Tables (Tags) sSql &= "CREATE TABLE tags (TagID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL PRIMARY KEY); " @@ -130,17 +131,18 @@ Public Class mgrSQLite sSql = "CREATE TABLE monitorlist (MonitorID TEXT NOT NULL PRIMARY KEY, Name TEXT NOT NULL, Process TEXT NOT NULL, Path TEXT, " & "AbsolutePath BOOLEAN NOT NULL, FolderSave BOOLEAN NOT NULL, FileType TEXT, TimeStamp BOOLEAN NOT NULL, ExcludeList TEXT NOT NULL, " & "ProcessPath TEXT, Icon TEXT, Hours REAL, Version TEXT, Company TEXT, Enabled BOOLEAN NOT NULL, MonitorOnly BOOLEAN NOT NULL, " & - "BackupLimit INTEGER NOT NULL, CleanFolder BOOLEAN NOT NULL, Parameter TEXT, Comments TEXT, IsRegEx BOOLEAN NOT NULL, RecurseSubFolders NOT NULL);" + "BackupLimit INTEGER NOT NULL, CleanFolder BOOLEAN NOT NULL, Parameter TEXT, Comments TEXT, IsRegEx BOOLEAN NOT NULL, RecurseSubFolders NOT NULL, " & + "OS INTEGER NOT NULL);" 'Add Tables (Remote Manifest) - sSql &= "CREATE TABLE manifest (ManifestID TEXT NOT NULL PRIMARY KEY, MonitorID TEXT NOT NULL, FileName TEXT NOT NULL, " & - "DateUpdated TEXT NOT NULL, UpdatedBy TEXT NOT NULL, CheckSum TEXT);" + sSql &= "CREATE TABLE manifest (ManifestID TEXT Not NULL PRIMARY KEY, MonitorID TEXT Not NULL, FileName TEXT Not NULL, " & + "DateUpdated TEXT Not NULL, UpdatedBy TEXT Not NULL, CheckSum TEXT);" 'Add Tables (Remote Tags) - sSql &= "CREATE TABLE tags (TagID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL PRIMARY KEY); " + sSql &= "CREATE TABLE tags (TagID TEXT Not NULL UNIQUE, Name TEXT Not NULL PRIMARY KEY); " 'Add Tables (Remote Game Tags) - sSql &= "CREATE TABLE gametags (TagID TEXT NOT NULL, MonitorID TEXT NOT NULL, PRIMARY KEY(TagID, MonitorID)); " + sSql &= "CREATE TABLE gametags (TagID TEXT Not NULL, MonitorID TEXT Not NULL, PRIMARY KEY(TagID, MonitorID)); " 'Set Version sSql &= "PRAGMA user_version=" & mgrCommon.AppVersion @@ -379,7 +381,7 @@ Public Class mgrSQLite '0.9 Upgrade If GetDatabaseVersion() < 90 Then BackupDB("v8") - sSQL = "ALTER TABLE monitorlist ADD COLUMN MonitorOnly BOOLEAN NOT NULL DEFAULT 0;" + sSQL = "ALTER TABLE monitorlist ADD COLUMN MonitorOnly BOOLEAN Not NULL DEFAULT 0;" sSQL &= "PRAGMA user_version=90" RunParamQuery(sSQL, New Hashtable) End If @@ -391,25 +393,25 @@ Public Class mgrSQLite BackupDB("v84") 'Overhaul Monitor List Table - sSQL = "CREATE TABLE monitorlist_new (MonitorID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL, Process TEXT NOT NULL, Path TEXT, AbsolutePath BOOLEAN NOT NULL, FolderSave BOOLEAN NOT NULL, FileType TEXT, TimeStamp BOOLEAN NOT NULL, ExcludeList TEXT NOT NULL, ProcessPath TEXT, Icon TEXT, Hours REAL, Version TEXT, Company TEXT, Enabled BOOLEAN NOT NULL, MonitorOnly BOOLEAN NOT NULL, PRIMARY KEY(Name, Process));" + sSQL = "CREATE TABLE monitorlist_new (MonitorID TEXT Not NULL UNIQUE, Name TEXT Not NULL, Process TEXT Not NULL, Path TEXT, AbsolutePath BOOLEAN Not NULL, FolderSave BOOLEAN Not NULL, FileType TEXT, TimeStamp BOOLEAN Not NULL, ExcludeList TEXT Not NULL, ProcessPath TEXT, Icon TEXT, Hours REAL, Version TEXT, Company TEXT, Enabled BOOLEAN Not NULL, MonitorOnly BOOLEAN Not NULL, PRIMARY KEY(Name, Process));" sSQL &= "INSERT INTO monitorlist_new (MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly) " sSQL &= "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly FROM monitorlist;" sSQL &= "DROP TABLE monitorlist; ALTER TABLE monitorlist_new RENAME TO monitorlist;" 'Overhaul Variables Table - sSQL &= "CREATE TABLE variables_new (VariableID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL PRIMARY KEY, Path TEXT NOT NULL);" + sSQL &= "CREATE TABLE variables_new (VariableID TEXT Not NULL UNIQUE, Name TEXT Not NULL PRIMARY KEY, Path TEXT Not NULL);" sSQL &= "INSERT INTO variables_new (VariableID, Name, Path) SELECT VariableID, Name, Path FROM variables;" sSQL &= "DROP TABLE variables; ALTER TABLE variables_new RENAME TO variables;" 'Overhaul Manifest Table - sSQL &= "CREATE TABLE manifest_new (ManifestID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL PRIMARY KEY, FileName TEXT NOT NULL, RestorePath TEXT NOT NULL, AbsolutePath BOOLEAN NOT NULL, DateUpdated TEXT NOT NULL, UpdatedBy TEXT NOT NULL, CheckSum TEXT);" + sSQL &= "CREATE TABLE manifest_new (ManifestID TEXT Not NULL UNIQUE, Name TEXT Not NULL PRIMARY KEY, FileName TEXT Not NULL, RestorePath TEXT Not NULL, AbsolutePath BOOLEAN Not NULL, DateUpdated TEXT Not NULL, UpdatedBy TEXT Not NULL, CheckSum TEXT);" sSQL &= "INSERT INTO manifest_new (ManifestID, Name, FileName, RestorePath, AbsolutePath, DateUpdated, UpdatedBy) " sSQL &= "SELECT ManifestID, Name, FileName, RestorePath, AbsolutePath, DateUpdated, UpdatedBy FROM manifest;" sSQL &= "DROP TABLE manifest; ALTER TABLE manifest_new RENAME TO manifest;" 'Add new settings - sSQL &= "ALTER TABLE settings ADD COLUMN Sync BOOLEAN NOT NULL DEFAULT 1;" - sSQL &= "ALTER TABLE settings ADD COLUMN CheckSum BOOLEAN NOT NULL DEFAULT 1;" + sSQL &= "ALTER TABLE settings ADD COLUMN Sync BOOLEAN Not NULL DEFAULT 1;" + sSQL &= "ALTER TABLE settings ADD COLUMN CheckSum BOOLEAN Not NULL DEFAULT 1;" sSQL &= "PRAGMA user_version=91" RunParamQuery(sSQL, New Hashtable) @@ -427,13 +429,13 @@ Public Class mgrSQLite BackupDB("v84") 'Overhaul Monitor List Table - sSQL = "CREATE TABLE monitorlist_new (MonitorID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL, Process TEXT NOT NULL, Path TEXT, AbsolutePath BOOLEAN NOT NULL, FolderSave BOOLEAN NOT NULL, FileType TEXT, TimeStamp BOOLEAN NOT NULL, ExcludeList TEXT NOT NULL, ProcessPath TEXT, Icon TEXT, Hours REAL, Version TEXT, Company TEXT, Enabled BOOLEAN NOT NULL, MonitorOnly BOOLEAN NOT NULL, PRIMARY KEY(Name, Process));" + sSQL = "CREATE TABLE monitorlist_new (MonitorID TEXT Not NULL UNIQUE, Name TEXT Not NULL, Process TEXT Not NULL, Path TEXT, AbsolutePath BOOLEAN Not NULL, FolderSave BOOLEAN Not NULL, FileType TEXT, TimeStamp BOOLEAN Not NULL, ExcludeList TEXT Not NULL, ProcessPath TEXT, Icon TEXT, Hours REAL, Version TEXT, Company TEXT, Enabled BOOLEAN Not NULL, MonitorOnly BOOLEAN Not NULL, PRIMARY KEY(Name, Process));" sSQL &= "INSERT INTO monitorlist_new (MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly) " sSQL &= "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly FROM monitorlist;" sSQL &= "DROP TABLE monitorlist; ALTER TABLE monitorlist_new RENAME TO monitorlist;" 'Overhaul Manifest Table - sSQL &= "CREATE TABLE manifest_new (ManifestID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL PRIMARY KEY, FileName TEXT NOT NULL, RestorePath TEXT NOT NULL, AbsolutePath BOOLEAN NOT NULL, DateUpdated TEXT NOT NULL, UpdatedBy TEXT NOT NULL, CheckSum TEXT);" + sSQL &= "CREATE TABLE manifest_new (ManifestID TEXT Not NULL UNIQUE, Name TEXT Not NULL PRIMARY KEY, FileName TEXT Not NULL, RestorePath TEXT Not NULL, AbsolutePath BOOLEAN Not NULL, DateUpdated TEXT Not NULL, UpdatedBy TEXT Not NULL, CheckSum TEXT);" sSQL &= "INSERT INTO manifest_new (ManifestID, Name, FileName, RestorePath, AbsolutePath, DateUpdated, UpdatedBy) " sSQL &= "SELECT ManifestID, Name, FileName, RestorePath, AbsolutePath, DateUpdated, UpdatedBy FROM manifest;" sSQL &= "DROP TABLE manifest; ALTER TABLE manifest_new RENAME TO manifest;" @@ -457,7 +459,7 @@ Public Class mgrSQLite BackupDB("v91") 'Add new setting - sSQL = "ALTER TABLE settings ADD COLUMN StartWithWindows BOOLEAN NOT NULL DEFAULT 0;" + sSQL = "ALTER TABLE settings ADD COLUMN StartWithWindows BOOLEAN Not NULL DEFAULT 0;" sSQL &= "PRAGMA user_version=92" RunParamQuery(sSQL, New Hashtable) @@ -503,11 +505,11 @@ Public Class mgrSQLite BackupDB("v93") 'Add Tags Tables - sSQL = "CREATE TABLE tags (TagID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL PRIMARY KEY); " - sSQL &= "CREATE TABLE gametags (TagID TEXT NOT NULL, MonitorID TEXT NOT NULL, PRIMARY KEY(TagID, MonitorID)); " + sSQL = "CREATE TABLE tags (TagID TEXT Not NULL UNIQUE, Name TEXT Not NULL PRIMARY KEY); " + sSQL &= "CREATE TABLE gametags (TagID TEXT Not NULL, MonitorID TEXT Not NULL, PRIMARY KEY(TagID, MonitorID)); " 'Add new setting - sSQL &= "ALTER TABLE settings ADD COLUMN TimeTracking BOOLEAN NOT NULL DEFAULT 1;" + sSQL &= "ALTER TABLE settings ADD COLUMN TimeTracking BOOLEAN Not NULL DEFAULT 1;" sSQL &= "PRAGMA user_version=94" @@ -518,8 +520,8 @@ Public Class mgrSQLite BackupDB("v93") 'Add Tags Tables - sSQL = "CREATE TABLE tags (TagID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL PRIMARY KEY); " - sSQL &= "CREATE TABLE gametags (TagID TEXT NOT NULL, MonitorID TEXT NOT NULL, PRIMARY KEY(TagID, MonitorID)); " + sSQL = "CREATE TABLE tags (TagID TEXT Not NULL UNIQUE, Name TEXT Not NULL PRIMARY KEY); " + sSQL &= "CREATE TABLE gametags (TagID TEXT Not NULL, MonitorID TEXT Not NULL, PRIMARY KEY(TagID, MonitorID)); " sSQL &= "PRAGMA user_version=94" @@ -534,8 +536,8 @@ Public Class mgrSQLite BackupDB("v94") '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 = "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" @@ -558,7 +560,7 @@ Public Class mgrSQLite BackupDB("v95") 'Add new setting - sSQL = "ALTER TABLE settings ADD COLUMN CompressionLevel INTEGER NOT NULL DEFAULT 5;" + sSQL = "ALTER TABLE settings ADD COLUMN CompressionLevel INTEGER Not NULL DEFAULT 5;" sSQL &= "PRAGMA user_version=96" @@ -583,8 +585,8 @@ Public Class mgrSQLite 'Add new settings sSQL = "ALTER TABLE settings ADD COLUMN Custom7zArguments TEXT;" sSQL &= "ALTER TABLE settings ADD COLUMN Custom7zLocation TEXT;" - sSQL &= "ALTER TABLE settings ADD COLUMN SyncFields INTEGER NOT NULL DEFAULT 32;" - sSQL &= "ALTER TABLE settings ADD COLUMN AutoSaveLog BOOLEAN NOT NULL DEFAULT 0;" + sSQL &= "ALTER TABLE settings ADD COLUMN SyncFields INTEGER Not NULL DEFAULT 32;" + sSQL &= "ALTER TABLE settings ADD COLUMN AutoSaveLog BOOLEAN Not NULL DEFAULT 0;" sSQL &= "PRAGMA user_version=97" RunParamQuery(sSQL, New Hashtable) @@ -606,13 +608,13 @@ Public Class mgrSQLite BackupDB("v97") 'Overhaul Manifest Table - sSQL = "CREATE TABLE manifest_new (ManifestID TEXT NOT NULL PRIMARY KEY, Name TEXT NOT NULL, FileName TEXT NOT NULL, RestorePath TEXT NOT NULL, AbsolutePath BOOLEAN NOT NULL, DateUpdated TEXT NOT NULL, UpdatedBy TEXT NOT NULL, CheckSum TEXT);" + sSQL = "CREATE TABLE manifest_new (ManifestID TEXT Not NULL PRIMARY KEY, Name TEXT Not NULL, FileName TEXT Not NULL, RestorePath TEXT Not NULL, AbsolutePath BOOLEAN Not NULL, DateUpdated TEXT Not NULL, UpdatedBy TEXT Not NULL, CheckSum TEXT);" sSQL &= "INSERT INTO manifest_new (ManifestID, Name, FileName, RestorePath, AbsolutePath, DateUpdated, UpdatedBy) " sSQL &= "SELECT ManifestID, Name, FileName, RestorePath, AbsolutePath, DateUpdated, UpdatedBy FROM manifest;" sSQL &= "DROP TABLE manifest; ALTER TABLE manifest_new RENAME TO manifest;" 'Add backup limit field - sSQL &= "ALTER TABLE monitorlist ADD COLUMN BackupLimit INTEGER NOT NULL DEFAULT 5;" + sSQL &= "ALTER TABLE monitorlist ADD COLUMN BackupLimit INTEGER Not NULL DEFAULT 5;" sSQL &= "PRAGMA user_version=98" @@ -626,13 +628,13 @@ Public Class mgrSQLite BackupDB("v97") 'Overhaul Manifest Table - sSQL = "CREATE TABLE manifest_new (ManifestID TEXT NOT NULL PRIMARY KEY, Name TEXT NOT NULL, FileName TEXT NOT NULL, RestorePath TEXT NOT NULL, AbsolutePath BOOLEAN NOT NULL, DateUpdated TEXT NOT NULL, UpdatedBy TEXT NOT NULL, CheckSum TEXT);" + sSQL = "CREATE TABLE manifest_new (ManifestID TEXT Not NULL PRIMARY KEY, Name TEXT Not NULL, FileName TEXT Not NULL, RestorePath TEXT Not NULL, AbsolutePath BOOLEAN Not NULL, DateUpdated TEXT Not NULL, UpdatedBy TEXT Not NULL, CheckSum TEXT);" sSQL &= "INSERT INTO manifest_new (ManifestID, Name, FileName, RestorePath, AbsolutePath, DateUpdated, UpdatedBy) " sSQL &= "SELECT ManifestID, Name, FileName, RestorePath, AbsolutePath, DateUpdated, UpdatedBy FROM manifest;" sSQL &= "DROP TABLE manifest; ALTER TABLE manifest_new RENAME TO manifest;" 'Add backup limit field - sSQL &= "ALTER TABLE monitorlist ADD COLUMN BackupLimit INTEGER NOT NULL DEFAULT 5;" + sSQL &= "ALTER TABLE monitorlist ADD COLUMN BackupLimit INTEGER Not NULL DEFAULT 5;" sSQL &= "PRAGMA user_version=98" @@ -650,11 +652,11 @@ Public Class mgrSQLite BackupDB("v98") 'Remove checksum field - sSQL = "CREATE TABLE settings_new (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, StartWithWindows BOOLEAN NOT NULL, TimeTracking BOOLEAN NOT NULL, " & - "SupressBackup BOOLEAN NOT NULL, SupressBackupThreshold INTEGER NOT NULL, CompressionLevel INTEGER NOT NULL, Custom7zArguments TEXT, " & - "Custom7zLocation TEXT, SyncFields INTEGER NOT NULL, AutoSaveLog BOOLEAN NOT NULL);" + sSQL = "CREATE TABLE settings_new (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, StartWithWindows BOOLEAN Not NULL, TimeTracking BOOLEAN Not NULL, " & + "SupressBackup BOOLEAN Not NULL, SupressBackupThreshold INTEGER Not NULL, CompressionLevel INTEGER Not NULL, Custom7zArguments TEXT, " & + "Custom7zLocation TEXT, SyncFields INTEGER Not NULL, AutoSaveLog BOOLEAN Not NULL);" sSQL &= "INSERT INTO settings_new (SettingsID, MonitorOnStartup, StartToTray, ShowDetectionToolTips, DisableConfirmation, CreateSubFolder, " & "ShowOverwriteWarning, RestoreOnLaunch, BackupFolder, Sync, StartWithWindows, TimeTracking, SupressBackup, SupressBackupThreshold, " & "CompressionLevel, Custom7zArguments, Custom7zLocation, SyncFields, AutoSaveLog) " & @@ -663,9 +665,9 @@ Public Class mgrSQLite "CompressionLevel, Custom7zArguments, Custom7zLocation, SyncFields, AutoSaveLog FROM settings;" & "DROP TABLE settings; ALTER TABLE settings_new RENAME TO settings;" 'Add new field(s) - sSQL &= "ALTER TABLE monitorlist ADD COLUMN CleanFolder BOOLEAN NOT NULL DEFAULT 0;" - sSQL &= "ALTER TABLE settings ADD COLUMN AutoRestore BOOLEAN NOT NULL DEFAULT 0;" - sSQL &= "ALTER TABLE settings ADD COLUMN AutoMark BOOLEAN NOT NULL DEFAULT 0;" + sSQL &= "ALTER TABLE monitorlist ADD COLUMN CleanFolder BOOLEAN Not NULL DEFAULT 0;" + sSQL &= "ALTER TABLE settings ADD COLUMN AutoRestore BOOLEAN Not NULL DEFAULT 0;" + sSQL &= "ALTER TABLE settings ADD COLUMN AutoMark BOOLEAN Not NULL DEFAULT 0;" sSQL &= "PRAGMA user_version=101" RunParamQuery(sSQL, New Hashtable) @@ -675,7 +677,7 @@ Public Class mgrSQLite BackupDB("v98") 'Add new field(s) - sSQL = "ALTER TABLE monitorlist ADD COLUMN CleanFolder BOOLEAN NOT NULL DEFAULT 0;" + sSQL = "ALTER TABLE monitorlist ADD COLUMN CleanFolder BOOLEAN Not NULL DEFAULT 0;" sSQL &= "PRAGMA user_version=101" RunParamQuery(sSQL, New Hashtable) @@ -689,7 +691,7 @@ Public Class mgrSQLite BackupDB("v101") 'Add Table (SavedPath) - sSQL = "CREATE TABLE savedpath (PathName TEXT NOT NULL PRIMARY KEY, Path TEXT NOT NULL);" + sSQL = "CREATE TABLE savedpath (PathName TEXT Not NULL PRIMARY KEY, Path TEXT Not NULL);" 'Add new field(s) sSQL &= "ALTER TABLE monitorlist ADD COLUMN Parameter TEXT;" @@ -718,7 +720,7 @@ Public Class mgrSQLite BackupDB("v102") 'Add Tables (Sessions) - sSQL = "CREATE TABLE sessions (MonitorID TEXT NOT NULL, Start INTEGER NOT NULL, End INTEGER NOT NULL, PRIMARY KEY(MonitorID, Start));" + sSQL = "CREATE TABLE sessions (MonitorID TEXT Not NULL, Start INTEGER Not NULL, End INTEGER Not NULL, PRIMARY KEY(MonitorID, Start));" 'Add new field(s) sSQL &= "ALTER TABLE monitorlist ADD COLUMN Comments TEXT;" @@ -748,7 +750,7 @@ Public Class mgrSQLite BackupDB("v105") 'Add new field(s) - sSQL = "ALTER TABLE monitorlist ADD COLUMN IsRegEx BOOLEAN NOT NULL DEFAULT 0;" + sSQL = "ALTER TABLE monitorlist ADD COLUMN IsRegEx BOOLEAN Not NULL DEFAULT 0;" sSQL &= "PRAGMA user_version=108" @@ -759,7 +761,7 @@ Public Class mgrSQLite BackupDB("v105") 'Add new field(s) - sSQL = "ALTER TABLE monitorlist ADD COLUMN IsRegEx BOOLEAN NOT NULL DEFAULT 0;" + sSQL = "ALTER TABLE monitorlist ADD COLUMN IsRegEx BOOLEAN Not NULL DEFAULT 0;" sSQL &= "PRAGMA user_version=108" @@ -774,33 +776,33 @@ Public Class mgrSQLite BackupDB("v108") 'Add Tables - sSQL = "CREATE TABLE processes (ProcessID TEXT NOT NULL PRIMARY KEY, Name Text NOT NULL, Path TEXT NOT NULL, Args TEXT, Kill BOOLEAN NOT NULL);" - sSQL &= "CREATE TABLE gameprocesses (ProcessID TEXT NOT NULL, MonitorID TEXT NOT NULL, PRIMARY KEY(ProcessID, MonitorID));" + sSQL = "CREATE TABLE processes (ProcessID TEXT Not NULL PRIMARY KEY, Name Text Not NULL, Path TEXT Not NULL, Args TEXT, Kill BOOLEAN Not NULL);" + sSQL &= "CREATE TABLE gameprocesses (ProcessID TEXT Not NULL, MonitorID TEXT Not NULL, PRIMARY KEY(ProcessID, MonitorID));" 'Overhaul Tables - sSQL &= "CREATE TABLE settings_new (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, StartWithWindows BOOLEAN NOT NULL, TimeTracking BOOLEAN NOT NULL, " & - "SuppressBackup BOOLEAN NOT NULL, SuppressBackupThreshold INTEGER NOT NULL, CompressionLevel INTEGER NOT NULL, Custom7zArguments TEXT, " & - "Custom7zLocation TEXT, SyncFields INTEGER NOT NULL, AutoSaveLog BOOLEAN NOT NULL, AutoRestore BOOLEAN NOT NULL, AutoMark BOOLEAN NOT NULL, SessionTracking BOOLEAN NOT NULL, " & - "SuppressMessages INTEGER NOT NULL, BackupOnLaunch BOOLEAN NOT NULL, UseGameID BOOLEAN NOT NULL, DisableSyncMessages BOOLEAN NOT NULL);" + sSQL &= "CREATE TABLE settings_new (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, StartWithWindows BOOLEAN Not NULL, TimeTracking BOOLEAN Not NULL, " & + "SuppressBackup BOOLEAN Not NULL, SuppressBackupThreshold INTEGER Not NULL, CompressionLevel INTEGER Not NULL, Custom7zArguments TEXT, " & + "Custom7zLocation TEXT, SyncFields INTEGER Not NULL, AutoSaveLog BOOLEAN Not NULL, AutoRestore BOOLEAN Not NULL, AutoMark BOOLEAN Not NULL, SessionTracking BOOLEAN Not NULL, " & + "SuppressMessages INTEGER Not NULL, BackupOnLaunch BOOLEAN Not NULL, UseGameID BOOLEAN Not NULL, DisableSyncMessages BOOLEAN Not NULL);" sSQL &= "INSERT INTO settings_new(SettingsID, MonitorOnStartup, StartToTray, ShowDetectionToolTips, DisableConfirmation, CreateSubFolder, ShowOverwriteWarning, RestoreOnLaunch, " & "BackupFolder, StartWithWindows, TimeTracking, SuppressBackup, SuppressBackupThreshold, CompressionLevel, Custom7zArguments, Custom7zLocation, SyncFields, AutoSaveLog, " & "AutoRestore, AutoMark, SessionTracking, SuppressMessages, BackupOnLaunch, UseGameID, DisableSyncMessages) SELECT SettingsID, MonitorOnStartup, StartToTray, ShowDetectionToolTips, DisableConfirmation, CreateSubFolder, ShowOverwriteWarning, RestoreOnLaunch, " & "BackupFolder, StartWithWindows, TimeTracking, SupressBackup, SupressBackupThreshold, CompressionLevel, Custom7zArguments, Custom7zLocation, SyncFields, AutoSaveLog, " & "AutoRestore, AutoMark, SessionTracking, 0, 1, 0, 1 FROM settings;" & "DROP TABLE settings; ALTER TABLE settings_new RENAME TO settings;" - sSQL &= "CREATE TABLE monitorlist_new (MonitorID TEXT NOT NULL PRIMARY KEY, Name TEXT NOT NULL, Process TEXT NOT NULL, Path TEXT, " & - "AbsolutePath BOOLEAN NOT NULL, FolderSave BOOLEAN NOT NULL, FileType TEXT, TimeStamp BOOLEAN NOT NULL, ExcludeList TEXT NOT NULL, " & - "ProcessPath TEXT, Icon TEXT, Hours REAL, Version TEXT, Company TEXT, Enabled BOOLEAN NOT NULL, MonitorOnly BOOLEAN NOT NULL, " & - "BackupLimit INTEGER NOT NULL, CleanFolder BOOLEAN NOT NULL, Parameter TEXT, Comments TEXT, IsRegEx BOOLEAN NOT NULL);" + sSQL &= "CREATE TABLE monitorlist_new (MonitorID TEXT Not NULL PRIMARY KEY, Name TEXT Not NULL, Process TEXT Not NULL, Path TEXT, " & + "AbsolutePath BOOLEAN Not NULL, FolderSave BOOLEAN Not NULL, FileType TEXT, TimeStamp BOOLEAN Not NULL, ExcludeList TEXT Not NULL, " & + "ProcessPath TEXT, Icon TEXT, Hours REAL, Version TEXT, Company TEXT, Enabled BOOLEAN Not NULL, MonitorOnly BOOLEAN Not NULL, " & + "BackupLimit INTEGER Not NULL, CleanFolder BOOLEAN Not NULL, Parameter TEXT, Comments TEXT, IsRegEx BOOLEAN Not NULL);" sSQL &= "INSERT INTO monitorlist_new (MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, " & "ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder, Parameter, Comments, IsRegEx)" & "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, " & "ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder, Parameter, Comments, IsRegEx FROM monitorlist;" & "DROP TABLE monitorlist; ALTER TABLE monitorlist_new RENAME TO monitorlist;" - sSQL &= "CREATE TABLE manifest_new (ManifestID TEXT NOT NULL PRIMARY KEY, MonitorID TEXT NOT NULL, FileName TEXT NOT NULL, " & - "DateUpdated TEXT NOT NULL, UpdatedBy TEXT NOT NULL, CheckSum TEXT);" + sSQL &= "CREATE TABLE manifest_new (ManifestID TEXT Not NULL PRIMARY KEY, MonitorID TEXT Not NULL, FileName TEXT Not NULL, " & + "DateUpdated TEXT Not NULL, UpdatedBy TEXT Not NULL, CheckSum TEXT);" sSQL &= "INSERT INTO manifest_new (ManifestID, MonitorID, FileName, DateUpdated, UpdatedBy, CheckSum) " & "SELECT ManifestID, MonitorID, FileName, DateUpdated, UpdatedBy, CheckSum FROM manifest NATURAL JOIN monitorlist GROUP BY ManifestID;" & "DROP TABLE manifest; ALTER TABLE manifest_new RENAME TO manifest;" @@ -817,10 +819,10 @@ Public Class mgrSQLite BackupDB("v108") 'Overhaul Tables - sSQL = "CREATE TABLE monitorlist_new (MonitorID TEXT NOT NULL PRIMARY KEY, Name TEXT NOT NULL, Process TEXT NOT NULL, Path TEXT, " & - "AbsolutePath BOOLEAN NOT NULL, FolderSave BOOLEAN NOT NULL, FileType TEXT, TimeStamp BOOLEAN NOT NULL, ExcludeList TEXT NOT NULL, " & - "ProcessPath TEXT, Icon TEXT, Hours REAL, Version TEXT, Company TEXT, Enabled BOOLEAN NOT NULL, MonitorOnly BOOLEAN NOT NULL, " & - "BackupLimit INTEGER NOT NULL, CleanFolder BOOLEAN NOT NULL, Parameter TEXT, Comments TEXT, IsRegEx BOOLEAN NOT NULL);" + sSQL = "CREATE TABLE monitorlist_new (MonitorID TEXT Not NULL PRIMARY KEY, Name TEXT Not NULL, Process TEXT Not NULL, Path TEXT, " & + "AbsolutePath BOOLEAN Not NULL, FolderSave BOOLEAN Not NULL, FileType TEXT, TimeStamp BOOLEAN Not NULL, ExcludeList TEXT Not NULL, " & + "ProcessPath TEXT, Icon TEXT, Hours REAL, Version TEXT, Company TEXT, Enabled BOOLEAN Not NULL, MonitorOnly BOOLEAN Not NULL, " & + "BackupLimit INTEGER Not NULL, CleanFolder BOOLEAN Not NULL, Parameter TEXT, Comments TEXT, IsRegEx BOOLEAN Not NULL);" sSQL &= "INSERT INTO monitorlist_new (MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, " & "ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder, Parameter, Comments, IsRegEx)" & "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, " & @@ -835,8 +837,8 @@ Public Class mgrSQLite mgrTags.SyncTags(True) mgrGameTags.SyncGameTags(True) - sSQL &= "CREATE TABLE manifest_new (ManifestID TEXT NOT NULL PRIMARY KEY, MonitorID TEXT NOT NULL, FileName TEXT NOT NULL, " & - "DateUpdated TEXT NOT NULL, UpdatedBy TEXT NOT NULL, CheckSum TEXT);" + sSQL &= "CREATE TABLE manifest_new (ManifestID TEXT Not NULL PRIMARY KEY, MonitorID TEXT Not NULL, FileName TEXT Not NULL, " & + "DateUpdated TEXT Not NULL, UpdatedBy TEXT Not NULL, CheckSum TEXT);" sSQL &= "INSERT INTO manifest_new (ManifestID, MonitorID, FileName, DateUpdated, UpdatedBy, CheckSum) " & "SELECT ManifestID, MonitorID, FileName, DateUpdated, UpdatedBy, CheckSum FROM manifest NATURAL JOIN monitorlist GROUP BY ManifestID;" & "DROP TABLE manifest; ALTER TABLE manifest_new RENAME TO manifest;" @@ -856,7 +858,7 @@ Public Class mgrSQLite BackupDB("v110") 'Add new setting - sSQL = "ALTER TABLE settings ADD COLUMN ShowResolvedPaths BOOLEAN NOT NULL DEFAULT 1;" + sSQL = "ALTER TABLE settings ADD COLUMN ShowResolvedPaths BOOLEAN Not NULL DEFAULT 1;" sSQL &= "PRAGMA user_version=115" @@ -916,6 +918,30 @@ Public Class mgrSQLite RunParamQuery(sSQL, New Hashtable) End If End If + + '1.18 Upgrade + If GetDatabaseVersion() < 118 Then + If eDatabase = Database.Local Then + 'Backup DB before starting + BackupDB("v116") + + 'Add new field(s) + sSQL = "ALTER TABLE monitorlist ADD COLUMN OS INTEGER NOT NULL DEFAULT " & mgrCommon.GetCurrentOS & ";" + sSQL &= "PRAGMA user_version=118" + + RunParamQuery(sSQL, New Hashtable) + End If + If eDatabase = Database.Remote Then + 'Backup DB before starting + BackupDB("v116") + + 'Add new field(s) + sSQL = "ALTER TABLE monitorlist ADD COLUMN OS INTEGER NOT NULL DEFAULT " & mgrCommon.GetCurrentOS & ";" + sSQL &= "PRAGMA user_version=118" + + RunParamQuery(sSQL, New Hashtable) + End If + End If End Sub Public Function GetDBSize() As Long diff --git a/GBM/Managers/mgrXML.vb b/GBM/Managers/mgrXML.vb index 48bca19..39c3984 100644 --- a/GBM/Managers/mgrXML.vb +++ b/GBM/Managers/mgrXML.vb @@ -42,6 +42,7 @@ Public Class mgrXML oGame.Comments = g.Comments oGame.IsRegEx = g.IsRegEx oGame.RecurseSubFolders = g.RecurseSubFolders + oGame.OS = g.OS For Each t As Tag In g.Tags oGame.ImportTags.Add(t) Next diff --git a/GBM/My Project/Resources.Designer.vb b/GBM/My Project/Resources.Designer.vb index 6fcbe49..320d64b 100644 --- a/GBM/My Project/Resources.Designer.vb +++ b/GBM/My Project/Resources.Designer.vb @@ -123,6 +123,15 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized string similar to Linux. + ''' + Friend ReadOnly Property App_LinuxOS() As String + Get + Return ResourceManager.GetString("App_LinuxOS", resourceCulture) + End Get + End Property + ''' ''' Looks up a localized string similar to Game Backup Monitor. ''' @@ -195,6 +204,15 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized string similar to Windows. + ''' + Friend ReadOnly Property App_WindowsOS() As String + Get + Return ResourceManager.GetString("App_WindowsOS", resourceCulture) + End Get + End Property + ''' ''' Looks up a localized string similar to http://regexr.com/?expression=[PARAM]&text=test. ''' @@ -2346,6 +2364,15 @@ Namespace My.Resources End Get End Property + ''' + ''' Looks up a localized string similar to OS:. + ''' + Friend ReadOnly Property frmGameManager_lblOS() As String + Get + Return ResourceManager.GetString("frmGameManager_lblOS", resourceCulture) + End Get + End Property + ''' ''' Looks up a localized string similar to Parameter:. ''' diff --git a/GBM/My Project/Resources.resx b/GBM/My Project/Resources.resx index 09d9227..656b5ff 100644 --- a/GBM/My Project/Resources.resx +++ b/GBM/My Project/Resources.resx @@ -2281,4 +2281,13 @@ Invalid mode([PARAM]) for command [PARAM]. + + Linux + + + Windows + + + OS: + \ No newline at end of file