From 7dc34c601320659a065d53e85738644935764905 Mon Sep 17 00:00:00 2001 From: Infi Date: Fri, 1 May 2026 02:10:10 +0200 Subject: [PATCH] - Sort rows in the database by date - Add fast buttons to add/remove all channels --- ChatTwo/MessageStore.cs | 1 + ChatTwo/Ui/DbViewer.cs | 25 +++++++++++++++++++++++++ ChatTwo/Util/ImGuiUtil.cs | 24 ++++++++++++++++++++++++ 3 files changed, 50 insertions(+) diff --git a/ChatTwo/MessageStore.cs b/ChatTwo/MessageStore.cs index 8308be8..6fb5c6e 100644 --- a/ChatTwo/MessageStore.cs +++ b/ChatTwo/MessageStore.cs @@ -535,6 +535,7 @@ internal class MessageStore : IDisposable ExtraChatChannel FROM messages " + whereClause + @" + ORDER BY Date LIMIT $Offset, $OffsetCount; "; cmd.CommandTimeout = 120; // this could take a while on slow computers diff --git a/ChatTwo/Ui/DbViewer.cs b/ChatTwo/Ui/DbViewer.cs index 4c71337..b9ed676 100644 --- a/ChatTwo/Ui/DbViewer.cs +++ b/ChatTwo/Ui/DbViewer.cs @@ -13,6 +13,7 @@ using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Windowing; using Dalamud.Bindings.ImGui; using Dalamud.Game.Text.SeStringHandling.Payloads; +using Dalamud.Interface.Components; using Dalamud.Interface.ImGuiNotification; using Lumina.Data.Files; using Lumina.Text.ReadOnly; @@ -294,6 +295,30 @@ public class DbViewer : Window foreach (var (header, types) in ChatTypeExt.SortOrder) { + using var pushedId = ImRaii.PushId(header); + + if (ImGuiComponents.IconButton(FontAwesomeIcon.Check)) + { + foreach (var type in types) + SelectedChannels.TryAdd(type, (ChatSourceExt.All, ChatSourceExt.All)); + } + + if (ImGui.IsItemHovered()) + ImGui.SetTooltip("Select all"); + + ImGui.SameLine(); + + if (ImGuiComponents.IconButton(FontAwesomeIcon.Times)) + { + foreach (var type in types) + SelectedChannels.Remove(type); + } + + if (ImGui.IsItemHovered()) + ImGui.SetTooltip("Unselect all"); + + ImGui.SameLine(); + using var headerNode = ImRaii.TreeNode(header); if (!headerNode.Success) continue; diff --git a/ChatTwo/Util/ImGuiUtil.cs b/ChatTwo/Util/ImGuiUtil.cs index dd354ce..a33461c 100755 --- a/ChatTwo/Util/ImGuiUtil.cs +++ b/ChatTwo/Util/ImGuiUtil.cs @@ -550,6 +550,30 @@ internal static class ImGuiUtil foreach (var (header, types) in ChatTypeExt.SortOrder) { + using var pushedId = ImRaii.PushId(header); + + if (ImGuiComponents.IconButton(FontAwesomeIcon.Check)) + { + foreach (var type in types) + chatCodes.TryAdd(type, (ChatSourceExt.All, ChatSourceExt.All)); + } + + if (ImGui.IsItemHovered()) + ImGui.SetTooltip("Select all"); + + ImGui.SameLine(); + + if (ImGuiComponents.IconButton(FontAwesomeIcon.Times)) + { + foreach (var type in types) + chatCodes.Remove(type); + } + + if (ImGui.IsItemHovered()) + ImGui.SetTooltip("Unselect all"); + + ImGui.SameLine(); + using var headerNode = ImRaii.TreeNode(header); if (!headerNode.Success) continue;