Improve Filter

This commit is contained in:
Perfare 2018-04-21 15:50:13 +08:00
parent 674c634c2c
commit 546fe52ff0
2 changed files with 33 additions and 20 deletions

View File

@ -245,18 +245,9 @@ namespace AssetStudio
private void typeToolStripMenuItem_Click(object sender, EventArgs e) private void typeToolStripMenuItem_Click(object sender, EventArgs e)
{ {
var typeItem = (ToolStripMenuItem)sender; var typeItem = (ToolStripMenuItem)sender;
var show = new List<ClassIDReference>();
if (typeItem != allToolStripMenuItem) if (typeItem != allToolStripMenuItem)
{ {
allToolStripMenuItem.Checked = false; allToolStripMenuItem.Checked = false;
for (var i = 1; i < showTypeToolStripMenuItem.DropDownItems.Count; i++)
{
var item = (ToolStripMenuItem)showTypeToolStripMenuItem.DropDownItems[i];
if (item.Checked)
{
show.Add((ClassIDReference)Enum.Parse(typeof(ClassIDReference), item.Text));
}
}
} }
else if (allToolStripMenuItem.Checked) else if (allToolStripMenuItem.Checked)
{ {
@ -266,11 +257,7 @@ namespace AssetStudio
item.Checked = false; item.Checked = false;
} }
} }
assetListView.BeginUpdate(); FilterAssetList();
assetListView.SelectedIndices.Clear();
visibleAssets = allToolStripMenuItem.Checked ? exportableAssets : exportableAssets.FindAll(x => show.Contains(x.Type));
assetListView.VirtualListSize = visibleAssets.Count;
assetListView.EndUpdate();
} }
private void AssetStudioForm_KeyDown(object sender, KeyEventArgs e) private void AssetStudioForm_KeyDown(object sender, KeyEventArgs e)
@ -655,11 +642,7 @@ namespace AssetStudio
{ {
if (enableFiltering) if (enableFiltering)
{ {
assetListView.BeginUpdate(); FilterAssetList();
assetListView.SelectedIndices.Clear();
visibleAssets = exportableAssets.FindAll(ListAsset => ListAsset.Text.IndexOf(listSearch.Text, StringComparison.CurrentCultureIgnoreCase) >= 0);
assetListView.VirtualListSize = visibleAssets.Count;
assetListView.EndUpdate();
} }
} }
@ -1886,5 +1869,35 @@ namespace AssetStudio
return selectedAssets; return selectedAssets;
} }
private void FilterAssetList()
{
assetListView.BeginUpdate();
assetListView.SelectedIndices.Clear();
visibleAssets.Clear();
var show = new List<ClassIDReference>();
if (!allToolStripMenuItem.Checked)
{
for (var i = 1; i < showTypeToolStripMenuItem.DropDownItems.Count; i++)
{
var item = (ToolStripMenuItem)showTypeToolStripMenuItem.DropDownItems[i];
if (item.Checked)
{
show.Add((ClassIDReference)Enum.Parse(typeof(ClassIDReference), item.Text));
}
}
visibleAssets = exportableAssets.FindAll(x => show.Contains(x.Type));
}
else
{
visibleAssets = exportableAssets;
}
if (listSearch.Text != " Filter ")
{
visibleAssets = visibleAssets.FindAll(x => x.Text.IndexOf(listSearch.Text, StringComparison.CurrentCultureIgnoreCase) >= 0);
}
assetListView.VirtualListSize = visibleAssets.Count;
assetListView.EndUpdate();
}
} }
} }

View File

@ -319,7 +319,7 @@ namespace AssetStudio
exportableAssets.AddRange(assetsFile.exportableAssets); exportableAssets.AddRange(assetsFile.exportableAssets);
} }
visibleAssets = exportableAssets; visibleAssets = exportableAssets.ToList();
exportableAssetsHash.Clear(); exportableAssetsHash.Clear();
} }
#endregion #endregion