From fe768904cdfbe236e18e473e0bfe8f1c9fa751d3 Mon Sep 17 00:00:00 2001
From: Peter Albrecht <albrecpe@gmail.com>
Date: Fri, 17 Nov 2023 14:47:44 +0100
Subject: [PATCH] Implemented new order of skill executions

---
 .../SkillManagerMonitorWidgetController.cpp   | 29 ++++---------------
 .../SkillManagerMonitorWidgetController.h     |  7 +++++
 2 files changed, 12 insertions(+), 24 deletions(-)

diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
index 24064a872..b9fa45956 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.cpp
@@ -454,9 +454,7 @@ namespace armarx
         {
             std::scoped_lock l(updateMutex);
 
-            auto currentManagerStatuses =
-                memory
-                    ->getSkillExecutionStatuses(); // we assume that there are no more than 100 new skills..
+            auto currentManagerStatuses = memory->getSkillExecutionStatuses();
 
             for (const auto& [k, v] : currentManagerStatuses)
             {
@@ -464,7 +462,7 @@ namespace armarx
                 auto statusUpdate = skills::SkillStatusUpdate::FromIce(v);
 
                 // update maps
-                skillStatusUpdates.insert_or_assign(executionId, statusUpdate);
+                skillStatusUpdates[executionId] = statusUpdate;
                 //skillExecutionParams.insert_or_assign(executionId,
                 //                                      statusUpdate.usedParameterization);
 
@@ -487,24 +485,6 @@ namespace armarx
                             }
                         }
 
-                        /*
-                        // update values
-                        //found->setText(3,
-                        //               QString::fromStdString(
-                        //                   statusUpdate.hasBeenConstructed() ? " yes " : " no "));
-                        found->setText(4,
-                                       QString::fromStdString(
-                                           statusUpdate.hasBeenInitialized() ? " yes " : " no "));
-                        found->setText(5,
-                                       QString::fromStdString(
-                                           statusUpdate.hasBeenPrepared() ? " yes " : " no "));
-                        found->setText(6,
-                                       QString::fromStdString(
-                                           statusUpdate.hasBeenRunning() ? " yes " : " no "));
-                        found->setText(7,
-                                       QString::fromStdString(
-                                           statusUpdate.hasBeenTerminated() ? " (\xfb) " : ""));
-                        */
                         break;
                     }
                 }
@@ -512,8 +492,7 @@ namespace armarx
                 if (!found)
                 {
                     // TODO: Sort to executor!
-                    auto item = new SkillExecutionInfoTreeWidgetItem(
-                        executionId, widget.treeWidgetSkillExecutions);
+                    auto item = new SkillExecutionInfoTreeWidgetItem(executionId);
 
                     item->setText(0,
                                   QString::fromStdString(
@@ -527,6 +506,8 @@ namespace armarx
                             item->setText(3, QString::fromStdString(i.second));
                         }
                     }
+
+                    widget.treeWidgetSkillExecutions->insertTopLevelItem(0, item);
                 }
             }
         }
diff --git a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h
index 8aa3e4720..f3509e228 100644
--- a/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h
+++ b/source/RobotAPI/gui-plugins/SkillManagerPlugin/SkillManagerMonitorWidgetController.h
@@ -75,6 +75,13 @@ namespace armarx
         {
         }
 
+        // After constructing an item, it must be manually inserted into the tree!
+        SkillExecutionInfoTreeWidgetItem(const skills::SkillExecutionID& id) : executionId(id)
+        {
+        }
+
+        // When using this constructor, the new item will be _appended_ to the bottom of the tree!
+        // Use with care.
         SkillExecutionInfoTreeWidgetItem(const skills::SkillExecutionID& id, QTreeWidget* parent) :
             QTreeWidgetItem(parent), executionId(id)
         {
-- 
GitLab