qstbak/Questionable/Questionable.Windows/OneTimeSetupWindow.cs
2025-10-09 07:47:19 +10:00

74 lines
2.3 KiB
C#

using Dalamud.Bindings.ImGui;
using Dalamud.Interface;
using Dalamud.Interface.Colors;
using Dalamud.Interface.Components;
using Dalamud.Interface.Utility.Raii;
using Dalamud.Plugin;
using LLib.ImGui;
using Microsoft.Extensions.Logging;
using Questionable.Windows.ConfigComponents;
namespace Questionable.Windows;
internal sealed class OneTimeSetupWindow : LWindow
{
private readonly PluginConfigComponent _pluginConfigComponent;
private readonly Configuration _configuration;
private readonly IDalamudPluginInterface _pluginInterface;
private readonly ILogger<OneTimeSetupWindow> _logger;
public OneTimeSetupWindow(PluginConfigComponent pluginConfigComponent, Configuration configuration, IDalamudPluginInterface pluginInterface, ILogger<OneTimeSetupWindow> logger)
: base("Questionable Setup###QuestionableOneTimeSetup", ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.AlwaysAutoResize | ImGuiWindowFlags.NoSavedSettings, forceMainWindow: true)
{
_pluginConfigComponent = pluginConfigComponent;
_configuration = configuration;
_pluginInterface = pluginInterface;
_logger = logger;
base.RespectCloseHotkey = false;
base.ShowCloseButton = false;
base.AllowPinning = false;
base.AllowClickthrough = false;
base.IsOpen = !_configuration.IsPluginSetupComplete();
_logger.LogInformation("One-time setup needed: {IsOpen}", base.IsOpen);
}
public override void DrawContent()
{
_pluginConfigComponent.Draw(out var allRequiredInstalled);
ImGui.Spacing();
ImGui.Separator();
ImGui.Spacing();
if (allRequiredInstalled)
{
using (ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.ParsedGreen))
{
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Check, "Finish Setup"))
{
_logger.LogInformation("Marking setup as complete");
_configuration.MarkPluginSetupComplete();
_pluginInterface.SavePluginConfig(_configuration);
base.IsOpen = false;
}
}
}
else
{
using (ImRaii.Disabled())
{
using (ImRaii.PushColor(ImGuiCol.Text, ImGuiColors.DalamudRed))
{
ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Check, "Missing required plugins");
}
}
}
ImGui.SameLine();
if (ImGuiComponents.IconButtonWithText(FontAwesomeIcon.Times, "Close window & don't enable Questionable"))
{
_logger.LogWarning("Closing window without all required plugins installed");
base.IsOpen = false;
}
}
}