Hook alert model in to alert view

This commit is contained in:
Dan Paulat 2022-10-13 07:07:17 -05:00
parent 9afba385ea
commit 78f57698f6
2 changed files with 40 additions and 3 deletions

View file

@ -7,6 +7,7 @@
#include <scwx/qt/manager/settings_manager.hpp> #include <scwx/qt/manager/settings_manager.hpp>
#include <scwx/qt/manager/text_event_manager.hpp> #include <scwx/qt/manager/text_event_manager.hpp>
#include <scwx/qt/map/map_widget.hpp> #include <scwx/qt/map/map_widget.hpp>
#include <scwx/qt/model/alert_model.hpp>
#include <scwx/qt/model/radar_product_model.hpp> #include <scwx/qt/model/radar_product_model.hpp>
#include <scwx/qt/ui/flow_layout.hpp> #include <scwx/qt/ui/flow_layout.hpp>
#include <scwx/qt/ui/level2_products_widget.hpp> #include <scwx/qt/ui/level2_products_widget.hpp>
@ -20,6 +21,7 @@
#include <QFileDialog> #include <QFileDialog>
#include <QMessageBox> #include <QMessageBox>
#include <QSortFilterProxyModel>
#include <QSplitter> #include <QSplitter>
#include <QStandardPaths> #include <QStandardPaths>
#include <QToolButton> #include <QToolButton>
@ -46,6 +48,8 @@ public:
level2ProductsWidget_ {nullptr}, level2ProductsWidget_ {nullptr},
level2SettingsWidget_ {nullptr}, level2SettingsWidget_ {nullptr},
radarSiteDialog_ {nullptr}, radarSiteDialog_ {nullptr},
alertModel_ {std::make_unique<model::AlertModel>()},
alertProxyModel_ {std::make_unique<QSortFilterProxyModel>()},
radarProductModel_ {nullptr}, radarProductModel_ {nullptr},
maps_ {}, maps_ {},
elevationCuts_ {}, elevationCuts_ {},
@ -74,6 +78,11 @@ public:
settings_.setApiKey(QString {mapboxApiKey.c_str()}); settings_.setApiKey(QString {mapboxApiKey.c_str()});
settings_.setCacheDatabasePath(QString {cacheDbPath.c_str()}); settings_.setCacheDatabasePath(QString {cacheDbPath.c_str()});
settings_.setCacheDatabaseMaximumSize(20 * 1024 * 1024); settings_.setCacheDatabaseMaximumSize(20 * 1024 * 1024);
alertProxyModel_->setSourceModel(alertModel_.get());
alertProxyModel_->setSortRole(Qt::UserRole); // TODO
alertProxyModel_->setFilterCaseSensitivity(Qt::CaseInsensitive);
alertProxyModel_->setFilterKeyColumn(-1);
} }
~MainWindowImpl() = default; ~MainWindowImpl() = default;
@ -106,7 +115,9 @@ public:
ui::RadarSiteDialog* radarSiteDialog_; ui::RadarSiteDialog* radarSiteDialog_;
std::shared_ptr<model::RadarProductModel> radarProductModel_; std::unique_ptr<model::AlertModel> alertModel_;
std::unique_ptr<QSortFilterProxyModel> alertProxyModel_;
std::unique_ptr<model::RadarProductModel> radarProductModel_;
std::vector<map::MapWidget*> maps_; std::vector<map::MapWidget*> maps_;
std::vector<float> elevationCuts_; std::vector<float> elevationCuts_;
@ -156,12 +167,14 @@ MainWindow::MainWindow(QWidget* parent) :
// Configure Resource Explorer Dock // Configure Resource Explorer Dock
ui->resourceExplorerDock->setVisible(false); ui->resourceExplorerDock->setVisible(false);
p->radarProductModel_ = std::make_shared<model::RadarProductModel>(); p->radarProductModel_ = std::make_unique<model::RadarProductModel>();
ui->resourceTreeView->setModel(p->radarProductModel_->model()); ui->resourceTreeView->setModel(p->radarProductModel_->model());
// Configure Alert Dock // Configure Alert Dock
ui->alertDock->setVisible(false); ui->alertDock->setVisible(false);
ui->alertView->setModel(p->alertProxyModel_.get());
ui->alertSettings->addAction(ui->actionActiveAlerts); ui->alertSettings->addAction(ui->actionActiveAlerts);
// Configure Map // Configure Map
@ -461,6 +474,20 @@ void MainWindowImpl::ConnectOtherSignals()
&ui::Level2SettingsWidget::ElevationSelected, &ui::Level2SettingsWidget::ElevationSelected,
mainWindow_, mainWindow_,
[&](float elevation) { SelectElevation(activeMap_, elevation); }); [&](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_, connect(mainWindow_,
&MainWindow::ActiveMapMoved, &MainWindow::ActiveMapMoved,
radarSiteDialog_, radarSiteDialog_,

View file

@ -317,7 +317,17 @@
<widget class="QWidget" name="radarDockContents"> <widget class="QWidget" name="radarDockContents">
<layout class="QVBoxLayout" name="verticalLayout_5"> <layout class="QVBoxLayout" name="verticalLayout_5">
<item> <item>
<widget class="QTableView" name="alertView"/> <widget class="QTreeView" name="alertView">
<property name="alternatingRowColors">
<bool>true</bool>
</property>
<property name="indentation">
<number>0</number>
</property>
<property name="sortingEnabled">
<bool>true</bool>
</property>
</widget>
</item> </item>
<item> <item>
<widget class="QFrame" name="frame_2"> <widget class="QFrame" name="frame_2">