diff --git a/Dalamud/Interface/Internal/Windows/SelfTest/AgingSteps/ContextMenuAgingStep.cs b/Dalamud/Interface/Internal/Windows/SelfTest/AgingSteps/ContextMenuAgingStep.cs
index 630df5ecc..3af1834b2 100644
--- a/Dalamud/Interface/Internal/Windows/SelfTest/AgingSteps/ContextMenuAgingStep.cs
+++ b/Dalamud/Interface/Internal/Windows/SelfTest/AgingSteps/ContextMenuAgingStep.cs
@@ -20,16 +20,21 @@ namespace Dalamud.Interface.Internal.Windows.SelfTest.AgingSteps
private bool clickedItemHq;
private uint clickedItemCount;
- private string clickedPlayerName;
+ private string? clickedPlayerName;
private ushort? clickedPlayerWorld;
private ulong? clickedPlayerCid;
private uint? clickedPlayerId;
+ private bool multipleTriggerOne;
+ private bool multipleTriggerTwo;
+
private enum SubStep
{
Start,
TestItem,
TestGameObject,
+ TestSubMenu,
+ TestMultiple,
}
///
@@ -41,6 +46,8 @@ namespace Dalamud.Interface.Internal.Windows.SelfTest.AgingSteps
var contextMenu = Service.Get();
var dataMgr = Service.Get();
+ ImGui.Text(this.currentSubStep.ToString());
+
switch (this.currentSubStep)
{
case SubStep.Start:
@@ -64,6 +71,9 @@ namespace Dalamud.Interface.Internal.Windows.SelfTest.AgingSteps
else
{
ImGui.Text("Right-click an item.");
+
+ if (ImGui.Button("Skip"))
+ this.currentSubStep++;
}
break;
@@ -74,7 +84,7 @@ namespace Dalamud.Interface.Internal.Windows.SelfTest.AgingSteps
ImGui.Text($"Did you click \"{this.clickedPlayerName}\", world:{this.clickedPlayerWorld}, cid:{this.clickedPlayerCid}, id:{this.clickedPlayerId}?");
if (ImGui.Button("Yes"))
- return SelfTestStepResult.Pass;
+ this.currentSubStep++;
ImGui.SameLine();
@@ -83,10 +93,37 @@ namespace Dalamud.Interface.Internal.Windows.SelfTest.AgingSteps
}
else
{
- ImGui.Text("Right-click an item.");
+ ImGui.Text("Right-click a character.");
+
+ if (ImGui.Button("Skip"))
+ this.currentSubStep++;
}
break;
+ case SubStep.TestSubMenu:
+ if (this.multipleTriggerOne && this.multipleTriggerTwo)
+ {
+ this.currentSubStep++;
+ this.multipleTriggerOne = this.multipleTriggerTwo = false;
+ }
+ else
+ {
+ ImGui.Text("Right-click a character and select both options in the submenu.");
+
+ if (ImGui.Button("Skip"))
+ this.currentSubStep++;
+ }
+
+ break;
+
+ case SubStep.TestMultiple:
+ if (this.multipleTriggerOne && this.multipleTriggerTwo)
+ return SelfTestStepResult.Pass;
+
+ ImGui.Text("Select both options on any context menu.");
+ if (ImGui.Button("Skip"))
+ this.currentSubStep++;
+ break;
default:
throw new ArgumentOutOfRangeException();
}
@@ -107,45 +144,80 @@ namespace Dalamud.Interface.Internal.Windows.SelfTest.AgingSteps
private void ContextMenuOnContextMenuOpened(ContextMenuOpenedArgs args)
{
Log.Information("Got context menu with parent addon: {ParentAddonName}", args.ParentAddonName);
- switch (args.ParentAddonName)
+
+ switch (this.currentSubStep)
{
- case "Inventory":
- if (this.currentSubStep != SubStep.TestItem)
- return;
-
- args.Items.Add(new CustomContextMenuItem("Aging Item Test", selectedArgs =>
+ case SubStep.TestSubMenu:
+ args.Items.Add(new OpenSubContextMenuItem("Aging Submenu", openedArgs =>
{
- this.clickedItemId = args.InventoryItemContext!.Id;
- this.clickedItemHq = args.InventoryItemContext!.IsHighQuality;
- this.clickedItemCount = args.InventoryItemContext!.Count;
- Log.Warning("Clicked item: {Id} hq:{Hq} count:{Count}", this.clickedItemId, this.clickedItemHq, this.clickedItemCount);
+ openedArgs.Items.Add(new CustomContextMenuItem("Submenu Item 1", args =>
+ {
+ this.multipleTriggerOne = true;
+ }));
+
+ openedArgs.Items.Add(new CustomContextMenuItem("Submenu Item 2", args =>
+ {
+ this.multipleTriggerTwo = true;
+ }));
}));
- break;
- case null:
- case "_PartyList":
- case "ChatLog":
- case "ContactList":
- case "ContentMemberList":
- case "CrossWorldLinkshell":
- case "FreeCompany":
- case "FriendList":
- case "LookingForGroup":
- case "LinkShell":
- case "PartyMemberList":
- case "SocialList":
- if (this.currentSubStep != SubStep.TestGameObject || args.GameObjectContext == null || args.GameObjectContext.Name.IsNullOrEmpty())
- return;
-
- args.Items.Add(new CustomContextMenuItem("Aging Character Test", selectedArgs =>
+ return;
+ case SubStep.TestMultiple:
+ args.Items.Insert(0, new CustomContextMenuItem("Aging Item 1", args =>
{
- this.clickedPlayerName = args.GameObjectContext.Name!;
- this.clickedPlayerWorld = args.GameObjectContext.WorldId;
- this.clickedPlayerCid = args.GameObjectContext.ContentId;
- this.clickedPlayerId = args.GameObjectContext.Id;
-
- Log.Warning("Clicked player: {Name} world:{World} cid:{Cid} id:{Id}", this.clickedPlayerName, this.clickedPlayerWorld, this.clickedPlayerCid, this.clickedPlayerId);
+ this.multipleTriggerOne = true;
}));
+
+ args.Items.Add(new CustomContextMenuItem("Aging Item 2", args =>
+ {
+ this.multipleTriggerTwo = true;
+ }));
+
+ return;
+ default:
+ switch (args.ParentAddonName)
+ {
+ case "Inventory":
+ if (this.currentSubStep != SubStep.TestItem)
+ return;
+
+ args.Items.Add(new CustomContextMenuItem("Aging Item", selectedArgs =>
+ {
+ this.clickedItemId = args.InventoryItemContext!.Id;
+ this.clickedItemHq = args.InventoryItemContext!.IsHighQuality;
+ this.clickedItemCount = args.InventoryItemContext!.Count;
+ Log.Warning("Clicked item: {Id} hq:{Hq} count:{Count}", this.clickedItemId, this.clickedItemHq, this.clickedItemCount);
+ }));
+ break;
+
+ case null:
+ case "_PartyList":
+ case "ChatLog":
+ case "ContactList":
+ case "ContentMemberList":
+ case "CrossWorldLinkshell":
+ case "FreeCompany":
+ case "FriendList":
+ case "LookingForGroup":
+ case "LinkShell":
+ case "PartyMemberList":
+ case "SocialList":
+ if (this.currentSubStep != SubStep.TestGameObject || args.GameObjectContext == null || args.GameObjectContext.Name.IsNullOrEmpty())
+ return;
+
+ args.Items.Add(new CustomContextMenuItem("Aging Character", selectedArgs =>
+ {
+ this.clickedPlayerName = args.GameObjectContext.Name!;
+ this.clickedPlayerWorld = args.GameObjectContext.WorldId;
+ this.clickedPlayerCid = args.GameObjectContext.ContentId;
+ this.clickedPlayerId = args.GameObjectContext.Id;
+
+ Log.Warning("Clicked player: {Name} world:{World} cid:{Cid} id:{Id}", this.clickedPlayerName, this.clickedPlayerWorld, this.clickedPlayerCid, this.clickedPlayerId);
+ }));
+
+ break;
+ }
+
break;
}
}