mirror of
https://github.com/aelurum/AssetStudio.git
synced 2025-07-14 02:54:16 -04:00
Add exclude mode to asset list filter
This commit is contained in:
@ -212,6 +212,7 @@ namespace AssetStudioGUI
|
||||
{
|
||||
if (assetsManager.assetsFileList.Count == 0)
|
||||
{
|
||||
filterExcludeModeCheck(assetsManager.assetsFileList.Count);
|
||||
StatusStripUpdate("No Unity file can be loaded.");
|
||||
return;
|
||||
}
|
||||
@ -250,6 +251,8 @@ namespace AssetStudioGUI
|
||||
typeMap.Clear();
|
||||
classesListView.EndUpdate();
|
||||
|
||||
filterExcludeModeCheck(exportableAssets.Count);
|
||||
|
||||
var types = exportableAssets.Select(x => x.Type).Distinct().OrderBy(x => x.ToString()).ToArray();
|
||||
foreach (var type in types)
|
||||
{
|
||||
@ -1576,6 +1579,20 @@ namespace AssetStudioGUI
|
||||
return selectedAssets;
|
||||
}
|
||||
|
||||
private void filterExludeMode_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
FilterAssetList();
|
||||
}
|
||||
|
||||
private void filterExcludeModeCheck(int itemCount)
|
||||
{
|
||||
filterExcludeMode.Enabled = itemCount > 0;
|
||||
if (!filterExcludeMode.Enabled)
|
||||
{
|
||||
filterExcludeMode.Checked = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void FilterAssetList()
|
||||
{
|
||||
assetListView.BeginUpdate();
|
||||
@ -1599,10 +1616,20 @@ namespace AssetStudioGUI
|
||||
}
|
||||
if (listSearch.Text != " Filter ")
|
||||
{
|
||||
visibleAssets = visibleAssets.FindAll(
|
||||
x => x.Text.IndexOf(listSearch.Text, StringComparison.OrdinalIgnoreCase) >= 0 ||
|
||||
x.SubItems[1].Text.IndexOf(listSearch.Text, StringComparison.OrdinalIgnoreCase) >= 0 ||
|
||||
x.SubItems[3].Text.IndexOf(listSearch.Text, StringComparison.OrdinalIgnoreCase) >= 0);
|
||||
if (filterExcludeMode.Checked)
|
||||
{
|
||||
visibleAssets = visibleAssets.FindAll(
|
||||
x => x.Text.IndexOf(listSearch.Text, StringComparison.OrdinalIgnoreCase) <= 0 &&
|
||||
x.SubItems[1].Text.IndexOf(listSearch.Text, StringComparison.OrdinalIgnoreCase) <= 0 &&
|
||||
x.SubItems[3].Text.IndexOf(listSearch.Text, StringComparison.OrdinalIgnoreCase) <= 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
visibleAssets = visibleAssets.FindAll(
|
||||
x => x.Text.IndexOf(listSearch.Text, StringComparison.OrdinalIgnoreCase) >= 0 ||
|
||||
x.SubItems[1].Text.IndexOf(listSearch.Text, StringComparison.OrdinalIgnoreCase) >= 0 ||
|
||||
x.SubItems[3].Text.IndexOf(listSearch.Text, StringComparison.OrdinalIgnoreCase) >= 0);
|
||||
}
|
||||
}
|
||||
assetListView.VirtualListSize = visibleAssets.Count;
|
||||
assetListView.EndUpdate();
|
||||
|
Reference in New Issue
Block a user