378 lines
15 KiB
VB.net
378 lines
15 KiB
VB.net
Imports GBM.My.Resources
|
|
Imports System.IO
|
|
|
|
Public Class frmSettings
|
|
Dim bShutdown As Boolean = False
|
|
Dim bSyncSettingsChanged As Boolean = False
|
|
Dim bCheckSumDisabled As Boolean = False
|
|
Dim eCurrentSyncFields As clsGame.eOptionalSyncFields
|
|
Private oSettings As mgrSettings
|
|
|
|
Property Settings As mgrSettings
|
|
Get
|
|
Return oSettings
|
|
End Get
|
|
Set(value As mgrSettings)
|
|
oSettings = value
|
|
End Set
|
|
End Property
|
|
|
|
Private Sub HandleRegistryUpdate(ByVal bToggle As Boolean)
|
|
Dim oKey As Microsoft.Win32.RegistryKey
|
|
Dim sAppName As String = Application.ProductName
|
|
Dim sAppPath As String = Application.ExecutablePath
|
|
|
|
If bToggle Then
|
|
oKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
|
|
oKey.SetValue(sAppName, """" & sAppPath & """")
|
|
oKey.Close()
|
|
Else
|
|
oKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
|
|
oKey.DeleteValue(sAppName, False)
|
|
oKey.Close()
|
|
End If
|
|
End Sub
|
|
|
|
Private Function ValidateSettings() As Boolean
|
|
|
|
'Only modify registry key when the value changed
|
|
If chkStartWindows.Checked <> oSettings.StartWithWindows Then
|
|
HandleRegistryUpdate(chkStartWindows.Checked)
|
|
End If
|
|
oSettings.StartWithWindows = chkStartWindows.Checked
|
|
|
|
oSettings.MonitorOnStartup = chkMonitorOnStartup.Checked
|
|
oSettings.StartToTray = chkStartToTray.Checked
|
|
oSettings.ShowDetectionToolTips = chkShowDetectionTips.Checked
|
|
oSettings.AutoSaveLog = chkAutoSaveLog.Checked
|
|
oSettings.DisableConfirmation = chkBackupConfirm.Checked
|
|
oSettings.CreateSubFolder = chkCreateFolder.Checked
|
|
oSettings.ShowOverwriteWarning = chkOverwriteWarning.Checked
|
|
oSettings.RestoreOnLaunch = chkRestoreOnLaunch.Checked
|
|
oSettings.TimeTracking = chkTimeTracking.Checked
|
|
oSettings.SupressBackup = chkSupressBackup.Checked
|
|
oSettings.SupressBackupThreshold = nudSupressBackupThreshold.Value
|
|
oSettings.CompressionLevel = cboCompression.SelectedValue
|
|
|
|
If oSettings.Custom7zArguments <> txt7zArguments.Text.Trim And txt7zArguments.Text.Trim <> String.Empty Then
|
|
mgrCommon.ShowMessage(frmSettings_WarningArguments, MsgBoxStyle.Exclamation)
|
|
End If
|
|
|
|
oSettings.Custom7zArguments = txt7zArguments.Text.Trim
|
|
oSettings.Custom7zLocation = txt7zLocation.Text.Trim
|
|
|
|
'We need to clear all checksums its turned off
|
|
If chkCheckSum.Checked = False And oSettings.CheckSum = True Then
|
|
bCheckSumDisabled = True
|
|
End If
|
|
oSettings.CheckSum = chkCheckSum.Checked
|
|
|
|
'Turning syncing from off to on is the same as changing the backup folder
|
|
If chkSync.Checked = True And oSettings.Sync = False Then
|
|
bSyncSettingsChanged = True
|
|
End If
|
|
oSettings.Sync = chkSync.Checked
|
|
|
|
If Directory.Exists(txtBackupFolder.Text) Then
|
|
If oSettings.BackupFolder <> txtBackupFolder.Text Then
|
|
If chkSync.Checked Then bSyncSettingsChanged = True
|
|
End If
|
|
oSettings.BackupFolder = txtBackupFolder.Text
|
|
Else
|
|
mgrCommon.ShowMessage(frmSettings_ErrorBackupFolder, MsgBoxStyle.Exclamation)
|
|
Return False
|
|
End If
|
|
|
|
If oSettings.Custom7zLocation <> String.Empty Then
|
|
If File.Exists(oSettings.Custom7zLocation) Then
|
|
If Path.GetFileNameWithoutExtension(oSettings.Custom7zLocation) <> "7za" Then
|
|
mgrCommon.ShowMessage(frmSettings_WarningLocation, MsgBoxStyle.Critical)
|
|
End If
|
|
Else
|
|
mgrCommon.ShowMessage(frmSettings_ErrorLocation, oSettings.Custom7zLocation, MsgBoxStyle.Critical)
|
|
Return False
|
|
End If
|
|
End If
|
|
|
|
'We must trigger a sync if optional fields have changed
|
|
If Settings.Sync And (eCurrentSyncFields <> Settings.SyncFields) Then
|
|
bSyncSettingsChanged = True
|
|
End If
|
|
|
|
Return True
|
|
End Function
|
|
|
|
Private Function SaveSettings() As Boolean
|
|
If ValidateSettings() Then
|
|
oSettings.SaveSettings()
|
|
If bSyncSettingsChanged Then mgrMonitorList.HandleBackupLocationChange(Settings)
|
|
If bCheckSumDisabled Then mgrManifest.DoManifestHashWipe()
|
|
Return True
|
|
Else
|
|
Return False
|
|
End If
|
|
End Function
|
|
|
|
Private Sub GetUtilityInfo(ByVal sLocation As String)
|
|
Dim bDefault As Boolean = False
|
|
Dim sFileDescription As String
|
|
Dim sVersion As String
|
|
Dim sCopyright As String
|
|
|
|
'Ignore this function when on Unix and hide the information data
|
|
If mgrCommon.IsUnix Then
|
|
grp7zInformation.Visible = False
|
|
Else
|
|
Try
|
|
grp7zInformation.Visible = True
|
|
|
|
'Use default when no custom location is set
|
|
If sLocation = String.Empty Then
|
|
sLocation = mgrPath.Default7zLocation
|
|
bDefault = True
|
|
End If
|
|
|
|
'Get info
|
|
Dim oFileInfo As FileVersionInfo = FileVersionInfo.GetVersionInfo(sLocation)
|
|
|
|
If oFileInfo.FileDescription = String.Empty Then
|
|
sFileDescription = App_NotAvailable
|
|
Else
|
|
sFileDescription = oFileInfo.FileDescription
|
|
End If
|
|
|
|
If oFileInfo.ProductVersion = String.Empty Then
|
|
sVersion = App_NotAvailable
|
|
Else
|
|
sVersion = oFileInfo.ProductVersion
|
|
End If
|
|
|
|
If oFileInfo.LegalCopyright = String.Empty Then
|
|
sCopyright = App_NotAvailable
|
|
Else
|
|
sCopyright = oFileInfo.LegalCopyright
|
|
End If
|
|
|
|
lbl7zProduct.Text = sFileDescription & " - " & sVersion
|
|
lbl7zCopyright.Text = sCopyright
|
|
Catch ex As Exception
|
|
grp7zInformation.Visible = False
|
|
End Try
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SetDefaults()
|
|
If mgrCommon.ShowMessage(frmSettings_ConfirmDefaults, MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
|
oSettings = New mgrSettings
|
|
LoadSettings()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub LoadSettings()
|
|
chkStartWindows.Checked = oSettings.StartWithWindows
|
|
chkMonitorOnStartup.Checked = oSettings.MonitorOnStartup
|
|
chkStartToTray.Checked = oSettings.StartToTray
|
|
chkShowDetectionTips.Checked = oSettings.ShowDetectionToolTips
|
|
chkAutoSaveLog.Checked = oSettings.AutoSaveLog
|
|
chkBackupConfirm.Checked = oSettings.DisableConfirmation
|
|
chkCreateFolder.Checked = oSettings.CreateSubFolder
|
|
chkOverwriteWarning.Checked = oSettings.ShowOverwriteWarning
|
|
chkRestoreOnLaunch.Checked = oSettings.RestoreOnLaunch
|
|
txtBackupFolder.Text = oSettings.BackupFolder
|
|
chkSync.Checked = oSettings.Sync
|
|
chkCheckSum.Checked = oSettings.CheckSum
|
|
chkTimeTracking.Checked = oSettings.TimeTracking
|
|
chkSupressBackup.Checked = oSettings.SupressBackup
|
|
nudSupressBackupThreshold.Value = oSettings.SupressBackupThreshold
|
|
nudSupressBackupThreshold.Enabled = chkSupressBackup.Checked
|
|
cboCompression.SelectedValue = oSettings.CompressionLevel
|
|
txt7zArguments.Text = oSettings.Custom7zArguments
|
|
txt7zLocation.Text = oSettings.Custom7zLocation
|
|
eCurrentSyncFields = oSettings.SyncFields
|
|
|
|
'Unix Handler
|
|
If mgrCommon.IsUnix Then
|
|
chkStartToTray.Checked = False
|
|
chkStartWindows.Checked = False
|
|
End If
|
|
|
|
'Retrieve 7z Info
|
|
GetUtilityInfo(oSettings.Custom7zLocation)
|
|
|
|
'Toggle Sync Button
|
|
ToggleSyncButton()
|
|
End Sub
|
|
|
|
Private Sub LoadCombos()
|
|
Dim oComboItems As New List(Of KeyValuePair(Of Integer, String))
|
|
Dim oSettingsItems As New List(Of KeyValuePair(Of Integer, String))
|
|
|
|
'cboCompression
|
|
cboCompression.ValueMember = "Key"
|
|
cboCompression.DisplayMember = "Value"
|
|
|
|
oComboItems.Add(New KeyValuePair(Of Integer, String)(0, frmSettings_cboCompression_None))
|
|
oComboItems.Add(New KeyValuePair(Of Integer, String)(1, frmSettings_cboCompression_Fastest))
|
|
oComboItems.Add(New KeyValuePair(Of Integer, String)(3, frmSettings_cboCompression_Fast))
|
|
oComboItems.Add(New KeyValuePair(Of Integer, String)(5, frmSettings_cboCompression_Normal))
|
|
oComboItems.Add(New KeyValuePair(Of Integer, String)(7, frmSettings_cboCompression_Maximum))
|
|
oComboItems.Add(New KeyValuePair(Of Integer, String)(9, frmSettings_cboCompression_Ultra))
|
|
|
|
cboCompression.DataSource = oComboItems
|
|
|
|
'lstSettings
|
|
lstSettings.ValueMember = "Key"
|
|
lstSettings.DisplayMember = "Value"
|
|
|
|
oSettingsItems.Add(New KeyValuePair(Of Integer, String)(0, frmSettings_lstSettings_General))
|
|
oSettingsItems.Add(New KeyValuePair(Of Integer, String)(1, frmSettings_lstSettings_BackupRestore))
|
|
oSettingsItems.Add(New KeyValuePair(Of Integer, String)(2, frmSettings_lstSettings_7z))
|
|
|
|
lstSettings.DataSource = oSettingsItems
|
|
|
|
'Select Default
|
|
lstSettings.SelectedIndex = 0
|
|
End Sub
|
|
|
|
Private Sub ToggleSyncButton()
|
|
If chkSync.Checked Then
|
|
btnOptionalFields.Enabled = True
|
|
Else
|
|
btnOptionalFields.Enabled = False
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub OpenOptionalFields()
|
|
Dim frm As New frmSyncFields
|
|
frm.SyncFields = Settings.SyncFields
|
|
frm.ShowDialog()
|
|
If frm.DialogResult = DialogResult.OK Then
|
|
Settings.SyncFields = frm.SyncFields
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub ChangePanel()
|
|
If lstSettings.SelectedItems.Count > 0 Then
|
|
Dim oSettingsItem As KeyValuePair(Of Integer, String) = lstSettings.SelectedItems(0)
|
|
|
|
Select Case oSettingsItem.Key
|
|
Case 0
|
|
pnlGeneral.Visible = True
|
|
pnlBackup.Visible = False
|
|
pnl7z.Visible = False
|
|
Case 1
|
|
pnlGeneral.Visible = False
|
|
pnlBackup.Visible = True
|
|
pnl7z.Visible = False
|
|
Case 2
|
|
pnlGeneral.Visible = False
|
|
pnlBackup.Visible = False
|
|
pnl7z.Visible = True
|
|
End Select
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub SetForm()
|
|
'Set Form Name
|
|
Me.Text = frmSettings_FormName
|
|
|
|
'Set Form Text
|
|
lblMinutes.Text = frmSettings_lblMinutes
|
|
chkSupressBackup.Text = frmSettings_chkSupressBackup
|
|
chkCheckSum.Text = frmSettings_chkCheckSum
|
|
chkRestoreOnLaunch.Text = frmSettings_chkRestoreOnLaunch
|
|
chkOverwriteWarning.Text = frmSettings_chkOverwriteWarning
|
|
chkCreateFolder.Text = frmSettings_chkCreateFolder
|
|
chkBackupConfirm.Text = frmSettings_chkBackupConfirm
|
|
btnCancel.Text = frmSettings_btnCancel
|
|
btnSave.Text = frmSettings_btnSave
|
|
grpFolderOptions.Text = frmSettings_grpFolderOptions
|
|
btnBackupFolder.Text = frmSettings_btnBackupFolder
|
|
lblBackupFolder.Text = frmSettings_lblBackupFolder
|
|
grpStartup.Text = frmSettings_grpStartup
|
|
grpGameData.Text = frmSettings_grpGameData
|
|
chkTimeTracking.Text = frmSettings_chkTimeTracking
|
|
chkStartWindows.Text = frmSettings_chkStartWindows
|
|
chkSync.Text = frmSettings_chkSync
|
|
chkShowDetectionTips.Text = frmSettings_chkShowDetectionTips
|
|
chkAutoSaveLog.Text = frmSettings_chkAutoSaveLog
|
|
chkStartToTray.Text = frmSettings_chkStartToTray
|
|
chkMonitorOnStartup.Text = frmSettings_chkMonitorOnStartup
|
|
grp7zGeneral.Text = frmSettings_grp7zGeneral
|
|
grp7zAdvanced.Text = frmSettings_grp7zAdvanced
|
|
grp7zInformation.Text = frmSettings_grp7zInformation
|
|
lblCompression.Text = frmSettings_lblCompression
|
|
btnDefaults.Text = frmSettings_btnDefaults
|
|
lblArguments.Text = frmSettings_lblArguments
|
|
lblLocation.Text = frmSettings_lblLocation
|
|
btnOptionalFields.Text = frmSettings_btnOptionalFields
|
|
|
|
'Unix Handler
|
|
If mgrCommon.IsUnix Then
|
|
chkStartToTray.Enabled = False
|
|
chkStartWindows.Enabled = False
|
|
End If
|
|
|
|
'Handle Panels
|
|
pnlGeneral.Visible = False
|
|
pnlBackup.Visible = False
|
|
pnl7z.Visible = False
|
|
End Sub
|
|
|
|
Private Sub btnSave_Click(sender As System.Object, e As System.EventArgs) Handles btnSave.Click
|
|
If SaveSettings() Then
|
|
bShutdown = True
|
|
Me.Close()
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub btnCancel_Click(sender As System.Object, e As System.EventArgs) Handles btnCancel.Click
|
|
bShutdown = True
|
|
Me.Close()
|
|
End Sub
|
|
|
|
Private Sub frmSettings_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
|
|
SetForm()
|
|
LoadCombos()
|
|
LoadSettings()
|
|
End Sub
|
|
|
|
Private Sub btnBackupFolder_Click(sender As System.Object, e As System.EventArgs) Handles btnBackupFolder.Click
|
|
Dim sNewFolder As String
|
|
sNewFolder = mgrCommon.OpenFolderBrowser(frmSettings_BrowseFolder, oSettings.BackupFolder, True)
|
|
If sNewFolder <> String.Empty Then txtBackupFolder.Text = sNewFolder
|
|
End Sub
|
|
|
|
Private Sub btn7zLocation_Click(sender As Object, e As EventArgs) Handles btn7zLocation.Click
|
|
Dim sNewLocation As String
|
|
sNewLocation = mgrCommon.OpenFileBrowser(frmSettings_Browse7za, "exe", frmSettings_7zaFileType, Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), False)
|
|
If sNewLocation <> String.Empty Then
|
|
txt7zLocation.Text = sNewLocation
|
|
GetUtilityInfo(txt7zLocation.Text)
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub chkSupressBackup_CheckedChanged(sender As Object, e As EventArgs) Handles chkSupressBackup.CheckedChanged
|
|
nudSupressBackupThreshold.Enabled = chkSupressBackup.Checked
|
|
End Sub
|
|
|
|
Private Sub txt7zLocation_Leave(sender As Object, e As EventArgs) Handles txt7zLocation.Leave
|
|
GetUtilityInfo(txt7zLocation.Text.Trim)
|
|
End Sub
|
|
|
|
Private Sub btnDefaults_Click(sender As Object, e As EventArgs) Handles btnDefaults.Click
|
|
SetDefaults()
|
|
End Sub
|
|
|
|
Private Sub btnOptionalFields_Click(sender As Object, e As EventArgs) Handles btnOptionalFields.Click
|
|
OpenOptionalFields()
|
|
End Sub
|
|
|
|
Private Sub chkSync_CheckedChanged(sender As Object, e As EventArgs) Handles chkSync.CheckedChanged
|
|
ToggleSyncButton()
|
|
End Sub
|
|
|
|
Private Sub lstSettings_SelectedValueChanged(sender As Object, e As EventArgs) Handles lstSettings.SelectedValueChanged
|
|
ChangePanel()
|
|
End Sub
|
|
End Class |