Middle click selects nearest WSR-88D

Resolves #216
This commit is contained in:
Dan Paulat 2024-05-24 23:11:25 -05:00
parent 5caf0edf95
commit 336eb66321

View file

@ -159,6 +159,9 @@ public:
void RadarProductViewConnect(); void RadarProductViewConnect();
void RadarProductViewDisconnect(); void RadarProductViewDisconnect();
void RunMousePicking(); void RunMousePicking();
void SelectNearestRadarSite(double latitude,
double longitude,
std::optional<std::string> type);
void SetRadarSite(const std::string& radarSite); void SetRadarSite(const std::string& radarSite);
void UpdateLoadedStyle(); void UpdateLoadedStyle();
bool UpdateStoredMapParameters(); bool UpdateStoredMapParameters();
@ -1274,21 +1277,29 @@ void MapWidget::mousePressEvent(QMouseEvent* ev)
p->lastPos_ = ev->position(); p->lastPos_ = ev->position();
p->lastGlobalPos_ = ev->globalPosition(); p->lastGlobalPos_ = ev->globalPosition();
if (ev->type() == QEvent::MouseButtonPress) if (ev->type() == QEvent::Type::MouseButtonPress)
{ {
if (ev->buttons() == (Qt::LeftButton | Qt::RightButton)) if (ev->buttons() ==
(Qt::MouseButton::LeftButton | Qt::MouseButton::RightButton))
{ {
changeStyle(); changeStyle();
} }
else if (ev->buttons() == Qt::MouseButton::MiddleButton)
{
// Select nearest WSR-88D radar on middle click
auto coordinate = p->map_->coordinateForPixel(p->lastPos_);
p->SelectNearestRadarSite(
coordinate.first, coordinate.second, "wsr88d");
}
} }
if (ev->type() == QEvent::MouseButtonDblClick) if (ev->type() == QEvent::Type::MouseButtonDblClick)
{ {
if (ev->buttons() == Qt::LeftButton) if (ev->buttons() == Qt::MouseButton::LeftButton)
{ {
p->map_->scaleBy(2.0, p->lastPos_); p->map_->scaleBy(2.0, p->lastPos_);
} }
else if (ev->buttons() == Qt::RightButton) else if (ev->buttons() == Qt::MouseButton::RightButton)
{ {
p->map_->scaleBy(0.5, p->lastPos_); p->map_->scaleBy(0.5, p->lastPos_);
} }
@ -1303,11 +1314,11 @@ void MapWidget::mouseMoveEvent(QMouseEvent* ev)
if (!delta.isNull()) if (!delta.isNull())
{ {
if (ev->buttons() == Qt::LeftButton) if (ev->buttons() == Qt::MouseButton::LeftButton)
{ {
p->map_->moveBy(delta); p->map_->moveBy(delta);
} }
else if (ev->buttons() == Qt::RightButton) else if (ev->buttons() == Qt::MouseButton::RightButton)
{ {
p->map_->rotateBy(p->lastPos_, ev->position()); p->map_->rotateBy(p->lastPos_, ev->position());
} }
@ -1736,6 +1747,18 @@ void MapWidgetImpl::RadarProductViewDisconnect()
} }
} }
void MapWidgetImpl::SelectNearestRadarSite(double latitude,
double longitude,
std::optional<std::string> type)
{
auto radarSite = config::RadarSite::FindNearest(latitude, longitude, type);
if (radarSite != nullptr)
{
widget_->SelectRadarSite(radarSite->id(), false);
}
}
void MapWidgetImpl::SetRadarSite(const std::string& radarSite) void MapWidgetImpl::SetRadarSite(const std::string& radarSite)
{ {
// Check if radar site has changed // Check if radar site has changed