From cca45714705a44a46a899552a29c56173730adca Mon Sep 17 00:00:00 2001 From: JonKazama-Hellion Date: Sat, 2 May 2026 16:36:52 +0200 Subject: [PATCH] feat(settings-refactor): populate General tab with input, audio, performance, language sections --- ChatTwo/Resources/HellionStrings.Designer.cs | 6 + ChatTwo/Resources/HellionStrings.de.resx | 14 ++ ChatTwo/Resources/HellionStrings.resx | 14 ++ ChatTwo/Ui/SettingsTabs/General.cs | 135 ++++++++++++++++++- 4 files changed, 168 insertions(+), 1 deletion(-) diff --git a/ChatTwo/Resources/HellionStrings.Designer.cs b/ChatTwo/Resources/HellionStrings.Designer.cs index 25e8be5..b1cb5ba 100644 --- a/ChatTwo/Resources/HellionStrings.Designer.cs +++ b/ChatTwo/Resources/HellionStrings.Designer.cs @@ -203,4 +203,10 @@ internal class HellionStrings internal static string Settings_Tab_Window => Get(nameof(Settings_Tab_Window)); internal static string Settings_Tab_Chat => Get(nameof(Settings_Tab_Chat)); internal static string Settings_Tab_Information => Get(nameof(Settings_Tab_Information)); + + // Hellion Chat — General-Tab section headings + internal static string Settings_General_Input_Heading => Get(nameof(Settings_General_Input_Heading)); + internal static string Settings_General_Audio_Heading => Get(nameof(Settings_General_Audio_Heading)); + internal static string Settings_General_Performance_Heading => Get(nameof(Settings_General_Performance_Heading)); + internal static string Settings_General_Language_Heading => Get(nameof(Settings_General_Language_Heading)); } diff --git a/ChatTwo/Resources/HellionStrings.de.resx b/ChatTwo/Resources/HellionStrings.de.resx index 848c0d7..1559d9a 100644 --- a/ChatTwo/Resources/HellionStrings.de.resx +++ b/ChatTwo/Resources/HellionStrings.de.resx @@ -463,4 +463,18 @@ Über + + + + Eingabe + + + Audio & Benachrichtigungen + + + Performance + + + Sprache & Eingabe-Hilfen + diff --git a/ChatTwo/Resources/HellionStrings.resx b/ChatTwo/Resources/HellionStrings.resx index dca59cb..78f1dbd 100644 --- a/ChatTwo/Resources/HellionStrings.resx +++ b/ChatTwo/Resources/HellionStrings.resx @@ -463,4 +463,18 @@ Information + + + + Input + + + Audio & Notifications + + + Performance + + + Language & Input Helpers + diff --git a/ChatTwo/Ui/SettingsTabs/General.cs b/ChatTwo/Ui/SettingsTabs/General.cs index ce3cab5..60ea048 100644 --- a/ChatTwo/Ui/SettingsTabs/General.cs +++ b/ChatTwo/Ui/SettingsTabs/General.cs @@ -20,6 +20,139 @@ internal sealed class General : ISettingsTab public void Draw(bool changed) { - // Settings ziehen in Plan-Task 3 ein. + DrawInputSection(); + ImGui.Spacing(); + DrawAudioSection(); + ImGui.Spacing(); + DrawPerformanceSection(); + ImGui.Spacing(); + DrawLanguageSection(); + } + + private void DrawInputSection() + { + using var tree = ImRaii.TreeNode(HellionStrings.Settings_General_Input_Heading); + if (!tree.Success) + { + return; + } + + using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false)) + { + ImGui.Checkbox(Language.Options_KeepInputFocus_Name, ref Mutable.KeepInputFocus); + ImGuiUtil.HelpMarker(Language.Options_KeepInputFocus_Description); + + ImGui.Spacing(); + ImGui.TextUnformatted(Language.Options_ChatTabForwardKeybind_Name); + ImGui.SetNextItemWidth(-1); + ImGuiUtil.KeybindInput("ChatTabForwardKeybind", ref Mutable.ChatTabForward); + + ImGui.TextUnformatted(Language.Options_ChatTabBackwardKeybind_Name); + ImGui.SetNextItemWidth(-1); + ImGuiUtil.KeybindInput("ChatTabBackwardKeybind", ref Mutable.ChatTabBackward); + } + } + + private void DrawAudioSection() + { + using var tree = ImRaii.TreeNode(HellionStrings.Settings_General_Audio_Heading); + if (!tree.Success) + { + return; + } + + using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false)) + { + ImGui.Checkbox(Language.Options_PlaySounds_Name, ref Mutable.PlaySounds); + ImGuiUtil.HelpMarker(Language.Options_PlaySounds_Description); + + ImGui.Checkbox(Language.Options_ShowNoviceNetwork_Name, ref Mutable.ShowNoviceNetwork); + ImGuiUtil.HelpMarker(Language.Options_ShowNoviceNetwork_Description); + } + } + + private void DrawPerformanceSection() + { + using var tree = ImRaii.TreeNode(HellionStrings.Settings_General_Performance_Heading); + if (!tree.Success) + { + return; + } + + using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false)) + { + if (ImGuiUtil.InputIntVertical(Language.Options_MaxLinesToShow_Name, Language.Options_MaxLinesToShow_Description, ref Mutable.MaxLinesToRender)) + { + Mutable.MaxLinesToRender = Math.Clamp(Mutable.MaxLinesToRender, 1, 10_000); + } + } + } + + private void DrawLanguageSection() + { + using var tree = ImRaii.TreeNode(HellionStrings.Settings_General_Language_Heading); + if (!tree.Success) + { + return; + } + + using (ImRaii.PushIndent(ImGui.GetStyle().IndentSpacing, false)) + { + using (var combo = ImGuiUtil.BeginComboVertical(Language.Options_Language_Name, Mutable.LanguageOverride.Name())) + { + if (combo.Success) + { + foreach (var language in Enum.GetValues()) + { + if (ImGui.Selectable(language.Name())) + { + Mutable.LanguageOverride = language; + } + } + } + } + ImGuiUtil.HelpMarker(string.Format(Language.Options_Language_Description, Plugin.PluginName)); + ImGui.Spacing(); + + using (var combo = ImGuiUtil.BeginComboVertical(Language.Options_CommandHelpSide_Name, Mutable.CommandHelpSide.Name())) + { + if (combo.Success) + { + foreach (var side in Enum.GetValues()) + { + if (ImGui.Selectable(side.Name(), Mutable.CommandHelpSide == side)) + { + Mutable.CommandHelpSide = side; + } + } + } + } + ImGuiUtil.HelpMarker(string.Format(Language.Options_CommandHelpSide_Description, Plugin.PluginName)); + ImGui.Spacing(); + + using (var combo = ImGuiUtil.BeginComboVertical(Language.Options_KeybindMode_Name, Mutable.KeybindMode.Name())) + { + if (combo.Success) + { + foreach (var mode in Enum.GetValues()) + { + if (ImGui.Selectable(mode.Name(), Mutable.KeybindMode == mode)) + { + Mutable.KeybindMode = mode; + } + + if (ImGui.IsItemHovered()) + { + ImGuiUtil.Tooltip(mode.Tooltip() ?? ""); + } + } + } + } + ImGuiUtil.HelpMarker(string.Format(Language.Options_KeybindMode_Description, Plugin.PluginName)); + ImGui.Spacing(); + + ImGui.Checkbox(Language.Options_SortAutoTranslate_Name, ref Mutable.SortAutoTranslate); + ImGuiUtil.HelpMarker(Language.Options_SortAutoTranslate_Description); + } } }