diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp index 95a9af27..2a637600 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -71,6 +72,7 @@ public: updateDialog_ {nullptr}, radarProductModel_ {nullptr}, textEventManager_ {manager::TextEventManager::Instance()}, + timelineManager_ {manager::TimelineManager::Instance()}, updateManager_ {manager::UpdateManager::Instance()}, maps_ {}, elevationCuts_ {}, @@ -111,6 +113,7 @@ public: void AsyncSetup(); void ConfigureMapLayout(); + void ConnectAnimationSignals(); void ConnectMapSignals(); void ConnectOtherSignals(); void HandleFocusChange(QWidget* focused); @@ -150,6 +153,7 @@ public: std::unique_ptr radarProductModel_; std::shared_ptr textEventManager_; + std::shared_ptr timelineManager_; std::shared_ptr updateManager_; std::vector maps_; @@ -271,6 +275,7 @@ MainWindow::MainWindow(QWidget* parent) : p->PopulateMapStyles(); p->ConnectMapSignals(); + p->ConnectAnimationSignals(); p->ConnectOtherSignals(); p->HandleFocusChange(p->activeMap_); p->AsyncSetup(); @@ -648,6 +653,73 @@ void MainWindowImpl::ConnectMapSignals() } } +void MainWindowImpl::ConnectAnimationSignals() +{ + connect(animationDockWidget_, + &ui::AnimationDockWidget::DateTimeChanged, + timelineManager_.get(), + &manager::TimelineManager::SetDateTime); + connect(animationDockWidget_, + &ui::AnimationDockWidget::ViewTypeChanged, + timelineManager_.get(), + &manager::TimelineManager::SetViewType); + connect(animationDockWidget_, + &ui::AnimationDockWidget::LoopTimeChanged, + timelineManager_.get(), + &manager::TimelineManager::SetLoopTime); + connect(animationDockWidget_, + &ui::AnimationDockWidget::LoopSpeedChanged, + timelineManager_.get(), + &manager::TimelineManager::SetLoopSpeed); + connect(animationDockWidget_, + &ui::AnimationDockWidget::AnimationStepBeginSelected, + timelineManager_.get(), + &manager::TimelineManager::AnimationStepBegin); + connect(animationDockWidget_, + &ui::AnimationDockWidget::AnimationStepBackSelected, + timelineManager_.get(), + &manager::TimelineManager::AnimationStepBack); + connect(animationDockWidget_, + &ui::AnimationDockWidget::AnimationPlaySelected, + timelineManager_.get(), + &manager::TimelineManager::AnimationPlay); + connect(animationDockWidget_, + &ui::AnimationDockWidget::AnimationPauseSelected, + timelineManager_.get(), + &manager::TimelineManager::AnimationPause); + connect(animationDockWidget_, + &ui::AnimationDockWidget::AnimationStepNextSelected, + timelineManager_.get(), + &manager::TimelineManager::AnimationStepNext); + connect(animationDockWidget_, + &ui::AnimationDockWidget::AnimationStepEndSelected, + timelineManager_.get(), + &manager::TimelineManager::AnimationStepEnd); + + connect(timelineManager_.get(), + &manager::TimelineManager::TimeUpdated, + [this](std::chrono::system_clock::time_point dateTime) + { + for (auto map : maps_) + { + map->SelectTime(dateTime); + } + }); + + for (auto map : maps_) + { + connect(map, + &map::MapWidget::RadarSiteUpdated, + [this, map](std::shared_ptr radarSite) + { + if (map == activeMap_) + { + timelineManager_->SetRadarSite(radarSite->id()); + } + }); + } +} + void MainWindowImpl::ConnectOtherSignals() { connect(qApp,