mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-15 13:14:17 +01:00
ResourceTree: Adjustments on filtering
This commit is contained in:
parent
5e76ab3b84
commit
d05f369a94
2 changed files with 19 additions and 11 deletions
|
|
@ -47,10 +47,8 @@ public class ResourceTreeViewer
|
||||||
|
|
||||||
public void Draw()
|
public void Draw()
|
||||||
{
|
{
|
||||||
if (ImGui.Button("Refresh Character List") || _task == null)
|
DrawControls();
|
||||||
_task = RefreshCharacterList();
|
_task ??= RefreshCharacterList();
|
||||||
|
|
||||||
DrawFilters();
|
|
||||||
|
|
||||||
using var child = ImRaii.Child("##Data");
|
using var child = ImRaii.Child("##Data");
|
||||||
if (!child)
|
if (!child)
|
||||||
|
|
@ -73,7 +71,7 @@ public class ResourceTreeViewer
|
||||||
foreach (var (tree, index) in _task.Result.WithIndex())
|
foreach (var (tree, index) in _task.Result.WithIndex())
|
||||||
{
|
{
|
||||||
var category = Classify(tree);
|
var category = Classify(tree);
|
||||||
if (!_categoryFilter.HasFlag(category) || !tree.Name.Contains(_nameFilter))
|
if (!_categoryFilter.HasFlag(category) || !tree.Name.Contains(_nameFilter, StringComparison.OrdinalIgnoreCase))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
using (var c = ImRaii.PushColor(ImGuiCol.Text, CategoryColor(category).Value()))
|
using (var c = ImRaii.PushColor(ImGuiCol.Text, CategoryColor(category).Value()))
|
||||||
|
|
@ -111,8 +109,14 @@ public class ResourceTreeViewer
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DrawFilters()
|
private void DrawControls()
|
||||||
{
|
{
|
||||||
|
var yOffset = (ChangedItemDrawer.TypeFilterIconSize.Y - ImGui.GetFrameHeight()) / 2f;
|
||||||
|
ImGui.SetCursorPosY(ImGui.GetCursorPosY() + yOffset);
|
||||||
|
|
||||||
|
if (ImGui.Button("Refresh Character List"))
|
||||||
|
_task = RefreshCharacterList();
|
||||||
|
|
||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
ImGui.Dummy(ImGuiHelpers.ScaledVector2(20, 0));
|
ImGui.Dummy(ImGuiHelpers.ScaledVector2(20, 0));
|
||||||
|
|
||||||
|
|
@ -134,7 +138,7 @@ public class ResourceTreeViewer
|
||||||
ImGui.Dummy(ImGuiHelpers.ScaledVector2(20, 0));
|
ImGui.Dummy(ImGuiHelpers.ScaledVector2(20, 0));
|
||||||
|
|
||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
_changedItemDrawer.DrawTypeFilter(ref _typeFilter);
|
_changedItemDrawer.DrawTypeFilter(ref _typeFilter, -yOffset);
|
||||||
|
|
||||||
ImGui.InputTextWithHint("##TreeNameFilter", "Filter by Character/Entity Name...", ref _nameFilter, 128);
|
ImGui.InputTextWithHint("##TreeNameFilter", "Filter by Character/Entity Name...", ref _nameFilter, 128);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,6 +52,9 @@ public class ChangedItemDrawer : IDisposable
|
||||||
private readonly Dictionary<ChangedItemIcon, IDalamudTextureWrap> _icons = new(16);
|
private readonly Dictionary<ChangedItemIcon, IDalamudTextureWrap> _icons = new(16);
|
||||||
private float _smallestIconWidth;
|
private float _smallestIconWidth;
|
||||||
|
|
||||||
|
public static Vector2 TypeFilterIconSize
|
||||||
|
=> new(2 * ImGui.GetTextLineHeight());
|
||||||
|
|
||||||
public ChangedItemDrawer(UiBuilder uiBuilder, IDataManager gameData, ITextureProvider textureProvider, CommunicatorService communicator,
|
public ChangedItemDrawer(UiBuilder uiBuilder, IDataManager gameData, ITextureProvider textureProvider, CommunicatorService communicator,
|
||||||
Configuration config)
|
Configuration config)
|
||||||
{
|
{
|
||||||
|
|
@ -146,7 +149,7 @@ public class ChangedItemDrawer : IDisposable
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var typeFilter = _config.Ephemeral.ChangedItemFilter;
|
var typeFilter = _config.Ephemeral.ChangedItemFilter;
|
||||||
if (DrawTypeFilter(ref typeFilter))
|
if (DrawTypeFilter(ref typeFilter, 0.0f))
|
||||||
{
|
{
|
||||||
_config.Ephemeral.ChangedItemFilter = typeFilter;
|
_config.Ephemeral.ChangedItemFilter = typeFilter;
|
||||||
_config.Ephemeral.Save();
|
_config.Ephemeral.Save();
|
||||||
|
|
@ -154,11 +157,11 @@ public class ChangedItemDrawer : IDisposable
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Draw a header line with the different icon types to filter them. </summary>
|
/// <summary> Draw a header line with the different icon types to filter them. </summary>
|
||||||
public bool DrawTypeFilter(ref ChangedItemIcon typeFilter)
|
public bool DrawTypeFilter(ref ChangedItemIcon typeFilter, float yOffset)
|
||||||
{
|
{
|
||||||
var ret = false;
|
var ret = false;
|
||||||
using var _ = ImRaii.PushId("ChangedItemIconFilter");
|
using var _ = ImRaii.PushId("ChangedItemIconFilter");
|
||||||
var size = new Vector2(2 * ImGui.GetTextLineHeight());
|
var size = TypeFilterIconSize;
|
||||||
using var style = ImRaii.PushStyle(ImGuiStyleVar.ItemSpacing, Vector2.Zero);
|
using var style = ImRaii.PushStyle(ImGuiStyleVar.ItemSpacing, Vector2.Zero);
|
||||||
var order = new[]
|
var order = new[]
|
||||||
{
|
{
|
||||||
|
|
@ -186,6 +189,7 @@ public class ChangedItemDrawer : IDisposable
|
||||||
var ret = false;
|
var ret = false;
|
||||||
var icon = _icons[type];
|
var icon = _icons[type];
|
||||||
var flag = typeFilter.HasFlag(type);
|
var flag = typeFilter.HasFlag(type);
|
||||||
|
ImGui.SetCursorPosY(ImGui.GetCursorPosY() + yOffset);
|
||||||
ImGui.Image(icon.ImGuiHandle, size, Vector2.Zero, Vector2.One, flag ? Vector4.One : new Vector4(0.6f, 0.3f, 0.3f, 1f));
|
ImGui.Image(icon.ImGuiHandle, size, Vector2.Zero, Vector2.One, flag ? Vector4.One : new Vector4(0.6f, 0.3f, 0.3f, 1f));
|
||||||
if (ImGui.IsItemClicked(ImGuiMouseButton.Left))
|
if (ImGui.IsItemClicked(ImGuiMouseButton.Left))
|
||||||
{
|
{
|
||||||
|
|
@ -219,7 +223,7 @@ public class ChangedItemDrawer : IDisposable
|
||||||
ImGui.SameLine();
|
ImGui.SameLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
ImGui.SetCursorPosX(ImGui.GetContentRegionMax().X - size.X);
|
ImGui.SetCursorPos(new(ImGui.GetContentRegionMax().X - size.X, ImGui.GetCursorPosY() + yOffset));
|
||||||
ImGui.Image(_icons[AllFlags].ImGuiHandle, size, Vector2.Zero, Vector2.One,
|
ImGui.Image(_icons[AllFlags].ImGuiHandle, size, Vector2.Zero, Vector2.One,
|
||||||
typeFilter == 0 ? new Vector4(0.6f, 0.3f, 0.3f, 1f) :
|
typeFilter == 0 ? new Vector4(0.6f, 0.3f, 0.3f, 1f) :
|
||||||
typeFilter == AllFlags ? new Vector4(0.75f, 0.75f, 0.75f, 1f) : new Vector4(0.5f, 0.5f, 1f, 1f));
|
typeFilter == AllFlags ? new Vector4(0.75f, 0.75f, 0.75f, 1f) : new Vector4(0.5f, 0.5f, 1f, 1f));
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue