382 lines
12 KiB
VB.net
382 lines
12 KiB
VB.net
Imports System.IO
|
|
|
|
Public Class mgrSettings
|
|
Private bStartWithWindows As Boolean = False
|
|
Private bMonitoronStartup As Boolean = True
|
|
Private bStartToTray As Boolean = False
|
|
Private bShowDetectionToolTips As Boolean = True
|
|
Private bDisableConfirmation As Boolean = False
|
|
Private bCreateSubFolder As Boolean = False
|
|
Private bShowOverwriteWarning As Boolean = True
|
|
Private bRestoreOnLaunch As Boolean = False
|
|
Private bAutoRestore As Boolean = False
|
|
Private bAutoMark As Boolean = False
|
|
Private bTimeTracking As Boolean = True
|
|
Private bSessionTracking As Boolean = False
|
|
Private bSupressBackup As Boolean = False
|
|
Private iSupressBackupThreshold As Integer = 10
|
|
Private iCompressionLevel As Integer = 5
|
|
Private s7zArguments As String = String.Empty
|
|
Private s7zLocation As String = String.Empty
|
|
Private sBackupFolder As String = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments).TrimEnd(New Char() {"\", "/"})
|
|
Private eSyncFields As clsGame.eOptionalSyncFields = clsGame.eOptionalSyncFields.None Or clsGame.eOptionalSyncFields.TimeStamp
|
|
Private eMessages As eSupressMessages = eSupressMessages.None
|
|
Private bAutoSaveLog As Boolean = False
|
|
Private bBackupOnLaunch As Boolean = True
|
|
|
|
<Flags()> Public Enum eSupressMessages
|
|
None = 0
|
|
GameIDSync = 1
|
|
End Enum
|
|
|
|
Property StartWithWindows As Boolean
|
|
Get
|
|
Return bStartWithWindows
|
|
End Get
|
|
Set(value As Boolean)
|
|
bStartWithWindows = value
|
|
End Set
|
|
End Property
|
|
|
|
Property MonitorOnStartup As Boolean
|
|
Get
|
|
Return bMonitoronStartup
|
|
End Get
|
|
Set(value As Boolean)
|
|
bMonitoronStartup = value
|
|
End Set
|
|
End Property
|
|
|
|
Property StartToTray As Boolean
|
|
Get
|
|
Return bStartToTray
|
|
End Get
|
|
Set(value As Boolean)
|
|
bStartToTray = value
|
|
End Set
|
|
End Property
|
|
|
|
Property ShowDetectionToolTips As Boolean
|
|
Get
|
|
Return bShowDetectionToolTips
|
|
End Get
|
|
Set(value As Boolean)
|
|
bShowDetectionToolTips = value
|
|
End Set
|
|
End Property
|
|
|
|
Property DisableConfirmation As Boolean
|
|
Get
|
|
Return bDisableConfirmation
|
|
End Get
|
|
Set(value As Boolean)
|
|
bDisableConfirmation = value
|
|
End Set
|
|
End Property
|
|
|
|
Property CreateSubFolder As Boolean
|
|
Get
|
|
Return bCreateSubFolder
|
|
End Get
|
|
Set(value As Boolean)
|
|
bCreateSubFolder = value
|
|
End Set
|
|
End Property
|
|
|
|
Property ShowOverwriteWarning As Boolean
|
|
Get
|
|
Return bShowOverwriteWarning
|
|
End Get
|
|
Set(value As Boolean)
|
|
bShowOverwriteWarning = value
|
|
End Set
|
|
End Property
|
|
|
|
Property RestoreOnLaunch As Boolean
|
|
Get
|
|
Return bRestoreOnLaunch
|
|
End Get
|
|
Set(value As Boolean)
|
|
bRestoreOnLaunch = value
|
|
End Set
|
|
End Property
|
|
|
|
Property AutoRestore As Boolean
|
|
Get
|
|
Return bAutoRestore
|
|
End Get
|
|
Set(value As Boolean)
|
|
bAutoRestore = value
|
|
End Set
|
|
End Property
|
|
|
|
Property AutoMark As Boolean
|
|
Get
|
|
Return bAutoMark
|
|
End Get
|
|
Set(value As Boolean)
|
|
bAutoMark = value
|
|
End Set
|
|
End Property
|
|
|
|
Property TimeTracking As Boolean
|
|
Get
|
|
Return bTimeTracking
|
|
End Get
|
|
Set(value As Boolean)
|
|
bTimeTracking = value
|
|
End Set
|
|
End Property
|
|
|
|
Property SessionTracking As Boolean
|
|
Get
|
|
Return bSessionTracking
|
|
End Get
|
|
Set(value As Boolean)
|
|
bSessionTracking = value
|
|
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 CompressionLevel As Integer
|
|
Get
|
|
Return iCompressionLevel
|
|
End Get
|
|
Set(value As Integer)
|
|
iCompressionLevel = value
|
|
End Set
|
|
End Property
|
|
|
|
Property Custom7zArguments As String
|
|
Get
|
|
Return s7zArguments
|
|
End Get
|
|
Set(value As String)
|
|
s7zArguments = value
|
|
End Set
|
|
End Property
|
|
|
|
ReadOnly Property Prepared7zArguments As String
|
|
Get
|
|
'Prepare custom 7z arguments
|
|
Dim sPreparedArguments As String
|
|
If s7zArguments <> String.Empty Then
|
|
'Surround the arguments with spaces to be inserted into command
|
|
sPreparedArguments = " " & s7zArguments & " "
|
|
Else
|
|
'The command always needs at least one space inserted
|
|
sPreparedArguments = " "
|
|
End If
|
|
Return sPreparedArguments
|
|
End Get
|
|
End Property
|
|
|
|
Property Custom7zLocation As String
|
|
Get
|
|
Return s7zLocation
|
|
End Get
|
|
Set(value As String)
|
|
s7zLocation = value
|
|
End Set
|
|
End Property
|
|
|
|
ReadOnly Property Is7zUtilityValid As Boolean
|
|
Get
|
|
'We don't use a packaged 7za on Unix, assume valid.
|
|
If mgrCommon.IsUnix Then
|
|
Return True
|
|
End If
|
|
|
|
If s7zLocation = String.Empty Then
|
|
'Verify stored hash of the default utility if we're using it
|
|
Return mgrCommon.UtilityHash = mgrHash.Generate_SHA256_Hash(mgrPath.Default7zLocation)
|
|
Else
|
|
'When using a custom utility assume it's valid, we have no way to be sure.
|
|
Return True
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
ReadOnly Property Utility7zLocation As String
|
|
Get
|
|
'Return default utility when custom setting is not used
|
|
If s7zLocation = String.Empty Then
|
|
Return mgrPath.Default7zLocation
|
|
Else
|
|
'Check if custom utility is available, if not use the default utility
|
|
If File.Exists(s7zLocation) Then
|
|
Return s7zLocation
|
|
Else
|
|
Return mgrPath.Default7zLocation
|
|
End If
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Property BackupFolder As String
|
|
Get
|
|
Return sBackupFolder
|
|
End Get
|
|
Set(value As String)
|
|
sBackupFolder = value.TrimEnd(New Char() {"\", "/"})
|
|
End Set
|
|
End Property
|
|
|
|
Property SyncFields As clsGame.eOptionalSyncFields
|
|
Get
|
|
Return eSyncFields
|
|
End Get
|
|
Set(value As clsGame.eOptionalSyncFields)
|
|
eSyncFields = value
|
|
End Set
|
|
End Property
|
|
|
|
Property AutoSaveLog As Boolean
|
|
Get
|
|
Return bAutoSaveLog
|
|
End Get
|
|
Set(value As Boolean)
|
|
bAutoSaveLog = value
|
|
End Set
|
|
End Property
|
|
|
|
Property SupressMessages As eSupressMessages
|
|
Get
|
|
Return eMessages
|
|
End Get
|
|
Set(value As eSupressMessages)
|
|
eMessages = value
|
|
End Set
|
|
End Property
|
|
|
|
Property BackupOnLaunch As Boolean
|
|
Get
|
|
Return bBackupOnLaunch
|
|
End Get
|
|
Set(value As Boolean)
|
|
bBackupOnLaunch = value
|
|
End Set
|
|
End Property
|
|
|
|
Sub New()
|
|
'The GameIDsync message should be supressed on all new databases
|
|
SupressMessages = SetMessageField(SupressMessages, eSupressMessages.GameIDSync)
|
|
End Sub
|
|
|
|
Private Sub SaveFromClass()
|
|
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local)
|
|
Dim sSQL As String
|
|
Dim hshParams As New Hashtable
|
|
|
|
sSQL = "DELETE FROM settings WHERE SettingsID = 1"
|
|
oDatabase.RunParamQuery(sSQL, New Hashtable)
|
|
|
|
sSQL = "INSERT INTO settings VALUES (1, @MonitorOnStartup, @StartToTray, @ShowDetectionToolTips, @DisableConfirmation, "
|
|
sSQL &= "@CreateSubFolder, @ShowOverwriteWarning, @RestoreOnLaunch, @BackupFolder, @StartWithWindows, "
|
|
sSQL &= "@TimeTracking, @SupressBackup, @SupressBackupThreshold, @CompressionLevel, @Custom7zArguments, @Custom7zLocation, "
|
|
sSQL &= "@SyncFields, @AutoSaveLog, @AutoRestore, @AutoMark, @SessionTracking, @SupressMessages, @BackupOnLaunch)"
|
|
|
|
hshParams.Add("MonitorOnStartup", MonitorOnStartup)
|
|
hshParams.Add("StartToTray", StartToTray)
|
|
hshParams.Add("ShowDetectionToolTips", ShowDetectionToolTips)
|
|
hshParams.Add("DisableConfirmation", DisableConfirmation)
|
|
hshParams.Add("CreateSubFolder", CreateSubFolder)
|
|
hshParams.Add("ShowOverwriteWarning", ShowOverwriteWarning)
|
|
hshParams.Add("RestoreOnLaunch", RestoreOnLaunch)
|
|
hshParams.Add("BackupFolder", BackupFolder)
|
|
hshParams.Add("StartWithWindows", StartWithWindows)
|
|
hshParams.Add("TimeTracking", TimeTracking)
|
|
hshParams.Add("SupressBackup", SupressBackup)
|
|
hshParams.Add("SupressBackupThreshold", SupressBackupThreshold)
|
|
hshParams.Add("CompressionLevel", CompressionLevel)
|
|
hshParams.Add("Custom7zArguments", Custom7zArguments)
|
|
hshParams.Add("Custom7zLocation", Custom7zLocation)
|
|
hshParams.Add("SyncFields", SyncFields)
|
|
hshParams.Add("AutoSaveLog", AutoSaveLog)
|
|
hshParams.Add("AutoRestore", AutoRestore)
|
|
hshParams.Add("AutoMark", AutoMark)
|
|
hshParams.Add("SessionTracking", SessionTracking)
|
|
hshParams.Add("SupressMessages", SupressMessages)
|
|
hshParams.Add("BackupOnLaunch", BackupOnLaunch)
|
|
oDatabase.RunParamQuery(sSQL, hshParams)
|
|
End Sub
|
|
|
|
Private Sub MapToClass()
|
|
Dim oDatabase As New mgrSQLite(mgrSQLite.Database.Local)
|
|
Dim oData As DataSet
|
|
Dim sSQL As String
|
|
|
|
oDatabase.Connect()
|
|
|
|
sSQL = "SELECT * FROM settings WHERE SettingsID = 1"
|
|
oData = oDatabase.ReadParamData(sSQL, New Hashtable)
|
|
|
|
For Each dr As DataRow In oData.Tables(0).Rows
|
|
MonitorOnStartup = CBool(dr("MonitorOnStartup"))
|
|
StartToTray = CBool(dr("StartToTray"))
|
|
ShowDetectionToolTips = CBool(dr("ShowDetectionToolTips"))
|
|
DisableConfirmation = CBool(dr("DisableConfirmation"))
|
|
CreateSubFolder = CBool(dr("CreateSubFolder"))
|
|
ShowOverwriteWarning = CBool(dr("ShowOverwriteWarning"))
|
|
RestoreOnLaunch = CBool(dr("RestoreOnLaunch"))
|
|
BackupFolder = CStr(dr("BackupFolder"))
|
|
StartWithWindows = CBool(dr("StartWithWindows"))
|
|
TimeTracking = CBool(dr("TimeTracking"))
|
|
SupressBackup = CBool(dr("SupressBackup"))
|
|
SupressBackupThreshold = CInt(dr("SupressBackupThreshold"))
|
|
CompressionLevel = CInt(dr("CompressionLevel"))
|
|
If Not IsDBNull(dr("Custom7zArguments")) Then Custom7zArguments = CStr(dr("Custom7zArguments"))
|
|
If Not IsDBNull(dr("Custom7zLocation")) Then Custom7zLocation = CStr(dr("Custom7zLocation"))
|
|
SyncFields = CInt(dr("SyncFields"))
|
|
AutoSaveLog = CBool(dr("AutoSaveLog"))
|
|
AutoRestore = CBool(dr("AutoRestore"))
|
|
AutoMark = CBool(dr("AutoMark"))
|
|
SessionTracking = CBool(dr("SessionTracking"))
|
|
SupressMessages = CInt(dr("SupressMessages"))
|
|
BackupOnLaunch = CBool(dr("BackupOnLaunch"))
|
|
Next
|
|
|
|
oDatabase.Disconnect()
|
|
End Sub
|
|
|
|
Public Sub LoadSettings()
|
|
MapToClass()
|
|
|
|
'Set Remote Manifest Location
|
|
mgrPath.RemoteDatabaseLocation = Me.BackupFolder
|
|
End Sub
|
|
|
|
Public Sub SaveSettings()
|
|
SaveFromClass()
|
|
|
|
'Set Remote Manifest Location
|
|
mgrPath.RemoteDatabaseLocation = Me.BackupFolder
|
|
End Sub
|
|
|
|
Public Function SetMessageField(ByVal eMessages As eSupressMessages, ByVal eMessage As eSupressMessages) As eSupressMessages
|
|
Return eMessages Or eMessage
|
|
End Function
|
|
|
|
Public Function RemoveMessageField(ByVal eMessages As eSupressMessages, ByVal eMessage As eSupressMessages) As eSupressMessages
|
|
Return eMessages And (Not eMessage)
|
|
End Function
|
|
|
|
End Class
|