From 236c22be5cf13ea85c5a29b035ffc994e40b831a Mon Sep 17 00:00:00 2001 From: Rainer Kartmann <rainer.kartmann@kit.edu> Date: Thu, 12 Aug 2021 07:46:02 +0200 Subject: [PATCH] Fix types not showing in memory tree widget --- .../libraries/armem_gui/memory/TreeWidget.cpp | 12 +++++++----- .../RobotAPI/libraries/armem_gui/memory/TreeWidget.h | 4 ++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.cpp b/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.cpp index 49c9b9807..314cd4d4a 100644 --- a/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.cpp +++ b/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.cpp @@ -299,16 +299,18 @@ namespace armarx::armem::gui::memory (void) level, (void) item; } - template <class... T> - void TreeWidget::updateContainerItem( - const base::detail::MemoryContainerBase<T...>& container, QTreeWidgetItem* item) + template <class ContainerT> + void TreeWidget::updateContainerItem(const ContainerT& container, QTreeWidgetItem* item) { + ARMARX_IMPORTANT << "Updating container " << container.id(); updateItemItem(container, item); item->setText(int(Columns::SIZE), QString::number(container.size())); - if constexpr(std::is_base_of_v<base::detail::AronTyped, base::detail::MemoryContainerBase<T...>>) + // Does not work + if constexpr(std::is_base_of_v<base::detail::AronTyped, ContainerT>) { - const base::detail::AronTyped& cast = dynamic_cast<const base::detail::AronTyped&>(container); + ARMARX_IMPORTANT << "Updating type of container " << container.id(); + const base::detail::AronTyped& cast = static_cast<const base::detail::AronTyped&>(container); std::string typeName; if (cast.aronType()) { diff --git a/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.h b/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.h index 94b1f6a4e..75f56c9ac 100644 --- a/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.h +++ b/source/RobotAPI/libraries/armem_gui/memory/TreeWidget.h @@ -71,8 +71,8 @@ namespace armarx::armem::gui::memory QTreeWidgetItem* makeItem(const std::string& key, const std::string& levelName, const MemoryID& id); void updateItemItem(const armem::base::detail::MemoryItem& level, QTreeWidgetItem* item); - template <class... T> - void updateContainerItem(const armem::base::detail::MemoryContainerBase<T...>& container, QTreeWidgetItem* item); + template <class ContainerT> + void updateContainerItem(const ContainerT& container, QTreeWidgetItem* item); private: -- GitLab