diff --git a/GBM/Forms/frmAdvancedImport.Designer.vb b/GBM/Forms/frmAdvancedImport.Designer.vb
index f8ca1cf..d606450 100644
--- a/GBM/Forms/frmAdvancedImport.Designer.vb
+++ b/GBM/Forms/frmAdvancedImport.Designer.vb
@@ -44,7 +44,7 @@ Partial Class frmAdvancedImport
'chkSelectAll
'
Me.chkSelectAll.AutoSize = True
- Me.chkSelectAll.Location = New System.Drawing.Point(15, 12)
+ Me.chkSelectAll.Location = New System.Drawing.Point(18, 12)
Me.chkSelectAll.Name = "chkSelectAll"
Me.chkSelectAll.Size = New System.Drawing.Size(15, 14)
Me.chkSelectAll.TabIndex = 0
@@ -97,11 +97,12 @@ Partial Class frmAdvancedImport
'
'lblFilter
'
- Me.lblFilter.Location = New System.Drawing.Point(363, 12)
+ Me.lblFilter.Location = New System.Drawing.Point(307, 12)
Me.lblFilter.Name = "lblFilter"
- Me.lblFilter.Size = New System.Drawing.Size(47, 14)
+ Me.lblFilter.Size = New System.Drawing.Size(103, 14)
Me.lblFilter.TabIndex = 0
- Me.lblFilter.Text = "Search:"
+ Me.lblFilter.Text = "Filter:"
+ Me.lblFilter.TextAlign = System.Drawing.ContentAlignment.TopRight
'
'frmAdvancedImport
'
diff --git a/GBM/Forms/frmAdvancedImport.vb b/GBM/Forms/frmAdvancedImport.vb
index 4d1e869..94d5905 100644
--- a/GBM/Forms/frmAdvancedImport.vb
+++ b/GBM/Forms/frmAdvancedImport.vb
@@ -6,6 +6,7 @@ Public Class frmAdvancedImport
Private hshFinalData As New Hashtable
Private bSelectAll As Boolean = False
Private bIsLoading As Boolean = False
+ Private iCurrentSort As Integer = 0
Private WithEvents tmFilterTimer As Timer
Public Property ImportData As Hashtable
@@ -36,11 +37,20 @@ Public Class frmAdvancedImport
UpdateSelected()
End Sub
+ Private Sub SaveChecked(ByVal oItem As ListViewItem)
+ If oItem.Checked Then
+ FinalData.Add(oItem.Tag, ImportData(oItem.Tag))
+ Else
+ FinalData.Remove(oItem.Tag)
+ End If
+ End Sub
+
Private Sub LoadData(Optional ByVal sFilter As String = "")
Dim oApp As clsGame
Dim oListViewItem As ListViewItem
Dim sTags As String
-
+ Dim bAddItem As Boolean
+ Dim bResetSelectAll As Boolean = False
Cursor.Current = Cursors.WaitCursor
lstGames.BeginUpdate()
@@ -52,31 +62,59 @@ Public Class frmAdvancedImport
lstGames.Columns.Add(frmAdvancedImport_ColumnTags, 190)
For Each de As DictionaryEntry In ImportData
+ bAddItem = False
oApp = DirectCast(de.Value, clsGame)
sTags = String.Empty
oApp.ImportTags.Sort(AddressOf mgrCommon.CompareImportTagsByName)
For Each oTag As Tag In oApp.ImportTags
sTags &= oTag.Name & ", "
- Next
+ Next
sTags = sTags.TrimEnd(New Char() {",", " "})
oListViewItem = New ListViewItem(New String() {oApp.Name, oApp.TrueProcess, sTags})
oListViewItem.Tag = oApp.CompoundKey
- oListViewItem.Checked = bSelectAll
+
+ If FinalData.ContainsKey(oApp.CompoundKey) Then
+ oListViewItem.Checked = True
+ Else
+ oListViewItem.Checked = False
+ End If
If sFilter = String.Empty Then
- lstGames.Items.Add(oListViewItem)
+ bAddItem = True
Else
If oApp.Name.ToLower.Contains(sFilter.ToLower) Or oApp.TrueProcess.ToLower.Contains(sFilter.ToLower) Or sTags.ToLower.Contains(sFilter.ToLower) Then
- lstGames.Items.Add(oListViewItem)
+ bAddItem = True
End If
End If
+
+ If bAddItem Then
+ If oListViewItem.Checked Then bResetSelectAll = True
+ lstGames.Items.Add(oListViewItem)
+ End If
Next
- lstGames.ListViewItemSorter = New ListViewItemComparer(0)
+ 'Change the status of the "Select All" checkbox depending on the status of the items filter results. Set loading flag so we don't trigger any events
+ bIsLoading = True
+ If Not bResetSelectAll And bSelectAll Then
+ bSelectAll = False
+ chkSelectAll.Checked = False
+ ElseIf bResetSelectAll And Not bSelectAll Then
+ bSelectAll = True
+ chkSelectAll.Checked = True
+ End If
+ bIsLoading = False
+
+ lstGames.ListViewItemSorter = New ListViewItemComparer(iCurrentSort)
lstGames.EndUpdate()
UpdateSelected()
- lblGames.Text = mgrCommon.FormatString(frmAdvancedImport_NewConfigs, lstGames.Items.Count)
+
+ If txtFilter.Text = String.Empty Then
+ lblGames.Text = mgrCommon.FormatString(frmAdvancedImport_Configs, lstGames.Items.Count)
+ Else
+ lblGames.Text = mgrCommon.FormatString(frmAdvancedImport_Configs, lstGames.Items.Count) & " " & frmAdvancedImport_Filtered
+ End If
+
Cursor.Current = Cursors.Default
End Sub
@@ -97,17 +135,8 @@ Public Class frmAdvancedImport
tmFilterTimer.Enabled = False
End Sub
- Private Sub BuildList()
- Dim oData As ListViewItem
-
- For i As Integer = 0 To lstGames.CheckedItems.Count - 1
- oData = lstGames.Items(i)
- FinalData.Add(oData.Tag, ImportData(oData.Tag))
- Next
- End Sub
-
Private Sub UpdateSelected()
- lblSelected.Text = mgrCommon.FormatString(frmAdvancedImport_Selected, lstGames.CheckedItems.Count)
+ lblSelected.Text = mgrCommon.FormatString(frmAdvancedImport_Selected, FinalData.Count)
End Sub
Private Sub frmAdvancedImport_Load(sender As Object, e As EventArgs) Handles MyBase.Load
@@ -123,7 +152,10 @@ Public Class frmAdvancedImport
End Sub
Private Sub lstGames_ItemChecked(sender As Object, e As ItemCheckedEventArgs) Handles lstGames.ItemChecked
- If Not bIsLoading Then UpdateSelected()
+ SaveChecked(e.Item)
+ If Not bIsLoading Then
+ UpdateSelected()
+ End If
End Sub
Private Sub btnCancel_Click(sender As Object, e As EventArgs) Handles btnCancel.Click
@@ -131,13 +163,13 @@ Public Class frmAdvancedImport
End Sub
Private Sub btnImport_Click(sender As Object, e As EventArgs) Handles btnImport.Click
- BuildList()
- If ImportData.Count > 0 Then Me.DialogResult = Windows.Forms.DialogResult.OK
+ If FinalData.Count > 0 Then Me.DialogResult = Windows.Forms.DialogResult.OK
Me.Close()
End Sub
Private Sub lstGames_ColumnClick(sender As Object, e As ColumnClickEventArgs) Handles lstGames.ColumnClick
- lstGames.ListViewItemSorter = New ListViewItemComparer(e.Column)
+ iCurrentSort = e.Column
+ lstGames.ListViewItemSorter = New ListViewItemComparer(e.Column)
End Sub
Private Sub txtFilter_TextChanged(sender As Object, e As EventArgs) Handles txtFilter.TextChanged
diff --git a/GBM/My Project/Resources.Designer.vb b/GBM/My Project/Resources.Designer.vb
index a2545c8..67711e5 100644
--- a/GBM/My Project/Resources.Designer.vb
+++ b/GBM/My Project/Resources.Designer.vb
@@ -736,7 +736,7 @@ Namespace My.Resources
End Property
'''
- ''' Looks up a localized string similar to Process.
+ ''' Looks up a localized string similar to Monitored Process.
'''
Friend ReadOnly Property frmAdvancedImport_ColumnProcess() As String
Get
@@ -753,6 +753,24 @@ Namespace My.Resources
End Get
End Property
+ '''
+ ''' Looks up a localized string similar to Configurations ([PARAM]).
+ '''
+ Friend ReadOnly Property frmAdvancedImport_Configs() As String
+ Get
+ Return ResourceManager.GetString("frmAdvancedImport_Configs", resourceCulture)
+ End Get
+ End Property
+
+ '''
+ ''' Looks up a localized string similar to [Filtered].
+ '''
+ Friend ReadOnly Property frmAdvancedImport_Filtered() As String
+ Get
+ Return ResourceManager.GetString("frmAdvancedImport_Filtered", resourceCulture)
+ End Get
+ End Property
+
'''
''' Looks up a localized string similar to Import Game Configurations.
'''
@@ -763,7 +781,7 @@ Namespace My.Resources
End Property
'''
- ''' Looks up a localized string similar to Search:.
+ ''' Looks up a localized string similar to Filter:.
'''
Friend ReadOnly Property frmAdvancedImport_lblFilter() As String
Get
@@ -772,16 +790,7 @@ Namespace My.Resources
End Property
'''
- ''' Looks up a localized string similar to [PARAM] configurations available.
- '''
- Friend ReadOnly Property frmAdvancedImport_NewConfigs() As String
- Get
- Return ResourceManager.GetString("frmAdvancedImport_NewConfigs", resourceCulture)
- End Get
- End Property
-
- '''
- ''' Looks up a localized string similar to [PARAM] Selected.
+ ''' Looks up a localized string similar to Selected ([PARAM]).
'''
Friend ReadOnly Property frmAdvancedImport_Selected() As String
Get
diff --git a/GBM/My Project/Resources.resx b/GBM/My Project/Resources.resx
index 633b177..ac7abb7 100644
--- a/GBM/My Project/Resources.resx
+++ b/GBM/My Project/Resources.resx
@@ -871,11 +871,11 @@
Import Game Configurations
-
- [PARAM] configurations available
+
+ Configurations ([PARAM])
- [PARAM] Selected
+ Selected ([PARAM])
&Cancel
@@ -1571,15 +1571,18 @@
PNG files (*.png)|*.png
- Search:
+ Filter:
Name
- Process
+ Monitored Process
Tags
+
+ [Filtered]
+
\ No newline at end of file