feat(windows): add SettingsWindow skeleton (W1)
This commit is contained in:
@@ -0,0 +1,69 @@
|
|||||||
|
using System.Numerics;
|
||||||
|
using Dalamud.Bindings.ImGui;
|
||||||
|
using Dalamud.Interface.Windowing;
|
||||||
|
using Dalamud.Utility;
|
||||||
|
using HellionChat.Resources;
|
||||||
|
using HellionChat.Ui.Components.Settings;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
|
namespace HellionChat.Ui.Windows;
|
||||||
|
|
||||||
|
// `internal` to match the Plugin.SettingsWindow property in W2; `public` here
|
||||||
|
// would raise CS0053 against the internal members. Matches MainWindow shape.
|
||||||
|
internal sealed class SettingsWindow : Window
|
||||||
|
{
|
||||||
|
private readonly Plugin _plugin;
|
||||||
|
private readonly TabSidebar _sidebar;
|
||||||
|
private readonly ContentArea _content;
|
||||||
|
private readonly ThemePicker _themePicker;
|
||||||
|
private readonly ColorPicker _colorPicker;
|
||||||
|
private readonly LivePreviewPanel _livePreview;
|
||||||
|
|
||||||
|
public SettingsWindow(
|
||||||
|
Plugin plugin,
|
||||||
|
TabSidebar sidebar,
|
||||||
|
ContentArea content,
|
||||||
|
ThemePicker themePicker,
|
||||||
|
ColorPicker colorPicker,
|
||||||
|
LivePreviewPanel livePreview,
|
||||||
|
ILoggerFactory loggerFactory
|
||||||
|
)
|
||||||
|
: base($"{Language.Settings_Title.Format(Plugin.PluginName)}###chat2-settings")
|
||||||
|
{
|
||||||
|
_plugin = plugin;
|
||||||
|
_sidebar = sidebar;
|
||||||
|
_content = content;
|
||||||
|
_themePicker = themePicker;
|
||||||
|
_colorPicker = colorPicker;
|
||||||
|
_livePreview = livePreview;
|
||||||
|
_ = loggerFactory;
|
||||||
|
|
||||||
|
Size = new Vector2(720, 540);
|
||||||
|
SizeCondition = ImGuiCond.FirstUseEver;
|
||||||
|
SizeConstraints = new WindowSizeConstraints
|
||||||
|
{
|
||||||
|
MinimumSize = new Vector2(600, 400),
|
||||||
|
MaximumSize = new Vector2(float.MaxValue, float.MaxValue),
|
||||||
|
};
|
||||||
|
Flags = ImGuiWindowFlags.NoCollapse;
|
||||||
|
|
||||||
|
// Carry-over from v1.6.0 stub: Escape must not auto-close, and toggle
|
||||||
|
// events must not play default Dalamud window sounds.
|
||||||
|
RespectCloseHotkey = false;
|
||||||
|
DisableWindowSounds = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void Draw()
|
||||||
|
{
|
||||||
|
_sidebar.Draw();
|
||||||
|
ImGui.SameLine();
|
||||||
|
_content.Draw(_sidebar.ActiveTab, RenderActiveTab);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void RenderActiveTab(string tabId)
|
||||||
|
{
|
||||||
|
// M6-M12 fill these branches; skeleton renders a placeholder per tab so
|
||||||
|
// the smoke check confirms tab switching works.
|
||||||
|
ImGui.TextUnformatted($"[{tabId}] tab content lands in later task");
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user