From e086afe2a816a56c29b1182743251db7a53cf9d4 Mon Sep 17 00:00:00 2001 From: JonKazama-Hellion Date: Sat, 2 May 2026 16:54:23 +0200 Subject: [PATCH] feat(settings-refactor): populate Window tab with hide, inactivity, frame, tooltips --- ChatTwo/Resources/HellionStrings.Designer.cs | 6 + ChatTwo/Resources/HellionStrings.de.resx | 14 ++ ChatTwo/Resources/HellionStrings.resx | 14 ++ ChatTwo/Ui/SettingsTabs/Window.cs | 141 ++++++++++++++++++- 4 files changed, 173 insertions(+), 2 deletions(-) diff --git a/ChatTwo/Resources/HellionStrings.Designer.cs b/ChatTwo/Resources/HellionStrings.Designer.cs index 3f6d3a7..f50e2e8 100644 --- a/ChatTwo/Resources/HellionStrings.Designer.cs +++ b/ChatTwo/Resources/HellionStrings.Designer.cs @@ -215,4 +215,10 @@ internal class HellionStrings internal static string Settings_Appearance_Fonts_Heading => Get(nameof(Settings_Appearance_Fonts_Heading)); internal static string Settings_Appearance_Colours_Heading => Get(nameof(Settings_Appearance_Colours_Heading)); internal static string Settings_Appearance_Timestamps_Heading => Get(nameof(Settings_Appearance_Timestamps_Heading)); + + // Hellion Chat — Window-Tab section headings + internal static string Settings_Window_Hide_Heading => Get(nameof(Settings_Window_Hide_Heading)); + internal static string Settings_Window_InactivityHide_Heading => Get(nameof(Settings_Window_InactivityHide_Heading)); + internal static string Settings_Window_Frame_Heading => Get(nameof(Settings_Window_Frame_Heading)); + internal static string Settings_Window_Tooltips_Heading => Get(nameof(Settings_Window_Tooltips_Heading)); } diff --git a/ChatTwo/Resources/HellionStrings.de.resx b/ChatTwo/Resources/HellionStrings.de.resx index 0598225..2bf579c 100644 --- a/ChatTwo/Resources/HellionStrings.de.resx +++ b/ChatTwo/Resources/HellionStrings.de.resx @@ -491,4 +491,18 @@ Zeitstempel + + + + Verstecken + + + Inaktivitäts-Verstecken + + + Fenster-Rahmen + + + Tooltips + diff --git a/ChatTwo/Resources/HellionStrings.resx b/ChatTwo/Resources/HellionStrings.resx index f58438d..f14e346 100644 --- a/ChatTwo/Resources/HellionStrings.resx +++ b/ChatTwo/Resources/HellionStrings.resx @@ -491,4 +491,18 @@ Timestamps + + + + Hide + + + Inactivity Hide + + + Window Frame + + + Tooltips + diff --git a/ChatTwo/Ui/SettingsTabs/Window.cs b/ChatTwo/Ui/SettingsTabs/Window.cs index 480ccf0..109bc78 100644 --- a/ChatTwo/Ui/SettingsTabs/Window.cs +++ b/ChatTwo/Ui/SettingsTabs/Window.cs @@ -1,6 +1,5 @@ using ChatTwo.Resources; using ChatTwo.Util; -using Dalamud.Interface.Utility; using Dalamud.Interface.Utility.Raii; using Dalamud.Bindings.ImGui; @@ -21,6 +20,144 @@ internal sealed class Window : ISettingsTab public void Draw(bool changed) { - // Settings ziehen in Plan-Task 5 ein. + DrawHideSection(); + ImGui.Spacing(); + DrawInactivityHideSection(); + ImGui.Spacing(); + DrawFrameSection(); + ImGui.Spacing(); + DrawTooltipsSection(); + } + + private void DrawHideSection() + { + using var tree = ImRaii.TreeNode(HellionStrings.Settings_Window_Hide_Heading); + if (!tree.Success) + { + return; + } + + using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false)) + { + ImGui.Checkbox(Language.Options_HideChat_Name, ref Mutable.HideChat); + ImGuiUtil.HelpMarker(Language.Options_HideChat_Description); + + ImGui.Checkbox(Language.Options_HideDuringCutscenes_Name, ref Mutable.HideDuringCutscenes); + ImGuiUtil.HelpMarker(string.Format(Language.Options_HideDuringCutscenes_Description, Plugin.PluginName)); + + ImGui.Checkbox(Language.Options_HideWhenNotLoggedIn_Name, ref Mutable.HideWhenNotLoggedIn); + ImGuiUtil.HelpMarker(string.Format(Language.Options_HideWhenNotLoggedIn_Description, Plugin.PluginName)); + + ImGui.Checkbox(Language.Options_HideWhenUiHidden_Name, ref Mutable.HideWhenUiHidden); + ImGuiUtil.HelpMarker(string.Format(Language.Options_HideWhenUiHidden_Description, Plugin.PluginName)); + + ImGui.Checkbox(Language.Options_HideInLoadingScreens_Name, ref Mutable.HideInLoadingScreens); + ImGuiUtil.HelpMarker(string.Format(Language.Options_HideInLoadingScreens_Description, Plugin.PluginName)); + + ImGui.Checkbox(Language.Options_HideInBattle_Name, ref Mutable.HideInBattle); + ImGuiUtil.HelpMarker(Language.Options_HideInBattle_Description); + } + } + + private void DrawInactivityHideSection() + { + using var tree = ImRaii.TreeNode(HellionStrings.Settings_Window_InactivityHide_Heading); + if (!tree.Success) + { + return; + } + + using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false)) + { + ImGui.Checkbox(Language.Options_HideWhenInactive_Name, ref Mutable.HideWhenInactive); + ImGuiUtil.HelpMarker(Language.Options_HideWhenInactive_Description); + + if (!Mutable.HideWhenInactive) + { + return; + } + + ImGuiUtil.InputIntVertical(Language.Options_InactivityHideTimeout_Name, Language.Options_InactivityHideTimeout_Description, ref Mutable.InactivityHideTimeout, 1, 10); + // Untergrenze von 2 Sekunden gegen Selbst-Soft-Lock. + Mutable.InactivityHideTimeout = Math.Max(2, Mutable.InactivityHideTimeout); + + using (ImRaii.Disabled(Mutable.HideInBattle)) + { + ImGui.Checkbox(Language.Options_InactivityHideActiveDuringBattle_Name, ref Mutable.InactivityHideActiveDuringBattle); + ImGuiUtil.HelpMarker(Language.Options_InactivityHideActiveDuringBattle_Description); + } + + using var channelTree = ImRaii.TreeNode(Language.Options_InactivityHideChannels_Name); + if (!channelTree.Success) + { + return; + } + + if (ImGuiUtil.CtrlShiftButton(Language.Options_InactivityHideChannels_All_Label, Language.Options_InactivityHideChannels_Button_Tooltip)) + { + Mutable.InactivityHideChannelsV2 = TabsUtil.AllChannels(); + Mutable.InactivityHideExtraChatAll = true; + Mutable.InactivityHideExtraChatChannels = []; + } + + ImGui.SameLine(); + if (ImGuiUtil.CtrlShiftButton(Language.Options_InactivityHideChannels_None_Label, Language.Options_InactivityHideChannels_Button_Tooltip)) + { + Mutable.InactivityHideChannelsV2 = []; + Mutable.InactivityHideExtraChatAll = false; + Mutable.InactivityHideExtraChatChannels = []; + } + + ImGui.Spacing(); + + ImGuiUtil.ChannelSelector(Language.Options_Tabs_Channels, Mutable.InactivityHideChannelsV2); + ImGuiUtil.ExtraChatSelector(Language.Options_Tabs_ExtraChatChannels, ref Mutable.InactivityHideExtraChatAll, Mutable.InactivityHideExtraChatChannels); + } + } + + private void DrawFrameSection() + { + using var tree = ImRaii.TreeNode(HellionStrings.Settings_Window_Frame_Heading); + if (!tree.Success) + { + return; + } + + using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false)) + { + ImGui.Checkbox(Language.Options_CanMove_Name, ref Mutable.CanMove); + + ImGui.Checkbox(Language.Options_CanResize_Name, ref Mutable.CanResize); + + ImGui.Checkbox(Language.Options_ShowTitleBar_Name, ref Mutable.ShowTitleBar); + + ImGui.Checkbox(Language.Options_ShowPopOutTitleBar_Name, ref Mutable.ShowPopOutTitleBar); + + ImGui.Checkbox(Language.Options_ShowHideButton_Name, ref Mutable.ShowHideButton); + ImGuiUtil.HelpMarker(Language.Options_ShowHideButton_Description); + + ImGui.Checkbox(Language.Options_SidebarTabView_Name, ref Mutable.SidebarTabView); + ImGuiUtil.HelpMarker(string.Format(Language.Options_SidebarTabView_Description, Plugin.PluginName)); + } + } + + private void DrawTooltipsSection() + { + using var tree = ImRaii.TreeNode(HellionStrings.Settings_Window_Tooltips_Heading); + if (!tree.Success) + { + return; + } + + using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false)) + { + ImGui.Checkbox(Language.Options_NativeItemTooltips_Name, ref Mutable.NativeItemTooltips); + ImGuiUtil.HelpMarker(string.Format(Language.Options_NativeItemTooltips_Description, Plugin.PluginName)); + + if (Mutable.NativeItemTooltips) + { + ImGuiUtil.DragFloatVertical(Language.Options_TooltipOffset_Name, Language.Options_TooltipOffset_Desc, ref Mutable.TooltipOffset, 1, 0f, 400f, $"{Mutable.TooltipOffset:N0}px", ImGuiSliderFlags.AlwaysClamp); + } + } } }