From 1f497d11f673d9a86879fb6d3026ffc5538b8c99 Mon Sep 17 00:00:00 2001 From: Raul Radu <raul.radu@mail.polimi.it> Date: Wed, 7 Feb 2024 22:49:09 +0100 Subject: [PATCH] [Modules] CommandSelector using smart pointers --- .../CompactCommandPad/CommandSelector.cpp | 47 +++++++++---------- .../CompactCommandPad/CommandSelector.h | 18 +++---- 2 files changed, 31 insertions(+), 34 deletions(-) diff --git a/src/shared/Modules/CompactCommandPad/CommandSelector.cpp b/src/shared/Modules/CompactCommandPad/CommandSelector.cpp index 24497f54..ec153cbf 100644 --- a/src/shared/Modules/CompactCommandPad/CommandSelector.cpp +++ b/src/shared/Modules/CompactCommandPad/CommandSelector.cpp @@ -22,16 +22,13 @@ #include <QDebug> -CommandSelector::CommandSelector(Module* parent) : QDialog(), parent(parent) +CommandSelector::CommandSelector(std::shared_ptr<Module> parent) + : QDialog(), parent(std::move(parent)) { setupUi(); } -CommandSelector::~CommandSelector() -{ - for (auto key : formElements.keys()) - delete formElements[key]; -} +CommandSelector::~CommandSelector() {} XmlObject CommandSelector::toXmlObject(XmlObject& obj) { @@ -91,41 +88,41 @@ bool CommandSelector::getSelection(QString& label, Message& message, void CommandSelector::setupUi() { - outerLayout = new QVBoxLayout; + outerLayout = std::make_unique<QVBoxLayout>(); outerLayout->setSizeConstraint(QLayout::SetFixedSize); - lineEdit = new QLineEdit; + lineEdit = std::make_unique<QLineEdit>(); lineEdit->setPlaceholderText("Write the button label"); - outerLayout->addWidget(lineEdit); + outerLayout->addWidget(lineEdit.get()); - continuosCheck = new QCheckBox; + continuosCheck = std::make_unique<QCheckBox>(); continuosCheck->setText("Continuos Send"); - outerLayout->addWidget(continuosCheck); + outerLayout->addWidget(continuosCheck.get()); QObject::connect( - continuosCheck, &QCheckBox::stateChanged, + continuosCheck.get(), &QCheckBox::stateChanged, [this]() { continuosTimeoutEdit->setHidden(!continuosCheck->isChecked()); }); - continuosTimeoutEdit = new QLineEdit(); + continuosTimeoutEdit = std::make_unique<QLineEdit>(); continuosTimeoutEdit->setPlaceholderText("Choose resend timeout in ms"); continuosTimeoutEdit->setHidden(true); - outerLayout->addWidget(continuosTimeoutEdit); + outerLayout->addWidget(continuosTimeoutEdit.get()); - messagesListComboBox = new QComboBox; + messagesListComboBox = std::make_unique<QComboBox>(); messagesListComboBox->setSizePolicy( QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed)); messagesListComboBox->addItems(MessagesList::messagesList); - outerLayout->addWidget(messagesListComboBox); + outerLayout->addWidget(messagesListComboBox.get()); - formGridLayout = new QGridLayout; - outerLayout->addLayout(formGridLayout); + formGridLayout = std::make_unique<QGridLayout>(); + outerLayout->addLayout(formGridLayout.get()); outerLayout->addStretch(); - sendButton = new QPushButton("Select"); - outerLayout->addWidget(sendButton); + sendButton = std::make_unique<QPushButton>("Select"); + outerLayout->addWidget(sendButton.get()); - setLayout(outerLayout); + setLayout(outerLayout.get()); MessagesList::fillMessagesMap(formElements); @@ -133,19 +130,19 @@ void CommandSelector::setupUi() currentMessage = "PING_TC"; messagesListComboBox->setCurrentText(currentMessage); - connect(messagesListComboBox, &QComboBox::currentTextChanged, this, + connect(messagesListComboBox.get(), &QComboBox::currentTextChanged, this, [=](QString key) { if (formElements.contains(key)) { formElements[currentMessage]->removeFromGridLayout( - formGridLayout); - formElements[key]->applyToGridLayout(formGridLayout); + formGridLayout.get()); + formElements[key]->applyToGridLayout(formGridLayout.get()); currentMessage = key; } }); - connect(sendButton, &QPushButton::clicked, + connect(sendButton.get(), &QPushButton::clicked, [=]() { if (continuosCheck->isChecked()) diff --git a/src/shared/Modules/CompactCommandPad/CommandSelector.h b/src/shared/Modules/CompactCommandPad/CommandSelector.h index e15477ad..b21ba186 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(Module* parent); + explicit CommandSelector(std::shared_ptr<Module> parent); ~CommandSelector(); XmlObject toXmlObject(XmlObject& obj); @@ -50,17 +50,17 @@ private: void setupUi(); QString currentMessage; - QVBoxLayout* outerLayout; - QLineEdit *lineEdit, *continuosTimeoutEdit; - QComboBox* messagesListComboBox; - QMap<QString, MessageFormElement*> formElements; - QGridLayout* formGridLayout; - QPushButton* sendButton; - QCheckBox* continuosCheck; + std::unique_ptr<QVBoxLayout> outerLayout; + std::unique_ptr<QLineEdit> lineEdit, continuosTimeoutEdit; + std::unique_ptr<QComboBox> messagesListComboBox; + QMap<QString, std::unique_ptr<MessageFormElement>> formElements; + std::unique_ptr<QGridLayout> formGridLayout; + std::unique_ptr<QPushButton> sendButton; + std::unique_ptr<QCheckBox> continuosCheck; bool selected = false; QString selectedLabel; Message selectedMessage; - Module* parent; + std::shared_ptr<Module> parent; }; -- GitLab