diff --git a/scwx-qt/source/scwx/qt/config/radar_site.cpp b/scwx-qt/source/scwx/qt/config/radar_site.cpp index 75d084b5..b54ae1e6 100644 --- a/scwx-qt/source/scwx/qt/config/radar_site.cpp +++ b/scwx-qt/source/scwx/qt/config/radar_site.cpp @@ -3,6 +3,7 @@ #include #include +#include #include namespace scwx @@ -90,6 +91,29 @@ std::string RadarSite::place() const return p->place_; } +std::string RadarSite::location_name() const +{ + std::string locationName; + + if (p->country_ == "USA") + { + locationName = std::format("{}, {}", p->place_, p->state_); + } + else if (std::all_of(p->state_.cbegin(), + p->state_.cend(), + [](char c) { return std::isdigit(c); })) + { + locationName = std::format("{}, {}", p->place_, p->country_); + } + else + { + locationName = + std::format("{}, {}, {}", p->place_, p->state_, p->country_); + } + + return locationName; +} + std::shared_ptr RadarSite::Get(const std::string& id) { std::shared_ptr radarSite = nullptr; diff --git a/scwx-qt/source/scwx/qt/config/radar_site.hpp b/scwx-qt/source/scwx/qt/config/radar_site.hpp index 43654fd1..47f344d6 100644 --- a/scwx-qt/source/scwx/qt/config/radar_site.hpp +++ b/scwx-qt/source/scwx/qt/config/radar_site.hpp @@ -31,6 +31,7 @@ public: std::string country() const; std::string state() const; std::string place() const; + std::string location_name() const; static std::shared_ptr Get(const std::string& id); diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp index 9c771097..f1ea1d2f 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -80,6 +80,7 @@ public: void UpdateRadarProductSelection(common::RadarProductGroup group, const std::string& product); void UpdateRadarProductSettings(); + void UpdateRadarSite(); void UpdateVcp(); MainWindow* mainWindow_; @@ -149,6 +150,8 @@ MainWindow::MainWindow(QWidget* parent) : &QApplication::focusChanged, this, [=](QWidget* old, QWidget* now) { p->HandleFocusChange(now); }); + + p->HandleFocusChange(p->activeMap_); } MainWindow::~MainWindow() @@ -355,6 +358,7 @@ void MainWindowImpl::ConfigureMapLayout() activeMap_->GetRadarProductGroup(), activeMap_->GetRadarProductName()); UpdateRadarProductSettings(); + UpdateRadarSite(); UpdateVcp(); } }, @@ -382,6 +386,7 @@ void MainWindowImpl::HandleFocusChange(QWidget* focused) UpdateRadarProductSelection(mapWidget->GetRadarProductGroup(), mapWidget->GetRadarProductName()); UpdateRadarProductSettings(); + UpdateRadarSite(); UpdateVcp(); } } @@ -529,6 +534,26 @@ void MainWindowImpl::UpdateRadarProductSettings() UpdateElevationSelection(currentElevation); } +void MainWindowImpl::UpdateRadarSite() +{ + std::shared_ptr radarSite = activeMap_->GetRadarSite(); + + if (radarSite != nullptr) + { + mainWindow_->ui->radarSiteValueLabel->setVisible(true); + mainWindow_->ui->radarLocationLabel->setVisible(true); + + mainWindow_->ui->radarSiteValueLabel->setText(radarSite->id().c_str()); + mainWindow_->ui->radarLocationLabel->setText( + radarSite->location_name().c_str()); + } + else + { + mainWindow_->ui->radarSiteValueLabel->setVisible(false); + mainWindow_->ui->radarLocationLabel->setVisible(false); + } +} + void MainWindowImpl::UpdateVcp() { uint16_t vcp = activeMap_->GetVcp(); diff --git a/scwx-qt/source/scwx/qt/map/map_widget.cpp b/scwx-qt/source/scwx/qt/map/map_widget.cpp index 3a52d9c6..33d70477 100644 --- a/scwx-qt/source/scwx/qt/map/map_widget.cpp +++ b/scwx-qt/source/scwx/qt/map/map_widget.cpp @@ -215,9 +215,20 @@ std::string MapWidget::GetRadarProductName() const } } +std::shared_ptr MapWidget::GetRadarSite() const +{ + std::shared_ptr radarSite = nullptr; + + if (p->radarProductManager_ != nullptr) + { + radarSite = p->radarProductManager_->radar_site(); + } + + return radarSite; +} + uint16_t MapWidget::GetVcp() const { - if (p->context_->radarProductView_ != nullptr) { return p->context_->radarProductView_->vcp(); diff --git a/scwx-qt/source/scwx/qt/map/map_widget.hpp b/scwx-qt/source/scwx/qt/map/map_widget.hpp index 99d1d8e7..de2f1246 100644 --- a/scwx-qt/source/scwx/qt/map/map_widget.hpp +++ b/scwx-qt/source/scwx/qt/map/map_widget.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include @@ -33,11 +34,12 @@ public: explicit MapWidget(const QMapboxGLSettings&); ~MapWidget(); - float GetElevation() const; - std::vector GetElevationCuts() const; - common::RadarProductGroup GetRadarProductGroup() const; - std::string GetRadarProductName() const; - uint16_t GetVcp() const; + float GetElevation() const; + std::vector GetElevationCuts() const; + common::RadarProductGroup GetRadarProductGroup() const; + std::string GetRadarProductName() const; + std::shared_ptr GetRadarSite() const; + uint16_t GetVcp() const; void SelectElevation(float elevation); void SelectRadarProduct(common::Level2Product product); diff --git a/scwx-qt/ts/scwx_en_US.ts b/scwx-qt/ts/scwx_en_US.ts index 3c815d9c..d7b3ce91 100644 --- a/scwx-qt/ts/scwx_en_US.ts +++ b/scwx-qt/ts/scwx_en_US.ts @@ -102,7 +102,7 @@ scwx::qt::main::MainWindow - + Unrecognized NEXRAD Product: