From 74eeb2249711ad5e89a6a2d7614c3577c9906f48 Mon Sep 17 00:00:00 2001
From: Peter Albrecht <albrecpe@gmail.com>
Date: Thu, 14 Dec 2023 16:05:32 +0100
Subject: [PATCH] Implemented stopAllExecutions

---
 .../SkillManagerMonitorWidgetController.cpp      |  1 -
 .../executions/SkillExecutionTreeWidget.cpp      | 16 ++++++++++++++++
 .../executions/SkillExecutionTreeWidgetItem.cpp  |  6 ++++++
 .../executions/SkillExecutionTreeWidgetItem.h    |  2 ++
 4 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
index 8e8e8e655..47234be7d 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
@@ -32,7 +32,6 @@
 #include <RobotAPI/libraries/skills/core/Skill.h>
 
 #include "aronTreeWidget/visitors/AronTreeWidgetConverter.h"
-#include "aronTreeWidget/visitors/AronTreeWidgetCreator.h"
 #include "aronTreeWidget/visitors/AronTreeWidgetModalCreator.h"
 
 // modals
diff --git a/source/RobotAPI/libraries/skills_gui/executions/SkillExecutionTreeWidget.cpp b/source/RobotAPI/libraries/skills_gui/executions/SkillExecutionTreeWidget.cpp
index dd1f601f1..9ca3e71ab 100644
--- a/source/RobotAPI/libraries/skills_gui/executions/SkillExecutionTreeWidget.cpp
+++ b/source/RobotAPI/libraries/skills_gui/executions/SkillExecutionTreeWidget.cpp
@@ -67,6 +67,22 @@ namespace armarx::skills::gui
         this->memory->startExecutionWithParams(currentExecutionId.skillId, params);
     }
 
+    void
+    SkillExecutionTreeWidget::stopAllExecutions()
+    {
+        for (ssize_t i = 0; i < this->topLevelItemCount(); ++i)
+        {
+            auto item = dynamic_cast<SkillExecutionTreeWidgetItem*>(this->topLevelItem(i));
+
+            if (!item)
+            {
+                continue;
+            }
+
+            memory->stopExecution(item->getExecutionId());
+        }
+    }
+
     void
     SkillExecutionTreeWidget::refresh()
     {
diff --git a/source/RobotAPI/libraries/skills_gui/executions/SkillExecutionTreeWidgetItem.cpp b/source/RobotAPI/libraries/skills_gui/executions/SkillExecutionTreeWidgetItem.cpp
index 735042b14..924aea9b5 100644
--- a/source/RobotAPI/libraries/skills_gui/executions/SkillExecutionTreeWidgetItem.cpp
+++ b/source/RobotAPI/libraries/skills_gui/executions/SkillExecutionTreeWidgetItem.cpp
@@ -28,4 +28,10 @@ namespace armarx::skills::gui
         }
         return nullptr;
     }
+
+    SkillExecutionID
+    SkillExecutionTreeWidgetItem::getExecutionId()
+    {
+        return this->executionId;
+    }
 } // namespace armarx::skills::gui
diff --git a/source/RobotAPI/libraries/skills_gui/executions/SkillExecutionTreeWidgetItem.h b/source/RobotAPI/libraries/skills_gui/executions/SkillExecutionTreeWidgetItem.h
index 270ef0321..e46b2eb72 100644
--- a/source/RobotAPI/libraries/skills_gui/executions/SkillExecutionTreeWidgetItem.h
+++ b/source/RobotAPI/libraries/skills_gui/executions/SkillExecutionTreeWidgetItem.h
@@ -27,6 +27,8 @@ namespace armarx::skills::gui
         SearchRecursiveForMatch(SkillExecutionTreeWidgetItem* haystack,
                                 const skills::SkillExecutionID& needle);
 
+        skills::SkillExecutionID getExecutionId();
+
     protected:
         skills::SkillExecutionID executionId;
 
-- 
GitLab