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;