Allow selection of the active map

This commit is contained in:
Dan Paulat 2021-11-22 16:27:45 -06:00
parent 4485b915c1
commit b2e75f3c1f

View file

@ -40,12 +40,14 @@ public:
~MainWindowImpl() = default; ~MainWindowImpl() = default;
void ConfigureMapLayout(); void ConfigureMapLayout();
void HandleFocusChange(QWidget* focused);
void InitializeConnections(); void InitializeConnections();
void SelectElevation(map::MapWidget* mapWidget, float elevation); void SelectElevation(map::MapWidget* mapWidget, float elevation);
void SelectRadarProduct(map::MapWidget* mapWidget, void SelectRadarProduct(map::MapWidget* mapWidget,
common::Level2Product product); common::Level2Product product);
void SetActiveMap(map::MapWidget* mapWidget);
void UpdateElevationSelection(float elevation); void UpdateElevationSelection(float elevation);
void UpdateRadarProductSettings(map::MapWidget* mapWidget); void UpdateRadarProductSettings();
MainWindow* mainWindow_; MainWindow* mainWindow_;
QMapboxGLSettings settings_; QMapboxGLSettings settings_;
@ -105,6 +107,11 @@ MainWindow::MainWindow(QWidget* parent) :
{ {
p->SelectRadarProduct(p->maps_.at(1), common::Level2Product::Velocity); p->SelectRadarProduct(p->maps_.at(1), common::Level2Product::Velocity);
} }
connect(qApp,
&QApplication::focusChanged,
this,
[=](QWidget* old, QWidget* now) { p->HandleFocusChange(now); });
} }
MainWindow::~MainWindow() MainWindow::~MainWindow()
@ -230,7 +237,17 @@ void MainWindowImpl::ConfigureMapLayout()
mainWindow_->ui->centralwidget->layout()->addWidget(vs); mainWindow_->ui->centralwidget->layout()->addWidget(vs);
activeMap_ = maps_.at(0); SetActiveMap(maps_.at(0));
}
void MainWindowImpl::HandleFocusChange(QWidget* focused)
{
map::MapWidget* mapWidget = dynamic_cast<map::MapWidget*>(focused);
if (mapWidget != nullptr)
{
SetActiveMap(mapWidget);
}
} }
void MainWindowImpl::InitializeConnections() void MainWindowImpl::InitializeConnections()
@ -239,7 +256,7 @@ void MainWindowImpl::InitializeConnections()
activeMap_, activeMap_,
&map::MapWidget::RadarSweepUpdated, &map::MapWidget::RadarSweepUpdated,
this, this,
[this]() { UpdateRadarProductSettings(activeMap_); }, [this]() { UpdateRadarProductSettings(); },
Qt::QueuedConnection); Qt::QueuedConnection);
} }
@ -282,6 +299,16 @@ void MainWindowImpl::SelectRadarProduct(map::MapWidget* mapWidget,
mapWidget->SelectRadarProduct(product); mapWidget->SelectRadarProduct(product);
} }
void MainWindowImpl::SetActiveMap(map::MapWidget* mapWidget)
{
if (mapWidget == activeMap_)
{
return;
}
activeMap_ = mapWidget;
}
void MainWindowImpl::UpdateElevationSelection(float elevation) void MainWindowImpl::UpdateElevationSelection(float elevation)
{ {
QString buttonText {QString::number(elevation, 'f', 1) + QString buttonText {QString::number(elevation, 'f', 1) +
@ -312,10 +339,10 @@ void MainWindowImpl::UpdateMapParameters(
} }
} }
void MainWindowImpl::UpdateRadarProductSettings(map::MapWidget* mapWidget) void MainWindowImpl::UpdateRadarProductSettings()
{ {
float currentElevation = mapWidget->GetElevation(); float currentElevation = activeMap_->GetElevation();
std::vector<float> elevationCuts = mapWidget->GetElevationCuts(); std::vector<float> elevationCuts = activeMap_->GetElevationCuts();
if (elevationCuts_ != elevationCuts) if (elevationCuts_ != elevationCuts)
{ {
@ -336,7 +363,7 @@ void MainWindowImpl::UpdateRadarProductSettings(map::MapWidget* mapWidget)
layout->addWidget(toolButton); layout->addWidget(toolButton);
connect(toolButton, &QToolButton::clicked, this, [=]() { connect(toolButton, &QToolButton::clicked, this, [=]() {
SelectElevation(mapWidget, elevationCut); SelectElevation(activeMap_, elevationCut);
}); });
} }