From 78f57698f66bc148ce73e8922b5847f851ed4636 Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Thu, 13 Oct 2022 07:07:17 -0500 Subject: [PATCH] Hook alert model in to alert view --- scwx-qt/source/scwx/qt/main/main_window.cpp | 31 +++++++++++++++++++-- scwx-qt/source/scwx/qt/main/main_window.ui | 12 +++++++- 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp index ba14585b..632748fd 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -7,6 +7,7 @@ #include #include #include +#include #include #include #include @@ -20,6 +21,7 @@ #include #include +#include #include #include #include @@ -46,6 +48,8 @@ public: level2ProductsWidget_ {nullptr}, level2SettingsWidget_ {nullptr}, radarSiteDialog_ {nullptr}, + alertModel_ {std::make_unique()}, + alertProxyModel_ {std::make_unique()}, radarProductModel_ {nullptr}, maps_ {}, elevationCuts_ {}, @@ -74,6 +78,11 @@ public: settings_.setApiKey(QString {mapboxApiKey.c_str()}); settings_.setCacheDatabasePath(QString {cacheDbPath.c_str()}); settings_.setCacheDatabaseMaximumSize(20 * 1024 * 1024); + + alertProxyModel_->setSourceModel(alertModel_.get()); + alertProxyModel_->setSortRole(Qt::UserRole); // TODO + alertProxyModel_->setFilterCaseSensitivity(Qt::CaseInsensitive); + alertProxyModel_->setFilterKeyColumn(-1); } ~MainWindowImpl() = default; @@ -106,7 +115,9 @@ public: ui::RadarSiteDialog* radarSiteDialog_; - std::shared_ptr radarProductModel_; + std::unique_ptr alertModel_; + std::unique_ptr alertProxyModel_; + std::unique_ptr radarProductModel_; std::vector maps_; std::vector elevationCuts_; @@ -156,12 +167,14 @@ MainWindow::MainWindow(QWidget* parent) : // Configure Resource Explorer Dock ui->resourceExplorerDock->setVisible(false); - p->radarProductModel_ = std::make_shared(); + p->radarProductModel_ = std::make_unique(); ui->resourceTreeView->setModel(p->radarProductModel_->model()); // Configure Alert Dock ui->alertDock->setVisible(false); + ui->alertView->setModel(p->alertProxyModel_.get()); + ui->alertSettings->addAction(ui->actionActiveAlerts); // Configure Map @@ -461,6 +474,20 @@ void MainWindowImpl::ConnectOtherSignals() &ui::Level2SettingsWidget::ElevationSelected, mainWindow_, [&](float elevation) { SelectElevation(activeMap_, elevation); }); + connect(mainWindow_->ui->alertFilter, + &QLineEdit::textChanged, + alertProxyModel_.get(), + &QSortFilterProxyModel::setFilterWildcard); + connect(mainWindow_, + &MainWindow::ActiveMapMoved, + alertModel_.get(), + &model::AlertModel::HandleMapUpdate, + Qt::QueuedConnection); + connect(&manager::TextEventManager::Instance(), + &manager::TextEventManager::AlertUpdated, + alertModel_.get(), + &model::AlertModel::HandleAlert, + Qt::QueuedConnection); connect(mainWindow_, &MainWindow::ActiveMapMoved, radarSiteDialog_, diff --git a/scwx-qt/source/scwx/qt/main/main_window.ui b/scwx-qt/source/scwx/qt/main/main_window.ui index 8cc65cac..878e39bd 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.ui +++ b/scwx-qt/source/scwx/qt/main/main_window.ui @@ -317,7 +317,17 @@ - + + + true + + + 0 + + + true + +