@@ -8,6 +8,7 @@
|
||||
Private sFileType As String
|
||||
Private sExcludeList As String
|
||||
Private bMonitorOnly As Boolean
|
||||
Private sComments As String
|
||||
Private oTags As List(Of Tag)
|
||||
|
||||
Property Name As String
|
||||
@@ -91,6 +92,15 @@
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Property Comments As String
|
||||
Set(value As String)
|
||||
sComments = value
|
||||
End Set
|
||||
Get
|
||||
Return sComments
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Property Tags As List(Of Tag)
|
||||
Get
|
||||
Return oTags
|
||||
|
||||
@@ -19,6 +19,7 @@ Public Class clsGame
|
||||
Private sCompany As String = String.Empty
|
||||
Private bEnabled As Boolean = True
|
||||
Private bMonitorOnly As Boolean = False
|
||||
Private sComments As String = String.Empty
|
||||
Private bDuplicate As Boolean = False
|
||||
Private bTempGame As Boolean = False
|
||||
Private oImportTags As New List(Of Tag)
|
||||
@@ -220,6 +221,15 @@ Public Class clsGame
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Property Comments As String
|
||||
Get
|
||||
Return sComments
|
||||
End Get
|
||||
Set(value As String)
|
||||
sComments = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Property Duplicate As Boolean
|
||||
Get
|
||||
Return bDuplicate
|
||||
@@ -324,6 +334,9 @@ Public Class clsGame
|
||||
If MonitorOnly <> oGame.MonitorOnly Then
|
||||
Return False
|
||||
End If
|
||||
If Comments <> oGame.Comments Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
'Optional Sync Fields
|
||||
If (eSyncFields And eOptionalSyncFields.Company) = eOptionalSyncFields.Company Then
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
Public Class clsSession
|
||||
|
||||
Private sMonitorID As String
|
||||
Private dStart As DateTime
|
||||
Private dEnd As DateTime
|
||||
Private sComputerName As String = My.Computer.Name
|
||||
|
||||
Public Property MonitorID As String
|
||||
Set(value As String)
|
||||
sMonitorID = value
|
||||
End Set
|
||||
Get
|
||||
Return sMonitorID
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Property SessionStart As DateTime
|
||||
Set(value As DateTime)
|
||||
dStart = value
|
||||
End Set
|
||||
Get
|
||||
Return dStart
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Property SessionEnd As DateTime
|
||||
Set(value As DateTime)
|
||||
dEnd = value
|
||||
End Set
|
||||
Get
|
||||
Return dEnd
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Property ComputerName As String
|
||||
Set(value As String)
|
||||
sComputerName = value
|
||||
End Set
|
||||
Get
|
||||
Return sComputerName
|
||||
End Get
|
||||
End Property
|
||||
|
||||
End Class
|
||||
+19
-2
@@ -714,6 +714,17 @@ Public Class frmMain
|
||||
UpdateTimeSpent(dCurrentHours, oProcess.TimeSpent.TotalHours)
|
||||
End Sub
|
||||
|
||||
Private Sub HandleSession()
|
||||
Dim oSession As New clsSession
|
||||
|
||||
'Record Session
|
||||
oSession.MonitorID = oProcess.GameInfo.ID
|
||||
oSession.SessionStart = oProcess.StartTime
|
||||
oSession.SessionEnd = oProcess.EndTime
|
||||
|
||||
mgrSessions.AddSession(oSession)
|
||||
End Sub
|
||||
|
||||
Private Function SupressBackup() As Boolean
|
||||
Dim iSession As Integer
|
||||
If oSettings.SupressBackup Then
|
||||
@@ -1764,7 +1775,10 @@ Public Class frmMain
|
||||
LoadGameSettings()
|
||||
Else
|
||||
bContinue = False
|
||||
If oSettings.TimeTracking Then HandleTimeSpent()
|
||||
If oSettings.TimeTracking Then
|
||||
HandleTimeSpent()
|
||||
HandleSession()
|
||||
End If
|
||||
UpdateLog(mgrCommon.FormatString(frmMain_ErrorBackupUnknownPath, oProcess.GameInfo.Name), False)
|
||||
oProcess.GameInfo = Nothing
|
||||
ResetGameInfo()
|
||||
@@ -1775,7 +1789,10 @@ Public Class frmMain
|
||||
If bContinue Then
|
||||
If DoMultiGameCheck() Then
|
||||
UpdateLog(mgrCommon.FormatString(frmMain_GameEnded, oProcess.GameInfo.Name), False)
|
||||
If oSettings.TimeTracking Then HandleTimeSpent()
|
||||
If oSettings.TimeTracking Then
|
||||
HandleTimeSpent()
|
||||
HandleSession()
|
||||
End If
|
||||
RunBackup()
|
||||
Else
|
||||
UpdateLog(frmMain_UnknownGameEnded, False)
|
||||
|
||||
@@ -125,6 +125,7 @@
|
||||
<Compile Include="Classes\clsGameFilter.vb" />
|
||||
<Compile Include="Classes\clsGameFilterField.vb" />
|
||||
<Compile Include="Classes\clsSavedPath.vb" />
|
||||
<Compile Include="Classes\clsSession.vb" />
|
||||
<Compile Include="Classes\XML Serialize Classes\Tag.vb" />
|
||||
<Compile Include="Classes\XML Serialize Classes\Game.vb" />
|
||||
<Compile Include="Classes\clsGameTag.vb" />
|
||||
@@ -225,6 +226,7 @@
|
||||
<Compile Include="Managers\mgrPath.vb" />
|
||||
<Compile Include="Managers\mgrRestore.vb" />
|
||||
<Compile Include="Managers\mgrSavedPath.vb" />
|
||||
<Compile Include="Managers\mgrSessions.vb" />
|
||||
<Compile Include="Managers\mgrSettings.vb" />
|
||||
<Compile Include="Managers\mgrBackup.vb" />
|
||||
<Compile Include="Managers\mgrSQLite.vb" />
|
||||
|
||||
@@ -33,6 +33,7 @@ Public Class mgrMonitorList
|
||||
oGame.BackupLimit = CInt(dr("BackupLimit"))
|
||||
oGame.CleanFolder = CBool(dr("CleanFolder"))
|
||||
If Not IsDBNull(dr("Parameter")) Then oGame.Parameter = CStr(dr("Parameter"))
|
||||
If Not IsDBNull(dr("Comments")) Then oGame.Comments = CStr(dr("Comments"))
|
||||
|
||||
Return oGame
|
||||
End Function
|
||||
@@ -59,6 +60,7 @@ Public Class mgrMonitorList
|
||||
hshParams.Add("BackupLimit", oGame.BackupLimit)
|
||||
hshParams.Add("CleanFolder", oGame.CleanFolder)
|
||||
hshParams.Add("Parameter", oGame.Parameter)
|
||||
hshParams.Add("Comments", oGame.Comments)
|
||||
|
||||
Return hshParams
|
||||
End Function
|
||||
@@ -99,7 +101,7 @@ Public Class mgrMonitorList
|
||||
Dim hshParams As Hashtable
|
||||
|
||||
sSQL = "INSERT INTO monitorlist VALUES (@ID, @Name, @Process, @Path, @AbsolutePath, @FolderSave, @FileType, @TimeStamp, "
|
||||
sSQL &= "@ExcludeList, @ProcessPath, @Icon, @Hours, @Version, @Company, @Enabled, @MonitorOnly, @BackupLimit, @CleanFolder, @Parameter)"
|
||||
sSQL &= "@ExcludeList, @ProcessPath, @Icon, @Hours, @Version, @Company, @Enabled, @MonitorOnly, @BackupLimit, @CleanFolder, @Parameter, @Comments)"
|
||||
|
||||
'Parameters
|
||||
hshParams = SetCoreParameters(oGame)
|
||||
@@ -115,7 +117,7 @@ Public Class mgrMonitorList
|
||||
|
||||
sSQL = "UPDATE monitorlist SET 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, CleanFolder=@CleanFolder, Parameter=@Parameter WHERE MonitorID=@ID"
|
||||
sSQL &= "Hours=@Hours, Version=@Version, Company=@Company, Enabled=@Enabled, MonitorOnly=@MonitorOnly, BackupLimit=@BackupLimit, CleanFolder=@CleanFolder, Parameter=@Parameter, Comments=@Comments WHERE MonitorID=@ID"
|
||||
|
||||
'Parameters
|
||||
hshParams = SetCoreParameters(oGame)
|
||||
@@ -367,6 +369,7 @@ Public Class mgrMonitorList
|
||||
hshParams.Add("MonitorOnly", oGame.MonitorOnly)
|
||||
hshParams.Add("CleanFolder", oGame.CleanFolder)
|
||||
hshParams.Add("Parameter", oGame.Parameter)
|
||||
hshParams.Add("Comments", oGame.Comments)
|
||||
|
||||
'Optional Parameters
|
||||
If (eSyncFields And clsGame.eOptionalSyncFields.Company) = clsGame.eOptionalSyncFields.Company Then
|
||||
@@ -501,7 +504,7 @@ Public Class mgrMonitorList
|
||||
ByVal bSortAsc As Boolean, ByVal sSortField As String, 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 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 FROM monitorlist"
|
||||
Dim sSort As String = " ORDER BY " & sSortField
|
||||
|
||||
If bSortAsc Then
|
||||
@@ -632,6 +635,7 @@ Public Class mgrMonitorList
|
||||
If Not IsDBNull(dr("ExcludeList")) Then oGame.ExcludeList = CStr(dr("ExcludeList"))
|
||||
oGame.MonitorOnly = CBool(dr("MonitorOnly"))
|
||||
If Not IsDBNull(dr("Parameter")) Then oGame.Parameter = CStr(dr("Parameter"))
|
||||
If Not IsDBNull(dr("Comments")) Then oGame.Comments = CStr(dr("Comments"))
|
||||
oGame.Tags = mgrGameTags.GetTagsByGameForExport(sID)
|
||||
oList.Add(oGame)
|
||||
Next
|
||||
|
||||
@@ -83,7 +83,7 @@ Public Class mgrSQLite
|
||||
sSql &= "CREATE TABLE monitorlist (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, " &
|
||||
"BackupLimit INTEGER NOT NULL, CleanFolder BOOLEAN NOT NULL, Parameter TEXT, PRIMARY KEY(Name, Process));"
|
||||
"BackupLimit INTEGER NOT NULL, CleanFolder BOOLEAN NOT NULL, Parameter TEXT, Comments TEXT, PRIMARY KEY(Name, Process));"
|
||||
|
||||
'Add Tables (Tags)
|
||||
sSql &= "CREATE TABLE tags (TagID TEXT NOT NULL UNIQUE, Name TEXT NOT NULL PRIMARY KEY); "
|
||||
@@ -120,7 +120,7 @@ Public Class mgrSQLite
|
||||
sSql = "CREATE TABLE monitorlist (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, " &
|
||||
"BackupLimit INTEGER NOT NULL, CleanFolder BOOLEAN NOT NULL, Parameter TEXT, PRIMARY KEY(Name, Process));"
|
||||
"BackupLimit INTEGER NOT NULL, CleanFolder BOOLEAN NOT NULL, Parameter TEXT, Comments TEXT, PRIMARY KEY(Name, Process));"
|
||||
|
||||
'Add Tables (Remote Manifest)
|
||||
sSql &= "CREATE TABLE manifest (ManifestID TEXT NOT NULL PRIMARY KEY, Name TEXT NOT NULL, FileName TEXT NOT NULL, RestorePath TEXT NOT NULL, " &
|
||||
@@ -132,6 +132,10 @@ Public Class mgrSQLite
|
||||
'Add Tables (Remote Game Tags)
|
||||
sSql &= "CREATE TABLE gametags (TagID TEXT NOT NULL, MonitorID TEXT NOT NULL, PRIMARY KEY(TagID, MonitorID)); "
|
||||
|
||||
'Add Tables (Sessions)
|
||||
sSql &= "CREATE TABLE sessions (MonitorID TEXT NOT NULL, Start INTEGER NOT NULL, End INTEGER NOT NULL, " &
|
||||
"ComputerName TEXT NOT NULL, PRIMARY KEY(MonitorID, Start));"
|
||||
|
||||
'Set Version
|
||||
sSql &= "PRAGMA user_version=" & mgrCommon.AppVersion
|
||||
|
||||
@@ -680,6 +684,36 @@ Public Class mgrSQLite
|
||||
End If
|
||||
End If
|
||||
|
||||
'1.05 Upgrade
|
||||
If GetDatabaseVersion() < 105 Then
|
||||
If eDatabase = Database.Local Then
|
||||
'Backup DB before starting
|
||||
BackupDB("v102")
|
||||
|
||||
'Add new field(s)
|
||||
sSQL = "ALTER TABLE monitorlist ADD COLUMN Comments TEXT;"
|
||||
|
||||
sSQL &= "PRAGMA user_version=105"
|
||||
|
||||
RunParamQuery(sSQL, New Hashtable)
|
||||
End If
|
||||
If eDatabase = Database.Remote Then
|
||||
'Backup DB before starting
|
||||
BackupDB("v102")
|
||||
|
||||
'Add Tables (Sessions)
|
||||
sSQL = "CREATE TABLE sessions (MonitorID TEXT NOT NULL, Start INTEGER NOT NULL, End INTEGER NOT NULL, " &
|
||||
"ComputerName TEXT NOT NULL, PRIMARY KEY(MonitorID, Start));"
|
||||
|
||||
'Add new field(s)
|
||||
sSQL &= "ALTER TABLE monitorlist ADD COLUMN Comments TEXT;"
|
||||
|
||||
sSQL &= "PRAGMA user_version=105"
|
||||
|
||||
RunParamQuery(sSQL, New Hashtable)
|
||||
End If
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Public Function GetDBSize() As Long
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
Public Class mgrSessions
|
||||
|
||||
Private Shared Function MapToObject(ByVal dr As DataRow) As clsSession
|
||||
Dim oSession As New clsSession
|
||||
|
||||
oSession.MonitorID = CStr(dr("MonitorID"))
|
||||
oSession.SessionStart = mgrCommon.UnixToDate(CInt(dr("Start")))
|
||||
oSession.SessionEnd = mgrCommon.UnixToDate(CInt(dr("End")))
|
||||
oSession.ComputerName = CStr(dr("ComputerName"))
|
||||
|
||||
Return oSession
|
||||
End Function
|
||||
|
||||
Private Shared Function SetCoreParameters(ByVal oSession As clsSession) As Hashtable
|
||||
Dim hshParams As New Hashtable
|
||||
|
||||
hshParams.Add("MonitorID", oSession.MonitorID)
|
||||
hshParams.Add("Start", mgrCommon.DateToUnix(oSession.SessionStart))
|
||||
hshParams.Add("End", mgrCommon.DateToUnix(oSession.SessionEnd))
|
||||
hshParams.Add("ComputerName", oSession.ComputerName)
|
||||
|
||||
Return hshParams
|
||||
End Function
|
||||
|
||||
Public Shared Sub AddSession(ByVal oSession As clsSession)
|
||||
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Remote)
|
||||
Dim sSQL As String
|
||||
Dim hshParams As Hashtable
|
||||
|
||||
sSQL = "INSERT INTO sessions (MonitorID, Start, End, ComputerName) VALUES (@MonitorID, @Start, @End, @ComputerName);"
|
||||
|
||||
hshParams = SetCoreParameters(oSession)
|
||||
|
||||
oDatabase.RunParamQuery(sSQL, hshParams)
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
@@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices
|
||||
' by using the '*' as shown below:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("1.0.4.*")>
|
||||
<Assembly: AssemblyFileVersion("1.0.4.0")>
|
||||
<Assembly: AssemblyVersion("1.0.5.*")>
|
||||
<Assembly: AssemblyFileVersion("1.0.5.0")>
|
||||
|
||||
<Assembly: NeutralResourcesLanguageAttribute("en")>
|
||||
Reference in New Issue
Block a user