Compare commits
27 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
96eac6a100 | ||
|
|
af13d51557 | ||
|
|
59748309ad | ||
|
|
0f874ae74a | ||
|
|
19de263050 | ||
|
|
34a9159719 | ||
|
|
f0bd3db4ad | ||
|
|
0003ee1f11 | ||
|
|
a4fff6b900 | ||
|
|
e3bfc6adb1 | ||
|
|
2ef141ee9b | ||
|
|
94086d0c05 | ||
|
|
6e2298df49 | ||
|
|
c0d6a79aa7 | ||
|
|
19812d1cd2 | ||
|
|
11cc244b18 | ||
|
|
8e82024c29 | ||
|
|
89aa57e6d6 | ||
|
|
44fdc4160e | ||
|
|
b5859d6541 | ||
|
|
d3d6482bfd | ||
|
|
9c8cbad7d5 | ||
|
|
e09e38a5c4 | ||
|
|
f245dee781 | ||
|
|
fd815f0c46 | ||
|
|
708e9ce1fe | ||
|
|
a68d2b718f |
Vendored
+3
-1
@@ -185,4 +185,6 @@ FakesAssemblies/
|
||||
# LightSwitch generated files
|
||||
GeneratedArtifacts/
|
||||
_Pvt_Extensions/
|
||||
ModelManifest.xml
|
||||
ModelManifest.xml
|
||||
/.vs/slnx.sqlite
|
||||
/.vs/VSWorkspaceState.json
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
Private bFolderSave As Boolean
|
||||
Private sFileType As String
|
||||
Private sExcludeList As String
|
||||
Private bMonitorOnly As Boolean
|
||||
Private oTags As List(Of Tag)
|
||||
|
||||
Property Name As String
|
||||
@@ -81,6 +82,15 @@
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Property MonitorOnly As Boolean
|
||||
Set(value As Boolean)
|
||||
bMonitorOnly = value
|
||||
End Set
|
||||
Get
|
||||
Return bMonitorOnly
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Property Tags As List(Of Tag)
|
||||
Get
|
||||
Return oTags
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
Public Class Tag
|
||||
<Serializable()>
|
||||
Public Class Tag
|
||||
Private sTagName As String
|
||||
|
||||
Property Name As String
|
||||
|
||||
+12
-3
@@ -1,4 +1,5 @@
|
||||
Public Class clsGame
|
||||
<Serializable()>
|
||||
Public Class clsGame
|
||||
Private sGameID As String = Guid.NewGuid.ToString
|
||||
Private sGameName As String = String.Empty
|
||||
Private sProcessName As String = String.Empty
|
||||
@@ -201,7 +202,7 @@
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Property Enabled As Boolean
|
||||
Property Enabled As Boolean
|
||||
Get
|
||||
Return bEnabled
|
||||
End Get
|
||||
@@ -210,7 +211,7 @@
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Property MonitorOnly As Boolean
|
||||
Property MonitorOnly As Boolean
|
||||
Get
|
||||
Return bMonitorOnly
|
||||
End Get
|
||||
@@ -405,4 +406,12 @@
|
||||
Return sProcessName
|
||||
End Function
|
||||
|
||||
Public Shared Function SetSyncField(ByVal eSyncFields As eOptionalSyncFields, ByVal eSyncField As eOptionalSyncFields) As eOptionalSyncFields
|
||||
Return eSyncFields Or eSyncField
|
||||
End Function
|
||||
|
||||
Public Shared Function RemoveSyncField(ByVal eSyncFields As eOptionalSyncFields, ByVal eSyncField As eOptionalSyncFields) As eOptionalSyncFields
|
||||
Return eSyncFields And (Not eSyncField)
|
||||
End Function
|
||||
|
||||
End Class
|
||||
|
||||
@@ -0,0 +1,71 @@
|
||||
Public Class clsGameFilter
|
||||
|
||||
Private sID As String
|
||||
Private oField As clsGameFilterField
|
||||
Private oData As Object
|
||||
Private eNumericOperator As eNumericOperators = eNumericOperators.Equals
|
||||
|
||||
Public Enum eNumericOperators
|
||||
Equals = 1
|
||||
Greater = 2
|
||||
Lesser = 3
|
||||
GreaterEquals = 4
|
||||
LesserEquals = 5
|
||||
End Enum
|
||||
|
||||
Public Property ID As String
|
||||
Get
|
||||
Return sID
|
||||
End Get
|
||||
Set(value As String)
|
||||
sID = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property Field As clsGameFilterField
|
||||
Get
|
||||
Return oField
|
||||
End Get
|
||||
Set(value As clsGameFilterField)
|
||||
oField = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property Data As Object
|
||||
Get
|
||||
Return oData
|
||||
End Get
|
||||
Set(value As Object)
|
||||
oData = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property NumericOperator As eNumericOperators
|
||||
Get
|
||||
Return eNumericOperator
|
||||
End Get
|
||||
Set(value As eNumericOperators)
|
||||
eNumericOperator = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property NumericOperatorAsString As String
|
||||
Get
|
||||
Select Case eNumericOperator
|
||||
Case eNumericOperators.Equals
|
||||
Return "="
|
||||
Case eNumericOperators.Greater
|
||||
Return ">"
|
||||
Case eNumericOperators.GreaterEquals
|
||||
Return ">="
|
||||
Case eNumericOperators.Lesser
|
||||
Return "<"
|
||||
Case eNumericOperators.LesserEquals
|
||||
Return "<="
|
||||
Case Else
|
||||
Return String.Empty
|
||||
End Select
|
||||
End Get
|
||||
End Property
|
||||
|
||||
End Class
|
||||
@@ -0,0 +1,77 @@
|
||||
Public Class clsGameFilterField
|
||||
|
||||
Public Enum eDataType As Integer
|
||||
fString = 1
|
||||
fNumeric = 2
|
||||
fBool = 3
|
||||
End Enum
|
||||
|
||||
<Flags()> Public Enum eFieldStatus
|
||||
None = 0
|
||||
ValidFilter = 1
|
||||
ValidSort = 2
|
||||
End Enum
|
||||
|
||||
Private sFieldName As String
|
||||
Private sFriendlyFieldName As String
|
||||
Private eType As eDataType
|
||||
Private eStatus As eFieldStatus
|
||||
|
||||
Public Property FieldName As String
|
||||
Get
|
||||
Return sFieldName
|
||||
End Get
|
||||
Set(value As String)
|
||||
sFieldName = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property FriendlyFieldName As String
|
||||
Get
|
||||
Return sFriendlyFieldName
|
||||
End Get
|
||||
Set(value As String)
|
||||
sFriendlyFieldName = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property Type As eDataType
|
||||
Get
|
||||
Return eType
|
||||
End Get
|
||||
Set(value As eDataType)
|
||||
eType = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
'This is a flag property - Setting a value will toggle that flag on and off.
|
||||
Public Property Status As eFieldStatus
|
||||
Get
|
||||
Return eStatus
|
||||
End Get
|
||||
Set(value As eFieldStatus)
|
||||
If (eStatus And value) = value Then
|
||||
eStatus = RemoveFieldStatus(value)
|
||||
Else
|
||||
eStatus = SetFieldStatus(value)
|
||||
End If
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private Function SetFieldStatus(ByVal eFlag As eFieldStatus) As eFieldStatus
|
||||
Return eStatus Or eFlag
|
||||
End Function
|
||||
|
||||
Private Function RemoveFieldStatus(ByVal eFlag As eFieldStatus) As eFieldStatus
|
||||
Return eStatus And (Not eFlag)
|
||||
End Function
|
||||
|
||||
Public Function CheckStatus(ByVal eFlag As eFieldStatus) As Boolean
|
||||
If (eStatus And eFlag) = eFlag Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
End Function
|
||||
|
||||
End Class
|
||||
@@ -1,10 +1,11 @@
|
||||
Imports GBM.My.Resources
|
||||
Imports System.IO
|
||||
|
||||
Public Class frmAdvancedImport
|
||||
|
||||
Private hshImportData As Hashtable
|
||||
Private hshFinalData As New Hashtable
|
||||
Private bSelectAll As Boolean = False
|
||||
Private bSelectAll As Boolean = True
|
||||
Private bIsLoading As Boolean = False
|
||||
Private iCurrentSort As Integer = 0
|
||||
Private WithEvents tmFilterTimer As Timer
|
||||
@@ -44,7 +45,7 @@ Public Class frmAdvancedImport
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub LoadData(Optional ByVal sFilter As String = "")
|
||||
Private Sub LoadData(Optional ByVal sFilter As String = "", Optional ByVal bAutoDetect As Boolean = False)
|
||||
Dim oApp As clsGame
|
||||
Dim oListViewItem As ListViewItem
|
||||
Dim sTags As String
|
||||
@@ -79,6 +80,19 @@ Public Class frmAdvancedImport
|
||||
oListViewItem.Checked = False
|
||||
End If
|
||||
|
||||
If bAutoDetect Then
|
||||
If oApp.AbsolutePath Then
|
||||
If Directory.Exists(oApp.Path) Then
|
||||
oListViewItem.Checked = True
|
||||
SaveChecked(oListViewItem)
|
||||
Else
|
||||
oListViewItem.Checked = False
|
||||
End If
|
||||
Else
|
||||
oListViewItem.Checked = False
|
||||
End If
|
||||
End If
|
||||
|
||||
If sFilter = String.Empty Then
|
||||
bAddItem = True
|
||||
Else
|
||||
@@ -142,8 +156,7 @@ Public Class frmAdvancedImport
|
||||
Private Sub frmAdvancedImport_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
||||
bIsLoading = True
|
||||
SetForm()
|
||||
LoadData()
|
||||
SelectToggle()
|
||||
LoadData(String.Empty, True)
|
||||
bIsLoading = False
|
||||
End Sub
|
||||
|
||||
@@ -184,6 +197,7 @@ Public Class frmAdvancedImport
|
||||
tmFilterTimer.Stop()
|
||||
tmFilterTimer.Enabled = False
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
|
||||
' Column Sorter
|
||||
|
||||
Generated
+282
-124
@@ -22,8 +22,6 @@ Partial Class frmFilter
|
||||
'Do not modify it using the code editor.
|
||||
<System.Diagnostics.DebuggerStepThrough()> _
|
||||
Private Sub InitializeComponent()
|
||||
Me.optGameInfo = New System.Windows.Forms.RadioButton()
|
||||
Me.optTag = New System.Windows.Forms.RadioButton()
|
||||
Me.grpTagFilter = New System.Windows.Forms.GroupBox()
|
||||
Me.grpTagOptions = New System.Windows.Forms.GroupBox()
|
||||
Me.optAll = New System.Windows.Forms.RadioButton()
|
||||
@@ -32,45 +30,42 @@ Partial Class frmFilter
|
||||
Me.lblTags = New System.Windows.Forms.Label()
|
||||
Me.btnRemove = New System.Windows.Forms.Button()
|
||||
Me.btnAdd = New System.Windows.Forms.Button()
|
||||
Me.lstFilter = New System.Windows.Forms.ListBox()
|
||||
Me.lstTagFilter = New System.Windows.Forms.ListBox()
|
||||
Me.lstTags = New System.Windows.Forms.ListBox()
|
||||
Me.btnOK = New System.Windows.Forms.Button()
|
||||
Me.grpGameFilter = New System.Windows.Forms.GroupBox()
|
||||
Me.grpGameInfoOptions = New System.Windows.Forms.GroupBox()
|
||||
Me.cboBoolFilter = New System.Windows.Forms.ComboBox()
|
||||
Me.numFilter = New System.Windows.Forms.NumericUpDown()
|
||||
Me.cboNumericOps = New System.Windows.Forms.ComboBox()
|
||||
Me.lblCurrentFilters = New System.Windows.Forms.Label()
|
||||
Me.lblFilterData = New System.Windows.Forms.Label()
|
||||
Me.lblFields = New System.Windows.Forms.Label()
|
||||
Me.btnRemoveFilter = New System.Windows.Forms.Button()
|
||||
Me.lstFilter = New System.Windows.Forms.ListBox()
|
||||
Me.btnAddFilter = New System.Windows.Forms.Button()
|
||||
Me.cboFilterField = New System.Windows.Forms.ComboBox()
|
||||
Me.grpFilterType = New System.Windows.Forms.GroupBox()
|
||||
Me.optOr = New System.Windows.Forms.RadioButton()
|
||||
Me.optAnd = New System.Windows.Forms.RadioButton()
|
||||
Me.txtCompany = New System.Windows.Forms.TextBox()
|
||||
Me.lblCompany = New System.Windows.Forms.Label()
|
||||
Me.txtProcess = New System.Windows.Forms.TextBox()
|
||||
Me.lblProcess = New System.Windows.Forms.Label()
|
||||
Me.lblName = New System.Windows.Forms.Label()
|
||||
Me.txtName = New System.Windows.Forms.TextBox()
|
||||
Me.txtStringFilter = New System.Windows.Forms.TextBox()
|
||||
Me.grpSorting = New System.Windows.Forms.GroupBox()
|
||||
Me.grpSortOptions = New System.Windows.Forms.GroupBox()
|
||||
Me.optSortAsc = New System.Windows.Forms.RadioButton()
|
||||
Me.optSortDesc = New System.Windows.Forms.RadioButton()
|
||||
Me.lblSortFields = New System.Windows.Forms.Label()
|
||||
Me.cboSortField = New System.Windows.Forms.ComboBox()
|
||||
Me.chkTag = New System.Windows.Forms.CheckBox()
|
||||
Me.chkGameInfo = New System.Windows.Forms.CheckBox()
|
||||
Me.Label1 = New System.Windows.Forms.Label()
|
||||
Me.grpTagFilter.SuspendLayout()
|
||||
Me.grpTagOptions.SuspendLayout()
|
||||
Me.grpGameFilter.SuspendLayout()
|
||||
Me.grpGameInfoOptions.SuspendLayout()
|
||||
CType(Me.numFilter, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||
Me.grpFilterType.SuspendLayout()
|
||||
Me.grpSorting.SuspendLayout()
|
||||
Me.grpSortOptions.SuspendLayout()
|
||||
Me.SuspendLayout()
|
||||
'
|
||||
'optGameInfo
|
||||
'
|
||||
Me.optGameInfo.AutoSize = True
|
||||
Me.optGameInfo.Location = New System.Drawing.Point(12, 12)
|
||||
Me.optGameInfo.Name = "optGameInfo"
|
||||
Me.optGameInfo.Size = New System.Drawing.Size(108, 17)
|
||||
Me.optGameInfo.TabIndex = 0
|
||||
Me.optGameInfo.Text = "Game Information"
|
||||
Me.optGameInfo.UseVisualStyleBackColor = True
|
||||
'
|
||||
'optTag
|
||||
'
|
||||
Me.optTag.AutoSize = True
|
||||
Me.optTag.Location = New System.Drawing.Point(12, 190)
|
||||
Me.optTag.Name = "optTag"
|
||||
Me.optTag.Size = New System.Drawing.Size(44, 17)
|
||||
Me.optTag.TabIndex = 2
|
||||
Me.optTag.Text = "Tag"
|
||||
Me.optTag.UseVisualStyleBackColor = True
|
||||
'
|
||||
'grpTagFilter
|
||||
'
|
||||
Me.grpTagFilter.Controls.Add(Me.grpTagOptions)
|
||||
@@ -78,11 +73,11 @@ Partial Class frmFilter
|
||||
Me.grpTagFilter.Controls.Add(Me.lblTags)
|
||||
Me.grpTagFilter.Controls.Add(Me.btnRemove)
|
||||
Me.grpTagFilter.Controls.Add(Me.btnAdd)
|
||||
Me.grpTagFilter.Controls.Add(Me.lstFilter)
|
||||
Me.grpTagFilter.Controls.Add(Me.lstTagFilter)
|
||||
Me.grpTagFilter.Controls.Add(Me.lstTags)
|
||||
Me.grpTagFilter.Location = New System.Drawing.Point(12, 213)
|
||||
Me.grpTagFilter.Location = New System.Drawing.Point(12, 236)
|
||||
Me.grpTagFilter.Name = "grpTagFilter"
|
||||
Me.grpTagFilter.Size = New System.Drawing.Size(385, 265)
|
||||
Me.grpTagFilter.Size = New System.Drawing.Size(385, 198)
|
||||
Me.grpTagFilter.TabIndex = 3
|
||||
Me.grpTagFilter.TabStop = False
|
||||
'
|
||||
@@ -90,7 +85,7 @@ Partial Class frmFilter
|
||||
'
|
||||
Me.grpTagOptions.Controls.Add(Me.optAll)
|
||||
Me.grpTagOptions.Controls.Add(Me.optAny)
|
||||
Me.grpTagOptions.Location = New System.Drawing.Point(6, 211)
|
||||
Me.grpTagOptions.Location = New System.Drawing.Point(6, 146)
|
||||
Me.grpTagOptions.Name = "grpTagOptions"
|
||||
Me.grpTagOptions.Size = New System.Drawing.Size(150, 46)
|
||||
Me.grpTagOptions.TabIndex = 6
|
||||
@@ -138,7 +133,7 @@ Partial Class frmFilter
|
||||
'
|
||||
'btnRemove
|
||||
'
|
||||
Me.btnRemove.Location = New System.Drawing.Point(162, 122)
|
||||
Me.btnRemove.Location = New System.Drawing.Point(162, 88)
|
||||
Me.btnRemove.Name = "btnRemove"
|
||||
Me.btnRemove.Size = New System.Drawing.Size(61, 23)
|
||||
Me.btnRemove.TabIndex = 3
|
||||
@@ -147,22 +142,22 @@ Partial Class frmFilter
|
||||
'
|
||||
'btnAdd
|
||||
'
|
||||
Me.btnAdd.Location = New System.Drawing.Point(162, 93)
|
||||
Me.btnAdd.Location = New System.Drawing.Point(162, 59)
|
||||
Me.btnAdd.Name = "btnAdd"
|
||||
Me.btnAdd.Size = New System.Drawing.Size(61, 23)
|
||||
Me.btnAdd.TabIndex = 2
|
||||
Me.btnAdd.Text = ">"
|
||||
Me.btnAdd.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lstFilter
|
||||
'lstTagFilter
|
||||
'
|
||||
Me.lstFilter.FormattingEnabled = True
|
||||
Me.lstFilter.Location = New System.Drawing.Point(229, 32)
|
||||
Me.lstFilter.Name = "lstFilter"
|
||||
Me.lstFilter.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended
|
||||
Me.lstFilter.Size = New System.Drawing.Size(150, 173)
|
||||
Me.lstFilter.Sorted = True
|
||||
Me.lstFilter.TabIndex = 5
|
||||
Me.lstTagFilter.FormattingEnabled = True
|
||||
Me.lstTagFilter.Location = New System.Drawing.Point(229, 32)
|
||||
Me.lstTagFilter.Name = "lstTagFilter"
|
||||
Me.lstTagFilter.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended
|
||||
Me.lstTagFilter.Size = New System.Drawing.Size(150, 108)
|
||||
Me.lstTagFilter.Sorted = True
|
||||
Me.lstTagFilter.TabIndex = 5
|
||||
'
|
||||
'lstTags
|
||||
'
|
||||
@@ -170,124 +165,270 @@ Partial Class frmFilter
|
||||
Me.lstTags.Location = New System.Drawing.Point(6, 32)
|
||||
Me.lstTags.Name = "lstTags"
|
||||
Me.lstTags.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended
|
||||
Me.lstTags.Size = New System.Drawing.Size(150, 173)
|
||||
Me.lstTags.Size = New System.Drawing.Size(150, 108)
|
||||
Me.lstTags.Sorted = True
|
||||
Me.lstTags.TabIndex = 1
|
||||
'
|
||||
'btnOK
|
||||
'
|
||||
Me.btnOK.Location = New System.Drawing.Point(322, 484)
|
||||
Me.btnOK.Location = New System.Drawing.Point(322, 526)
|
||||
Me.btnOK.Name = "btnOK"
|
||||
Me.btnOK.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnOK.TabIndex = 4
|
||||
Me.btnOK.TabIndex = 6
|
||||
Me.btnOK.Text = "&OK"
|
||||
Me.btnOK.UseVisualStyleBackColor = True
|
||||
'
|
||||
'grpGameFilter
|
||||
'
|
||||
Me.grpGameFilter.Controls.Add(Me.grpGameInfoOptions)
|
||||
Me.grpGameFilter.Controls.Add(Me.txtCompany)
|
||||
Me.grpGameFilter.Controls.Add(Me.lblCompany)
|
||||
Me.grpGameFilter.Controls.Add(Me.txtProcess)
|
||||
Me.grpGameFilter.Controls.Add(Me.lblProcess)
|
||||
Me.grpGameFilter.Controls.Add(Me.lblName)
|
||||
Me.grpGameFilter.Controls.Add(Me.txtName)
|
||||
Me.grpGameFilter.Controls.Add(Me.cboBoolFilter)
|
||||
Me.grpGameFilter.Controls.Add(Me.numFilter)
|
||||
Me.grpGameFilter.Controls.Add(Me.cboNumericOps)
|
||||
Me.grpGameFilter.Controls.Add(Me.lblCurrentFilters)
|
||||
Me.grpGameFilter.Controls.Add(Me.lblFilterData)
|
||||
Me.grpGameFilter.Controls.Add(Me.lblFields)
|
||||
Me.grpGameFilter.Controls.Add(Me.btnRemoveFilter)
|
||||
Me.grpGameFilter.Controls.Add(Me.lstFilter)
|
||||
Me.grpGameFilter.Controls.Add(Me.btnAddFilter)
|
||||
Me.grpGameFilter.Controls.Add(Me.cboFilterField)
|
||||
Me.grpGameFilter.Controls.Add(Me.grpFilterType)
|
||||
Me.grpGameFilter.Controls.Add(Me.txtStringFilter)
|
||||
Me.grpGameFilter.Location = New System.Drawing.Point(12, 35)
|
||||
Me.grpGameFilter.Name = "grpGameFilter"
|
||||
Me.grpGameFilter.Size = New System.Drawing.Size(385, 150)
|
||||
Me.grpGameFilter.Size = New System.Drawing.Size(385, 172)
|
||||
Me.grpGameFilter.TabIndex = 1
|
||||
Me.grpGameFilter.TabStop = False
|
||||
'
|
||||
'grpGameInfoOptions
|
||||
'cboBoolFilter
|
||||
'
|
||||
Me.grpGameInfoOptions.Controls.Add(Me.optOr)
|
||||
Me.grpGameInfoOptions.Controls.Add(Me.optAnd)
|
||||
Me.grpGameInfoOptions.Location = New System.Drawing.Point(14, 97)
|
||||
Me.grpGameInfoOptions.Name = "grpGameInfoOptions"
|
||||
Me.grpGameInfoOptions.Size = New System.Drawing.Size(106, 46)
|
||||
Me.grpGameInfoOptions.TabIndex = 6
|
||||
Me.grpGameInfoOptions.TabStop = False
|
||||
Me.grpGameInfoOptions.Text = "Options"
|
||||
Me.cboBoolFilter.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
||||
Me.cboBoolFilter.FormattingEnabled = True
|
||||
Me.cboBoolFilter.Location = New System.Drawing.Point(162, 36)
|
||||
Me.cboBoolFilter.Name = "cboBoolFilter"
|
||||
Me.cboBoolFilter.Size = New System.Drawing.Size(136, 21)
|
||||
Me.cboBoolFilter.TabIndex = 3
|
||||
'
|
||||
'numFilter
|
||||
'
|
||||
Me.numFilter.DecimalPlaces = 1
|
||||
Me.numFilter.Location = New System.Drawing.Point(233, 37)
|
||||
Me.numFilter.Maximum = New Decimal(New Integer() {1000000, 0, 0, 0})
|
||||
Me.numFilter.Name = "numFilter"
|
||||
Me.numFilter.Size = New System.Drawing.Size(65, 20)
|
||||
Me.numFilter.TabIndex = 4
|
||||
'
|
||||
'cboNumericOps
|
||||
'
|
||||
Me.cboNumericOps.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
||||
Me.cboNumericOps.FormattingEnabled = True
|
||||
Me.cboNumericOps.Location = New System.Drawing.Point(162, 36)
|
||||
Me.cboNumericOps.Name = "cboNumericOps"
|
||||
Me.cboNumericOps.Size = New System.Drawing.Size(65, 21)
|
||||
Me.cboNumericOps.TabIndex = 3
|
||||
'
|
||||
'lblCurrentFilters
|
||||
'
|
||||
Me.lblCurrentFilters.AutoSize = True
|
||||
Me.lblCurrentFilters.Location = New System.Drawing.Point(94, 65)
|
||||
Me.lblCurrentFilters.Name = "lblCurrentFilters"
|
||||
Me.lblCurrentFilters.Size = New System.Drawing.Size(71, 13)
|
||||
Me.lblCurrentFilters.TabIndex = 6
|
||||
Me.lblCurrentFilters.Text = "Current Filters"
|
||||
'
|
||||
'lblFilterData
|
||||
'
|
||||
Me.lblFilterData.AutoSize = True
|
||||
Me.lblFilterData.Location = New System.Drawing.Point(214, 20)
|
||||
Me.lblFilterData.Name = "lblFilterData"
|
||||
Me.lblFilterData.Size = New System.Drawing.Size(32, 13)
|
||||
Me.lblFilterData.TabIndex = 2
|
||||
Me.lblFilterData.Text = "Filter "
|
||||
'
|
||||
'lblFields
|
||||
'
|
||||
Me.lblFields.AutoSize = True
|
||||
Me.lblFields.Location = New System.Drawing.Point(41, 20)
|
||||
Me.lblFields.Name = "lblFields"
|
||||
Me.lblFields.Size = New System.Drawing.Size(80, 13)
|
||||
Me.lblFields.TabIndex = 0
|
||||
Me.lblFields.Text = "Available Fields"
|
||||
'
|
||||
'btnRemoveFilter
|
||||
'
|
||||
Me.btnRemoveFilter.Location = New System.Drawing.Point(259, 140)
|
||||
Me.btnRemoveFilter.Name = "btnRemoveFilter"
|
||||
Me.btnRemoveFilter.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnRemoveFilter.TabIndex = 9
|
||||
Me.btnRemoveFilter.Text = "Remove"
|
||||
Me.btnRemoveFilter.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lstFilter
|
||||
'
|
||||
Me.lstFilter.FormattingEnabled = True
|
||||
Me.lstFilter.Location = New System.Drawing.Point(6, 81)
|
||||
Me.lstFilter.Name = "lstFilter"
|
||||
Me.lstFilter.Size = New System.Drawing.Size(247, 82)
|
||||
Me.lstFilter.TabIndex = 7
|
||||
'
|
||||
'btnAddFilter
|
||||
'
|
||||
Me.btnAddFilter.Location = New System.Drawing.Point(304, 34)
|
||||
Me.btnAddFilter.Name = "btnAddFilter"
|
||||
Me.btnAddFilter.Size = New System.Drawing.Size(75, 23)
|
||||
Me.btnAddFilter.TabIndex = 5
|
||||
Me.btnAddFilter.Text = "Add"
|
||||
Me.btnAddFilter.UseVisualStyleBackColor = True
|
||||
'
|
||||
'cboFilterField
|
||||
'
|
||||
Me.cboFilterField.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
||||
Me.cboFilterField.FormattingEnabled = True
|
||||
Me.cboFilterField.Location = New System.Drawing.Point(6, 36)
|
||||
Me.cboFilterField.Name = "cboFilterField"
|
||||
Me.cboFilterField.Size = New System.Drawing.Size(150, 21)
|
||||
Me.cboFilterField.TabIndex = 1
|
||||
'
|
||||
'grpFilterType
|
||||
'
|
||||
Me.grpFilterType.Controls.Add(Me.optOr)
|
||||
Me.grpFilterType.Controls.Add(Me.optAnd)
|
||||
Me.grpFilterType.Location = New System.Drawing.Point(259, 81)
|
||||
Me.grpFilterType.Name = "grpFilterType"
|
||||
Me.grpFilterType.Size = New System.Drawing.Size(105, 46)
|
||||
Me.grpFilterType.TabIndex = 8
|
||||
Me.grpFilterType.TabStop = False
|
||||
Me.grpFilterType.Text = "Filter Type"
|
||||
'
|
||||
'optOr
|
||||
'
|
||||
Me.optOr.Location = New System.Drawing.Point(56, 19)
|
||||
Me.optOr.Checked = True
|
||||
Me.optOr.Location = New System.Drawing.Point(6, 19)
|
||||
Me.optOr.Name = "optOr"
|
||||
Me.optOr.Size = New System.Drawing.Size(36, 17)
|
||||
Me.optOr.TabIndex = 1
|
||||
Me.optOr.Size = New System.Drawing.Size(44, 17)
|
||||
Me.optOr.TabIndex = 0
|
||||
Me.optOr.TabStop = True
|
||||
Me.optOr.Text = "Or"
|
||||
Me.optOr.Text = "Any"
|
||||
Me.optOr.UseVisualStyleBackColor = True
|
||||
'
|
||||
'optAnd
|
||||
'
|
||||
Me.optAnd.Checked = True
|
||||
Me.optAnd.Location = New System.Drawing.Point(6, 19)
|
||||
Me.optAnd.Location = New System.Drawing.Point(56, 19)
|
||||
Me.optAnd.Name = "optAnd"
|
||||
Me.optAnd.Size = New System.Drawing.Size(44, 17)
|
||||
Me.optAnd.TabIndex = 0
|
||||
Me.optAnd.TabStop = True
|
||||
Me.optAnd.Text = "And"
|
||||
Me.optAnd.TabIndex = 1
|
||||
Me.optAnd.Text = "All"
|
||||
Me.optAnd.UseVisualStyleBackColor = True
|
||||
'
|
||||
'txtCompany
|
||||
'txtStringFilter
|
||||
'
|
||||
Me.txtCompany.Location = New System.Drawing.Point(70, 71)
|
||||
Me.txtCompany.Name = "txtCompany"
|
||||
Me.txtCompany.Size = New System.Drawing.Size(309, 20)
|
||||
Me.txtCompany.TabIndex = 5
|
||||
Me.txtStringFilter.Location = New System.Drawing.Point(162, 36)
|
||||
Me.txtStringFilter.Name = "txtStringFilter"
|
||||
Me.txtStringFilter.Size = New System.Drawing.Size(136, 20)
|
||||
Me.txtStringFilter.TabIndex = 3
|
||||
'
|
||||
'lblCompany
|
||||
'grpSorting
|
||||
'
|
||||
Me.lblCompany.AutoSize = True
|
||||
Me.lblCompany.Location = New System.Drawing.Point(11, 74)
|
||||
Me.lblCompany.Name = "lblCompany"
|
||||
Me.lblCompany.Size = New System.Drawing.Size(54, 13)
|
||||
Me.lblCompany.TabIndex = 4
|
||||
Me.lblCompany.Text = "Company:"
|
||||
Me.grpSorting.Controls.Add(Me.grpSortOptions)
|
||||
Me.grpSorting.Controls.Add(Me.lblSortFields)
|
||||
Me.grpSorting.Controls.Add(Me.cboSortField)
|
||||
Me.grpSorting.Location = New System.Drawing.Point(12, 440)
|
||||
Me.grpSorting.Name = "grpSorting"
|
||||
Me.grpSorting.Size = New System.Drawing.Size(385, 80)
|
||||
Me.grpSorting.TabIndex = 4
|
||||
Me.grpSorting.TabStop = False
|
||||
Me.grpSorting.Text = "Sorting"
|
||||
'
|
||||
'txtProcess
|
||||
'grpSortOptions
|
||||
'
|
||||
Me.txtProcess.Location = New System.Drawing.Point(70, 45)
|
||||
Me.txtProcess.Name = "txtProcess"
|
||||
Me.txtProcess.Size = New System.Drawing.Size(309, 20)
|
||||
Me.txtProcess.TabIndex = 3
|
||||
Me.grpSortOptions.Controls.Add(Me.optSortAsc)
|
||||
Me.grpSortOptions.Controls.Add(Me.optSortDesc)
|
||||
Me.grpSortOptions.Location = New System.Drawing.Point(162, 19)
|
||||
Me.grpSortOptions.Name = "grpSortOptions"
|
||||
Me.grpSortOptions.Size = New System.Drawing.Size(189, 43)
|
||||
Me.grpSortOptions.TabIndex = 3
|
||||
Me.grpSortOptions.TabStop = False
|
||||
Me.grpSortOptions.Text = "Sort Options"
|
||||
'
|
||||
'lblProcess
|
||||
'optSortAsc
|
||||
'
|
||||
Me.lblProcess.AutoSize = True
|
||||
Me.lblProcess.Location = New System.Drawing.Point(11, 48)
|
||||
Me.lblProcess.Name = "lblProcess"
|
||||
Me.lblProcess.Size = New System.Drawing.Size(48, 13)
|
||||
Me.lblProcess.TabIndex = 2
|
||||
Me.lblProcess.Text = "Process:"
|
||||
Me.optSortAsc.AutoSize = True
|
||||
Me.optSortAsc.Location = New System.Drawing.Point(6, 17)
|
||||
Me.optSortAsc.Name = "optSortAsc"
|
||||
Me.optSortAsc.Size = New System.Drawing.Size(75, 17)
|
||||
Me.optSortAsc.TabIndex = 0
|
||||
Me.optSortAsc.TabStop = True
|
||||
Me.optSortAsc.Text = "Ascending"
|
||||
Me.optSortAsc.UseVisualStyleBackColor = True
|
||||
'
|
||||
'lblName
|
||||
'optSortDesc
|
||||
'
|
||||
Me.lblName.AutoSize = True
|
||||
Me.lblName.Location = New System.Drawing.Point(11, 22)
|
||||
Me.lblName.Name = "lblName"
|
||||
Me.lblName.Size = New System.Drawing.Size(38, 13)
|
||||
Me.lblName.TabIndex = 0
|
||||
Me.lblName.Text = "Name:"
|
||||
Me.optSortDesc.AutoSize = True
|
||||
Me.optSortDesc.Location = New System.Drawing.Point(90, 17)
|
||||
Me.optSortDesc.Name = "optSortDesc"
|
||||
Me.optSortDesc.Size = New System.Drawing.Size(82, 17)
|
||||
Me.optSortDesc.TabIndex = 1
|
||||
Me.optSortDesc.TabStop = True
|
||||
Me.optSortDesc.Text = "Descending"
|
||||
Me.optSortDesc.UseVisualStyleBackColor = True
|
||||
'
|
||||
'txtName
|
||||
'lblSortFields
|
||||
'
|
||||
Me.txtName.Location = New System.Drawing.Point(70, 19)
|
||||
Me.txtName.Name = "txtName"
|
||||
Me.txtName.Size = New System.Drawing.Size(309, 20)
|
||||
Me.txtName.TabIndex = 1
|
||||
Me.lblSortFields.AutoSize = True
|
||||
Me.lblSortFields.Location = New System.Drawing.Point(41, 19)
|
||||
Me.lblSortFields.Name = "lblSortFields"
|
||||
Me.lblSortFields.Size = New System.Drawing.Size(80, 13)
|
||||
Me.lblSortFields.TabIndex = 1
|
||||
Me.lblSortFields.Text = "Available Fields"
|
||||
'
|
||||
'cboSortField
|
||||
'
|
||||
Me.cboSortField.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
|
||||
Me.cboSortField.FormattingEnabled = True
|
||||
Me.cboSortField.Location = New System.Drawing.Point(6, 35)
|
||||
Me.cboSortField.Name = "cboSortField"
|
||||
Me.cboSortField.Size = New System.Drawing.Size(150, 21)
|
||||
Me.cboSortField.TabIndex = 2
|
||||
'
|
||||
'chkTag
|
||||
'
|
||||
Me.chkTag.AutoSize = True
|
||||
Me.chkTag.Location = New System.Drawing.Point(12, 213)
|
||||
Me.chkTag.Name = "chkTag"
|
||||
Me.chkTag.Size = New System.Drawing.Size(45, 17)
|
||||
Me.chkTag.TabIndex = 2
|
||||
Me.chkTag.Text = "Tag"
|
||||
Me.chkTag.UseVisualStyleBackColor = True
|
||||
'
|
||||
'chkGameInfo
|
||||
'
|
||||
Me.chkGameInfo.AutoSize = True
|
||||
Me.chkGameInfo.Location = New System.Drawing.Point(12, 12)
|
||||
Me.chkGameInfo.Name = "chkGameInfo"
|
||||
Me.chkGameInfo.Size = New System.Drawing.Size(109, 17)
|
||||
Me.chkGameInfo.TabIndex = 0
|
||||
Me.chkGameInfo.Text = "Game Information"
|
||||
Me.chkGameInfo.UseVisualStyleBackColor = True
|
||||
'
|
||||
'Label1
|
||||
'
|
||||
Me.Label1.AutoSize = True
|
||||
Me.Label1.Location = New System.Drawing.Point(12, 531)
|
||||
Me.Label1.Name = "Label1"
|
||||
Me.Label1.Size = New System.Drawing.Size(249, 13)
|
||||
Me.Label1.TabIndex = 5
|
||||
Me.Label1.Text = "* Indicates a field that may give unexpected results."
|
||||
'
|
||||
'frmFilter
|
||||
'
|
||||
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
|
||||
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
|
||||
Me.ClientSize = New System.Drawing.Size(409, 516)
|
||||
Me.ClientSize = New System.Drawing.Size(409, 561)
|
||||
Me.Controls.Add(Me.Label1)
|
||||
Me.Controls.Add(Me.grpSorting)
|
||||
Me.Controls.Add(Me.chkTag)
|
||||
Me.Controls.Add(Me.grpGameFilter)
|
||||
Me.Controls.Add(Me.chkGameInfo)
|
||||
Me.Controls.Add(Me.grpTagFilter)
|
||||
Me.Controls.Add(Me.btnOK)
|
||||
Me.Controls.Add(Me.optTag)
|
||||
Me.Controls.Add(Me.optGameInfo)
|
||||
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
|
||||
Me.MaximizeBox = False
|
||||
Me.MinimizeBox = False
|
||||
@@ -300,13 +441,16 @@ Partial Class frmFilter
|
||||
Me.grpTagOptions.ResumeLayout(False)
|
||||
Me.grpGameFilter.ResumeLayout(False)
|
||||
Me.grpGameFilter.PerformLayout()
|
||||
Me.grpGameInfoOptions.ResumeLayout(False)
|
||||
CType(Me.numFilter, System.ComponentModel.ISupportInitialize).EndInit()
|
||||
Me.grpFilterType.ResumeLayout(False)
|
||||
Me.grpSorting.ResumeLayout(False)
|
||||
Me.grpSorting.PerformLayout()
|
||||
Me.grpSortOptions.ResumeLayout(False)
|
||||
Me.grpSortOptions.PerformLayout()
|
||||
Me.ResumeLayout(False)
|
||||
Me.PerformLayout()
|
||||
|
||||
End Sub
|
||||
Friend WithEvents optGameInfo As System.Windows.Forms.RadioButton
|
||||
Friend WithEvents optTag As System.Windows.Forms.RadioButton
|
||||
Friend WithEvents grpTagFilter As System.Windows.Forms.GroupBox
|
||||
Friend WithEvents grpTagOptions As System.Windows.Forms.GroupBox
|
||||
Friend WithEvents optAll As System.Windows.Forms.RadioButton
|
||||
@@ -315,17 +459,31 @@ Partial Class frmFilter
|
||||
Friend WithEvents lblTags As System.Windows.Forms.Label
|
||||
Friend WithEvents btnRemove As System.Windows.Forms.Button
|
||||
Friend WithEvents btnAdd As System.Windows.Forms.Button
|
||||
Friend WithEvents lstFilter As System.Windows.Forms.ListBox
|
||||
Friend WithEvents lstTagFilter As System.Windows.Forms.ListBox
|
||||
Friend WithEvents lstTags As System.Windows.Forms.ListBox
|
||||
Friend WithEvents btnOK As System.Windows.Forms.Button
|
||||
Friend WithEvents grpGameFilter As System.Windows.Forms.GroupBox
|
||||
Friend WithEvents txtProcess As System.Windows.Forms.TextBox
|
||||
Friend WithEvents lblProcess As System.Windows.Forms.Label
|
||||
Friend WithEvents lblName As System.Windows.Forms.Label
|
||||
Friend WithEvents txtName As System.Windows.Forms.TextBox
|
||||
Friend WithEvents txtCompany As System.Windows.Forms.TextBox
|
||||
Friend WithEvents lblCompany As System.Windows.Forms.Label
|
||||
Friend WithEvents grpGameInfoOptions As System.Windows.Forms.GroupBox
|
||||
Friend WithEvents txtStringFilter As System.Windows.Forms.TextBox
|
||||
Friend WithEvents grpFilterType As System.Windows.Forms.GroupBox
|
||||
Friend WithEvents optOr As System.Windows.Forms.RadioButton
|
||||
Friend WithEvents optAnd As System.Windows.Forms.RadioButton
|
||||
Friend WithEvents grpSorting As GroupBox
|
||||
Friend WithEvents optSortDesc As RadioButton
|
||||
Friend WithEvents optSortAsc As RadioButton
|
||||
Friend WithEvents cboSortField As ComboBox
|
||||
Friend WithEvents chkTag As CheckBox
|
||||
Friend WithEvents chkGameInfo As CheckBox
|
||||
Friend WithEvents cboFilterField As ComboBox
|
||||
Friend WithEvents lstFilter As ListBox
|
||||
Friend WithEvents btnAddFilter As Button
|
||||
Friend WithEvents btnRemoveFilter As Button
|
||||
Friend WithEvents lblCurrentFilters As Label
|
||||
Friend WithEvents lblFilterData As Label
|
||||
Friend WithEvents lblFields As Label
|
||||
Friend WithEvents cboNumericOps As ComboBox
|
||||
Friend WithEvents numFilter As NumericUpDown
|
||||
Friend WithEvents cboBoolFilter As ComboBox
|
||||
Friend WithEvents lblSortFields As Label
|
||||
Friend WithEvents Label1 As Label
|
||||
Friend WithEvents grpSortOptions As GroupBox
|
||||
End Class
|
||||
|
||||
+455
-52
@@ -3,36 +3,74 @@
|
||||
Public Class frmFilter
|
||||
|
||||
Public Enum eFilterType As Integer
|
||||
NoFilter = 1
|
||||
BaseFilter = 1
|
||||
AnyTag = 2
|
||||
AllTags = 3
|
||||
NoTags = 4
|
||||
FieldAnd = 5
|
||||
FieldOr = 6
|
||||
End Enum
|
||||
|
||||
Dim oTagFilters As New List(Of clsTag)
|
||||
Dim hshStringFilters As New Hashtable
|
||||
Dim eCurrentFilterType As eFilterType = eFilterType.AnyTag
|
||||
Dim oGameFilters As New List(Of clsGameFilter)
|
||||
Dim oValidFields As New List(Of clsGameFilterField)
|
||||
Dim eCurrentFilterType As eFilterType = eFilterType.BaseFilter
|
||||
Dim bAndOperator As Boolean = False
|
||||
Dim bSortAsc As Boolean = True
|
||||
Dim sSortField As String = "Name"
|
||||
Dim hshTags As New Hashtable
|
||||
Dim bShutdown As Boolean = False
|
||||
|
||||
Public ReadOnly Property StringFilters As Hashtable
|
||||
Public Property GameFilters As List(Of clsGameFilter)
|
||||
Get
|
||||
Return hshStringFilters
|
||||
Return oGameFilters
|
||||
End Get
|
||||
Set(value As List(Of clsGameFilter))
|
||||
oGameFilters = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property TagFilters As List(Of clsTag)
|
||||
Public Property TagFilters As List(Of clsTag)
|
||||
Get
|
||||
Return oTagFilters
|
||||
End Get
|
||||
Set(value As List(Of clsTag))
|
||||
oTagFilters = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public ReadOnly Property FilterType As eFilterType
|
||||
Public Property FilterType As eFilterType
|
||||
Get
|
||||
Return eCurrentFilterType
|
||||
End Get
|
||||
Set(value As eFilterType)
|
||||
eCurrentFilterType = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property AndOperator As Boolean
|
||||
Get
|
||||
Return bAndOperator
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
bAndOperator = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property SortAsc As Boolean
|
||||
Get
|
||||
Return bSortAsc
|
||||
End Get
|
||||
Set(value As Boolean)
|
||||
bSortAsc = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Public Property SortField As String
|
||||
Get
|
||||
Return sSortField
|
||||
End Get
|
||||
Set(value As String)
|
||||
sSortField = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private Sub AddTag()
|
||||
@@ -41,7 +79,7 @@ Public Class frmFilter
|
||||
|
||||
If lstTags.SelectedItems.Count = 1 Then
|
||||
oData = lstTags.SelectedItems(0)
|
||||
lstFilter.Items.Add(oData)
|
||||
lstTagFilter.Items.Add(oData)
|
||||
lstTags.Items.Remove(oData)
|
||||
ElseIf lstTags.SelectedItems.Count > 1 Then
|
||||
oTags = New List(Of KeyValuePair(Of String, String))
|
||||
@@ -51,7 +89,7 @@ Public Class frmFilter
|
||||
Next
|
||||
|
||||
For Each kp As KeyValuePair(Of String, String) In oTags
|
||||
lstFilter.Items.Add(kp)
|
||||
lstTagFilter.Items.Add(kp)
|
||||
lstTags.Items.Remove(kp)
|
||||
Next
|
||||
End If
|
||||
@@ -62,26 +100,173 @@ Public Class frmFilter
|
||||
Dim oData As KeyValuePair(Of String, String)
|
||||
Dim oTags As List(Of KeyValuePair(Of String, String))
|
||||
|
||||
If lstFilter.SelectedItems.Count = 1 Then
|
||||
oData = lstFilter.SelectedItems(0)
|
||||
lstFilter.Items.Remove(oData)
|
||||
If lstTagFilter.SelectedItems.Count = 1 Then
|
||||
oData = lstTagFilter.SelectedItems(0)
|
||||
lstTagFilter.Items.Remove(oData)
|
||||
lstTags.Items.Add(oData)
|
||||
ElseIf lstFilter.SelectedItems.Count > 1 Then
|
||||
ElseIf lstTagFilter.SelectedItems.Count > 1 Then
|
||||
oTags = New List(Of KeyValuePair(Of String, String))
|
||||
|
||||
For Each oData In lstFilter.SelectedItems
|
||||
For Each oData In lstTagFilter.SelectedItems
|
||||
oTags.Add(oData)
|
||||
Next
|
||||
|
||||
For Each kp As KeyValuePair(Of String, String) In oTags
|
||||
lstFilter.Items.Remove(kp)
|
||||
lstTagFilter.Items.Remove(kp)
|
||||
lstTags.Items.Add(kp)
|
||||
Next
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub LoadData()
|
||||
Private Sub LoadFilterFields()
|
||||
Dim oField As clsGameFilterField
|
||||
|
||||
'Name
|
||||
oField = New clsGameFilterField
|
||||
oField.FieldName = "Name"
|
||||
oField.FriendlyFieldName = frmFilter_FieldName
|
||||
oField.Type = clsGameFilterField.eDataType.fString
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidSort
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidFilter
|
||||
oValidFields.Add(oField)
|
||||
|
||||
'Process
|
||||
oField = New clsGameFilterField
|
||||
oField.FieldName = "Process"
|
||||
oField.FriendlyFieldName = frmFilter_FieldProcess
|
||||
oField.Type = clsGameFilterField.eDataType.fString
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidSort
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidFilter
|
||||
oValidFields.Add(oField)
|
||||
|
||||
'Parameter
|
||||
oField = New clsGameFilterField
|
||||
oField.FieldName = "Parameter"
|
||||
oField.FriendlyFieldName = frmFilter_FieldParameter
|
||||
oField.Type = clsGameFilterField.eDataType.fString
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidSort
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidFilter
|
||||
oValidFields.Add(oField)
|
||||
|
||||
'Save Path
|
||||
oField = New clsGameFilterField
|
||||
oField.FieldName = "Path"
|
||||
oField.FriendlyFieldName = frmFilter_FieldPath
|
||||
oField.Type = clsGameFilterField.eDataType.fString
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidFilter
|
||||
oValidFields.Add(oField)
|
||||
|
||||
'Include Items
|
||||
oField = New clsGameFilterField
|
||||
oField.FieldName = "FileType"
|
||||
oField.FriendlyFieldName = frmFilter_FieldFileType
|
||||
oField.Type = clsGameFilterField.eDataType.fString
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidFilter
|
||||
oValidFields.Add(oField)
|
||||
|
||||
'Exclude Items
|
||||
oField = New clsGameFilterField
|
||||
oField.FieldName = "ExcludeList"
|
||||
oField.FriendlyFieldName = frmFilter_FieldExcludeList
|
||||
oField.Type = clsGameFilterField.eDataType.fString
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidFilter
|
||||
oValidFields.Add(oField)
|
||||
|
||||
'Save Entire Folder
|
||||
oField = New clsGameFilterField
|
||||
oField.FieldName = "FolderSave"
|
||||
oField.FriendlyFieldName = frmFilter_FieldFolderSave
|
||||
oField.Type = clsGameFilterField.eDataType.fBool
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidFilter
|
||||
oValidFields.Add(oField)
|
||||
|
||||
'Delete Folder on Restore
|
||||
oField = New clsGameFilterField
|
||||
oField.FieldName = "CleanFolder"
|
||||
oField.FriendlyFieldName = frmFilter_FieldCleanFolder
|
||||
oField.Type = clsGameFilterField.eDataType.fBool
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidFilter
|
||||
oValidFields.Add(oField)
|
||||
|
||||
'Save Multiple Backups
|
||||
oField = New clsGameFilterField
|
||||
oField.FieldName = "TimeStamp"
|
||||
oField.FriendlyFieldName = frmFilter_FieldTimeStamp
|
||||
oField.Type = clsGameFilterField.eDataType.fBool
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidFilter
|
||||
oValidFields.Add(oField)
|
||||
|
||||
'Backup Limit
|
||||
oField = New clsGameFilterField
|
||||
oField.FieldName = "BackupLimit"
|
||||
oField.FriendlyFieldName = frmFilter_FieldBackupLimit
|
||||
oField.Type = clsGameFilterField.eDataType.fNumeric
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidFilter
|
||||
oValidFields.Add(oField)
|
||||
|
||||
'Game Path
|
||||
oField = New clsGameFilterField
|
||||
oField.FieldName = "ProcessPath"
|
||||
oField.FriendlyFieldName = frmFilter_FieldProcessPath
|
||||
oField.Type = clsGameFilterField.eDataType.fString
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidFilter
|
||||
oValidFields.Add(oField)
|
||||
|
||||
'Company
|
||||
oField = New clsGameFilterField
|
||||
oField.FieldName = "Company"
|
||||
oField.FriendlyFieldName = frmFilter_FieldCompany
|
||||
oField.Type = clsGameFilterField.eDataType.fString
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidSort
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidFilter
|
||||
oValidFields.Add(oField)
|
||||
|
||||
'Version
|
||||
oField = New clsGameFilterField
|
||||
oField.FieldName = "Version"
|
||||
oField.FriendlyFieldName = frmFilter_FieldVersion
|
||||
oField.Type = clsGameFilterField.eDataType.fString
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidSort
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidFilter
|
||||
oValidFields.Add(oField)
|
||||
|
||||
'Icon
|
||||
oField = New clsGameFilterField
|
||||
oField.FieldName = "Icon"
|
||||
oField.FriendlyFieldName = frmFilter_FieldIcon
|
||||
oField.Type = clsGameFilterField.eDataType.fString
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidFilter
|
||||
oValidFields.Add(oField)
|
||||
|
||||
'Hours
|
||||
oField = New clsGameFilterField
|
||||
oField.FieldName = "Hours"
|
||||
oField.FriendlyFieldName = frmFilter_FieldHours
|
||||
oField.Type = clsGameFilterField.eDataType.fNumeric
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidSort
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidFilter
|
||||
oValidFields.Add(oField)
|
||||
|
||||
'Enabled
|
||||
oField = New clsGameFilterField
|
||||
oField.FieldName = "Enabled"
|
||||
oField.FriendlyFieldName = frmFilter_FieldEnabled
|
||||
oField.Type = clsGameFilterField.eDataType.fBool
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidFilter
|
||||
oValidFields.Add(oField)
|
||||
|
||||
'Monitor Only
|
||||
oField = New clsGameFilterField
|
||||
oField.FieldName = "MonitorOnly"
|
||||
oField.FriendlyFieldName = frmFilter_FieldMonitorOnly
|
||||
oField.Type = clsGameFilterField.eDataType.fBool
|
||||
oField.Status = clsGameFilterField.eFieldStatus.ValidFilter
|
||||
oValidFields.Add(oField)
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub LoadTagData()
|
||||
Dim oTag As clsTag
|
||||
Dim oData As KeyValuePair(Of String, String)
|
||||
|
||||
@@ -90,12 +275,13 @@ Public Class frmFilter
|
||||
|
||||
'Handle Lists
|
||||
lstTags.Items.Clear()
|
||||
lstFilter.Items.Clear()
|
||||
lstTagFilter.Items.Clear()
|
||||
|
||||
lstTags.ValueMember = "Key"
|
||||
lstTags.DisplayMember = "Value"
|
||||
lstFilter.ValueMember = "Key"
|
||||
lstFilter.DisplayMember = "Value"
|
||||
|
||||
lstTagFilter.ValueMember = "Key"
|
||||
lstTagFilter.DisplayMember = "Value"
|
||||
|
||||
For Each de As DictionaryEntry In hshTags
|
||||
oTag = DirectCast(de.Value, clsTag)
|
||||
@@ -105,32 +291,140 @@ Public Class frmFilter
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub LoadExistingFilters()
|
||||
Dim sFilter As String = String.Empty
|
||||
Dim oListTag As KeyValuePair(Of String, String)
|
||||
|
||||
'Game Filters
|
||||
If bAndOperator Then
|
||||
optAnd.Checked = True
|
||||
Else
|
||||
optOr.Checked = True
|
||||
End If
|
||||
|
||||
If oGameFilters.Count > 0 Then
|
||||
chkGameInfo.Checked = True
|
||||
For Each oFilter As clsGameFilter In oGameFilters
|
||||
Select Case oFilter.Field.Type
|
||||
Case clsGameFilterField.eDataType.fString
|
||||
sFilter = oFilter.Field.FriendlyFieldName & " " & frmFilter_lstFilterContains & " """ & oFilter.Data & """"
|
||||
Case clsGameFilterField.eDataType.fNumeric
|
||||
sFilter = oFilter.Field.FriendlyFieldName & " " & oFilter.NumericOperatorAsString & " " & oFilter.Data
|
||||
Case clsGameFilterField.eDataType.fBool
|
||||
sFilter = oFilter.Field.FriendlyFieldName & " = " & oFilter.Data
|
||||
End Select
|
||||
|
||||
lstFilter.Items.Add(New KeyValuePair(Of clsGameFilter, String)(oFilter, sFilter))
|
||||
Next
|
||||
End If
|
||||
|
||||
'Tag Filters
|
||||
If oTagFilters.Count > 0 Then
|
||||
chkTag.Checked = True
|
||||
For Each oTag As clsTag In oTagFilters
|
||||
oListTag = New KeyValuePair(Of String, String)(oTag.ID, oTag.Name)
|
||||
lstTagFilter.Items.Add(oListTag)
|
||||
lstTags.Items.Remove(oListTag)
|
||||
Next
|
||||
|
||||
If eCurrentFilterType = eFilterType.AllTags Then
|
||||
optAll.Checked = True
|
||||
Else
|
||||
optAny.Checked = True
|
||||
End If
|
||||
End If
|
||||
|
||||
'Sorting
|
||||
cboSortField.SelectedValue = sSortField
|
||||
If bSortAsc Then
|
||||
optSortAsc.Checked = True
|
||||
Else
|
||||
optSortDesc.Checked = True
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub ChangeFilterMode()
|
||||
Dim oFilterType As clsGameFilterField.eDataType = DirectCast(cboFilterField.SelectedValue, clsGameFilterField).Type
|
||||
|
||||
'Reset
|
||||
cboNumericOps.SelectedIndex = 0
|
||||
cboBoolFilter.SelectedIndex = 0
|
||||
numFilter.Value = 0
|
||||
txtStringFilter.Text = String.Empty
|
||||
|
||||
'Reset Visibilty
|
||||
cboBoolFilter.Visible = False
|
||||
cboNumericOps.Visible = False
|
||||
numFilter.Visible = False
|
||||
txtStringFilter.Visible = False
|
||||
|
||||
'Set Visiblity
|
||||
Select Case oFilterType
|
||||
Case clsGameFilterField.eDataType.fString
|
||||
txtStringFilter.Visible = True
|
||||
Case clsGameFilterField.eDataType.fNumeric
|
||||
cboNumericOps.Visible = True
|
||||
numFilter.Visible = True
|
||||
txtStringFilter.Visible = False
|
||||
Case clsGameFilterField.eDataType.fBool
|
||||
cboBoolFilter.Visible = True
|
||||
End Select
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub AddFilter()
|
||||
Dim oFilter As New clsGameFilter
|
||||
Dim sFilter As String = String.Empty
|
||||
|
||||
'Build Filter
|
||||
oFilter.ID = Guid.NewGuid.ToString.Split("-")(0)
|
||||
oFilter.Field = cboFilterField.SelectedValue
|
||||
|
||||
Select Case oFilter.Field.Type
|
||||
Case clsGameFilterField.eDataType.fString
|
||||
oFilter.Data = txtStringFilter.Text
|
||||
sFilter = oFilter.Field.FriendlyFieldName & " " & frmFilter_lstFilterContains & " """ & oFilter.Data & """"
|
||||
Case clsGameFilterField.eDataType.fNumeric
|
||||
oFilter.Data = numFilter.Value
|
||||
oFilter.NumericOperator = DirectCast(cboNumericOps.SelectedValue, clsGameFilter.eNumericOperators)
|
||||
sFilter = oFilter.Field.FriendlyFieldName & " " & oFilter.NumericOperatorAsString & " " & oFilter.Data
|
||||
Case clsGameFilterField.eDataType.fBool
|
||||
oFilter.Data = cboBoolFilter.SelectedValue
|
||||
sFilter = oFilter.Field.FriendlyFieldName & " = " & oFilter.Data
|
||||
End Select
|
||||
|
||||
oGameFilters.Add(oFilter)
|
||||
lstFilter.Items.Add(New KeyValuePair(Of clsGameFilter, String)(oFilter, sFilter))
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub RemoveFilter()
|
||||
Dim oFilter As Object
|
||||
|
||||
If lstFilter.SelectedIndex <> -1 Then
|
||||
oFilter = lstFilter.SelectedItem
|
||||
oGameFilters.Remove(DirectCast(oFilter, KeyValuePair(Of clsGameFilter, String)).Key)
|
||||
lstFilter.Items.Remove(oFilter)
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub GetFilters()
|
||||
Dim oData As KeyValuePair(Of String, String)
|
||||
Dim oTag As clsTag
|
||||
|
||||
|
||||
If optGameInfo.Checked Then
|
||||
'Set Filter Type
|
||||
If optAnd.Checked Then
|
||||
eCurrentFilterType = eFilterType.FieldAnd
|
||||
Else
|
||||
eCurrentFilterType = eFilterType.FieldOr
|
||||
End If
|
||||
If chkGameInfo.Checked Then
|
||||
'Set Filter Type(s)
|
||||
eCurrentFilterType = eFilterType.BaseFilter
|
||||
bAndOperator = optAnd.Checked
|
||||
End If
|
||||
|
||||
'Set String Filter
|
||||
If txtName.Text <> String.Empty Then
|
||||
hshStringFilters.Add("Name", txtName.Text)
|
||||
End If
|
||||
If txtProcess.Text <> String.Empty Then
|
||||
hshStringFilters.Add("Process", txtProcess.Text)
|
||||
End If
|
||||
If txtCompany.Text <> String.Empty Then
|
||||
hshStringFilters.Add("Company", txtCompany.Text)
|
||||
End If
|
||||
Else
|
||||
If chkTag.Checked Then
|
||||
'Set Tags
|
||||
For Each oData In lstFilter.Items
|
||||
TagFilters.Clear()
|
||||
For Each oData In lstTagFilter.Items
|
||||
oTag = DirectCast(hshTags(oData.Value), clsTag)
|
||||
TagFilters.Add(oTag)
|
||||
Next
|
||||
@@ -145,6 +439,72 @@ Public Class frmFilter
|
||||
End If
|
||||
End If
|
||||
|
||||
'Sorting
|
||||
If optSortAsc.Checked Then
|
||||
bSortAsc = True
|
||||
Else
|
||||
bSortAsc = False
|
||||
End If
|
||||
|
||||
sSortField = cboSortField.SelectedValue
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub LoadCombos()
|
||||
Dim oFilterFields As New List(Of KeyValuePair(Of clsGameFilterField, String))
|
||||
Dim oSortFields As New List(Of KeyValuePair(Of String, String))
|
||||
Dim oNumericOperators As New List(Of KeyValuePair(Of clsGameFilter.eNumericOperators, String))
|
||||
Dim oBoolOperators As New List(Of KeyValuePair(Of Boolean, String))
|
||||
|
||||
'cboBoolFilter
|
||||
cboBoolFilter.ValueMember = "Key"
|
||||
cboBoolFilter.DisplayMember = "Value"
|
||||
|
||||
oBoolOperators.Add(New KeyValuePair(Of Boolean, String)(True, frmFilter_cboBoolFilterEnabled))
|
||||
oBoolOperators.Add(New KeyValuePair(Of Boolean, String)(False, frmFilter_cboBoolFilterDisabled))
|
||||
|
||||
cboBoolFilter.DataSource = oBoolOperators
|
||||
|
||||
'cboNumericOps
|
||||
cboNumericOps.ValueMember = "Key"
|
||||
cboNumericOps.DisplayMember = "Value"
|
||||
|
||||
oNumericOperators.Add(New KeyValuePair(Of clsGameFilter.eNumericOperators, String)(clsGameFilter.eNumericOperators.Equals, "="))
|
||||
oNumericOperators.Add(New KeyValuePair(Of clsGameFilter.eNumericOperators, String)(clsGameFilter.eNumericOperators.Greater, ">"))
|
||||
oNumericOperators.Add(New KeyValuePair(Of clsGameFilter.eNumericOperators, String)(clsGameFilter.eNumericOperators.Lesser, "<"))
|
||||
oNumericOperators.Add(New KeyValuePair(Of clsGameFilter.eNumericOperators, String)(clsGameFilter.eNumericOperators.GreaterEquals, ">="))
|
||||
oNumericOperators.Add(New KeyValuePair(Of clsGameFilter.eNumericOperators, String)(clsGameFilter.eNumericOperators.LesserEquals, "<="))
|
||||
|
||||
cboNumericOps.DataSource = oNumericOperators
|
||||
|
||||
'cboFilterField
|
||||
cboFilterField.ValueMember = "Key"
|
||||
cboFilterField.DisplayMember = "Value"
|
||||
|
||||
For Each oField As clsGameFilterField In oValidFields
|
||||
If oField.CheckStatus(clsGameFilterField.eFieldStatus.ValidFilter) Then
|
||||
oFilterFields.Add(New KeyValuePair(Of clsGameFilterField, String)(oField, oField.FriendlyFieldName))
|
||||
End If
|
||||
Next
|
||||
|
||||
cboFilterField.DataSource = oFilterFields
|
||||
|
||||
'cboSortField
|
||||
cboSortField.ValueMember = "Key"
|
||||
cboSortField.DisplayMember = "Value"
|
||||
|
||||
For Each oField As clsGameFilterField In oValidFields
|
||||
If oField.CheckStatus(clsGameFilterField.eFieldStatus.ValidSort) Then
|
||||
oSortFields.Add(New KeyValuePair(Of String, String)(oField.FieldName, oField.FriendlyFieldName))
|
||||
End If
|
||||
Next
|
||||
|
||||
cboSortField.DataSource = oSortFields
|
||||
|
||||
'Select Defaults
|
||||
cboNumericOps.SelectedIndex = 0
|
||||
cboFilterField.SelectedIndex = 0
|
||||
cboSortField.SelectedIndex = 0
|
||||
End Sub
|
||||
|
||||
Private Sub SetForm()
|
||||
@@ -154,10 +514,7 @@ Public Class frmFilter
|
||||
'Set Form Text
|
||||
optOr.Text = frmFilter_optOr
|
||||
optAnd.Text = frmFilter_optAnd
|
||||
lblCompany.Text = frmFilter_lblCompany
|
||||
lblProcess.Text = frmFilter_lblProcess
|
||||
lblName.Text = frmFilter_lblName
|
||||
grpGameInfoOptions.Text = frmFilter_grpGameInfoOptions
|
||||
grpFilterType.Text = frmFilter_grpFilterType
|
||||
optAll.Text = frmFilter_optAll
|
||||
optAny.Text = frmFilter_optAny
|
||||
lblGameTags.Text = frmFilter_lblGameTags
|
||||
@@ -166,14 +523,36 @@ Public Class frmFilter
|
||||
btnAdd.Text = frmFilter_btnAdd
|
||||
btnOK.Text = frmFilter_btnOK
|
||||
grpTagOptions.Text = frmFilter_grpTagOptions
|
||||
optTag.Text = frmFilter_optTag
|
||||
optGameInfo.Text = frmFilter_optGameInfo
|
||||
chkTag.Text = frmFilter_chkTag
|
||||
chkGameInfo.Text = frmFilter_chkGameInfo
|
||||
grpSorting.Text = frmFilter_grpSorting
|
||||
lblSortFields.Text = frmFilter_lblSortsFields
|
||||
optSortAsc.Text = frmFilter_optSortAsc
|
||||
optSortDesc.Text = frmFilter_optSortDesc
|
||||
btnAddFilter.Text = frmFilter_btnAddFilter
|
||||
btnRemoveFilter.Text = frmFilter_btnRemoveFilter
|
||||
lblCurrentFilters.Text = frmFilter_lblCurrentFilters
|
||||
lblFields.Text = frmFilter_lblFields
|
||||
lblFilterData.Text = frmFilter_lblFilterData
|
||||
grpSortOptions.Text = frmFilter_grpSortOptions
|
||||
|
||||
'Defaults
|
||||
optOr.Checked = True
|
||||
optSortAsc.Checked = True
|
||||
grpGameFilter.Enabled = False
|
||||
grpTagFilter.Enabled = False
|
||||
|
||||
'Init Game Filter
|
||||
lstFilter.ValueMember = "Key"
|
||||
lstFilter.DisplayMember = "Value"
|
||||
End Sub
|
||||
|
||||
Private Sub frmGameTags_Load(sender As Object, e As EventArgs) Handles MyBase.Load
|
||||
SetForm()
|
||||
optGameInfo.Checked = True
|
||||
LoadData()
|
||||
LoadFilterFields()
|
||||
LoadCombos()
|
||||
LoadTagData()
|
||||
LoadExistingFilters()
|
||||
End Sub
|
||||
|
||||
Private Sub btnOK_Click(sender As Object, e As EventArgs) Handles btnOK.Click
|
||||
@@ -196,13 +575,37 @@ Public Class frmFilter
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub optGameInfo_Click(sender As Object, e As EventArgs) Handles optGameInfo.Click, optTag.Click
|
||||
If optGameInfo.Checked = True Then
|
||||
Private Sub chkGameInfo_CheckedChanged(sender As Object, e As EventArgs) Handles chkGameInfo.CheckedChanged
|
||||
If chkGameInfo.Checked Then
|
||||
grpGameFilter.Enabled = True
|
||||
grpTagFilter.Enabled = False
|
||||
Else
|
||||
optOr.Checked = True
|
||||
grpGameFilter.Enabled = False
|
||||
grpTagFilter.Enabled = True
|
||||
oGameFilters.Clear()
|
||||
lstFilter.Items.Clear()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub chkTag_CheckedChanged(sender As Object, e As EventArgs) Handles chkTag.CheckedChanged
|
||||
If chkTag.Checked Then
|
||||
grpTagFilter.Enabled = True
|
||||
Else
|
||||
grpTagFilter.Enabled = False
|
||||
oTagFilters.Clear()
|
||||
LoadTagData()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub btnAddFilter_Click(sender As Object, e As EventArgs) Handles btnAddFilter.Click
|
||||
AddFilter()
|
||||
End Sub
|
||||
|
||||
Private Sub btnRemoveFilter_Click(sender As Object, e As EventArgs) Handles btnRemoveFilter.Click
|
||||
RemoveFilter()
|
||||
End Sub
|
||||
|
||||
Private Sub cboFilterField_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboFilterField.SelectedIndexChanged
|
||||
ChangeFilterMode()
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
+76
-38
@@ -1,4 +1,5 @@
|
||||
Imports GBM.My.Resources
|
||||
Imports System.Collections.Specialized
|
||||
Imports System.IO
|
||||
|
||||
Public Class frmGameManager
|
||||
@@ -13,14 +14,17 @@ Public Class frmGameManager
|
||||
Private bTriggerRestore As Boolean = False
|
||||
Private oBackupList As New List(Of clsGame)
|
||||
Private oRestoreList As New Hashtable
|
||||
Private oAppData As Hashtable
|
||||
Private oGameData As OrderedDictionary
|
||||
Private oLocalBackupData As SortedList
|
||||
Private oRemoteBackupData As SortedList
|
||||
Private bIsDirty As Boolean = False
|
||||
Private bIsLoading As Boolean = False
|
||||
Private oCurrentTagFilters As New List(Of clsTag)
|
||||
Private oCurrentStringFilters As New Hashtable
|
||||
Private eCurrentFilter As frmFilter.eFilterType = frmFilter.eFilterType.NoFilter
|
||||
Private oCurrentFilters As New List(Of clsGameFilter)
|
||||
Private eCurrentFilter As frmFilter.eFilterType = frmFilter.eFilterType.BaseFilter
|
||||
Private bCurrentAndOperator As Boolean = False
|
||||
Private bCurrentSortAsc As Boolean = True
|
||||
Private sCurrentSortField As String = "Name"
|
||||
Private WithEvents tmFilterTimer As Timer
|
||||
|
||||
Private Enum eModes As Integer
|
||||
@@ -70,12 +74,12 @@ Public Class frmGameManager
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private Property AppData As Hashtable
|
||||
Private Property GameData As OrderedDictionary
|
||||
Get
|
||||
Return oAppData
|
||||
Return oGameData
|
||||
End Get
|
||||
Set(value As Hashtable)
|
||||
oAppData = value
|
||||
Set(value As OrderedDictionary)
|
||||
oGameData = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
@@ -222,41 +226,55 @@ Public Class frmGameManager
|
||||
If optCustom.Checked Then
|
||||
If Not bRetainFilter Then
|
||||
frm = New frmFilter
|
||||
|
||||
frm.TagFilters = oCurrentTagFilters
|
||||
frm.GameFilters = oCurrentFilters
|
||||
frm.FilterType = eCurrentFilter
|
||||
frm.AndOperator = bCurrentAndOperator
|
||||
frm.SortAsc = bCurrentSortAsc
|
||||
frm.SortField = sCurrentSortField
|
||||
|
||||
frm.ShowDialog()
|
||||
|
||||
oCurrentTagFilters = frm.TagFilters
|
||||
oCurrentStringFilters = frm.StringFilters
|
||||
oCurrentFilters = frm.GameFilters
|
||||
eCurrentFilter = frm.FilterType
|
||||
bCurrentAndOperator = frm.AndOperator
|
||||
bCurrentSortAsc = frm.SortAsc
|
||||
sCurrentSortField = frm.SortField
|
||||
End If
|
||||
Else
|
||||
oCurrentTagFilters.Clear()
|
||||
oCurrentStringFilters.Clear()
|
||||
eCurrentFilter = frmFilter.eFilterType.NoFilter
|
||||
oCurrentFilters.Clear()
|
||||
eCurrentFilter = frmFilter.eFilterType.BaseFilter
|
||||
bCurrentSortAsc = True
|
||||
sCurrentSortField = "Name"
|
||||
End If
|
||||
|
||||
AppData = mgrMonitorList.ReadFilteredList(oCurrentTagFilters, oCurrentStringFilters, eCurrentFilter)
|
||||
GameData = mgrMonitorList.ReadFilteredList(oCurrentTagFilters, oCurrentFilters, eCurrentFilter, bCurrentAndOperator, bCurrentSortAsc, sCurrentSortField)
|
||||
|
||||
If optPendingRestores.Checked Then
|
||||
oRestoreData = mgrRestore.CompareManifests
|
||||
|
||||
'Only show games with data to restore
|
||||
Dim oTemporaryList As Hashtable = AppData.Clone
|
||||
Dim oTemporaryList As OrderedDictionary = mgrCommon.GenericClone(GameData)
|
||||
For Each de As DictionaryEntry In oTemporaryList
|
||||
oGame = DirectCast(de.Value, clsGame)
|
||||
If Not oRestoreData.ContainsKey(oGame.Name) Then
|
||||
AppData.Remove(de.Key)
|
||||
GameData.Remove(de.Key)
|
||||
Else
|
||||
oRestoreData.Remove(oGame.Name)
|
||||
End If
|
||||
Next
|
||||
ElseIf optBackupData.Checked Then
|
||||
'Only show games with backup data
|
||||
Dim oTemporaryList As Hashtable = AppData.Clone
|
||||
Dim oTemporaryList As OrderedDictionary = mgrCommon.GenericClone(GameData)
|
||||
oRestoreData = oRemoteBackupData.Clone
|
||||
|
||||
For Each de As DictionaryEntry In oTemporaryList
|
||||
oGame = DirectCast(de.Value, clsGame)
|
||||
If Not oRemoteBackupData.ContainsKey(oGame.Name) Then
|
||||
AppData.Remove(de.Key)
|
||||
GameData.Remove(de.Key)
|
||||
Else
|
||||
oRestoreData.Remove(oGame.Name)
|
||||
End If
|
||||
@@ -269,7 +287,7 @@ Public Class frmGameManager
|
||||
oGame = New clsGame
|
||||
oGame.Name = oBackup.Name
|
||||
oGame.Temporary = True
|
||||
AppData.Add(oGame.ID, oGame)
|
||||
GameData.Add(oGame.ID, oGame)
|
||||
Next
|
||||
End If
|
||||
|
||||
@@ -387,7 +405,7 @@ Public Class frmGameManager
|
||||
Dim oList As New List(Of KeyValuePair(Of String, String))
|
||||
Dim sFilter As String = txtQuickFilter.Text
|
||||
|
||||
For Each de As DictionaryEntry In AppData
|
||||
For Each de As DictionaryEntry In GameData
|
||||
oApp = DirectCast(de.Value, clsGame)
|
||||
oData = New KeyValuePair(Of String, String)(oApp.ID, oApp.Name)
|
||||
'Apply the quick filter if applicable
|
||||
@@ -400,8 +418,6 @@ Public Class frmGameManager
|
||||
End If
|
||||
Next
|
||||
|
||||
oList.Sort(AddressOf mgrCommon.CompareByListBoxItemByValue)
|
||||
|
||||
lstGames.BeginUpdate()
|
||||
lstGames.ValueMember = "Key"
|
||||
lstGames.DisplayMember = "Value"
|
||||
@@ -545,7 +561,7 @@ Public Class frmGameManager
|
||||
frm.TagList = oTagsToSave
|
||||
Else
|
||||
For Each oData In lstGames.SelectedItems
|
||||
oApp = DirectCast(AppData(oData.Key), clsGame)
|
||||
oApp = DirectCast(GameData(oData.Key), clsGame)
|
||||
sMonitorIDs.Add(oApp.ID)
|
||||
Next
|
||||
frm.GameName = CurrentGame.Name
|
||||
@@ -731,7 +747,7 @@ Public Class frmGameManager
|
||||
IsLoading = True
|
||||
|
||||
Dim oData As KeyValuePair(Of String, String) = lstGames.SelectedItems(0)
|
||||
Dim oApp As clsGame = DirectCast(AppData(oData.Key), clsGame)
|
||||
Dim oApp As clsGame = DirectCast(GameData(oData.Key), clsGame)
|
||||
|
||||
'Core
|
||||
txtID.Text = oApp.ID
|
||||
@@ -1028,6 +1044,27 @@ Public Class frmGameManager
|
||||
VerifyCleanFolder()
|
||||
End Sub
|
||||
|
||||
Private Sub MonitorOnlyModeChange()
|
||||
If chkMonitorOnly.Checked Then
|
||||
chkFolderSave.Enabled = False
|
||||
chkTimeStamp.Enabled = False
|
||||
lblSavePath.Enabled = False
|
||||
txtSavePath.Enabled = False
|
||||
btnSavePathBrowse.Enabled = False
|
||||
btnInclude.Enabled = False
|
||||
btnExclude.Enabled = False
|
||||
Else
|
||||
chkFolderSave.Enabled = True
|
||||
chkTimeStamp.Enabled = True
|
||||
lblSavePath.Enabled = True
|
||||
txtSavePath.Enabled = True
|
||||
btnSavePathBrowse.Enabled = True
|
||||
btnInclude.Enabled = True
|
||||
btnExclude.Enabled = True
|
||||
End If
|
||||
VerifyCleanFolder()
|
||||
End Sub
|
||||
|
||||
Private Sub TimeStampModeChange()
|
||||
If chkTimeStamp.Checked Then
|
||||
nudLimit.Visible = True
|
||||
@@ -1042,7 +1079,7 @@ Public Class frmGameManager
|
||||
|
||||
Private Sub VerifyCleanFolder()
|
||||
If Not bIsLoading Then
|
||||
If chkFolderSave.Checked = True And txtExclude.Text = String.Empty And txtSavePath.Text <> String.Empty Then
|
||||
If (chkFolderSave.Checked = True And txtExclude.Text = String.Empty And txtSavePath.Text <> String.Empty) And Not chkMonitorOnly.Checked Then
|
||||
chkCleanFolder.Enabled = True
|
||||
Else
|
||||
chkCleanFolder.Checked = False
|
||||
@@ -1195,7 +1232,7 @@ Public Class frmGameManager
|
||||
|
||||
If lstGames.SelectedItems.Count = 1 Then
|
||||
oData = lstGames.SelectedItems(0)
|
||||
oApp = DirectCast(AppData(oData.Key), clsGame)
|
||||
oApp = DirectCast(GameData(oData.Key), clsGame)
|
||||
|
||||
If mgrCommon.ShowMessage(frmGameManager_ConfirmGameDelete, oApp.Name, MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
||||
mgrMonitorList.DoListDelete(oApp.ID)
|
||||
@@ -1207,7 +1244,7 @@ Public Class frmGameManager
|
||||
Dim sMonitorIDs As New List(Of String)
|
||||
|
||||
For Each oData In lstGames.SelectedItems
|
||||
oApp = DirectCast(AppData(oData.Key), clsGame)
|
||||
oApp = DirectCast(GameData(oData.Key), clsGame)
|
||||
sMonitorIDs.Add(oApp.ID)
|
||||
Next
|
||||
|
||||
@@ -1247,7 +1284,7 @@ Public Class frmGameManager
|
||||
Return False
|
||||
End If
|
||||
|
||||
If chkFolderSave.Checked = False And txtFileType.Text = String.Empty Then
|
||||
If (chkFolderSave.Checked = False And txtFileType.Text = String.Empty) And Not chkMonitorOnly.Checked Then
|
||||
mgrCommon.ShowMessage(frmGameManager_ErrorNoItems, MsgBoxStyle.Exclamation)
|
||||
btnInclude.Focus()
|
||||
Return False
|
||||
@@ -1334,8 +1371,8 @@ Public Class frmGameManager
|
||||
BackupList.Clear()
|
||||
|
||||
For Each oData In lstGames.SelectedItems
|
||||
oGame = DirectCast(AppData(oData.Key), clsGame)
|
||||
BackupList.Add(oGame)
|
||||
oGame = DirectCast(GameData(oData.Key), clsGame)
|
||||
If Not oGame.MonitorOnly Then BackupList.Add(oGame)
|
||||
Next
|
||||
|
||||
If BackupList.Count = 1 Then
|
||||
@@ -1372,17 +1409,14 @@ Public Class frmGameManager
|
||||
If lstGames.SelectedItems.Count > 0 Then
|
||||
RestoreList.Clear()
|
||||
|
||||
If lstGames.SelectedItems.Count = 1 Then
|
||||
RestoreList.Add(CurrentGame, CurrentBackupItem)
|
||||
Else
|
||||
For Each oData In lstGames.SelectedItems
|
||||
If oRemoteBackupData.Contains(oData.Value) Then
|
||||
oGame = DirectCast(AppData(oData.Key), clsGame)
|
||||
oBackup = DirectCast(oRemoteBackupData(oData.Value), clsBackup)
|
||||
RestoreList.Add(oGame, oBackup)
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
|
||||
For Each oData In lstGames.SelectedItems
|
||||
If oRemoteBackupData.Contains(oData.Value) Then
|
||||
oGame = DirectCast(GameData(oData.Key), clsGame)
|
||||
oBackup = DirectCast(oRemoteBackupData(oData.Value), clsBackup)
|
||||
If Not oGame.MonitorOnly Then RestoreList.Add(oGame, oBackup)
|
||||
End If
|
||||
Next
|
||||
|
||||
If RestoreList.Count = 1 Then
|
||||
bDoRestore = True
|
||||
@@ -1713,4 +1747,8 @@ Public Class frmGameManager
|
||||
Private Sub frmGameManager_Shown(sender As Object, e As EventArgs) Handles MyBase.Shown
|
||||
txtQuickFilter.Focus()
|
||||
End Sub
|
||||
|
||||
Private Sub chkMonitorOnly_CheckedChanged(sender As Object, e As EventArgs) Handles chkMonitorOnly.CheckedChanged
|
||||
MonitorOnlyModeChange()
|
||||
End Sub
|
||||
End Class
|
||||
|
||||
+23
-15
@@ -1032,14 +1032,20 @@ Public Class frmMain
|
||||
'Toggle State with Tray Clicks
|
||||
If Not bShowToggle Then
|
||||
bShowToggle = True
|
||||
Me.Visible = True
|
||||
Me.WindowState = wState
|
||||
Me.ShowInTaskbar = True
|
||||
Me.Focus()
|
||||
Else
|
||||
bShowToggle = False
|
||||
wState = Me.WindowState
|
||||
Me.WindowState = FormWindowState.Minimized
|
||||
Me.ShowInTaskbar = False
|
||||
If Me.CanFocus Then
|
||||
bShowToggle = False
|
||||
wState = Me.WindowState
|
||||
Me.WindowState = FormWindowState.Minimized
|
||||
Me.ShowInTaskbar = False
|
||||
Me.Visible = False
|
||||
Else
|
||||
gMonTray.ShowBalloonTip(5000, App_NameLong, App_ErrorFocus, ToolTipIcon.Info)
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
@@ -1130,7 +1136,7 @@ Public Class frmMain
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub ToggleMenuEnable()
|
||||
Private Sub ToggleMenuEnable(Optional ByVal bGameDetected As Boolean = False)
|
||||
If bMenuEnabled Then
|
||||
ToggleMenuItems(False, gMonFile)
|
||||
ToggleMenuItems(False, gMonSetup)
|
||||
@@ -1142,6 +1148,11 @@ Public Class frmMain
|
||||
gMonNotification.Enabled = False
|
||||
gMonTrayNotification.Enabled = False
|
||||
gMonTraySettings.Enabled = False
|
||||
If Not bGameDetected Then
|
||||
gMonTrayMon.Enabled = False
|
||||
gMonTrayShow.Enabled = False
|
||||
gMonTrayExit.Enabled = False
|
||||
End If
|
||||
bMenuEnabled = False
|
||||
Else
|
||||
ToggleMenuItems(True, gMonFile)
|
||||
@@ -1154,6 +1165,9 @@ Public Class frmMain
|
||||
gMonNotification.Enabled = True
|
||||
gMonTrayNotification.Enabled = True
|
||||
gMonTraySettings.Enabled = True
|
||||
gMonTrayMon.Enabled = True
|
||||
gMonTrayShow.Enabled = True
|
||||
gMonTrayExit.Enabled = True
|
||||
bMenuEnabled = True
|
||||
End If
|
||||
End Sub
|
||||
@@ -1336,7 +1350,7 @@ Public Class frmMain
|
||||
ToggleMenuText()
|
||||
End Sub
|
||||
|
||||
Private Sub PauseScan()
|
||||
Private Sub PauseScan(Optional ByVal bGameDetected As Boolean = False)
|
||||
If eCurrentStatus = eStatus.Running Then
|
||||
StopSyncWatcher()
|
||||
tmScanTimer.Stop()
|
||||
@@ -1346,7 +1360,7 @@ Public Class frmMain
|
||||
gMonTray.Icon = GBM_Tray_Detected
|
||||
End If
|
||||
ToggleMenuText()
|
||||
ToggleMenuEnable()
|
||||
ToggleMenuEnable(bGameDetected)
|
||||
End Sub
|
||||
|
||||
Private Sub ResumeScan()
|
||||
@@ -1623,13 +1637,6 @@ Public Class frmMain
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub gMonTray_BalloonTipClicked(sender As System.Object, e As System.EventArgs) Handles gMonTray.BalloonTipClicked
|
||||
bShowToggle = True
|
||||
Me.Visible = True
|
||||
Me.ShowInTaskbar = True
|
||||
Me.Focus()
|
||||
End Sub
|
||||
|
||||
Private Sub btnCancelOperation_Click(sender As Object, e As EventArgs) Handles btnCancelOperation.Click
|
||||
OperationCancel()
|
||||
End Sub
|
||||
@@ -1658,6 +1665,7 @@ Public Class frmMain
|
||||
wState = Me.WindowState
|
||||
Me.WindowState = FormWindowState.Minimized
|
||||
Me.ShowInTaskbar = False
|
||||
Me.Visible = False
|
||||
End If
|
||||
End If
|
||||
Case CloseReason.TaskManagerClosing, CloseReason.WindowsShutDown
|
||||
@@ -1679,7 +1687,7 @@ Public Class frmMain
|
||||
Dim sErrorMessage As String = String.Empty
|
||||
|
||||
If oProcess.SearchRunningProcesses(hshScanList, bNeedsPath, iErrorCode, bProcessDebugMode) Then
|
||||
PauseScan()
|
||||
PauseScan(True)
|
||||
|
||||
If bNeedsPath Then
|
||||
bContinue = False
|
||||
|
||||
+12
-12
@@ -67,49 +67,49 @@ Public Class frmSyncFields
|
||||
|
||||
Private Sub chkTimeStamp_CheckedChanged(sender As Object, e As EventArgs) Handles chkTimeStamp.CheckedChanged
|
||||
If chkTimeStamp.Checked Then
|
||||
SyncFields = mgrCommon.SetSyncField(SyncFields, clsGame.eOptionalSyncFields.TimeStamp)
|
||||
SyncFields = clsGame.SetSyncField(SyncFields, clsGame.eOptionalSyncFields.TimeStamp)
|
||||
Else
|
||||
SyncFields = mgrCommon.RemoveSyncField(SyncFields, clsGame.eOptionalSyncFields.TimeStamp)
|
||||
SyncFields = clsGame.RemoveSyncField(SyncFields, clsGame.eOptionalSyncFields.TimeStamp)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub chkGamePath_CheckedChanged(sender As Object, e As EventArgs) Handles chkGamePath.CheckedChanged
|
||||
If chkGamePath.Checked Then
|
||||
SyncFields = mgrCommon.SetSyncField(SyncFields, clsGame.eOptionalSyncFields.GamePath)
|
||||
SyncFields = clsGame.SetSyncField(SyncFields, clsGame.eOptionalSyncFields.GamePath)
|
||||
Else
|
||||
SyncFields = mgrCommon.RemoveSyncField(SyncFields, clsGame.eOptionalSyncFields.GamePath)
|
||||
SyncFields = clsGame.RemoveSyncField(SyncFields, clsGame.eOptionalSyncFields.GamePath)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub chkCompany_CheckedChanged(sender As Object, e As EventArgs) Handles chkCompany.CheckedChanged
|
||||
If chkCompany.Checked Then
|
||||
SyncFields = mgrCommon.SetSyncField(SyncFields, clsGame.eOptionalSyncFields.Company)
|
||||
SyncFields = clsGame.SetSyncField(SyncFields, clsGame.eOptionalSyncFields.Company)
|
||||
Else
|
||||
SyncFields = mgrCommon.RemoveSyncField(SyncFields, clsGame.eOptionalSyncFields.Company)
|
||||
SyncFields = clsGame.RemoveSyncField(SyncFields, clsGame.eOptionalSyncFields.Company)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub chkVersion_CheckedChanged(sender As Object, e As EventArgs) Handles chkVersion.CheckedChanged
|
||||
If chkVersion.Checked Then
|
||||
SyncFields = mgrCommon.SetSyncField(SyncFields, clsGame.eOptionalSyncFields.Version)
|
||||
SyncFields = clsGame.SetSyncField(SyncFields, clsGame.eOptionalSyncFields.Version)
|
||||
Else
|
||||
SyncFields = mgrCommon.RemoveSyncField(SyncFields, clsGame.eOptionalSyncFields.Version)
|
||||
SyncFields = clsGame.RemoveSyncField(SyncFields, clsGame.eOptionalSyncFields.Version)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub chkIcon_CheckedChanged(sender As Object, e As EventArgs) Handles chkIcon.CheckedChanged
|
||||
If chkIcon.Checked Then
|
||||
SyncFields = mgrCommon.SetSyncField(SyncFields, clsGame.eOptionalSyncFields.Icon)
|
||||
SyncFields = clsGame.SetSyncField(SyncFields, clsGame.eOptionalSyncFields.Icon)
|
||||
Else
|
||||
SyncFields = mgrCommon.RemoveSyncField(SyncFields, clsGame.eOptionalSyncFields.Icon)
|
||||
SyncFields = clsGame.RemoveSyncField(SyncFields, clsGame.eOptionalSyncFields.Icon)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub chkMonitorGame_CheckedChanged(sender As Object, e As EventArgs) Handles chkMonitorGame.CheckedChanged
|
||||
If chkMonitorGame.Checked Then
|
||||
SyncFields = mgrCommon.SetSyncField(SyncFields, clsGame.eOptionalSyncFields.MonitorGame)
|
||||
SyncFields = clsGame.SetSyncField(SyncFields, clsGame.eOptionalSyncFields.MonitorGame)
|
||||
Else
|
||||
SyncFields = mgrCommon.RemoveSyncField(SyncFields, clsGame.eOptionalSyncFields.MonitorGame)
|
||||
SyncFields = clsGame.RemoveSyncField(SyncFields, clsGame.eOptionalSyncFields.MonitorGame)
|
||||
End If
|
||||
End Sub
|
||||
End Class
|
||||
@@ -122,6 +122,8 @@
|
||||
<Import Include="System.Windows.Forms" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Classes\clsGameFilter.vb" />
|
||||
<Compile Include="Classes\clsGameFilterField.vb" />
|
||||
<Compile Include="Classes\clsSavedPath.vb" />
|
||||
<Compile Include="Classes\XML Serialize Classes\Tag.vb" />
|
||||
<Compile Include="Classes\XML Serialize Classes\Game.vb" />
|
||||
|
||||
+61
-11
@@ -3,6 +3,8 @@ Imports System.Net
|
||||
Imports System.IO
|
||||
Imports System.Security.Principal
|
||||
Imports System.Text.RegularExpressions
|
||||
Imports System.Runtime.Serialization
|
||||
Imports System.Runtime.Serialization.Formatters.Binary
|
||||
|
||||
Public Class mgrCommon
|
||||
|
||||
@@ -35,6 +37,28 @@ Public Class mgrCommon
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'Source - https://stackoverflow.com/questions/18873152/deep-copy-of-ordereddictionary
|
||||
Public Shared Function GenericClone(ByVal oOriginal As Object) As Object
|
||||
'Construct a temporary memory stream
|
||||
Dim oStream As MemoryStream = New MemoryStream()
|
||||
|
||||
'Construct a serialization formatter that does all the hard work
|
||||
Dim oFormatter As BinaryFormatter = New BinaryFormatter()
|
||||
|
||||
'This line Is explained in the "Streaming Contexts" section
|
||||
oFormatter.Context = New StreamingContext(StreamingContextStates.Clone)
|
||||
|
||||
'Serialize the object graph into the memory stream
|
||||
oFormatter.Serialize(oStream, oOriginal)
|
||||
|
||||
'Seek back to the start of the memory stream before deserializing
|
||||
oStream.Position = 0
|
||||
|
||||
'Deserialize the graph into a New set of objects
|
||||
'Return the root of the graph (deep copy) to the caller
|
||||
Return oFormatter.Deserialize(oStream)
|
||||
End Function
|
||||
|
||||
Public Shared Function CheckAddress(ByVal URL As String) As Boolean
|
||||
Try
|
||||
Dim request As WebRequest = WebRequest.Create(URL)
|
||||
@@ -213,14 +237,6 @@ Public Class mgrCommon
|
||||
oProcess.Start()
|
||||
End Sub
|
||||
|
||||
Public Shared Function SetSyncField(ByVal eSyncFields As clsGame.eOptionalSyncFields, ByVal eSyncField As clsGame.eOptionalSyncFields) As clsGame.eOptionalSyncFields
|
||||
Return eSyncFields Or eSyncField
|
||||
End Function
|
||||
|
||||
Public Shared Function RemoveSyncField(ByVal eSyncFields As clsGame.eOptionalSyncFields, ByVal eSyncField As clsGame.eOptionalSyncFields) As clsGame.eOptionalSyncFields
|
||||
Return eSyncFields And (Not eSyncField)
|
||||
End Function
|
||||
|
||||
'Get a file size
|
||||
Public Shared Function GetFileSize(ByVal sFile As String) As Long
|
||||
Dim oFileInfo As FileInfo
|
||||
@@ -253,13 +269,15 @@ Public Class mgrCommon
|
||||
End Function
|
||||
|
||||
'Calculate the current size of a folder
|
||||
Public Shared Function GetFolderSize(ByVal sPath As String, ByVal sInclude As String(), ByVal sExclude As String())
|
||||
Public Shared Function GetFolderSize(ByVal sPath As String, ByVal sInclude As String(), ByVal sExclude As String()) As Long
|
||||
Dim oFolder As DirectoryInfo
|
||||
Dim bInclude As Boolean
|
||||
Dim bExclude As Boolean
|
||||
Dim lSize As Long = 0
|
||||
|
||||
Try
|
||||
If Not Directory.Exists(sPath) Then Return lSize
|
||||
|
||||
oFolder = New DirectoryInfo(sPath)
|
||||
|
||||
'Files
|
||||
@@ -322,8 +340,31 @@ Public Class mgrCommon
|
||||
Return lSize
|
||||
End Function
|
||||
|
||||
'Get available disk space on a drive
|
||||
Public Shared Function GetAvailableDiskSpace(ByVal sPath As String) As Long
|
||||
'Get available disk space on a drive (Unix)
|
||||
Private Shared Function GetAvailableDiskSpaceUnix(ByVal sPath As String) As Long
|
||||
Dim prsdf As Process
|
||||
Dim sOutput As String
|
||||
Dim sAvailableSpace As String
|
||||
Try
|
||||
prsdf = New Process
|
||||
prsdf.StartInfo.FileName = "/bin/df"
|
||||
prsdf.StartInfo.Arguments = sPath
|
||||
prsdf.StartInfo.UseShellExecute = False
|
||||
prsdf.StartInfo.RedirectStandardOutput = True
|
||||
prsdf.StartInfo.CreateNoWindow = True
|
||||
prsdf.Start()
|
||||
sOutput = prsdf.StandardOutput.ReadToEnd
|
||||
'Parse df output to grab "Available" value
|
||||
sAvailableSpace = sOutput.Split(vbLf)(1).Split(New Char() {" "}, StringSplitOptions.RemoveEmptyEntries)(3)
|
||||
'Return value in bytes
|
||||
Return CLng(sAvailableSpace) * 1024
|
||||
Catch
|
||||
Return 0
|
||||
End Try
|
||||
End Function
|
||||
|
||||
'Get available disk space on a drive (Windows)
|
||||
Private Shared Function GetAvailableDiskSpaceWindows(ByVal sPath As String) As Long
|
||||
Dim oDrive As DriveInfo
|
||||
Dim lAvailableSpace As Long = 0
|
||||
Try
|
||||
@@ -335,6 +376,15 @@ Public Class mgrCommon
|
||||
Return lAvailableSpace
|
||||
End Function
|
||||
|
||||
'Get available disk space on a drive
|
||||
Public Shared Function GetAvailableDiskSpace(ByVal sPath As String) As Long
|
||||
If IsUnix() Then
|
||||
Return GetAvailableDiskSpaceUnix(sPath)
|
||||
Else
|
||||
Return GetAvailableDiskSpaceWindows(sPath)
|
||||
End If
|
||||
End Function
|
||||
|
||||
'Delete file based on OS type
|
||||
Public Shared Sub DeleteFile(ByVal sPath As String, Optional ByVal bRecycle As Boolean = True)
|
||||
If File.Exists(sPath) Then
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
Imports GBM.My.Resources
|
||||
Imports System.Collections.Specialized
|
||||
Imports System.IO
|
||||
|
||||
Public Class mgrMonitorList
|
||||
@@ -496,38 +497,25 @@ Public Class mgrMonitorList
|
||||
End Sub
|
||||
|
||||
'Filter Functions
|
||||
Private Shared Function BuildFilterQuery(ByVal oTagFilters As List(Of clsTag), ByVal hshStringFilters As Hashtable, eFilterType As frmFilter.eFilterType, ByRef hshParams As Hashtable) As String
|
||||
Private Shared Function BuildFilterQuery(ByVal oTagFilters As List(Of clsTag), ByVal oFilters As List(Of clsGameFilter), ByVal eFilterType As frmFilter.eFilterType, ByVal bAndOperator As Boolean,
|
||||
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 sSort As String = " ORDER BY " & sSortField
|
||||
|
||||
If bSortAsc Then
|
||||
sSort &= " ASC"
|
||||
Else
|
||||
sSort &= " DESC"
|
||||
End If
|
||||
|
||||
Select Case eFilterType
|
||||
Case frmFilter.eFilterType.NoFilter
|
||||
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder, Parameter FROM monitorlist ORDER BY Name Asc"
|
||||
Case frmFilter.eFilterType.FieldAnd, frmFilter.eFilterType.FieldOr
|
||||
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder, Parameter FROM monitorlist"
|
||||
|
||||
If hshStringFilters.Count > 0 Then
|
||||
sSQL &= " WHERE ("
|
||||
For Each de As DictionaryEntry In hshStringFilters
|
||||
sSQL &= de.Key & " LIKE @" & de.Key
|
||||
hshParams.Add(de.Key, "%" & de.Value.ToString & "%")
|
||||
iCounter += 1
|
||||
If iCounter <> hshStringFilters.Count Then
|
||||
Select Case eFilterType
|
||||
Case frmFilter.eFilterType.FieldAnd
|
||||
sSQL &= " AND "
|
||||
Case frmFilter.eFilterType.FieldOr
|
||||
sSQL &= " OR "
|
||||
End Select
|
||||
End If
|
||||
|
||||
Next
|
||||
sSQL &= ")"
|
||||
End If
|
||||
sSQL &= " ORDER BY Name Asc"
|
||||
Case frmFilter.eFilterType.BaseFilter
|
||||
sSQL = "SELECT " & sBaseSelect
|
||||
Case frmFilter.eFilterType.AnyTag
|
||||
sSQL = "SELECT DISTINCT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder, Parameter FROM monitorlist "
|
||||
sSQL &= "NATURAL JOIN gametags WHERE gametags.TagID IN ("
|
||||
sSQL = "SELECT DISTINCT " & sBaseSelect
|
||||
sSQL &= " NATURAL JOIN gametags WHERE gametags.TagID IN ("
|
||||
|
||||
For Each oTag As clsTag In oTagFilters
|
||||
sSQL &= "@TagID" & iCounter & ","
|
||||
@@ -536,9 +524,9 @@ Public Class mgrMonitorList
|
||||
Next
|
||||
|
||||
sSQL = sSQL.TrimEnd(",")
|
||||
sSQL &= ") ORDER BY Name Asc"
|
||||
sSQL &= ")"
|
||||
Case frmFilter.eFilterType.AllTags
|
||||
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder, Parameter FROM monitorlist WHERE MonitorID IN "
|
||||
sSQL = "SELECT " & sBaseSelect & " WHERE MonitorID IN "
|
||||
|
||||
For Each oTag As clsTag In oTagFilters
|
||||
sSQL &= "(SELECT MonitorID FROM gametags WHERE monitorlist.MonitorID = gametags.MonitorID And TagID = @TagID" & iCounter & ")"
|
||||
@@ -548,41 +536,78 @@ Public Class mgrMonitorList
|
||||
hshParams.Add("TagID" & iCounter, oTag.ID)
|
||||
iCounter += 1
|
||||
Next
|
||||
|
||||
sSQL &= " ORDER BY Name Asc"
|
||||
Case frmFilter.eFilterType.NoTags
|
||||
sSQL = "SELECT MonitorID, Name, Process, Path, AbsolutePath, FolderSave, FileType, TimeStamp, ExcludeList, ProcessPath, Icon, Hours, Version, Company, Enabled, MonitorOnly, BackupLimit, CleanFolder, Parameter FROM monitorlist WHERE MonitorID NOT IN (SELECT MonitorID FROM gametags) ORDER BY Name Asc"
|
||||
sSQL = "SELECT " & sBaseSelect & " WHERE MonitorID NOT IN (SELECT MonitorID FROM gametags)"
|
||||
End Select
|
||||
|
||||
'Handle Other Filters
|
||||
If oFilters.Count > 0 Then
|
||||
If eFilterType = frmFilter.eFilterType.BaseFilter Then
|
||||
sSQL &= " WHERE ("
|
||||
Else
|
||||
sSQL &= " AND ("
|
||||
End If
|
||||
|
||||
iCounter = 0
|
||||
For Each oFilter As clsGameFilter In oFilters
|
||||
Select Case oFilter.Field.Type
|
||||
Case clsGameFilterField.eDataType.fString
|
||||
sSQL &= oFilter.Field.FieldName & " LIKE @" & oFilter.ID
|
||||
hshParams.Add(oFilter.ID, "%" & oFilter.Data & "%")
|
||||
Case clsGameFilterField.eDataType.fNumeric
|
||||
sSQL &= oFilter.Field.FieldName & " " & oFilter.NumericOperatorAsString & " @" & oFilter.ID
|
||||
hshParams.Add(oFilter.ID, oFilter.Data)
|
||||
Case clsGameFilterField.eDataType.fBool
|
||||
sSQL &= oFilter.Field.FieldName & " = @" & oFilter.ID
|
||||
hshParams.Add(oFilter.ID, oFilter.Data)
|
||||
End Select
|
||||
|
||||
iCounter += 1
|
||||
If iCounter <> oFilters.Count Then
|
||||
If bAndOperator Then
|
||||
sSQL &= " AND "
|
||||
Else
|
||||
sSQL &= " OR "
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
sSQL &= ")"
|
||||
End If
|
||||
|
||||
'Handle Sorting
|
||||
sSQL &= sSort
|
||||
|
||||
Return sSQL
|
||||
|
||||
End Function
|
||||
|
||||
Public Shared Function ReadFilteredList(ByVal oTagFilters As List(Of clsTag), ByVal hshStringFilters As Hashtable, eFilterType As frmFilter.eFilterType, Optional ByVal iSelectDB As mgrSQLite.Database = mgrSQLite.Database.Local) As Hashtable
|
||||
Public Shared Function ReadFilteredList(ByVal oTagFilters As List(Of clsTag), ByVal oFilters As List(Of clsGameFilter), ByVal eFilterType As frmFilter.eFilterType, ByVal bAndOperator As Boolean,
|
||||
ByVal bSortAsc As Boolean, ByVal sSortField As String, Optional ByVal iSelectDB As mgrSQLite.Database = mgrSQLite.Database.Local) As OrderedDictionary
|
||||
Dim oDatabase As New mgrSQLite(iSelectDB)
|
||||
Dim oData As DataSet
|
||||
Dim sSQL As String = String.Empty
|
||||
Dim hshList As New Hashtable
|
||||
Dim oList As New OrderedDictionary
|
||||
Dim oGame As clsGame
|
||||
Dim hshParams As New Hashtable
|
||||
Dim iCounter As Integer = 0
|
||||
|
||||
sSQL = BuildFilterQuery(oTagFilters, hshStringFilters, eFilterType, hshParams)
|
||||
sSQL = BuildFilterQuery(oTagFilters, oFilters, eFilterType, bAndOperator, bSortAsc, sSortField, hshParams)
|
||||
|
||||
oData = oDatabase.ReadParamData(sSQL, hshParams)
|
||||
|
||||
For Each dr As DataRow In oData.Tables(0).Rows
|
||||
oGame = MapToObject(dr)
|
||||
|
||||
hshList.Add(oGame.ID, oGame)
|
||||
oList.Add(oGame.ID, oGame)
|
||||
Next
|
||||
|
||||
Return hshList
|
||||
Return oList
|
||||
End Function
|
||||
|
||||
|
||||
'Import / Export Functions
|
||||
Public Shared Function ReadListForExport(ByVal oTagFilters As List(Of clsTag), ByVal hshStringFilters As Hashtable, ByVal eFilterType As frmFilter.eFilterType, Optional ByVal iSelectDB As mgrSQLite.Database = mgrSQLite.Database.Local) As List(Of Game)
|
||||
Public Shared Function ReadListForExport(ByVal oTagFilters As List(Of clsTag), ByVal oFilters As List(Of clsGameFilter), ByVal eFilterType As frmFilter.eFilterType, ByVal bAndOperator As Boolean,
|
||||
ByVal bSortAsc As Boolean, ByVal sSortField As String, Optional ByVal iSelectDB As mgrSQLite.Database = mgrSQLite.Database.Local) As List(Of Game)
|
||||
Dim oDatabase As New mgrSQLite(iSelectDB)
|
||||
Dim oData As DataSet
|
||||
Dim sSQL As String = String.Empty
|
||||
@@ -591,7 +616,7 @@ Public Class mgrMonitorList
|
||||
Dim oGame As Game
|
||||
Dim hshParams As New Hashtable
|
||||
|
||||
sSQL = BuildFilterQuery(oTagFilters, hshStringFilters, eFilterType, hshParams)
|
||||
sSQL = BuildFilterQuery(oTagFilters, oFilters, eFilterType, bAndOperator, bSortAsc, sSortField, hshParams)
|
||||
|
||||
oData = oDatabase.ReadParamData(sSQL, hshParams)
|
||||
|
||||
@@ -605,6 +630,7 @@ Public Class mgrMonitorList
|
||||
oGame.FolderSave = CBool(dr("FolderSave"))
|
||||
If Not IsDBNull(dr("FileType")) Then oGame.FileType = CStr(dr("FileType"))
|
||||
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"))
|
||||
oGame.Tags = mgrGameTags.GetTagsByGameForExport(sID)
|
||||
oList.Add(oGame)
|
||||
@@ -684,18 +710,24 @@ Public Class mgrMonitorList
|
||||
Dim oList As List(Of Game)
|
||||
Dim bSuccess As Boolean = False
|
||||
Dim oTagFilters As New List(Of clsTag)
|
||||
Dim oStringFilters As New Hashtable
|
||||
Dim eCurrentFilter As frmFilter.eFilterType = frmFilter.eFilterType.NoFilter
|
||||
Dim oFilters As New List(Of clsGameFilter)
|
||||
Dim eCurrentFilter As frmFilter.eFilterType = frmFilter.eFilterType.BaseFilter
|
||||
Dim bAndOperator As Boolean = True
|
||||
Dim bSortAsc As Boolean = True
|
||||
Dim sSortField As String = "Name"
|
||||
|
||||
If mgrCommon.ShowMessage(mgrMonitorList_ConfirmApplyFilter, MsgBoxStyle.YesNo) = MsgBoxResult.Yes Then
|
||||
Dim frm As New frmFilter
|
||||
frm.ShowDialog()
|
||||
oTagFilters = frm.TagFilters
|
||||
oStringFilters = frm.StringFilters
|
||||
oFilters = frm.GameFilters
|
||||
eCurrentFilter = frm.FilterType
|
||||
bAndOperator = frm.AndOperator
|
||||
bSortAsc = frm.SortAsc
|
||||
sSortField = frm.SortField
|
||||
End If
|
||||
|
||||
oList = ReadListForExport(oTagFilters, oStringFilters, eCurrentFilter)
|
||||
oList = ReadListForExport(oTagFilters, oFilters, eCurrentFilter, bAndOperator, bSortAsc, sSortField)
|
||||
|
||||
bSuccess = mgrXML.SerializeAndExport(oList, sLocation)
|
||||
|
||||
|
||||
@@ -170,6 +170,15 @@ Public Class mgrSQLite
|
||||
db.Close()
|
||||
End Sub
|
||||
|
||||
Private Sub RollBack(ByRef trans As SqliteTransaction)
|
||||
Try
|
||||
trans.Rollback()
|
||||
Catch
|
||||
'SQLite may or may not perform an auto-rollback when certain failures occur, such as disk full or out of memory.
|
||||
'Multiple rollbacks will cause an exception, therefore lets just do nothing when that happens.
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
Private Sub BuildParams(ByRef command As SqliteCommand, ByRef hshParams As Hashtable)
|
||||
For Each de As DictionaryEntry In hshParams
|
||||
command.Parameters.AddWithValue(de.Key, de.Value)
|
||||
@@ -189,7 +198,7 @@ Public Class mgrSQLite
|
||||
command.ExecuteNonQuery()
|
||||
trans.Commit()
|
||||
Catch ex As Exception
|
||||
trans.Rollback()
|
||||
RollBack(trans)
|
||||
mgrCommon.ShowMessage(mgrSQLite_ErrorQueryFailure, New String() {sSQL, ex.Message}, MsgBoxStyle.Exclamation)
|
||||
Return False
|
||||
Finally
|
||||
@@ -215,7 +224,7 @@ Public Class mgrSQLite
|
||||
Next
|
||||
trans.Commit()
|
||||
Catch ex As Exception
|
||||
trans.Rollback()
|
||||
RollBack(trans)
|
||||
mgrCommon.ShowMessage(mgrSQLite_ErrorQueryFailure, New String() {sSQL, ex.Message}, MsgBoxStyle.Exclamation)
|
||||
Return False
|
||||
Finally
|
||||
|
||||
@@ -28,6 +28,7 @@ Public Class mgrXML
|
||||
oGame.FolderSave = g.FolderSave
|
||||
oGame.FileType = g.FileType
|
||||
oGame.ExcludeList = g.ExcludeList
|
||||
oGame.MonitorOnly = g.MonitorOnly
|
||||
oGame.Parameter = g.Parameter
|
||||
For Each t As Tag In g.Tags
|
||||
oGame.ImportTags.Add(t)
|
||||
|
||||
@@ -33,7 +33,7 @@ Imports System.Runtime.InteropServices
|
||||
' by using the '*' as shown below:
|
||||
' <Assembly: AssemblyVersion("1.0.*")>
|
||||
|
||||
<Assembly: AssemblyVersion("1.0.2.*")>
|
||||
<Assembly: AssemblyFileVersion("1.0.2.0")>
|
||||
<Assembly: AssemblyVersion("1.0.4.*")>
|
||||
<Assembly: AssemblyFileVersion("1.0.4.0")>
|
||||
|
||||
<Assembly: NeutralResourcesLanguageAttribute("en")>
|
||||
Generated
+293
-32
@@ -78,6 +78,15 @@ Namespace My.Resources
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to GBM is busy with an open window on your desktop..
|
||||
'''</summary>
|
||||
Friend ReadOnly Property App_ErrorFocus() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("App_ErrorFocus", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to This function is currently not available on a Unix based operating system..
|
||||
'''</summary>
|
||||
@@ -915,6 +924,15 @@ Namespace My.Resources
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Add.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_btnAddFilter() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_btnAddFilter", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to &OK.
|
||||
'''</summary>
|
||||
@@ -933,6 +951,204 @@ Namespace My.Resources
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Remove.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_btnRemoveFilter() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_btnRemoveFilter", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Disabled.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_cboBoolFilterDisabled() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_cboBoolFilterDisabled", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Enabled.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_cboBoolFilterEnabled() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_cboBoolFilterEnabled", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Game Information.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_chkGameInfo() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_chkGameInfo", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Tag.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_chkTag() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_chkTag", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Backup Limit *.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_FieldBackupLimit() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_FieldBackupLimit", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Delete Folder on Restore.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_FieldCleanFolder() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_FieldCleanFolder", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Company.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_FieldCompany() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_FieldCompany", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Monitor Game.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_FieldEnabled() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_FieldEnabled", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Exclude Items.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_FieldExcludeList() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_FieldExcludeList", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Include Items.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_FieldFileType() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_FieldFileType", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Save Entire Folder.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_FieldFolderSave() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_FieldFolderSave", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Hours.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_FieldHours() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_FieldHours", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Icon.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_FieldIcon() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_FieldIcon", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Monitor Only.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_FieldMonitorOnly() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_FieldMonitorOnly", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Name.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_FieldName() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_FieldName", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Parameter.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_FieldParameter() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_FieldParameter", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Save Path *.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_FieldPath() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_FieldPath", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Process.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_FieldProcess() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_FieldProcess", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Game Path.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_FieldProcessPath() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_FieldProcessPath", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Save Multiple Backups.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_FieldTimeStamp() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_FieldTimeStamp", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Version.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_FieldVersion() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_FieldVersion", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Custom Filter.
|
||||
'''</summary>
|
||||
@@ -943,11 +1159,29 @@ Namespace My.Resources
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Options.
|
||||
''' Looks up a localized string similar to Filter Type.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_grpGameInfoOptions() As String
|
||||
Friend ReadOnly Property frmFilter_grpFilterType() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_grpGameInfoOptions", resourceCulture)
|
||||
Return ResourceManager.GetString("frmFilter_grpFilterType", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Sorting.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_grpSorting() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_grpSorting", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Sort Options.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_grpSortOptions() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_grpSortOptions", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
@@ -961,11 +1195,29 @@ Namespace My.Resources
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Company:.
|
||||
''' Looks up a localized string similar to Current Filters.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_lblCompany() As String
|
||||
Friend ReadOnly Property frmFilter_lblCurrentFilters() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_lblCompany", resourceCulture)
|
||||
Return ResourceManager.GetString("frmFilter_lblCurrentFilters", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Available Fields.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_lblFields() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_lblFields", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Filter.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_lblFilterData() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_lblFilterData", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
@@ -979,20 +1231,11 @@ Namespace My.Resources
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Name:.
|
||||
''' Looks up a localized string similar to Available Fields.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_lblName() As String
|
||||
Friend ReadOnly Property frmFilter_lblSortsFields() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_lblName", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Process:.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_lblProcess() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_lblProcess", resourceCulture)
|
||||
Return ResourceManager.GetString("frmFilter_lblSortsFields", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
@@ -1005,6 +1248,24 @@ Namespace My.Resources
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to * Indicates a field that may give unexpected results..
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_lblWarning() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_lblWarning", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to contains.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_lstFilterContains() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_lstFilterContains", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to All Tags.
|
||||
'''</summary>
|
||||
@@ -1015,7 +1276,7 @@ Namespace My.Resources
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to And.
|
||||
''' Looks up a localized string similar to All.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_optAnd() As String
|
||||
Get
|
||||
@@ -1033,16 +1294,7 @@ Namespace My.Resources
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Game Information.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_optGameInfo() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_optGameInfo", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Or.
|
||||
''' Looks up a localized string similar to Any.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_optOr() As String
|
||||
Get
|
||||
@@ -1051,11 +1303,20 @@ Namespace My.Resources
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Tag.
|
||||
''' Looks up a localized string similar to Ascending.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_optTag() As String
|
||||
Friend ReadOnly Property frmFilter_optSortAsc() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_optTag", resourceCulture)
|
||||
Return ResourceManager.GetString("frmFilter_optSortAsc", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
'''<summary>
|
||||
''' Looks up a localized string similar to Descending.
|
||||
'''</summary>
|
||||
Friend ReadOnly Property frmFilter_optSortDesc() As String
|
||||
Get
|
||||
Return ResourceManager.GetString("frmFilter_optSortDesc", resourceCulture)
|
||||
End Get
|
||||
End Property
|
||||
|
||||
|
||||
+102
-15
@@ -895,18 +895,9 @@
|
||||
<data name="frmFilter_FormName" xml:space="preserve">
|
||||
<value>Custom Filter</value>
|
||||
</data>
|
||||
<data name="frmFilter_lblCompany" xml:space="preserve">
|
||||
<value>Company:</value>
|
||||
</data>
|
||||
<data name="frmFilter_lblGameTags" xml:space="preserve">
|
||||
<value>Current Filter</value>
|
||||
</data>
|
||||
<data name="frmFilter_lblName" xml:space="preserve">
|
||||
<value>Name:</value>
|
||||
</data>
|
||||
<data name="frmFilter_lblProcess" xml:space="preserve">
|
||||
<value>Process:</value>
|
||||
</data>
|
||||
<data name="frmFilter_lblTags" xml:space="preserve">
|
||||
<value>Available Tags</value>
|
||||
</data>
|
||||
@@ -914,18 +905,18 @@
|
||||
<value>All Tags</value>
|
||||
</data>
|
||||
<data name="frmFilter_optAnd" xml:space="preserve">
|
||||
<value>And</value>
|
||||
<value>All</value>
|
||||
</data>
|
||||
<data name="frmFilter_optAny" xml:space="preserve">
|
||||
<value>Any Tag</value>
|
||||
</data>
|
||||
<data name="frmFilter_optGameInfo" xml:space="preserve">
|
||||
<data name="frmFilter_chkGameInfo" xml:space="preserve">
|
||||
<value>Game Information</value>
|
||||
</data>
|
||||
<data name="frmFilter_optOr" xml:space="preserve">
|
||||
<value>Or</value>
|
||||
<value>Any</value>
|
||||
</data>
|
||||
<data name="frmFilter_optTag" xml:space="preserve">
|
||||
<data name="frmFilter_chkTag" xml:space="preserve">
|
||||
<value>Tag</value>
|
||||
</data>
|
||||
<data name="frmGameTags_btnAdd" xml:space="preserve">
|
||||
@@ -1015,8 +1006,8 @@
|
||||
<data name="frmIncludeExclude_ToolTipTitle" xml:space="preserve">
|
||||
<value>Saved Game Explorer</value>
|
||||
</data>
|
||||
<data name="frmFilter_grpGameInfoOptions" xml:space="preserve">
|
||||
<value>Options</value>
|
||||
<data name="frmFilter_grpFilterType" xml:space="preserve">
|
||||
<value>Filter Type</value>
|
||||
</data>
|
||||
<data name="frmFilter_grpTagOptions" xml:space="preserve">
|
||||
<value>Options</value>
|
||||
@@ -1798,4 +1789,100 @@
|
||||
<data name="mgrBackup_7zFatalError" xml:space="preserve">
|
||||
<value>[PARAM] backup failed due to an error.</value>
|
||||
</data>
|
||||
<data name="App_ErrorFocus" xml:space="preserve">
|
||||
<value>GBM is busy with an open window on your desktop.</value>
|
||||
</data>
|
||||
<data name="frmFilter_grpSorting" xml:space="preserve">
|
||||
<value>Sorting</value>
|
||||
</data>
|
||||
<data name="frmFilter_optSortAsc" xml:space="preserve">
|
||||
<value>Ascending</value>
|
||||
</data>
|
||||
<data name="frmFilter_optSortDesc" xml:space="preserve">
|
||||
<value>Descending</value>
|
||||
</data>
|
||||
<data name="frmFilter_FieldCompany" xml:space="preserve">
|
||||
<value>Company</value>
|
||||
</data>
|
||||
<data name="frmFilter_FieldHours" xml:space="preserve">
|
||||
<value>Hours</value>
|
||||
</data>
|
||||
<data name="frmFilter_FieldName" xml:space="preserve">
|
||||
<value>Name</value>
|
||||
</data>
|
||||
<data name="frmFilter_FieldProcess" xml:space="preserve">
|
||||
<value>Process</value>
|
||||
</data>
|
||||
<data name="frmFilter_btnAddFilter" xml:space="preserve">
|
||||
<value>Add</value>
|
||||
</data>
|
||||
<data name="frmFilter_btnRemoveFilter" xml:space="preserve">
|
||||
<value>Remove</value>
|
||||
</data>
|
||||
<data name="frmFilter_FieldParameter" xml:space="preserve">
|
||||
<value>Parameter</value>
|
||||
</data>
|
||||
<data name="frmFilter_FieldVersion" xml:space="preserve">
|
||||
<value>Version</value>
|
||||
</data>
|
||||
<data name="frmFilter_lblCurrentFilters" xml:space="preserve">
|
||||
<value>Current Filters</value>
|
||||
</data>
|
||||
<data name="frmFilter_lblFields" xml:space="preserve">
|
||||
<value>Available Fields</value>
|
||||
</data>
|
||||
<data name="frmFilter_lblFilterData" xml:space="preserve">
|
||||
<value>Filter</value>
|
||||
</data>
|
||||
<data name="frmFilter_cboBoolFilterDisabled" xml:space="preserve">
|
||||
<value>Disabled</value>
|
||||
</data>
|
||||
<data name="frmFilter_cboBoolFilterEnabled" xml:space="preserve">
|
||||
<value>Enabled</value>
|
||||
</data>
|
||||
<data name="frmFilter_FieldBackupLimit" xml:space="preserve">
|
||||
<value>Backup Limit *</value>
|
||||
</data>
|
||||
<data name="frmFilter_FieldCleanFolder" xml:space="preserve">
|
||||
<value>Delete Folder on Restore</value>
|
||||
</data>
|
||||
<data name="frmFilter_FieldEnabled" xml:space="preserve">
|
||||
<value>Monitor Game</value>
|
||||
</data>
|
||||
<data name="frmFilter_FieldExcludeList" xml:space="preserve">
|
||||
<value>Exclude Items</value>
|
||||
</data>
|
||||
<data name="frmFilter_FieldFileType" xml:space="preserve">
|
||||
<value>Include Items</value>
|
||||
</data>
|
||||
<data name="frmFilter_FieldFolderSave" xml:space="preserve">
|
||||
<value>Save Entire Folder</value>
|
||||
</data>
|
||||
<data name="frmFilter_FieldIcon" xml:space="preserve">
|
||||
<value>Icon</value>
|
||||
</data>
|
||||
<data name="frmFilter_FieldMonitorOnly" xml:space="preserve">
|
||||
<value>Monitor Only</value>
|
||||
</data>
|
||||
<data name="frmFilter_FieldPath" xml:space="preserve">
|
||||
<value>Save Path *</value>
|
||||
</data>
|
||||
<data name="frmFilter_FieldProcessPath" xml:space="preserve">
|
||||
<value>Game Path</value>
|
||||
</data>
|
||||
<data name="frmFilter_FieldTimeStamp" xml:space="preserve">
|
||||
<value>Save Multiple Backups</value>
|
||||
</data>
|
||||
<data name="frmFilter_lblSortsFields" xml:space="preserve">
|
||||
<value>Available Fields</value>
|
||||
</data>
|
||||
<data name="frmFilter_lblWarning" xml:space="preserve">
|
||||
<value>* Indicates a field that may give unexpected results.</value>
|
||||
</data>
|
||||
<data name="frmFilter_lstFilterContains" xml:space="preserve">
|
||||
<value>contains</value>
|
||||
</data>
|
||||
<data name="frmFilter_grpSortOptions" xml:space="preserve">
|
||||
<value>Sort Options</value>
|
||||
</data>
|
||||
</root>
|
||||
+14
-21
@@ -1,27 +1,20 @@
|
||||
Game Backup Monitor v1.02 Readme
|
||||
Game Backup Monitor v1.04 Readme
|
||||
http://mikemaximus.github.io/gbm-web/
|
||||
gamebackupmonitor@gmail.com
|
||||
|
||||
July 1, 2017
|
||||
September 26, 2017
|
||||
|
||||
New in 1.02
|
||||
|
||||
- (Windows) Upgraded SQLite to 3.19.3.
|
||||
- (All) The SQLite version is displayed on the "About" screen.
|
||||
- (All) Added the ability to detect command parameters.
|
||||
- Use parameter detection for better detection of games running in emulators or interpreters like DOSBox.
|
||||
- This is an advanced optional feature and is not available in the "Add Game Wizard", please read the manual (http://mikemaximus.github.io/gbm-web/manual.html) for more details.
|
||||
- (Linux) Please note that Wine detection is still handled automatically by GBM and only requires a Windows process name. But this feature does work with Wine if you need to detect parameters!
|
||||
- (All) Added the ability to resize and maximize the main program window.
|
||||
- The log is now displayed by default and resizes with the window.
|
||||
- The "Show/Hide Log" button has been removed due to technical issues with this change.
|
||||
- The minimum window size will let you easily hide the log as in past versions.
|
||||
- (All) The last browse location in various dialogs is now saved, such as when using the Import/Export feature.
|
||||
- (All) Available disk space is checked before attempting a backup. The log now displays available disk space and save folder size.
|
||||
- (Linux) Using the keyboard to navigate the game list in the Game Manager now works correctly.
|
||||
- (All) Tags can now be added to a new game configuration before saving on the Game Manager.
|
||||
- (All) Fixed various issues when adding new game configurations while using filters on the Game Manager.
|
||||
- (All) Added better handling of 7-Zip warnings and errors.
|
||||
- (Linux) GBM now requires the "readlink" utility to properly handle Wine games. However bash, ls and grep are no longer required.
|
||||
New in 1.04
|
||||
|
||||
- (All) The import feature now detects most saved games currently on your PC and automatically selects configurations for you.
|
||||
- (All) The Game Manager's "Custom Filter" feature has received a major overhaul:
|
||||
- More fields are now available for use.
|
||||
- Added the ability to combine different filters.
|
||||
- Added the ability to set a sort field and order.
|
||||
- The current filter is now saved when the Custom Filter window is closed and re-opened.
|
||||
- (All) The "Monitor Only" feature has been updated. This feature allows tracking play time for games that do not require a backup, such as MMOs or CCGs.
|
||||
- The Game Manager now disables and ignores validation on fields that aren't needed for a Monitor Only configuration.
|
||||
- Monitor Only is now included in the XML Import / Export.
|
||||
- Monitor Only configurations may now be included in the official game lists.
|
||||
|
||||
The entire version history of GBM releases is available at http://mikemaximus.github.io/gbm-web/versionhistory.html
|
||||
Reference in New Issue
Block a user