From 56377cd09e212920ea6d53bfc25700797b9d66a6 Mon Sep 17 00:00:00 2001 From: Abdullah Tahiri Date: Tue, 5 Dec 2023 15:19:44 +0100 Subject: [PATCH] NotificationArea: Fix Lints --- src/Gui/NotificationArea.cpp | 79 +++++++++++++++++++++++++----------- 1 file changed, 56 insertions(+), 23 deletions(-) diff --git a/src/Gui/NotificationArea.cpp b/src/Gui/NotificationArea.cpp index 730c8ed93a..be26d1531d 100644 --- a/src/Gui/NotificationArea.cpp +++ b/src/Gui/NotificationArea.cpp @@ -70,6 +70,7 @@ struct NotificationAreaP // Structure holding all variables necessary for the Notification Area. // Preference parameters are updated by NotificationArea::ParameterObserver + //NOLINTBEGIN /** @name Non-intrusive notifications parameters */ //@{ /// Parameter controlled @@ -98,7 +99,7 @@ struct NotificationAreaP int maxWidgetMessages = 1000; /// User notifications get automatically removed from the Widget after the non-intrusive /// notification expiration time - bool autoRemoveUserNotifications; + bool autoRemoveUserNotifications = false; //@} /** @name Notification rate control */ @@ -125,8 +126,8 @@ struct NotificationAreaP std::mutex mutexNotification; // Pointers to widgets (no ownership) - QMenu* menu; - QWidgetAction* notificationaction; + QMenu* menu = nullptr; + QWidgetAction* notificationaction = nullptr; /** @name Resources */ //@{ @@ -136,6 +137,8 @@ struct NotificationAreaP /// Preference Parameter observer std::unique_ptr parameterObserver; //@} + + //NOLINTEND }; }// namespace Gui @@ -150,10 +153,12 @@ class ResourceManager private: ResourceManager() { + //NOLINTBEGIN error = BitmapFactory().pixmapFromSvg(":/icons/edit_Cancel.svg", QSize(16, 16)); warning = BitmapFactory().pixmapFromSvg(":/icons/Warning.svg", QSize(16, 16)); critical = BitmapFactory().pixmapFromSvg(":/icons/critical-info.svg", QSize(16, 16)); info = BitmapFactory().pixmapFromSvg(":/icons/info.svg", QSize(16, 16)); + //NOLINTEND notificationArea = QIcon(QStringLiteral(":/icons/InTray.svg")); notificationAreaMissedNotifications = QIcon(QStringLiteral(":/icons/InTray_missed_notifications.svg")); @@ -222,6 +227,11 @@ public: NotificationAreaObserver(NotificationArea* notificationarea); ~NotificationAreaObserver() override; + NotificationAreaObserver(const NotificationAreaObserver &) = delete; + NotificationAreaObserver(NotificationAreaObserver &&) = delete; + NotificationAreaObserver &operator=(const NotificationAreaObserver &) = delete; + NotificationAreaObserver &operator=(NotificationAreaObserver &&) = delete; + /// Function that is called by the console interface for this observer with the message /// information void SendLog(const std::string& notifiername, const std::string& msg, Base::LogStyle level, @@ -452,11 +462,16 @@ public: : QWidgetAction(parent) {} + NotificationsAction(const NotificationsAction &) = delete; + NotificationsAction(NotificationsAction &&) = delete; + NotificationsAction & operator=(const NotificationsAction &) = delete; + NotificationsAction & operator=(NotificationsAction &&) = delete; + ~NotificationsAction() override { for (auto* item : qAsConst(pushedItems)) { if (item) { - delete item; + delete item; // NOLINT } } } @@ -467,16 +482,18 @@ public: { if (tableWidget) { for (int i = tableWidget->topLevelItemCount() - 1; i >= 0; i--) { + //NOLINTNEXTLINE auto* item = static_cast(tableWidget->topLevelItem(i)); if (item->isType(Base::LogStyle::Notification)) { - delete item; + delete item; //NOLINT } } } for (int i = pushedItems.size() - 1; i >= 0; i--) { + //NOLINTNEXTLINE auto* item = static_cast(pushedItems.at(i)); if (item->isType(Base::LogStyle::Notification)) { - delete pushedItems.takeAt(i); + delete pushedItems.takeAt(i); //NOLINT } } } @@ -521,6 +538,7 @@ public: { for (auto i = 0; i < tableWidget->topLevelItemCount(); i++) {// all messages were read, so clear the unread flag + //NOLINTNEXTLINE auto* item = static_cast(tableWidget->topLevelItem(i)); item->setRead(); } @@ -574,10 +592,10 @@ public: void deleteItem(int index) { if (index < pushedItems.count()) { - delete pushedItems.takeAt(index); + delete pushedItems.takeAt(index); //NOLINT } else { - delete tableWidget->topLevelItem(index - pushedItems.count()); + delete tableWidget->topLevelItem(index - pushedItems.count()); //NOLINT } } @@ -602,6 +620,7 @@ public: bool isSameNotification(const QString& notifiername, const QString& message, Base::LogStyle level) const { if(count() > 0) { // if not empty + //NOLINTNEXTLINE auto item = static_cast(getItem(0)); return item->isRepeated(level,notifiername,message); } @@ -610,6 +629,7 @@ public: } void resetLastNotificationStatus() { + //NOLINTNEXTLINE auto item = static_cast(getItem(0)); item->addRepetition(); } @@ -631,6 +651,7 @@ protected: /// creates the Notifications Widget QWidget* createWidget(QWidget* parent) override { + //NOLINTBEGIN QWidget* notificationsWidget = new QWidget(parent); QHBoxLayout* layout = new QHBoxLayout(notificationsWidget); @@ -653,10 +674,10 @@ protected: tableWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); tableWidget->setContextMenuPolicy(Qt::CustomContextMenu); + // context menu on any item (row) of the widget QObject::connect( tableWidget, &QTreeWidget::customContextMenuRequested, [&](const QPoint& pos) { - // auto item = tableWidget->itemAt(pos); auto selectedItems = tableWidget->selectedItems(); QMenu menu; @@ -687,6 +708,7 @@ protected: menu.exec(tableWidget->mapToGlobal(pos)); }); + //NOLINTEND return notificationsWidget; } @@ -698,12 +720,14 @@ private: { int instate = 0; for (auto i = 0; i < tableWidget->topLevelItemCount(); i++) { + //NOLINTNEXTLINE auto* item = static_cast(tableWidget->topLevelItem(i)); if (F(item)) { instate++; } } for (auto i = 0; i < pushedItems.count(); i++) { + //NOLINTNEXTLINE auto* item = static_cast(pushedItems.at(i)); if (F(item)) { instate++; @@ -713,7 +737,7 @@ private: } private: - QTreeWidget* tableWidget; + QTreeWidget* tableWidget = nullptr; // Intermediate storage // Note: QTreeWidget is helplessly slow to single insertions, QTreeWidget is actually only // necessary when showing the widget. A single QList insertion into a QTreeWidget is actually @@ -730,6 +754,7 @@ NotificationArea::ParameterObserver::ParameterObserver(NotificationArea* notific hGrp = App::GetApplication().GetParameterGroupByPath( "User parameter:BaseApp/Preferences/NotificationArea"); + //NOLINTBEGIN parameterMap = { {"NotificationAreaEnabled", [this](const std::string& string) { @@ -803,6 +828,7 @@ NotificationArea::ParameterObserver::ParameterObserver(NotificationArea* notific notificationArea->pImp->developerWarningSubscriptionEnabled = enabled; }}, }; + //NOLINTEND for (auto& val : parameterMap) { auto string = val.first; @@ -849,15 +875,16 @@ NotificationArea::NotificationArea(QWidget* parent) pImp->observer = std::make_unique(this); pImp->parameterObserver = std::make_unique(this); - pImp->menu = new QMenu(parent); + pImp->menu = new QMenu(parent); //NOLINT setMenu(pImp->menu); - auto na = new NotificationsAction(pImp->menu); + auto na = new NotificationsAction(pImp->menu); //NOLINT pImp->menu->addAction(na); pImp->notificationaction = na; + //NOLINTBEGIN // Signals for synchronisation of storage before showing/hiding the widget QObject::connect(pImp->menu, &QMenu::aboutToHide, [&]() { lock_guard g(pImp->mutexNotification); @@ -913,8 +940,6 @@ NotificationArea::NotificationArea(QWidget* parent) }); }); - - //NOLINTBEGIN // Connection to the finish restore signal to rearm Critical messages modal mode when action is // user initiated pImp->finishRestoreDocumentConnection = @@ -947,6 +972,7 @@ void NotificationArea::mousePressEvent(QMouseEvent* e) if (e->button() == Qt::RightButton && hitButton(e->pos())) { QMenu menu; + //NOLINTBEGIN NotificationsAction* na = static_cast(pImp->notificationaction); QAction* delnotifications = menu.addAction(tr("Delete user notifications"), [&]() { @@ -964,6 +990,7 @@ void NotificationArea::mousePressEvent(QMouseEvent* e) na->deleteAll(); setText(QString::number(0)); }); + //NOLINTEND delall->setEnabled(!na->isEmpty()); @@ -995,6 +1022,7 @@ void NotificationArea::pushNotification(const QString& notifiername, const QStri // guard to avoid modifying the notification list and indices while creating the tooltip lock_guard g(pImp->mutexNotification); + //NOLINTNEXTLINE NotificationsAction* na = static_cast(pImp->notificationaction); // Limit the maximum number of messages stored in the widget (0 means no limit) @@ -1013,9 +1041,11 @@ void NotificationArea::pushNotification(const QString& notifiername, const QStri // only) if (pImp->notificationsDisabled) { item->setNotified(); // avoid mass of old notifications if feature is activated afterwards + //NOLINTBEGIN setText(QString::number( static_cast(pImp->notificationaction)->getUnreadCount())); return; + //NOLINTEND } } else { @@ -1039,7 +1069,7 @@ void NotificationArea::pushNotification(const QString& notifiername, const QStri auto current_thread = QThread::currentThread(); if (timer_thread == current_thread) { - pImp->inhibitTimer.start(pImp->inhibitNotificationTime); + pImp->inhibitTimer.start(static_cast(pImp->inhibitNotificationTime)); } } @@ -1074,6 +1104,7 @@ void NotificationArea::showInNotificationArea() // guard to avoid modifying the notification list and indices while creating the tooltip lock_guard g(pImp->mutexNotification); + //NOLINTNEXTLINE NotificationsAction* na = static_cast(pImp->notificationaction); if (!NotificationBox::isVisible()) { @@ -1081,7 +1112,9 @@ void NotificationArea::showInNotificationArea() // button) ensure that old notifications are not shown again, even if the timer has not // lapsed int i = 0; + //NOLINTNEXTLINE while (i < na->count() && static_cast(na->getItem(i))->isNotifying()) { + //NOLINTNEXTLINE NotificationItem* item = static_cast(na->getItem(i)); if (item->isShown()) { @@ -1110,9 +1143,7 @@ void NotificationArea::showInNotificationArea() %2 \ %3 \ ") - .arg(QObject::tr("Type")) - .arg(QObject::tr("Notifier")) - .arg(QObject::tr("Message")); + .arg(QObject::tr("Type"), QObject::tr("Notifier"), QObject::tr("Message")); auto currentlynotifying = na->getCurrentlyNotifyingCount(); @@ -1131,9 +1162,11 @@ void NotificationArea::showInNotificationArea() int i = 0; + //NOLINTNEXTLINE while (i < na->count() && static_cast(na->getItem(i))->isNotifying()) { if (i < pImp->maxOpenNotifications) {// show the first up to maxOpenNotifications + //NOLINTNEXTLINE NotificationItem* item = static_cast(na->getItem(i)); QString iconstr; @@ -1161,9 +1194,7 @@ void NotificationArea::showInNotificationArea() %2 \ %3 \ ") - .arg(iconstr) - .arg(item->getNotifier()) - .arg(tmpmessage); + .arg(iconstr, item->getNotifier(), tmpmessage); // start a timer for each of these notifications that was not previously shown if (!item->isShown()) { @@ -1180,7 +1211,7 @@ void NotificationArea::showInNotificationArea() if (pImp->autoRemoveUserNotifications) { if (item->isType(Base::LogStyle::Notification)) { - + //NOLINTNEXTLINE static_cast(pImp->notificationaction) ->deleteItem(item); } @@ -1193,8 +1224,10 @@ void NotificationArea::showInNotificationArea() item->setShown(); } else {// We do not have more space and older notifications will be too old + //NOLINTBEGIN static_cast(na->getItem(i))->setNotified(); static_cast(na->getItem(i))->resetShown(); + //NOLINTEND } i++; @@ -1215,7 +1248,7 @@ void NotificationArea::showInNotificationArea() bool isshown = NotificationBox::showText(this->mapToGlobal(QPoint()), msgw, getMainWindow(), - pImp->notificationExpirationTime, + static_cast(pImp->notificationExpirationTime), pImp->minimumOnScreenTime, options, pImp->notificationWidth);