From b956ae97b9f867440efe335f08e5d21ac1420613 Mon Sep 17 00:00:00 2001 From: Raul Radu <raul.radu@mail.polimi.it> Date: Tue, 23 Apr 2024 19:04:47 +0200 Subject: [PATCH] [Code][Not Working] Fixed compilation issues with c++ stl and qt stuff Code compiles but does not link with make (qmake + make) I had issues compiling with CMake due to configuration issues with qt libraries and this needs further investigation on my side (Windows 11 with qt's mingw). --- CMakeLists.txt | 3 +- SkywardHub.pro | 7 +- .../ErrorDisplayer/ErrorDisplayer.cpp | 14 +--- .../ErrorDisplayer/ErrorDisplayer.h | 4 +- .../FilterSelector/FilterSelector.cpp | 6 +- .../Core/MessageBroker/MessageBroker.cpp | 11 +-- src/shared/Core/MessageBroker/MessageBroker.h | 13 +-- src/shared/Core/MessageBroker/Subscription.h | 14 ++-- src/shared/Core/SkywardHubCore.cpp | 12 +-- src/shared/Core/SkywardHubCore.h | 7 +- src/shared/Core/Window/Window.cpp | 4 +- src/shared/Core/Window/Window.h | 2 + src/shared/Modules/CommandPad/CommandPad.h | 2 +- .../Modules/CommandPad/MessageFormElement.cpp | 84 ++++++++++--------- .../Modules/CommandPad/MessageFormElement.h | 19 +++-- src/shared/Modules/CommandPad/MessagesList.h | 44 +++++----- .../CompactCommandPad/CommandSelector.cpp | 3 +- .../CompactCommandPad/CommandSelector.h | 6 +- .../CompactCommandPad/CompactCommandPad.cpp | 2 +- src/shared/Modules/Graph/Graph.cpp | 8 +- src/shared/Modules/Graph/Graph.h | 2 + .../IncomingMessagesViewerModule.cpp | 34 ++++++-- .../IncomingMessagesViewerModule.h | 4 +- .../MainStateViewer/MainStateViewer.cpp | 2 +- .../Modules/MainStateViewer/MainStateViewer.h | 2 + .../Modules/Mavlink/BaseMavlinkModule.h | 1 + src/shared/Modules/Mavlink/MavlinkCodec.h | 1 + .../Modules/Mavlink/SerialMavlinkModule.h | 2 + src/shared/Modules/Module.cpp | 2 +- src/shared/Modules/Module.h | 5 +- src/shared/Modules/ModuleInfo.h | 1 + src/shared/Modules/ModulesList.h | 1 + .../OrientationVisualizer.h | 4 +- .../OutgoingMessagesViewerModule.cpp | 1 + .../PayloadStateViewer/PayloadStateViewer.cpp | 2 +- .../PayloadStateViewer/PayloadStateViewer.h | 1 + src/shared/Modules/Splitter/Splitter.cpp | 4 +- src/shared/Modules/Tabs/TabsModule.cpp | 6 +- src/shared/Modules/Test/TestModule.h | 1 + .../ValuesConverterViewerModule.cpp | 9 +- .../ValuesConverterViewerModule.h | 3 +- .../ValuesViewerConfigPanel.cpp | 8 +- .../ValuesViewerConfigPanel.h | 3 +- .../Modules/ValvesViewer/ValvesViewer.cpp | 2 +- .../Modules/ValvesViewer/ValvesViewer.h | 1 + 45 files changed, 207 insertions(+), 160 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 84737575..678c02ec 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,7 +25,7 @@ add_subdirectory(libs/backward-cpp) project(SkywardHub) -set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_AUTOMOC ON) @@ -52,6 +52,7 @@ add_executable(groundstation src/shared/Core/Message/Message.cpp src/shared/Core/Message/Topic.cpp src/shared/Core/MessageBroker/MessageBroker.cpp + src/shared/Core/MessageBroker/Subscription.cpp src/shared/Core/QCustomPlot/QCustomPlot.cpp src/shared/Core/Window/Window.cpp src/shared/Core/SkywardHubCore.cpp diff --git a/SkywardHub.pro b/SkywardHub.pro index 04ba882c..562d373b 100644 --- a/SkywardHub.pro +++ b/SkywardHub.pro @@ -1,7 +1,7 @@ QT += core gui widgets printsupport serialport QT += 3dcore 3drender 3dinput 3dlogic 3dextras 3danimation -CONFIG += c++11 +CONFIG += c++17 # MacOs app icon ICON = src/entrypoints/groundstation/assets/icons/SkywardHub.icns @@ -24,7 +24,6 @@ SOURCES += \ src/shared/Modules/OrientationVisualizer/OrientationVisualizer.cpp \ src/shared/Modules/MainStateViewer/MainStateViewer.cpp \ src/shared/Modules/PayloadStateViewer/PayloadStateViewer.cpp \ - src/shared/Modules/FileStream/FileStreamModule.cpp \ src/shared/Modules/Graph/Graph.cpp \ src/shared/Modules/Test/TestModule.cpp \ src/shared/Modules/ModulesList.cpp \ @@ -77,7 +76,6 @@ HEADERS += \ src/shared/Modules/MainStateViewer/MainStateViewer.h \ src/shared/Modules/PayloadStateViewer/PayloadStatesList.h \ src/shared/Modules/PayloadStateViewer/PayloadStateViewer.h \ - src/shared/Modules/FileStream/FileStreamModule.h \ src/shared/Modules/Graph/Graph.h \ src/shared/Modules/Test/TestModule.h \ src/shared/Modules/SkywardHubStrings.h \ @@ -125,7 +123,6 @@ FORMS += \ src/shared/Modules/ValuesConverterViewer/ValuesViewerConfigPanel.ui \ src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.ui \ src/shared/Modules/TimerController/TimerControllerModule.ui \ - src/shared/Modules/FileStream/FileStreamModule.ui \ src/shared/Modules/Test/TestModule.ui \ src/shared/Components/SaveConfigurationDialog/SaveConfigurationDialog.ui \ @@ -138,6 +135,8 @@ RESOURCES += \ src/entrypoints/groundstation/application.qrc win32: LIBS += -ldbghelp -lpsapi +win32: QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-parameter unix: LIBS += -ldw -lunwind unix: QMAKE_CXXFLAGS += -DBACKWARD_HAS_DW=1 -DBACKWARD_HAS_LIBUNWIND=1 +unix: QMAKE_CXXFLAGS_WARN_ON += -Wno-unused-parameter \ No newline at end of file diff --git a/src/shared/Components/ErrorDisplayer/ErrorDisplayer.cpp b/src/shared/Components/ErrorDisplayer/ErrorDisplayer.cpp index d337d5c7..166cd15d 100644 --- a/src/shared/Components/ErrorDisplayer/ErrorDisplayer.cpp +++ b/src/shared/Components/ErrorDisplayer/ErrorDisplayer.cpp @@ -31,20 +31,14 @@ ErrorDisplayer::ErrorDisplayer(QWidget* _parent) : QWidget(_parent) reposition(); } -ErrorDisplayer::~ErrorDisplayer() -{ - /*while (!errors.isEmpty()) - { - delete errors.takeFirst(); - }*/ -} +ErrorDisplayer::~ErrorDisplayer() {} void ErrorDisplayer::createError(QString title, QString description, ErrorType type, int msecDuration) { - if (!errors.isEmpty()) + if (errors.size() != 0) { - auto& lastError = errors.last(); + auto& lastError = errors.back(); if (lastError->compareError(title, description, type)) { lastError->incrementCount(msecDuration); @@ -55,7 +49,7 @@ void ErrorDisplayer::createError(QString title, QString description, std::make_unique<Error>(this, title, description, type, msecDuration); auto* errorAddr = error.get(); layout.addWidget(errorAddr); - errors.append(std::move(error)); + errors.push_back(std::move(error)); errorAddr->show(); reposition(); } diff --git a/src/shared/Components/ErrorDisplayer/ErrorDisplayer.h b/src/shared/Components/ErrorDisplayer/ErrorDisplayer.h index 9b6940b9..4a1cb7a5 100644 --- a/src/shared/Components/ErrorDisplayer/ErrorDisplayer.h +++ b/src/shared/Components/ErrorDisplayer/ErrorDisplayer.h @@ -26,6 +26,8 @@ #include <QVBoxLayout> #include <QWidget> #include <QtWidgets> +#include <deque> +#include <memory> #include "Error.h" @@ -47,5 +49,5 @@ private: QWidget* parent; int index; QVBoxLayout layout; - QList<std::unique_ptr<Error>> errors; + std::deque<std::unique_ptr<Error>> errors; }; diff --git a/src/shared/Components/FilterSelector/FilterSelector.cpp b/src/shared/Components/FilterSelector/FilterSelector.cpp index 1a261eb8..1c7a114b 100644 --- a/src/shared/Components/FilterSelector/FilterSelector.cpp +++ b/src/shared/Components/FilterSelector/FilterSelector.cpp @@ -78,7 +78,7 @@ void FilterSelector::setupUi() void FilterSelector::selectFilter(FilterSelector::Handler handler) { - auto selector = std::make_unique<FilterSelector>(); + auto selector = std::unique_ptr<FilterSelector>(new FilterSelector()); QObject::connect(selector.get(), &FilterSelector::filterSelected, handler); selector->show(); } @@ -86,8 +86,8 @@ void FilterSelector::selectFilter(FilterSelector::Handler handler) void FilterSelector::selectFilter(const Filter &filter, FilterSelector::Handler handler) { - FilterSelector *selector = new FilterSelector(filter); - QObject::connect(selector, &FilterSelector::filterSelected, handler); + auto selector = std::unique_ptr<FilterSelector>(new FilterSelector(filter)); + QObject::connect(selector.get(), &FilterSelector::filterSelected, handler); selector->show(); } diff --git a/src/shared/Core/MessageBroker/MessageBroker.cpp b/src/shared/Core/MessageBroker/MessageBroker.cpp index 2745b3a7..8677a2da 100644 --- a/src/shared/Core/MessageBroker/MessageBroker.cpp +++ b/src/shared/Core/MessageBroker/MessageBroker.cpp @@ -20,6 +20,8 @@ #include <Modules/Module.h> +#include "Subscription.h" + MessageBroker& MessageBroker::getInstance() { static MessageBroker instance; @@ -27,14 +29,13 @@ MessageBroker& MessageBroker::getInstance() } std::unique_ptr<Subscription> MessageBroker::subscribe( - Filter filter, Subscription::SubscriberFn callback) + Filter filter, MessageBroker::SubscriberFn callback) { - auto subscription = - std::make_unique<Subscription>(std::move(callback), filter); + auto subscription = new Subscription(std::move(callback), filter); - observers.insert(filter, subscription.get()); + observers.insert(filter, subscription); - return subscription; + return std::unique_ptr<Subscription>(subscription); } void MessageBroker::unsubscribe(Subscription* sub) diff --git a/src/shared/Core/MessageBroker/MessageBroker.h b/src/shared/Core/MessageBroker/MessageBroker.h index d30f280b..917f33f1 100644 --- a/src/shared/Core/MessageBroker/MessageBroker.h +++ b/src/shared/Core/MessageBroker/MessageBroker.h @@ -22,10 +22,9 @@ #include <QObject> #include <functional> +#include <memory> -#include "Subscription.h" - -class Module; +class Subscription; class MessageBroker : public QObject { @@ -33,19 +32,21 @@ class MessageBroker : public QObject public: static MessageBroker& getInstance(); + using SubscriberFn = std::function<void(const Message&, const Filter&)>; [[nodiscard( - "IF NOT SAVED SUBSCRIPTION WILL BE REMOVED AUTOMATICALLY")]] std:: + "IF NOT SAVED, THE SUBSCRIPTION WILL BE AUTOMATICALLY REMOVED")]] std:: unique_ptr<Subscription> - subscribe(Filter filter, Subscription::SubscriberFn callback); + subscribe(Filter filter, MessageBroker::SubscriberFn callback); /** * @brief Publish a message to all its subscribers. */ void publish(const Message& message); + friend class Subscription; + private: - friend Subscription; /** * @brief Removes the subscription from the filter. */ diff --git a/src/shared/Core/MessageBroker/Subscription.h b/src/shared/Core/MessageBroker/Subscription.h index e428b916..65261eee 100644 --- a/src/shared/Core/MessageBroker/Subscription.h +++ b/src/shared/Core/MessageBroker/Subscription.h @@ -9,22 +9,20 @@ class Subscription { public: - using SubscriberFn = std::function<void(const Message&, const Filter&)>; - void unsubscribe() { MessageBroker::getInstance().unsubscribe(this); } ~Subscription() { unsubscribe(); } -private: - friend MessageBroker; + friend class MessageBroker; - Subscription(SubscriberFn callback, Filter filter) - : callback(std::move(callback)), filter(filter){}; +private: + Subscription(MessageBroker::SubscriberFn callback, Filter filter) + : filter(filter), callback(std::move(callback)){}; Subscription() = delete; Subscription(Subscription&) = delete; Subscription(Subscription&& other) = delete; Filter filter; - SubscriberFn callback; -}; \ No newline at end of file + MessageBroker::SubscriberFn callback; +}; diff --git a/src/shared/Core/SkywardHubCore.cpp b/src/shared/Core/SkywardHubCore.cpp index 0f0262ed..10bd4d4a 100644 --- a/src/shared/Core/SkywardHubCore.cpp +++ b/src/shared/Core/SkywardHubCore.cpp @@ -60,7 +60,7 @@ void SkywardHubCore::init() SkywardHubStrings::defaultConfigurationIconPath, ""); } -QList<std::shared_ptr<QAction>> SkywardHubCore::getHubMenuActions() +std::deque<std::shared_ptr<QAction>> SkywardHubCore::getHubMenuActions() { return hubMenuActionsList; } @@ -87,13 +87,13 @@ void SkywardHubCore::buildHubMenuActions() { std::shared_ptr<QAction> save = std::make_shared<QAction>("Save configuration"); - hubMenuActionsList.append(save); + hubMenuActionsList.push_back(save); connect(save.get(), &QAction::triggered, this, [this]() { saveConfigurationPrompt(); }); std::shared_ptr<QAction> newWindow = std::make_shared<QAction>("New Window"); - hubMenuActionsList.append(newWindow); + hubMenuActionsList.push_back(newWindow); connect(newWindow.get(), &QAction::triggered, this, &SkywardHubCore::addNewWindow); } @@ -122,7 +122,7 @@ void SkywardHubCore::addWindowFromXml(XmlObject settings) newWindow->activateWindow(); auto windowIdentifier = newWindow.get(); windowsList.push_back(std::move(newWindow)); - auto removePredicate = [windowIdentifier](std::unique_ptr<Window> window) + auto removePredicate = [windowIdentifier](std::unique_ptr<Window>& window) { return window.get() == windowIdentifier; }; connect(windowIdentifier, &Window::onWindowClosed, this, @@ -187,9 +187,9 @@ QString SkywardHubCore::saveConfiguration(QString configName, XmlObject windows("windows"); // Retrieve the setting of each window and save them in the file - for (int i = 0; i < windowsList.size(); i++) + for (auto& windowsListItem : windowsList) { - windows.addChild(windowsList[i]->toXmlObject()); + windows.addChild(windowsListItem->toXmlObject()); } configuration.addChild(windows); diff --git a/src/shared/Core/SkywardHubCore.h b/src/shared/Core/SkywardHubCore.h index b0c99130..0760ad99 100644 --- a/src/shared/Core/SkywardHubCore.h +++ b/src/shared/Core/SkywardHubCore.h @@ -22,6 +22,7 @@ #include <QAction> #include <QList> +#include <memory> #include "XmlObject.h" @@ -36,7 +37,7 @@ public: void init(); - QList<std::shared_ptr<QAction>> getHubMenuActions(); + std::deque<std::shared_ptr<QAction>> getHubMenuActions(); void addActionsToMenu(QMenu &menu); public slots: @@ -54,8 +55,8 @@ private: QString saveConfiguration(QString configName, QString configIconPath, QString description); - QList<std::unique_ptr<Window>> windowsList; - QList<std::shared_ptr<QAction>> hubMenuActionsList; + std::deque<std::unique_ptr<Window>> windowsList; + std::deque<std::shared_ptr<QAction>> hubMenuActionsList; public: SkywardHubCore(const SkywardHubCore &) = delete; diff --git a/src/shared/Core/Window/Window.cpp b/src/shared/Core/Window/Window.cpp index 2153c040..7fc7274f 100644 --- a/src/shared/Core/Window/Window.cpp +++ b/src/shared/Core/Window/Window.cpp @@ -63,4 +63,6 @@ void Window::closeEvent(QCloseEvent *event) { emit onWindowClosed(); event->accept(); -} \ No newline at end of file +} + +Window::~Window() {} \ No newline at end of file diff --git a/src/shared/Core/Window/Window.h b/src/shared/Core/Window/Window.h index 30bd3b01..396922ab 100644 --- a/src/shared/Core/Window/Window.h +++ b/src/shared/Core/Window/Window.h @@ -28,6 +28,8 @@ #include "Components/ErrorDisplayer/ErrorDisplayer.h" +class Module; + class Window : public QMainWindow { Q_OBJECT diff --git a/src/shared/Modules/CommandPad/CommandPad.h b/src/shared/Modules/CommandPad/CommandPad.h index e1f03a83..de6d0237 100644 --- a/src/shared/Modules/CommandPad/CommandPad.h +++ b/src/shared/Modules/CommandPad/CommandPad.h @@ -39,5 +39,5 @@ private: QString currentMessage; std::unique_ptr<QComboBox> messagesListComboBox; - QMap<QString, std::unique_ptr<MessageFormElement>> formElements; + QMap<QString, std::shared_ptr<MessageFormElement>> formElements; }; diff --git a/src/shared/Modules/CommandPad/MessageFormElement.cpp b/src/shared/Modules/CommandPad/MessageFormElement.cpp index 91b9a4fe..0a4ecf69 100644 --- a/src/shared/Modules/CommandPad/MessageFormElement.cpp +++ b/src/shared/Modules/CommandPad/MessageFormElement.cpp @@ -27,8 +27,7 @@ MessageFormElement::~MessageFormElement() {} bool MessageFormElement::addComboBox(QString id, QString label, const QMap<QString, int>& options) { - if (!comboBoxMap.contains(id) && !floatMap.contains(id) && - !integerMap.contains(id)) + if (!idAlreadyInUse(id)) { auto comboBox = std::make_unique<QComboBox>(); comboBox->setSizePolicy( @@ -50,8 +49,7 @@ bool MessageFormElement::addComboBox(QString id, QString label, bool MessageFormElement::addFloat(QString id, QString label, float min, float max, int decimals) { - if (!comboBoxMap.contains(id) && !floatMap.contains(id) && - !integerMap.contains(id)) + if (!idAlreadyInUse(id)) { auto lineEdit = std::make_unique<QLineEdit>(); lineEdit->setSizePolicy( @@ -69,8 +67,7 @@ bool MessageFormElement::addFloat(QString id, QString label, float min, bool MessageFormElement::addInteger(QString id, QString label, int min, int max) { - if (!comboBoxMap.contains(id) && !floatMap.contains(id) && - !integerMap.contains(id)) + if (!idAlreadyInUse(id)) { auto lineEdit = std::make_unique<QLineEdit>(); lineEdit->setSizePolicy( @@ -88,18 +85,16 @@ bool MessageFormElement::addInteger(QString id, QString label, int min, int max) XmlObject MessageFormElement::toXmlObject(XmlObject& obj) { - for (auto key : comboBoxMap.keys()) + for (auto const& [key, comboBoxPair] : comboBoxMap) { - auto& comboBox = comboBoxMap[key]; XmlObject comboBoxXml("combo_box"); comboBoxXml.addAttribute("id", key); - comboBoxXml.addAttribute("text", comboBox.second->currentText()); + comboBoxXml.addAttribute("text", comboBoxPair.second->currentText()); obj.addChild(comboBoxXml); } - for (auto key : floatMap.keys()) + for (auto const& [key, floatField] : floatMap) { - auto& floatField = floatMap[key]; XmlObject floatFieldXml("float_field"); floatFieldXml.addAttribute("id", key); floatFieldXml.addAttribute("text", std::get<1>(floatField)->text()); @@ -109,9 +104,8 @@ XmlObject MessageFormElement::toXmlObject(XmlObject& obj) obj.addChild(floatFieldXml); } - for (auto key : floatMap.keys()) + for (auto const& [key, integerField] : integerMap) { - auto& integerField = floatMap[key]; XmlObject integerFieldXml("integer_field"); integerFieldXml.addAttribute("id", key); integerFieldXml.addAttribute("text", std::get<1>(integerField)->text()); @@ -130,13 +124,14 @@ void MessageFormElement::fromXmlObject(const XmlObject& obj) auto child = obj.childAt(i); auto key = child.getAttribute("id"); - if (child.getObjectName() == "combo_box" && comboBoxMap.contains(key)) + if (child.getObjectName() == "combo_box" && + comboBoxMap.find(key) != comboBoxMap.end()) { auto& comboBox = comboBoxMap[key]; comboBox.second->setCurrentText(child.getAttribute("text")); } else if (child.getObjectName() == "float_field" && - floatMap.contains(key)) + floatMap.find(key) != floatMap.end()) { auto& floatField = floatMap[key]; std::get<1>(floatField)->setText(child.getAttribute("text")); @@ -149,7 +144,7 @@ void MessageFormElement::fromXmlObject(const XmlObject& obj) std::get<4>(floatField))); } else if (child.getObjectName() == "integer_field" && - integerMap.contains(key)) + integerMap.find(key) != integerMap.end()) { auto& integerField = integerMap[key]; std::get<1>(integerField)->setText(child.getAttribute("text")); @@ -164,10 +159,10 @@ void MessageFormElement::fromXmlObject(const XmlObject& obj) void MessageFormElement::applyToGridLayout(QGridLayout* layout) { - for (auto key : comboBoxMap.keys()) + for (auto const& [_, pair] : comboBoxMap) { - auto& label = comboBoxMap[key].first; - auto& comboBox = comboBoxMap[key].second; + auto& label = pair.first; + auto& comboBox = pair.second; int rows = layout->rowCount(); layout->addWidget(label.get(), rows, 0, Qt::AlignRight); @@ -177,10 +172,10 @@ void MessageFormElement::applyToGridLayout(QGridLayout* layout) comboBox->show(); } - for (auto key : floatMap.keys()) + for (auto const& [_, floatTuple] : floatMap) { - auto& label = std::get<0>(floatMap[key]); - auto& floatField = std::get<1>(floatMap[key]); + auto& label = std::get<0>(floatTuple); + auto& floatField = std::get<1>(floatTuple); int rows = layout->rowCount(); layout->addWidget(label.get(), rows, 0, Qt::AlignRight); @@ -190,10 +185,10 @@ void MessageFormElement::applyToGridLayout(QGridLayout* layout) floatField->show(); } - for (auto key : integerMap.keys()) + for (auto const& [_, integerTuple] : integerMap) { - auto& label = std::get<0>(integerMap[key]); - auto& integerField = std::get<1>(integerMap[key]); + auto& label = std::get<0>(integerTuple); + auto& integerField = std::get<1>(integerTuple); int rows = layout->rowCount(); layout->addWidget(label.get(), rows, 0, Qt::AlignRight); @@ -206,10 +201,10 @@ void MessageFormElement::applyToGridLayout(QGridLayout* layout) void MessageFormElement::removeFromGridLayout(QGridLayout* layout) { - for (auto key : comboBoxMap.keys()) + for (auto const& [_, pair] : comboBoxMap) { - auto& label = comboBoxMap[key].first; - auto& comboBox = comboBoxMap[key].second; + auto& label = pair.first; + auto& comboBox = pair.second; layout->removeWidget(label.get()); layout->removeWidget(comboBox.get()); @@ -218,10 +213,10 @@ void MessageFormElement::removeFromGridLayout(QGridLayout* layout) comboBox->hide(); } - for (auto key : floatMap.keys()) + for (auto const& [_, floatTuple] : floatMap) { - auto& label = std::get<0>(floatMap[key]); - auto& floatField = std::get<1>(floatMap[key]); + auto& label = std::get<0>(floatTuple); + auto& floatField = std::get<1>(floatTuple); layout->removeWidget(label.get()); layout->removeWidget(floatField.get()); @@ -230,10 +225,10 @@ void MessageFormElement::removeFromGridLayout(QGridLayout* layout) floatField->hide(); } - for (auto key : integerMap.keys()) + for (auto const& [_, integerTuple] : integerMap) { - auto& label = std::get<0>(integerMap[key]); - auto& integerField = std::get<1>(integerMap[key]); + auto& label = std::get<0>(integerTuple); + auto& integerField = std::get<1>(integerTuple); layout->removeWidget(label.get()); layout->removeWidget(integerField.get()); @@ -247,26 +242,33 @@ Message MessageFormElement::prepareMessage(const QString& messageId) { Message message(Topic{SkywardHubStrings::commandsTopic + "/" + messageId}); - for (auto key : comboBoxMap.keys()) + for (auto const& [key, pair] : comboBoxMap) { - auto& comboBox = comboBoxMap[key].second; + auto& comboBox = pair.second; auto msg = Field{(uint64_t)comboBox->currentData().toInt()}; message.setField(key, msg); } - for (auto key : floatMap.keys()) + for (auto const& [key, floatTuple] : floatMap) { - auto& floatField = std::get<1>(floatMap[key]); + auto& floatField = std::get<1>(floatTuple); auto msg = Field{floatField->text().toDouble()}; message.setField(key, msg); } - for (auto key : integerMap.keys()) + for (auto const& [key, integerTuple] : integerMap) { - auto& integerField = std::get<1>(integerMap[key]); + auto& integerField = std::get<1>(integerTuple); auto msg = Field{(uint64_t)integerField->text().toInt()}; message.setField(key, msg); } return message; -} \ No newline at end of file +} + +bool MessageFormElement::idAlreadyInUse(QString& id) +{ + return comboBoxMap.find(id) != comboBoxMap.end() || + floatMap.find(id) != floatMap.end() || + integerMap.find(id) != integerMap.end(); +} diff --git a/src/shared/Modules/CommandPad/MessageFormElement.h b/src/shared/Modules/CommandPad/MessageFormElement.h index 85475fd1..c11a3148 100644 --- a/src/shared/Modules/CommandPad/MessageFormElement.h +++ b/src/shared/Modules/CommandPad/MessageFormElement.h @@ -73,12 +73,21 @@ public: Message prepareMessage(const QString& messageId); private: - QMap<QString, QPair<std::unique_ptr<QLabel>, std::unique_ptr<QComboBox>>> + std::map<QString, + std::pair<std::unique_ptr<QLabel>, std::unique_ptr<QComboBox>>> comboBoxMap; - QMap<QString, std::tuple<std::unique_ptr<QLabel>, - std::unique_ptr<QLineEdit>, float, float, int>> + std::map<QString, std::tuple<std::unique_ptr<QLabel>, + std::unique_ptr<QLineEdit>, float, float, int>> floatMap; - QMap<QString, std::tuple<std::unique_ptr<QLabel>, - std::unique_ptr<QLineEdit>, int, int>> + std::map<QString, std::tuple<std::unique_ptr<QLabel>, + std::unique_ptr<QLineEdit>, int, int>> integerMap; + + /** + * This method checks if the given id is already used in one of the maps + * @param id QString The ID that has to be checked + * @returns true if there exists at least one entry in any of the maps with + * matching ID false otherwise + */ + bool idAlreadyInUse(QString& id); }; diff --git a/src/shared/Modules/CommandPad/MessagesList.h b/src/shared/Modules/CommandPad/MessagesList.h index fee244ec..cc437505 100644 --- a/src/shared/Modules/CommandPad/MessagesList.h +++ b/src/shared/Modules/CommandPad/MessagesList.h @@ -124,94 +124,94 @@ const QMap<QString, int> servosList{ {"DISCONNECT_SERVO", DISCONNECT_SERVO}}; inline void fillMessagesMap( - QMap<QString, std::unique_ptr<MessageFormElement>> &formElements) + QMap<QString, std::shared_ptr<MessageFormElement>> &formElements) { - std::unique_ptr<MessageFormElement> element; + std::shared_ptr<MessageFormElement> element; - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); formElements["PING_TC"] = std::move(element); - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); element->addComboBox("command_id", "Command:", commandsList); formElements["COMMAND_TC"] = std::move(element); - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); element->addComboBox("tm_id", "Telemetry:", systemTmList); formElements["SYSTEM_TM_REQUEST_TC"] = std::move(element); - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); element->addComboBox("sensor_id", "Sensor:", sensorsList); formElements["SENSOR_TM_REQUEST_TC"] = std::move(element); - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); element->addComboBox("servo_id", "Servo:", servosList); formElements["SERVO_TM_REQUEST_TC"] = std::move(element); - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); element->addComboBox("servo_id", "Servo:", servosList); element->addFloat("angle", "Angle:", 0, 180, 2); formElements["SET_SERVO_ANGLE_TC"] = std::move(element); - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); element->addComboBox("servo_id", "Servo:", servosList); formElements["WIGGLE_SERVO_TC"] = std::move(element); - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); element->addComboBox("servo_id", "Servo:", servosList); formElements["RESET_SERVO_TC"] = std::move(element); - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); element->addFloat("ref_altitude", "Altitude:", 0, 9999, 2); formElements["SET_REFERENCE_ALTITUDE_TC"] = std::move(element); - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); element->addFloat("ref_temp", "Temperature:", 0, 999, 2); formElements["SET_REFERENCE_TEMPERATURE_TC"] = std::move(element); - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); element->addFloat("yaw", "Yaw:", -180, 180, 2); element->addFloat("pitch", "Pitch:", -180, 180, 2); element->addFloat("roll", "Roll:", -180, 180, 2); formElements["SET_ORIENTATION_TC"] = std::move(element); - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); element->addFloat("latitude", "Latitude:", -90, 90, 6); element->addFloat("longitude", "Longitude:", -90, 90, 6); formElements["SET_COORDINATES_TC"] = std::move(element); - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); element->addInteger("topic_id", "Topic:", 0, 999); element->addInteger("event_id", "Event:", 0, 999); formElements["RAW_EVENT_TC"] = std::move(element); - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); element->addFloat("dpl_altitude", "Altitude:", 0, 9999, 2); formElements["SET_DEPLOYMENT_ALTITUDE_TC"] = std::move(element); - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); element->addFloat("latitude", "Latitude:", -90, 90, 6); element->addFloat("longitude", "Longitude:", -90, 90, 6); formElements["SET_TARGET_COORDINATES_TC"] = std::move(element); - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); element->addInteger("algorithm_number", "Algorithm:", 0, 999); formElements["SET_ALGORITHM_TC"] = std::move(element); - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); element->addComboBox("servo_id", "Servo:", servosList); element->addInteger("maximum_timing", "Timing [ms]:", 0, 3600000); formElements["SET_ATOMIC_VALVE_TIMING_TC"] = std::move(element); - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); element->addComboBox("servo_id", "Servo:", servosList); element->addFloat("maximum_aperture", "Aperture [0-1]:", 0, 1); formElements["SET_VALVE_MAXIMUM_APERTURE_TC"] = std::move(element); - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); element->addInteger("timing", "Timing [ms]:", 0, 3600000); formElements["SET_IGNITION_TIME_TC"] = std::move(element); - element = std::make_unique<MessageFormElement>(); + element = std::make_shared<MessageFormElement>(); element->addInteger("ignition_btn", "Ignition:", 0, 1); element->addInteger("filling_valve_btn", "Filling:", 0, 1); element->addInteger("venting_valve_btn", "Venting:", 0, 1); diff --git a/src/shared/Modules/CompactCommandPad/CommandSelector.cpp b/src/shared/Modules/CompactCommandPad/CommandSelector.cpp index ec153cbf..f295ca93 100644 --- a/src/shared/Modules/CompactCommandPad/CommandSelector.cpp +++ b/src/shared/Modules/CompactCommandPad/CommandSelector.cpp @@ -22,8 +22,7 @@ #include <QDebug> -CommandSelector::CommandSelector(std::shared_ptr<Module> parent) - : QDialog(), parent(std::move(parent)) +CommandSelector::CommandSelector(Module* parent) : QDialog(), parent(parent) { setupUi(); } diff --git a/src/shared/Modules/CompactCommandPad/CommandSelector.h b/src/shared/Modules/CompactCommandPad/CommandSelector.h index b21ba186..5314aa30 100644 --- a/src/shared/Modules/CompactCommandPad/CommandSelector.h +++ b/src/shared/Modules/CompactCommandPad/CommandSelector.h @@ -37,7 +37,7 @@ class CommandSelector : public QDialog Q_OBJECT public: - explicit CommandSelector(std::shared_ptr<Module> parent); + explicit CommandSelector(Module* parent); ~CommandSelector(); XmlObject toXmlObject(XmlObject& obj); @@ -53,7 +53,7 @@ private: std::unique_ptr<QVBoxLayout> outerLayout; std::unique_ptr<QLineEdit> lineEdit, continuosTimeoutEdit; std::unique_ptr<QComboBox> messagesListComboBox; - QMap<QString, std::unique_ptr<MessageFormElement>> formElements; + QMap<QString, std::shared_ptr<MessageFormElement>> formElements; std::unique_ptr<QGridLayout> formGridLayout; std::unique_ptr<QPushButton> sendButton; std::unique_ptr<QCheckBox> continuosCheck; @@ -62,5 +62,5 @@ private: QString selectedLabel; Message selectedMessage; - std::shared_ptr<Module> parent; + Module* parent; }; diff --git a/src/shared/Modules/CompactCommandPad/CompactCommandPad.cpp b/src/shared/Modules/CompactCommandPad/CompactCommandPad.cpp index c01145d9..c685e711 100644 --- a/src/shared/Modules/CompactCommandPad/CompactCommandPad.cpp +++ b/src/shared/Modules/CompactCommandPad/CompactCommandPad.cpp @@ -131,5 +131,5 @@ void CompactCommandPad::customContextMenuActionSetup() auto edit = std::make_unique<QAction>("Edit button", this); connect(edit.get(), &QAction::triggered, this, &CompactCommandPad::buttonEditActionTriggered); - customContextMenuActions.append(std::move(edit)); + customContextMenuActions.push_back(std::move(edit)); } diff --git a/src/shared/Modules/Graph/Graph.cpp b/src/shared/Modules/Graph/Graph.cpp index 618f0d3f..39716651 100644 --- a/src/shared/Modules/Graph/Graph.cpp +++ b/src/shared/Modules/Graph/Graph.cpp @@ -281,12 +281,12 @@ void Graph::customContextMenuActionSetup() subscriptions->setToolTip("Edit graph series"); connect(subscriptions.get(), &QAction::triggered, this, &Graph::onSubscribeClicked); - customContextMenuActions.append(std::move(subscriptions)); + customContextMenuActions.push_back(std::move(subscriptions)); auto clear = std::make_unique<QAction>("Clear"); clear->setToolTip("Removes all data currently on the plot"); connect(clear.get(), &QAction::triggered, this, &Graph::onClearClicked); - customContextMenuActions.append(std::move(clear)); + customContextMenuActions.push_back(std::move(clear)); auto stop = std::make_unique<QAction>("Stop"); stop->setCheckable(true); @@ -296,12 +296,12 @@ void Graph::customContextMenuActionSetup() connect(stop.get(), &QAction::triggered, this, [this, stopAddr](bool checked) { onStopClicked(stopAddr, checked); }); - customContextMenuActions.append(std::move(stop)); + customContextMenuActions.push_back(std::move(stop)); auto follow = std::make_unique<QAction>("Follow"); follow->setCheckable(true); follow->setChecked(following); follow->setToolTip("Automatically move the graph to follow new data"); connect(follow.get(), &QAction::triggered, this, &Graph::onFollowClicked); - customContextMenuActions.append(std::move(follow)); + customContextMenuActions.push_back(std::move(follow)); } diff --git a/src/shared/Modules/Graph/Graph.h b/src/shared/Modules/Graph/Graph.h index c199292d..c63693ff 100644 --- a/src/shared/Modules/Graph/Graph.h +++ b/src/shared/Modules/Graph/Graph.h @@ -19,6 +19,8 @@ #pragma once #include <Core/Message/Filter.h> +#include <Core/MessageBroker/MessageBroker.h> +#include <Core/MessageBroker/Subscription.h> #include <Core/QCustomPlot/QCustomPlot.h> #include <Modules/Module.h> diff --git a/src/shared/Modules/IncomingMessagesViewer/IncomingMessagesViewerModule.cpp b/src/shared/Modules/IncomingMessagesViewer/IncomingMessagesViewerModule.cpp index ca3e401c..0a7bde99 100644 --- a/src/shared/Modules/IncomingMessagesViewer/IncomingMessagesViewerModule.cpp +++ b/src/shared/Modules/IncomingMessagesViewer/IncomingMessagesViewerModule.cpp @@ -18,6 +18,8 @@ #include "IncomingMessagesViewerModule.h" +#include <Core/MessageBroker/Subscription.h> + #include <QHBoxLayout> #include "Components/SubscriptionsPanel/SubscriptionsPanel.h" @@ -38,7 +40,7 @@ XmlObject IncomingMessagesViewerModule::toXmlObject() obj.addAttribute("keepOnlyLastMessage", keepOnlyLastMessage ? "1" : "0"); obj.addAttribute("useTimestamp", useTimestamp ? "1" : "0"); - auto filtersList = filters.keys(); + QList<Filter> filtersList = getFilters(); for (int i = 0; i < filtersList.count(); i++) { @@ -67,7 +69,9 @@ void IncomingMessagesViewerModule::fromXmlObject(const XmlObject& xmlObject) void IncomingMessagesViewerModule::onSubscribeClicked() { - auto panel = std::make_unique<SubscriptionsPanel>(filters.keys()); + QList<Filter> filterKeys = getFilters(); + + auto panel = std::make_unique<SubscriptionsPanel>(filterKeys); panel->setWindowTitle("Graph subscriptions"); connect(panel.get(), &SubscriptionsPanel::filterAdded, this, &IncomingMessagesViewerModule::onFilterAdded); @@ -79,7 +83,7 @@ void IncomingMessagesViewerModule::onSubscribeClicked() void IncomingMessagesViewerModule::onFilterAdded(const Filter& filter) { - filters.insert( + filters.insert(std::pair( filter, MessageBroker::getInstance().subscribe( filter, @@ -109,12 +113,12 @@ void IncomingMessagesViewerModule::onFilterAdded(const Filter& filter) // Updated the content edit->setText(time + message.toString() + "\n" + oldText); - })); + }))); } void IncomingMessagesViewerModule::onFilterRemoved(const Filter& filter) { - filters.remove(filter); + filters.erase(filter); } void IncomingMessagesViewerModule::setupUi() @@ -134,24 +138,36 @@ void IncomingMessagesViewerModule::customContextMenuActionSetup() auto clear = std::make_unique<QAction>("Clear"); connect(clear.get(), &QAction::triggered, this, [this]() { edit->clear(); }); - customContextMenuActions.append(std::move(clear)); + customContextMenuActions.push_back(std::move(clear)); auto subscriptions = std::make_unique<QAction>("Manage subscriptions"); connect(subscriptions.get(), &QAction::triggered, this, &IncomingMessagesViewerModule::onSubscribeClicked); - customContextMenuActions.append(std::move(subscriptions)); + customContextMenuActions.push_back(std::move(subscriptions)); keepOnlyLastMessageAction = new QAction("Keep only last message"); keepOnlyLastMessageAction->setCheckable(true); connect(keepOnlyLastMessageAction, &QAction::toggled, this, [=](bool value) { keepOnlyLastMessage = value; }); - customContextMenuActions.append( + customContextMenuActions.push_back( std::unique_ptr<QAction>(keepOnlyLastMessageAction)); useTimestampAction = new QAction("Use timestamp"); useTimestampAction->setCheckable(true); connect(useTimestampAction, &QAction::toggled, this, [=](bool value) { useTimestamp = value; }); - customContextMenuActions.append( + customContextMenuActions.push_back( std::unique_ptr<QAction>(useTimestampAction)); } + +QList<Filter> IncomingMessagesViewerModule::getFilters() +{ + QList<Filter> list; + + for (auto const& [key, _] : filters) + { + list.append(key); + } + + return list; +} diff --git a/src/shared/Modules/IncomingMessagesViewer/IncomingMessagesViewerModule.h b/src/shared/Modules/IncomingMessagesViewer/IncomingMessagesViewerModule.h index 4f3e1f63..ac73b5ef 100644 --- a/src/shared/Modules/IncomingMessagesViewer/IncomingMessagesViewerModule.h +++ b/src/shared/Modules/IncomingMessagesViewer/IncomingMessagesViewerModule.h @@ -44,7 +44,9 @@ private: void setupUi(); void customContextMenuActionSetup(); - QMultiMap<Filter, std::unique_ptr<Subscription>> filters; + std::multimap<Filter, std::unique_ptr<Subscription>> filters; + + QList<Filter> getFilters(); bool keepOnlyLastMessage = false; QAction* keepOnlyLastMessageAction; diff --git a/src/shared/Modules/MainStateViewer/MainStateViewer.cpp b/src/shared/Modules/MainStateViewer/MainStateViewer.cpp index e900171c..0cf50386 100644 --- a/src/shared/Modules/MainStateViewer/MainStateViewer.cpp +++ b/src/shared/Modules/MainStateViewer/MainStateViewer.cpp @@ -71,7 +71,7 @@ void MainStateViewerModule::customContextMenuActionSetup() connect(action.get(), &QAction::triggered, this, &MainStateViewerModule::onConfigureClicked); - customContextMenuActions.append(action); + customContextMenuActions.push_back(std::move(action)); } void MainStateViewerModule::onConfigureClicked() diff --git a/src/shared/Modules/MainStateViewer/MainStateViewer.h b/src/shared/Modules/MainStateViewer/MainStateViewer.h index 1ac1a578..84fde248 100644 --- a/src/shared/Modules/MainStateViewer/MainStateViewer.h +++ b/src/shared/Modules/MainStateViewer/MainStateViewer.h @@ -20,6 +20,8 @@ #include <Core/Message/Filter.h> #include <Core/Message/Message.h> +#include <Core/MessageBroker/MessageBroker.h> +#include <Core/MessageBroker/Subscription.h> #include <Core/XmlObject.h> #include <Modules/Module.h> diff --git a/src/shared/Modules/Mavlink/BaseMavlinkModule.h b/src/shared/Modules/Mavlink/BaseMavlinkModule.h index 0114ef32..9953fc27 100644 --- a/src/shared/Modules/Mavlink/BaseMavlinkModule.h +++ b/src/shared/Modules/Mavlink/BaseMavlinkModule.h @@ -20,6 +20,7 @@ #include <Components/ToggleButton/ToggleButton.h> #include <Core/Message/Message.h> +#include <Core/MessageBroker/Subscription.h> #include <Modules/Module.h> #include <QTimer> diff --git a/src/shared/Modules/Mavlink/MavlinkCodec.h b/src/shared/Modules/Mavlink/MavlinkCodec.h index b32e6620..a4ad8d4a 100644 --- a/src/shared/Modules/Mavlink/MavlinkCodec.h +++ b/src/shared/Modules/Mavlink/MavlinkCodec.h @@ -22,6 +22,7 @@ #include <QFile> #include <QObject> +#include <memory> #include "MavlinkVersionHeader.h" #include "Ports/MavlinkPort.h" diff --git a/src/shared/Modules/Mavlink/SerialMavlinkModule.h b/src/shared/Modules/Mavlink/SerialMavlinkModule.h index f2692f35..559939f7 100644 --- a/src/shared/Modules/Mavlink/SerialMavlinkModule.h +++ b/src/shared/Modules/Mavlink/SerialMavlinkModule.h @@ -18,6 +18,8 @@ #pragma once +#include <memory> + #include "BaseMavlinkModule.h" #include "Ports/SerialPort.h" diff --git a/src/shared/Modules/Module.cpp b/src/shared/Modules/Module.cpp index 43b12f3e..36c920ec 100644 --- a/src/shared/Modules/Module.cpp +++ b/src/shared/Modules/Module.cpp @@ -64,7 +64,7 @@ void Module::addActionsToMenu(QMenu &menu) { std::for_each(customContextMenuActions.begin(), customContextMenuActions.end(), - [&menu](std::unique_ptr<QAction> action) + [&menu](std::unique_ptr<QAction> &action) { menu.addAction(action.get()); }); } diff --git a/src/shared/Modules/Module.h b/src/shared/Modules/Module.h index 7d1800bc..a3e83310 100644 --- a/src/shared/Modules/Module.h +++ b/src/shared/Modules/Module.h @@ -24,6 +24,7 @@ #include <QAction> #include <QWidget> +#include <deque> class Window; @@ -57,12 +58,12 @@ public slots: // void onCloseMe(); signals: - void replaceMe(const Module* oldModule, std::shared_ptr<Module> newModule); + void replaceMe(Module* oldModule, std::shared_ptr<Module> newModule); void closeMe(Module* thisModule); protected: ModuleId id; - QList<std::unique_ptr<QAction>> customContextMenuActions; + std::deque<std::unique_ptr<QAction>> customContextMenuActions; private: void addActionsToMenu(QMenu& menu); diff --git a/src/shared/Modules/ModuleInfo.h b/src/shared/Modules/ModuleInfo.h index 8d49ac14..4cb1e96c 100644 --- a/src/shared/Modules/ModuleInfo.h +++ b/src/shared/Modules/ModuleInfo.h @@ -19,6 +19,7 @@ #pragma once #include <QStringList> +#include <memory> class Module; diff --git a/src/shared/Modules/ModulesList.h b/src/shared/Modules/ModulesList.h index 0ae0cecf..4479de8f 100644 --- a/src/shared/Modules/ModulesList.h +++ b/src/shared/Modules/ModulesList.h @@ -19,6 +19,7 @@ #pragma once #include <QMap> +#include <memory> #include "ModuleInfo.h" diff --git a/src/shared/Modules/OrientationVisualizer/OrientationVisualizer.h b/src/shared/Modules/OrientationVisualizer/OrientationVisualizer.h index dc43f7b6..e63b442c 100644 --- a/src/shared/Modules/OrientationVisualizer/OrientationVisualizer.h +++ b/src/shared/Modules/OrientationVisualizer/OrientationVisualizer.h @@ -18,6 +18,7 @@ #pragma once +#include <Core/MessageBroker/Subscription.h> #include <Modules/Module.h> #include <Qt3DRender/qpointlight.h> @@ -54,13 +55,12 @@ class OrientationVisualizer : public Module public: OrientationVisualizer(); + ~OrientationVisualizer() override; protected: void resizeEvent(QResizeEvent *event) override; private: - ~OrientationVisualizer() override; - QLabel *rollLabel, *pitchLabel, *yawLabel; QComboBox *sourceComboBox; QLabel *sourceLabel; diff --git a/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.cpp b/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.cpp index fef7fa13..ced4ba2d 100644 --- a/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.cpp +++ b/src/shared/Modules/OutgoingMessagesViewer/OutgoingMessagesViewerModule.cpp @@ -19,6 +19,7 @@ #include "OutgoingMessagesViewerModule.h" #include <Core/MessageBroker/MessageBroker.h> +#include <Core/MessageBroker/Subscription.h> #include <QTableWidgetItem> diff --git a/src/shared/Modules/PayloadStateViewer/PayloadStateViewer.cpp b/src/shared/Modules/PayloadStateViewer/PayloadStateViewer.cpp index 73c461e9..4cd71827 100644 --- a/src/shared/Modules/PayloadStateViewer/PayloadStateViewer.cpp +++ b/src/shared/Modules/PayloadStateViewer/PayloadStateViewer.cpp @@ -69,7 +69,7 @@ void PayloadStateViewerModule::customContextMenuActionSetup() connect(action.get(), &QAction::triggered, this, &PayloadStateViewerModule::onConfigureClicked); - customContextMenuActions.append(std::move(action)); + customContextMenuActions.push_back(std::move(action)); } void PayloadStateViewerModule::onConfigureClicked() diff --git a/src/shared/Modules/PayloadStateViewer/PayloadStateViewer.h b/src/shared/Modules/PayloadStateViewer/PayloadStateViewer.h index eff9d5de..22eee527 100644 --- a/src/shared/Modules/PayloadStateViewer/PayloadStateViewer.h +++ b/src/shared/Modules/PayloadStateViewer/PayloadStateViewer.h @@ -20,6 +20,7 @@ #include <Core/Message/Filter.h> #include <Core/Message/Message.h> +#include <Core/MessageBroker/Subscription.h> #include <Modules/Module.h> #include <QLabel> diff --git a/src/shared/Modules/Splitter/Splitter.cpp b/src/shared/Modules/Splitter/Splitter.cpp index 8d77ddc6..babfbcea 100644 --- a/src/shared/Modules/Splitter/Splitter.cpp +++ b/src/shared/Modules/Splitter/Splitter.cpp @@ -187,12 +187,12 @@ void Splitter::customContextMenuActionSetup() addModule(ModulesList::getInstance().instantiateModule( ModuleId::EMPTY)); }); - customContextMenuActions.append(split); + customContextMenuActions.push_back(std::move(split)); auto changeOrientation = std::make_unique<QAction>("Swap Orientation"); connect(changeOrientation.get(), &QAction::triggered, this, [this]() { this->swapOrientation(); }); - customContextMenuActions.append(changeOrientation); + customContextMenuActions.push_back(std::move(changeOrientation)); } void Splitter::setupUi(Qt::Orientation orientation) diff --git a/src/shared/Modules/Tabs/TabsModule.cpp b/src/shared/Modules/Tabs/TabsModule.cpp index 6d4d4f0f..c944e4c5 100644 --- a/src/shared/Modules/Tabs/TabsModule.cpp +++ b/src/shared/Modules/Tabs/TabsModule.cpp @@ -179,17 +179,17 @@ void TabsModule::customContextMenuActionSetup() auto newTab = std::make_unique<QAction>("New Tab"); connect(newTab.get(), &QAction::triggered, this, &TabsModule::onMenuNewTabClick); - customContextMenuActions.append(newTab); + customContextMenuActions.push_back(std::move(newTab)); auto deleteTab = std::make_unique<QAction>("Delete Tab"); connect(deleteTab.get(), &QAction::triggered, this, &TabsModule::onMenuDeleteTabClick); - customContextMenuActions.append(deleteTab); + customContextMenuActions.push_back(std::move(deleteTab)); auto renameTab = std::make_unique<QAction>("Rename Tab"); connect(renameTab.get(), &QAction::triggered, this, &TabsModule::onMenuRenameTabClick); - customContextMenuActions.append(renameTab); + customContextMenuActions.push_back(std::move(renameTab)); } void TabsModule::onMenuNewTabClick() diff --git a/src/shared/Modules/Test/TestModule.h b/src/shared/Modules/Test/TestModule.h index 60088939..b933603f 100644 --- a/src/shared/Modules/Test/TestModule.h +++ b/src/shared/Modules/Test/TestModule.h @@ -18,6 +18,7 @@ #pragma once +#include <Core/MessageBroker/Subscription.h> #include <Modules/Module.h> #include <QWidget> diff --git a/src/shared/Modules/ValuesConverterViewer/ValuesConverterViewerModule.cpp b/src/shared/Modules/ValuesConverterViewer/ValuesConverterViewerModule.cpp index d1671ade..6181cf4a 100644 --- a/src/shared/Modules/ValuesConverterViewer/ValuesConverterViewerModule.cpp +++ b/src/shared/Modules/ValuesConverterViewer/ValuesConverterViewerModule.cpp @@ -19,6 +19,7 @@ #include "ValuesConverterViewerModule.h" #include <Core/MessageBroker/MessageBroker.h> +#include <Core/MessageBroker/Subscription.h> #include <QAction> @@ -102,7 +103,7 @@ void ValuesConverterViewerModule::customContextMenuActionSetup() auto configure = std::make_unique<QAction, const QString&>("Configure"); connect(configure.get(), &QAction::triggered, this, &ValuesConverterViewerModule::onConfigureClicked); - customContextMenuActions.append(configure); + customContextMenuActions.push_back(std::move(configure)); } std::unique_ptr<QLabel> ValuesConverterViewerModule::createView( @@ -131,7 +132,7 @@ void ValuesConverterViewerModule::createLabels() std::unique_ptr<QLabel> label; int labelIndex = findLabelIndexByName(rules[i].getName()); - if (labelIndex >= 0 && labelIndex < labels.count()) + if (labelIndex >= 0 && labelIndex < static_cast<int>(labels.size())) { label = std::move(labels[labelIndex]); } @@ -150,7 +151,7 @@ void ValuesConverterViewerModule::createLabels() col++; } } - labels.append(label); + labels.push_back(std::move(label)); } } @@ -220,7 +221,7 @@ void ValuesConverterViewerModule::clearRules() int ValuesConverterViewerModule::findLabelIndexByName(const QString& name) { - for (int i = 0; i < labels.count(); i++) + for (int i = 0; i < static_cast<int>(labels.size()); i++) { if (labels[i]->text() == name) { diff --git a/src/shared/Modules/ValuesConverterViewer/ValuesConverterViewerModule.h b/src/shared/Modules/ValuesConverterViewer/ValuesConverterViewerModule.h index 25900788..16899bb3 100644 --- a/src/shared/Modules/ValuesConverterViewer/ValuesConverterViewerModule.h +++ b/src/shared/Modules/ValuesConverterViewer/ValuesConverterViewerModule.h @@ -22,6 +22,7 @@ #include <QLabel> #include <QWidget> +#include <deque> #include "Core/Message/Message.h" #include "ValueElement.h" @@ -63,7 +64,7 @@ private: Ui::ValuesConverterViewerModule* ui; int minColNumber = 1; int columns = minColNumber; - QList<std::unique_ptr<QLabel>> labels; + std::deque<std::unique_ptr<QLabel>> labels; QList<ValueElement> rules; std::unique_ptr<Subscription> subscription; }; diff --git a/src/shared/Modules/ValuesConverterViewer/ValuesViewerConfigPanel.cpp b/src/shared/Modules/ValuesConverterViewer/ValuesViewerConfigPanel.cpp index dffdca3f..bac80399 100644 --- a/src/shared/Modules/ValuesConverterViewer/ValuesViewerConfigPanel.cpp +++ b/src/shared/Modules/ValuesConverterViewer/ValuesViewerConfigPanel.cpp @@ -94,9 +94,9 @@ void ValuesViewerConfigPanel::onRemoveClicked() { rules.removeAt(selectedView); } - if (selectedView >= 0 && selectedView < views.count()) + if (selectedView >= 0 && selectedView < static_cast<int>(views.size())) { - views.removeAt(selectedView); + views.erase(views.begin() + selectedView); } } @@ -166,7 +166,7 @@ void ValuesViewerConfigPanel::setTextBoxValues(const ValueElement& el) int ValuesViewerConfigPanel::findSelectedView() const { - for (int i = 0; i < views.count(); i++) + for (int i = 0; i < static_cast<int>(views.size()); i++) { if (views[i]->isChecked()) { @@ -181,7 +181,7 @@ void ValuesViewerConfigPanel::addRule(int index, const ValueElement& el) rules.insert(index, el); auto view = createView(el); auto* viewAddr = view.get(); - views.insert(index, std::move(view)); + views.insert(views.begin() + index, std::move(view)); ui->fieldsLayout->insertWidget(index, viewAddr); connect(viewAddr, &QRadioButton::clicked, this, &ValuesViewerConfigPanel::onValueElementClicked); diff --git a/src/shared/Modules/ValuesConverterViewer/ValuesViewerConfigPanel.h b/src/shared/Modules/ValuesConverterViewer/ValuesViewerConfigPanel.h index 9360d053..6fcac490 100644 --- a/src/shared/Modules/ValuesConverterViewer/ValuesViewerConfigPanel.h +++ b/src/shared/Modules/ValuesConverterViewer/ValuesViewerConfigPanel.h @@ -20,6 +20,7 @@ #include <QRadioButton> #include <QWidget> +#include <deque> #include "ValueElement.h" @@ -65,5 +66,5 @@ private: Ui::ValuesViewerConfigPanel *ui; QList<ValueElement> rules; - QList<std::unique_ptr<QRadioButton>> views; + std::deque<std::unique_ptr<QRadioButton>> views; }; diff --git a/src/shared/Modules/ValvesViewer/ValvesViewer.cpp b/src/shared/Modules/ValvesViewer/ValvesViewer.cpp index c52ae31f..24c74796 100644 --- a/src/shared/Modules/ValvesViewer/ValvesViewer.cpp +++ b/src/shared/Modules/ValvesViewer/ValvesViewer.cpp @@ -68,7 +68,7 @@ void ValvesViewer::customContextMenuActionSetup() connect(action.get(), &QAction::triggered, this, &ValvesViewer::onConfigureClicked); - customContextMenuActions.append(std::move(action)); + customContextMenuActions.push_back(std::move(action)); } void ValvesViewer::onConfigureClicked() diff --git a/src/shared/Modules/ValvesViewer/ValvesViewer.h b/src/shared/Modules/ValvesViewer/ValvesViewer.h index 7b3b6ac4..ee1f903d 100644 --- a/src/shared/Modules/ValvesViewer/ValvesViewer.h +++ b/src/shared/Modules/ValvesViewer/ValvesViewer.h @@ -20,6 +20,7 @@ #include <Core/Message/Filter.h> #include <Core/Message/Message.h> +#include <Core/MessageBroker/Subscription.h> #include <Modules/Module.h> #include <QLabel> -- GitLab