From 3c9eeb9a7538de96011eea5175fa4a8946062f84 Mon Sep 17 00:00:00 2001 From: mvglasow Date: Tue, 21 Oct 2025 21:13:26 +0300 Subject: [PATCH] [traff_assessment_tool] Introduce status line for traffic panel Signed-off-by: mvglasow --- tools/traff_assessment_tool/mainwindow.cpp | 17 +++++--------- tools/traff_assessment_tool/mainwindow.hpp | 6 ++--- tools/traff_assessment_tool/traffic_model.cpp | 11 ++++----- tools/traff_assessment_tool/traffic_model.hpp | 7 +++--- tools/traff_assessment_tool/traffic_panel.cpp | 23 +++++++++++++++++++ tools/traff_assessment_tool/traffic_panel.hpp | 5 ++++ 6 files changed, 45 insertions(+), 24 deletions(-) diff --git a/tools/traff_assessment_tool/mainwindow.cpp b/tools/traff_assessment_tool/mainwindow.cpp index 3b2819042..780506880 100644 --- a/tools/traff_assessment_tool/mainwindow.cpp +++ b/tools/traff_assessment_tool/mainwindow.cpp @@ -3,6 +3,7 @@ #include "traff_assessment_tool/map_widget.hpp" #include "traff_assessment_tool/points_controller_delegate_base.hpp" #include "traff_assessment_tool/traffic_drawer_delegate_base.hpp" +#include "traff_assessment_tool/traffic_model.hpp" #include "traff_assessment_tool/traffic_panel.hpp" #include "traff_assessment_tool/trafficmodeinitdlg.h" @@ -317,7 +318,7 @@ void MainWindow::CreateTrafficPanel() { if (!m_trafficModel) { - m_trafficModel = new TrafficModel(m_framework, *this); + m_trafficModel = new TrafficModel(m_framework); connect(m_mapWidget, &MapWidget::TrafficMarkupClick, m_trafficModel, &TrafficModel::OnClick); @@ -332,17 +333,14 @@ void MainWindow::CreateTrafficPanel() m_dockWidget = new QDockWidget(tr("Messages"), this); addDockWidget(Qt::DockWidgetArea::RightDockWidgetArea, m_dockWidget); - m_dockWidget->setWidget(new TrafficPanel(m_trafficModel, m_dockWidget)); + m_trafficPanel = new TrafficPanel(m_trafficModel, m_dockWidget); + m_dockWidget->setWidget(m_trafficPanel); + m_trafficModel->SetTrafficPanel(m_trafficPanel); m_dockWidget->adjustSize(); m_dockWidget->setMinimumWidth(400); - - m_progressBar = new QProgressBar(m_dockWidget); - m_progressBar->setMinimum(0); - m_progressBar->setMaximum(0); - } - m_dockWidget->setTitleBarWidget(m_progressBar); + m_trafficPanel->SetStatus(true); m_dockWidget->show(); } @@ -353,9 +351,6 @@ void MainWindow::DestroyTrafficPanel() delete m_dockWidget; m_dockWidget = nullptr; - delete m_progressBar; - m_progressBar = nullptr; - delete m_trafficModel; m_trafficModel = nullptr; diff --git a/tools/traff_assessment_tool/mainwindow.hpp b/tools/traff_assessment_tool/mainwindow.hpp index a00995dc8..9f06ee66a 100644 --- a/tools/traff_assessment_tool/mainwindow.hpp +++ b/tools/traff_assessment_tool/mainwindow.hpp @@ -2,10 +2,11 @@ #include "base/string_utils.hpp" +#include "traff_assessment_tool/traffic_panel.hpp" + #include #include -#include class Framework; class QHBoxLayout; @@ -32,7 +33,6 @@ class MainWindow : public QMainWindow public: explicit MainWindow(Framework & framework); - QDockWidget * GetDockWidget() { return m_dockWidget; } private: void CreateTrafficPanel(); @@ -60,7 +60,7 @@ private: traffxml::TrafficModel * m_trafficModel = nullptr; QDockWidget * m_dockWidget = nullptr; - QProgressBar * m_progressBar = nullptr; + TrafficPanel * m_trafficPanel = nullptr; #ifdef openlr_obsolete QAction * m_goldifyMatchedPathAction = nullptr; diff --git a/tools/traff_assessment_tool/traffic_model.cpp b/tools/traff_assessment_tool/traffic_model.cpp index 75f6e6eec..d2de8f1a3 100644 --- a/tools/traff_assessment_tool/traffic_model.cpp +++ b/tools/traff_assessment_tool/traffic_model.cpp @@ -13,7 +13,6 @@ #include "base/assert.hpp" #include "base/scope_guard.hpp" -#include #include #include @@ -299,14 +298,12 @@ QVariant GetDescription(TraffMessage const & message) // TrafficModel ------------------------------------------------------------------------------------- TrafficModel::TrafficModel(Framework & framework, - MainWindow & mainWindow, - QObject * parent) + QObject * parent) : QAbstractTableModel(parent) , m_framework(framework) , m_dataSource(framework.GetDataSource()) , m_drawerDelegate(std::make_unique(framework)) , m_pointsDelegate(std::make_unique(framework)) - , m_mainWindow(mainWindow) { framework.GetTrafficManager().SetTrafficUpdateCallbackFn([this, &framework](bool final) { /* @@ -331,9 +328,9 @@ TrafficModel::TrafficModel(Framework & framework, editSession.ClearGroup(UserMark::Type::COLORED); editSession.SetIsVisible(UserMark::Type::COLORED, false); - // restore QDockWidget title - if (final && m_mainWindow.GetDockWidget()) - m_mainWindow.GetDockWidget()->setTitleBarWidget(nullptr); + // restore status bar + if (final) + m_trafficPanel->SetStatus(false, m_messages.size()); LOG(LINFO, ("Messages:", m_messages.size())); }); diff --git a/tools/traff_assessment_tool/traffic_model.hpp b/tools/traff_assessment_tool/traffic_model.hpp index c2dcf24a7..9450ecb76 100644 --- a/tools/traff_assessment_tool/traffic_model.hpp +++ b/tools/traff_assessment_tool/traffic_model.hpp @@ -6,6 +6,7 @@ #include "segment_correspondence.hpp" #endif #include "traffic_drawer_delegate_base.hpp" +#include "traffic_panel.hpp" #ifdef openlr_obsolete #include "openlr/decoded_path.hpp" @@ -71,10 +72,10 @@ class TrafficModel : public QAbstractTableModel public: // TODO(mgsergio): Check we are on the right mwm. I.e. right mwm version and everything. TrafficModel(Framework & framework, - MainWindow & mainWindow, - QObject * parent = Q_NULLPTR); + QObject * parent = Q_NULLPTR); bool SaveSampleAs(std::string const & fileName) const; + void SetTrafficPanel(TrafficPanel * panel) { m_trafficPanel = panel; } int rowCount(const QModelIndex & parent = QModelIndex()) const Q_DECL_OVERRIDE; int columnCount(const QModelIndex & parent = QModelIndex()) const Q_DECL_OVERRIDE; @@ -123,7 +124,7 @@ private: Framework & m_framework; DataSource const & m_dataSource; - MainWindow & m_mainWindow; + TrafficPanel * m_trafficPanel = nullptr; #ifdef openlr_obsolete std::vector m_segments; // Non-owning pointer to an element of m_segments. diff --git a/tools/traff_assessment_tool/traffic_panel.cpp b/tools/traff_assessment_tool/traffic_panel.cpp index 377e1a13e..483a306b6 100644 --- a/tools/traff_assessment_tool/traffic_panel.cpp +++ b/tools/traff_assessment_tool/traffic_panel.cpp @@ -52,6 +52,13 @@ TrafficPanel::TrafficPanel(QAbstractItemModel * trafficModel, QWidget * parent) auto * layout = new QVBoxLayout(); layout->addWidget(m_table); + m_progressBar = new QProgressBar(); + m_progressBar->setMinimum(0); + m_progressBar->setMaximum(0); + layout->addWidget(m_progressBar); + m_status = new QLabel("0 messages"); + layout->addWidget(m_status); + m_progressBar->hide(); setLayout(layout); // Select first segment by default; @@ -59,6 +66,22 @@ TrafficPanel::TrafficPanel(QAbstractItemModel * trafficModel, QWidget * parent) m_table->selectionModel()->select(index, QItemSelectionModel::Select); } +void TrafficPanel::SetStatus(bool inProgress, std::optional messageCount) +{ + if (inProgress) + { + m_status->hide(); + m_progressBar->show(); + } + else + { + if (messageCount) + m_status->setText(QString("Messages: %1").arg(messageCount.value())); + m_progressBar->hide(); + m_status->show(); + } +} + void TrafficPanel::CreateTable(QAbstractItemModel * trafficModel) { m_table = new QTableView(); diff --git a/tools/traff_assessment_tool/traffic_panel.hpp b/tools/traff_assessment_tool/traffic_panel.hpp index 27ab4d033..6c279cdae 100644 --- a/tools/traff_assessment_tool/traffic_panel.hpp +++ b/tools/traff_assessment_tool/traffic_panel.hpp @@ -1,5 +1,7 @@ #pragma once +#include +#include #include class QAbstractItemModel; @@ -34,6 +36,7 @@ class TrafficPanel : public QWidget public: explicit TrafficPanel(QAbstractItemModel * trafficModel, QWidget * parent); + void SetStatus(bool inProgress, std::optional messageCount = std::nullopt); private: void CreateTable(QAbstractItemModel * trafficModel); @@ -46,5 +49,7 @@ public slots: private: QTableView * m_table = Q_NULLPTR; + QProgressBar * m_progressBar = Q_NULLPTR; + QLabel * m_status = Q_NULLPTR; }; } // namespace traffxml