diff --git a/scwx-qt/source/scwx/qt/manager/radar_product_manager.cpp b/scwx-qt/source/scwx/qt/manager/radar_product_manager.cpp index f79f1013..ece8badb 100644 --- a/scwx-qt/source/scwx/qt/manager/radar_product_manager.cpp +++ b/scwx-qt/source/scwx/qt/manager/radar_product_manager.cpp @@ -1,12 +1,13 @@ #include #include +#include +#include #include #include #include #include #include #include -#include #include #include @@ -391,6 +392,34 @@ RadarProductManager::coordinates(common::RadialSize radialSize) const throw std::invalid_argument("Invalid radial size"); } } +const scwx::util::time_zone* RadarProductManager::default_time_zone() const +{ + types::DefaultTimeZone defaultTimeZone = types::GetDefaultTimeZone( + settings::GeneralSettings::Instance().default_time_zone().GetValue()); + + switch (defaultTimeZone) + { + case types::DefaultTimeZone::Radar: + { + auto radarSite = radar_site(); + if (radarSite != nullptr) + { + return radarSite->time_zone(); + } + [[fallthrough]]; + } + + case types::DefaultTimeZone::Local: +#if defined(_MSC_VER) + return std::chrono::current_zone(); +#else + return date::current_zone(); +#endif + + default: + return nullptr; + } +} float RadarProductManager::gate_size() const { diff --git a/scwx-qt/source/scwx/qt/manager/radar_product_manager.hpp b/scwx-qt/source/scwx/qt/manager/radar_product_manager.hpp index aaf28996..4a3edabf 100644 --- a/scwx-qt/source/scwx/qt/manager/radar_product_manager.hpp +++ b/scwx-qt/source/scwx/qt/manager/radar_product_manager.hpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include @@ -41,8 +42,9 @@ public: static void DumpRecords(); const std::vector& coordinates(common::RadialSize radialSize) const; - float gate_size() const; - std::string radar_id() const; + const scwx::util::time_zone* default_time_zone() const; + float gate_size() const; + std::string radar_id() const; std::shared_ptr radar_site() const; void Initialize(); diff --git a/scwx-qt/source/scwx/qt/map/overlay_layer.cpp b/scwx-qt/source/scwx/qt/map/overlay_layer.cpp index 0f7f27b2..a088b4dc 100644 --- a/scwx-qt/source/scwx/qt/map/overlay_layer.cpp +++ b/scwx-qt/source/scwx/qt/map/overlay_layer.cpp @@ -288,13 +288,12 @@ void OverlayLayer::Render(const QMapLibre::CustomLayerRenderParameters& params) scwx::util::ClockFormat clockFormat = scwx::util::GetClockFormat( settings::GeneralSettings::Instance().clock_format().GetValue()); - const scwx::util::time_zone* currentZone; + auto radarProductManager = radarProductView->radar_product_manager(); -#if defined(_MSC_VER) - currentZone = std::chrono::current_zone(); -#else - currentZone = date::current_zone(); -#endif + const scwx::util::time_zone* currentZone = + (radarProductManager != nullptr) ? + radarProductManager->default_time_zone() : + nullptr; p->sweepTimeString_ = scwx::util::TimeString( radarProductView->sweep_time(), clockFormat, currentZone, false); diff --git a/scwx-qt/source/scwx/qt/view/level3_product_view.cpp b/scwx-qt/source/scwx/qt/view/level3_product_view.cpp index fb6110dc..5acde3ac 100644 --- a/scwx-qt/source/scwx/qt/view/level3_product_view.cpp +++ b/scwx-qt/source/scwx/qt/view/level3_product_view.cpp @@ -180,13 +180,12 @@ Level3ProductView::GetDescriptionFields() const util::ClockFormat clockFormat = util::GetClockFormat( settings::GeneralSettings::Instance().clock_format().GetValue()); - const scwx::util::time_zone* currentZone; + auto radarProductManager = radar_product_manager(); -#if defined(_MSC_VER) - currentZone = std::chrono::current_zone(); -#else - currentZone = date::current_zone(); -#endif + const scwx::util::time_zone* currentZone = + (radarProductManager != nullptr) ? + radarProductManager->default_time_zone() : + nullptr; auto descriptionBlock = p->graphicMessage_->description_block();