using System; using System.Collections.Generic; using System.Numerics; using System.Text; using Dalamud.Bindings.ImGui; using Dalamud.Interface.Utility.Raii; using Dalamud.Interface.Windowing; using Dalamud.Plugin; using Dalamud.Plugin.Services; using LLib.ImGui; using Questionable.Controller; using Questionable.Functions; using Questionable.Model.Questing; using Questionable.Windows.QuestComponents; using Questionable.Windows.Utils; namespace Questionable.Windows; internal sealed class PriorityWindow : LWindow { public const string ClipboardPrefix = "qst:priority:"; public const string LegacyClipboardPrefix = "qst:v1:"; public const char ClipboardSeparator = ';'; private readonly ManualPriorityComponent _manualPriorityComponent; private readonly PresetBuilderComponent _presetBuilderComponent; public PriorityWindow(QuestController questController, QuestFunctions questFunctions, QuestSelector questSelector, QuestTooltipComponent questTooltipComponent, PresetBuilderComponent presetBuilderComponent, UiUtils uiUtils, IChatGui chatGui, IDalamudPluginInterface pluginInterface) : base("Quest Priority###QuestionableQuestPriority") { _manualPriorityComponent = new ManualPriorityComponent(questController, questFunctions, questSelector, questTooltipComponent, uiUtils, chatGui, pluginInterface); _presetBuilderComponent = presetBuilderComponent; base.Size = new Vector2(500f, 500f); base.SizeCondition = ImGuiCond.Once; base.SizeConstraints = new WindowSizeConstraints { MinimumSize = new Vector2(615f, 500f), MaximumSize = new Vector2(800f, 1000f) }; } public override void DrawContent() { using ImRaii.IEndObject endObject = ImRaii.TabBar("PriorityTabs"); if (!endObject) { return; } using (ImRaii.IEndObject endObject2 = ImRaii.TabItem("Manual Priority")) { if (endObject2) { _manualPriorityComponent.Draw(); } } using ImRaii.IEndObject endObject3 = ImRaii.TabItem("Quest Presets"); if (endObject3) { _presetBuilderComponent.Draw(); } } public static List DecodeQuestPriority(string clipboardText) { List list = new List(); try { if (!string.IsNullOrEmpty(clipboardText)) { string text = null; if (clipboardText.StartsWith("qst:priority:", StringComparison.InvariantCulture)) { text = "qst:priority:"; } else if (clipboardText.StartsWith("qst:v1:", StringComparison.InvariantCulture)) { text = "qst:v1:"; } if (text != null) { clipboardText = clipboardText.Substring(text.Length); string[] array = Encoding.UTF8.GetString(Convert.FromBase64String(clipboardText)).Split(';'); for (int i = 0; i < array.Length; i++) { ElementId item = ElementId.FromString(array[i]); list.Add(item); } } } } catch (Exception) { list.Clear(); } return list; } }