From 05049dd7f474c9c55666fd466e326a8869daed7a Mon Sep 17 00:00:00 2001 From: Raul Radu <raul.radu@mail.polimi.it> Date: Wed, 7 Feb 2024 22:32:31 +0100 Subject: [PATCH] [Errors] Using smart pointers in ErrorDisplayer & Error --- .../Components/ErrorDisplayer/Error.cpp | 6 +++--- .../ErrorDisplayer/ErrorDisplayer.cpp | 21 +++++++------------ .../ErrorDisplayer/ErrorDisplayer.h | 4 +--- 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/src/shared/Components/ErrorDisplayer/Error.cpp b/src/shared/Components/ErrorDisplayer/Error.cpp index 2222d2da..8f6a1df9 100644 --- a/src/shared/Components/ErrorDisplayer/Error.cpp +++ b/src/shared/Components/ErrorDisplayer/Error.cpp @@ -77,7 +77,7 @@ Error::Error(ErrorDisplayer* _displayer, QString _title, QString _description, adjustSize(); } -Error::~Error() { displayer->removeError(this); } +Error::~Error() {} void Error::incrementCount(int msecDuration) { @@ -86,8 +86,8 @@ void Error::incrementCount(int msecDuration) { countLabel.setText(QString::number(count)); } - QTimer* timer = new QTimer(this); - connect(timer, &QTimer::timeout, this, &Error::decrementCount); + std::unique_ptr<QTimer> timer = std::make_unique<QTimer>(this); + connect(timer.get(), &QTimer::timeout, this, &Error::decrementCount); timer->start(msecDuration); } diff --git a/src/shared/Components/ErrorDisplayer/ErrorDisplayer.cpp b/src/shared/Components/ErrorDisplayer/ErrorDisplayer.cpp index dc8abee0..be8af55d 100644 --- a/src/shared/Components/ErrorDisplayer/ErrorDisplayer.cpp +++ b/src/shared/Components/ErrorDisplayer/ErrorDisplayer.cpp @@ -33,10 +33,10 @@ ErrorDisplayer::ErrorDisplayer(QWidget* _parent) : QWidget(_parent) ErrorDisplayer::~ErrorDisplayer() { - while (!errors.isEmpty()) + /*while (!errors.isEmpty()) { delete errors.takeFirst(); - } + }*/ } void ErrorDisplayer::createError(QString title, QString description, @@ -44,27 +44,22 @@ void ErrorDisplayer::createError(QString title, QString description, { if (!errors.isEmpty()) { - Error* lastError = errors.last(); + auto& lastError = errors.last(); if (lastError->compareError(title, description, type)) { lastError->incrementCount(msecDuration); return; } } - Error* error = new Error(this, title, description, type, msecDuration); - layout.addWidget(error); - errors.append(error); + auto error = + std::make_unique<Error>(this, title, description, type, msecDuration); + auto* errorAddr = error.get(); + layout.addWidget(errorAddr); + errors.append(std::move(error)); error->show(); reposition(); } -void ErrorDisplayer::removeError(Error* error) -{ - layout.removeWidget(error); - errors.removeAll(error); - reposition(); -} - void ErrorDisplayer::reposition() { adjustSize(); diff --git a/src/shared/Components/ErrorDisplayer/ErrorDisplayer.h b/src/shared/Components/ErrorDisplayer/ErrorDisplayer.h index 38d3c962..9b6940b9 100644 --- a/src/shared/Components/ErrorDisplayer/ErrorDisplayer.h +++ b/src/shared/Components/ErrorDisplayer/ErrorDisplayer.h @@ -41,13 +41,11 @@ public: void reposition(); protected: - void removeError(Error* error); - friend class Error; private: QWidget* parent; int index; QVBoxLayout layout; - QList<Error*> errors; + QList<std::unique_ptr<Error>> errors; }; -- GitLab