From 6ba5865c8fd755687f3c1852ed2f27d58f8dd03e Mon Sep 17 00:00:00 2001 From: dogmaphobic Date: Tue, 17 Feb 2015 17:44:23 -0500 Subject: [PATCH] Fixing signal/slot connections Removed "Clear Text" context menu from roll down dialog Fixed "Clear Text" context menu in Info Dialog (renamed to "Clear Messages" in the process) --- src/uas/UASMessageHandler.cc | 8 ++++---- src/uas/UASMessageHandler.h | 5 ++++- src/ui/QGCToolBar.cc | 6 +++++- src/ui/uas/UASMessageView.cc | 17 ++++++++++------- src/ui/uas/UASMessageView.h | 1 + 5 files changed, 24 insertions(+), 13 deletions(-) diff --git a/src/uas/UASMessageHandler.cc b/src/uas/UASMessageHandler.cc index 1dc9b06cd..4bd13a0bf 100644 --- a/src/uas/UASMessageHandler.cc +++ b/src/uas/UASMessageHandler.cc @@ -50,10 +50,10 @@ UASMessageHandler::UASMessageHandler(QObject *parent) UASMessageHandler::~UASMessageHandler() { - _clearMessages(); + clearMessages(); } -void UASMessageHandler::_clearMessages() +void UASMessageHandler::clearMessages() { _mutex.lock(); while(_messages.count()) { @@ -70,14 +70,14 @@ void UASMessageHandler::setActiveUAS(UASInterface* uas) { disconnect(_activeUAS, SIGNAL(textMessageReceived(int,int,int,QString)), this, SLOT(handleTextMessage(int,int,int,QString))); _activeUAS = NULL; - _clearMessages(); + clearMessages(); emit textMessageReceived(NULL); } // And now if there's an autopilot to follow, set up the UI. if (uas) { // Connect to the new UAS. - _clearMessages(); + clearMessages(); _activeUAS = uas; connect(uas, SIGNAL(textMessageReceived(int,int,int,QString)), this, SLOT(handleTextMessage(int,int,int,QString))); } diff --git a/src/uas/UASMessageHandler.h b/src/uas/UASMessageHandler.h index d526e95b3..94a5a5cdd 100644 --- a/src/uas/UASMessageHandler.h +++ b/src/uas/UASMessageHandler.h @@ -91,6 +91,10 @@ public: * @brief Access to the message list */ const QVector& messages() { return _messages; } + /** + * @brief Clear messages + */ + void clearMessages(); public slots: /** * @brief Set currently active UAS @@ -112,7 +116,6 @@ signals: */ void textMessageReceived(UASMessage* message); private: - void _clearMessages(); // Stores the UAS that we're currently receiving messages from. UASInterface* _activeUAS; QVector _messages; diff --git a/src/ui/QGCToolBar.cc b/src/ui/QGCToolBar.cc index 89cde7c99..5ac81b404 100644 --- a/src/ui/QGCToolBar.cc +++ b/src/ui/QGCToolBar.cc @@ -434,7 +434,11 @@ void QGCToolBar::updateView() if (QGC::groundTimeMilliseconds() - lastSystemMessageTimeMs < 15000) { toolBarMessageLabel->setText(QString("%1").arg(lastSystemMessage)); } else { - toolBarMessageLabel->setText(tr("Messages")); + if(UASMessageHandler::instance()->messages().count()) { + toolBarMessageLabel->setText(tr("Messages")); + } else { + toolBarMessageLabel->setText(tr("No Messages")); + } } } diff --git a/src/ui/uas/UASMessageView.cc b/src/ui/uas/UASMessageView.cc index e597f3d9c..639df7f5a 100644 --- a/src/ui/uas/UASMessageView.cc +++ b/src/ui/uas/UASMessageView.cc @@ -63,11 +63,11 @@ UASMessageViewWidget::UASMessageViewWidget(QWidget *parent) // widget has its context menu policy set to its actions list. So any actions we add // to this widget's action list will be automatically displayed. // We only have the clear action right now. - QAction* clearAction = new QAction(tr("Clear Text"), this); - connect(clearAction, SIGNAL(triggered()), ui()->plainTextEdit, SLOT(clear())); + QAction* clearAction = new QAction(tr("Clear Messages"), this); + connect(clearAction, &QAction::triggered, this, &UASMessageViewWidget::clearMessages); ui()->plainTextEdit->addAction(clearAction); // Connect message handler - connect(UASMessageHandler::instance(), SIGNAL(textMessageReceived(UASMessage*)), this, SLOT(handleTextMessage(UASMessage*))); + connect(UASMessageHandler::instance(), &UASMessageHandler::textMessageReceived, this, &UASMessageViewWidget::handleTextMessage); } UASMessageViewWidget::~UASMessageViewWidget() @@ -75,6 +75,12 @@ UASMessageViewWidget::~UASMessageViewWidget() } +void UASMessageViewWidget::clearMessages() +{ + ui()->plainTextEdit->clear(); + UASMessageHandler::instance()->clearMessages(); +} + void UASMessageViewWidget::handleTextMessage(UASMessage *message) { // Reset @@ -112,9 +118,6 @@ UASMessageViewRollDown::UASMessageViewRollDown(QWidget *parent, QGCToolBar *tool setAttribute(Qt::WA_TranslucentBackground); setStyleSheet("background-color: rgba(0%,0%,0%,80%); border: 2px;"); QPlainTextEdit *msgWidget = ui()->plainTextEdit; - QAction* clearAction = new QAction(tr("Clear Text"), this); - connect(clearAction, SIGNAL(triggered()), msgWidget, SLOT(clear())); - msgWidget->addAction(clearAction); // Init Messages UASMessageHandler::instance()->lockAccess(); msgWidget->setUpdatesEnabled(false); @@ -125,7 +128,7 @@ UASMessageViewRollDown::UASMessageViewRollDown(QWidget *parent, QGCToolBar *tool QScrollBar *scroller = msgWidget->verticalScrollBar(); scroller->setValue(scroller->maximum()); msgWidget->setUpdatesEnabled(true); - connect(UASMessageHandler::instance(), SIGNAL(textMessageReceived(UASMessage*)), this, SLOT(handleTextMessage(UASMessage*))); + connect(UASMessageHandler::instance(), &UASMessageHandler::textMessageReceived, this, &UASMessageViewRollDown::handleTextMessage); UASMessageHandler::instance()->unlockAccess(); } diff --git a/src/ui/uas/UASMessageView.h b/src/ui/uas/UASMessageView.h index 2edbc12d0..cec9fa893 100644 --- a/src/ui/uas/UASMessageView.h +++ b/src/ui/uas/UASMessageView.h @@ -59,6 +59,7 @@ public: ~UASMessageViewWidget(); public slots: void handleTextMessage(UASMessage* message); + void clearMessages(); private: QGCUnconnectedInfoWidget* _unconnectedWidget; }; -- 2.22.0