diff --git a/tools/cabana/messageswidget.cc b/tools/cabana/messageswidget.cc index 7d4938e427..aba655d66f 100644 --- a/tools/cabana/messageswidget.cc +++ b/tools/cabana/messageswidget.cc @@ -1,6 +1,7 @@ #include "tools/cabana/messageswidget.h" #include +#include #include #include @@ -52,18 +53,18 @@ MessagesWidget::MessagesWidget(QWidget *parent) : menu(new QMenu(this)), QWidget // signals/slots QObject::connect(menu, &QMenu::aboutToShow, this, &MessagesWidget::menuAboutToShow); - QObject::connect(header, &MessageViewHeader::filtersUpdated, model, &MessageListModel::setFilterStrings); QObject::connect(header, &MessageViewHeader::customContextMenuRequested, this, &MessagesWidget::headerContextMenuEvent); QObject::connect(view->horizontalScrollBar(), &QScrollBar::valueChanged, header, &MessageViewHeader::updateHeaderPositions); QObject::connect(suppress_defined_signals, &QCheckBox::stateChanged, can, &AbstractStream::suppressDefinedSignals); QObject::connect(can, &AbstractStream::msgsReceived, model, &MessageListModel::msgsReceived); - QObject::connect(dbc(), &DBCManager::DBCFileChanged, this, &MessagesWidget::dbcModified); - QObject::connect(UndoStack::instance(), &QUndoStack::indexChanged, this, &MessagesWidget::dbcModified); + QObject::connect(dbc(), &DBCManager::DBCFileChanged, model, &MessageListModel::dbcModified); + QObject::connect(UndoStack::instance(), &QUndoStack::indexChanged, model, &MessageListModel::dbcModified); QObject::connect(model, &MessageListModel::modelReset, [this]() { if (current_msg_id) { selectMessage(*current_msg_id); } view->updateBytesSectionSize(); + updateTitle(); }); QObject::connect(view->selectionModel(), &QItemSelectionModel::currentChanged, [=](const QModelIndex ¤t, const QModelIndex &previous) { if (current.isValid() && current.row() < model->items_.size()) { @@ -103,9 +104,15 @@ QToolBar *MessagesWidget::createToolBar() { return toolbar; } -void MessagesWidget::dbcModified() { - num_msg_label->setText(tr("%1 Messages, %2 Signals").arg(dbc()->msgCount()).arg(dbc()->signalCount())); - model->dbcModified(); +void MessagesWidget::updateTitle() { + auto stats = std::accumulate( + model->items_.begin(), model->items_.end(), std::pair(), + [](const auto &pair, const auto &item) { + auto m = dbc()->msg(item.id); + return m ? std::make_pair(pair.first + 1, pair.second + m->sigs.size()) : pair; + }); + num_msg_label->setText(tr("%1 Messages (%2 DBC Messages, %3 Signals)") + .arg(model->items_.size()).arg(stats.first).arg(stats.second)); } void MessagesWidget::selectMessage(const MessageId &msg_id) { @@ -398,7 +405,7 @@ void MessageViewHeader::updateFilters() { filters[i] = editors[i]->text(); } } - emit filtersUpdated(filters); + qobject_cast(model())->setFilterStrings(filters); } void MessageViewHeader::updateHeaderPositions() { diff --git a/tools/cabana/messageswidget.h b/tools/cabana/messageswidget.h index 2452dcf212..4f54941c64 100644 --- a/tools/cabana/messageswidget.h +++ b/tools/cabana/messageswidget.h @@ -3,7 +3,6 @@ #include #include #include -#include #include #include @@ -80,11 +79,6 @@ public: void updateHeaderPositions(); void updateGeometries() override; QSize sizeHint() const override; - -signals: - void filtersUpdated(const QMap &filters); - -private: void updateFilters(); QMap editors; @@ -100,9 +94,6 @@ public: bool restoreHeaderState(const QByteArray &state) const { return view->header()->restoreState(state); } void suppressHighlighted(); -public slots: - void dbcModified(); - signals: void msgSelectionChanged(const MessageId &message_id); @@ -111,6 +102,7 @@ protected: void headerContextMenuEvent(const QPoint &pos); void menuAboutToShow(); void setMultiLineBytes(bool multi); + void updateTitle(); MessageView *view; MessageViewHeader *header;