using Dalamud.Plugin.Services;
 using Questionable.Model;
 using Questionable.Windows;
+using Questionable.Windows.QuestComponents;
 
 namespace Questionable.Controller;
 
     private readonly IChatGui _chatGui;
     private readonly QuestController _questController;
     private readonly MovementController _movementController;
+    private readonly QuickAccessButtonsComponent _quickAccessButtonsComponent;
     private readonly QuestRegistry _questRegistry;
     private readonly ConfigWindow _configWindow;
     private readonly DebugOverlay _debugOverlay;
     private readonly ITargetManager _targetManager;
     private readonly GameFunctions _gameFunctions;
 
-    public CommandHandler(ICommandManager commandManager, IChatGui chatGui, QuestController questController,
-        MovementController movementController, QuestRegistry questRegistry,
-        ConfigWindow configWindow, DebugOverlay debugOverlay, QuestWindow questWindow,
-        QuestSelectionWindow questSelectionWindow, ITargetManager targetManager, GameFunctions gameFunctions)
+    public CommandHandler(
+        ICommandManager commandManager,
+        IChatGui chatGui,
+        QuestController questController,
+        MovementController movementController,
+        QuickAccessButtonsComponent quickAccessButtonsComponent,
+        QuestRegistry questRegistry,
+        ConfigWindow configWindow,
+        DebugOverlay debugOverlay,
+        QuestWindow questWindow,
+        QuestSelectionWindow questSelectionWindow,
+        ITargetManager targetManager,
+        GameFunctions gameFunctions)
     {
         _commandManager = commandManager;
         _chatGui = chatGui;
         _questController = questController;
         _movementController = movementController;
+        _quickAccessButtonsComponent = quickAccessButtonsComponent;
         _questRegistry = questRegistry;
         _configWindow = configWindow;
         _debugOverlay = debugOverlay;
 
         _commandManager.AddHandler("/qst", new CommandInfo(ProcessCommand)
         {
-            HelpMessage = "Opens the Questing window"
+            HelpMessage = string.Join($"{Environment.NewLine}\t",
+                "Opens the Questing window",
+                "/qst config - opens the configuration window",
+                "/qst start - starts doing quests",
+                "/qst stop - stops doing quests",
+                "/qst reload - reload all quest data",
+                "/qst which - shows all quests starting with your selected target",
+                "/qst zone - shows all quests starting in the current zone (only includes quests with a known quest path, and currently visible unaccepted quests)")
         });
     }
 
                 break;
 
             case "start":
+                _questWindow.IsOpen = true;
                 _questController.ExecuteNextStep(true);
                 break;
 
                 _questController.Stop("Stop command");
                 break;
 
+            case "reload":
+                _quickAccessButtonsComponent.Reload();
+                break;
+
             case "do":
                 ConfigureDebugOverlay(parts.Skip(1).ToArray());
                 break;
                 _questSelectionWindow.OpenForCurrentZone();
                 break;
 
-            default:
+            case "":
                 _questWindow.Toggle();
                 break;
+
+            default:
+                _chatGui.PrintError($"Unknown subcommand {parts[0]}", "Questionable");
+                break;
         }
     }