From c7a4706f43315c2b5ae58f8ac492e635df6a2f4a Mon Sep 17 00:00:00 2001 From: Dan Paulat Date: Fri, 9 Jun 2023 00:10:47 -0500 Subject: [PATCH] Loop delay configuration --- scwx-qt/source/scwx/qt/main/main_window.cpp | 4 ++ .../scwx/qt/manager/timeline_manager.cpp | 12 +++++- .../scwx/qt/manager/timeline_manager.hpp | 1 + .../scwx/qt/ui/animation_dock_widget.cpp | 10 +++++ .../scwx/qt/ui/animation_dock_widget.hpp | 1 + .../scwx/qt/ui/animation_dock_widget.ui | 42 +++++++++++++++---- 6 files changed, 60 insertions(+), 10 deletions(-) diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp index 07945d18..4d258327 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -672,6 +672,10 @@ void MainWindowImpl::ConnectAnimationSignals() &ui::AnimationDockWidget::LoopSpeedChanged, timelineManager_.get(), &manager::TimelineManager::SetLoopSpeed); + connect(animationDockWidget_, + &ui::AnimationDockWidget::LoopDelayChanged, + timelineManager_.get(), + &manager::TimelineManager::SetLoopDelay); connect(animationDockWidget_, &ui::AnimationDockWidget::AnimationStepBeginSelected, timelineManager_.get(), diff --git a/scwx-qt/source/scwx/qt/manager/timeline_manager.cpp b/scwx-qt/source/scwx/qt/manager/timeline_manager.cpp index 606a58ca..ce9283f5 100644 --- a/scwx-qt/source/scwx/qt/manager/timeline_manager.cpp +++ b/scwx-qt/source/scwx/qt/manager/timeline_manager.cpp @@ -71,6 +71,7 @@ public: types::MapTime viewType_ {types::MapTime::Live}; std::chrono::minutes loopTime_ {30}; double loopSpeed_ {5.0}; + std::chrono::milliseconds loopDelay_ {2500}; bool radarSweepMonitorActive_ {false}; std::mutex radarSweepMonitorMutex_ {}; @@ -170,6 +171,13 @@ void TimelineManager::SetLoopSpeed(double loopSpeed) p->loopSpeed_ = loopSpeed; } +void TimelineManager::SetLoopDelay(std::chrono::milliseconds loopDelay) +{ + logger_->debug("SetLoopDelay: {}", loopDelay); + + p->loopDelay_ = loopDelay; +} + void TimelineManager::AnimationStepBegin() { logger_->debug("AnimationStepBegin"); @@ -417,8 +425,8 @@ void TimelineManager::Impl::Play() } else { - // Pause for 2.5 seconds at the end of the loop - interval = std::chrono::milliseconds(2500); + // Pause at the end of the loop + interval = loopDelay_; } animationTimer_.expires_after(interval); diff --git a/scwx-qt/source/scwx/qt/manager/timeline_manager.hpp b/scwx-qt/source/scwx/qt/manager/timeline_manager.hpp index 0751fed1..1a4154ac 100644 --- a/scwx-qt/source/scwx/qt/manager/timeline_manager.hpp +++ b/scwx-qt/source/scwx/qt/manager/timeline_manager.hpp @@ -34,6 +34,7 @@ public slots: void SetLoopTime(std::chrono::minutes loopTime); void SetLoopSpeed(double loopSpeed); + void SetLoopDelay(std::chrono::milliseconds loopDelay); void AnimationStepBegin(); void AnimationStepBack(); diff --git a/scwx-qt/source/scwx/qt/ui/animation_dock_widget.cpp b/scwx-qt/source/scwx/qt/ui/animation_dock_widget.cpp index 4714b2e3..5bfc5a89 100644 --- a/scwx-qt/source/scwx/qt/ui/animation_dock_widget.cpp +++ b/scwx-qt/source/scwx/qt/ui/animation_dock_widget.cpp @@ -88,6 +88,7 @@ AnimationDockWidget::AnimationDockWidget(QWidget* parent) : // Set loop defaults ui->loopTimeSpinBox->setValue(30); ui->loopSpeedSpinBox->setValue(5.0); + ui->loopDelaySpinBox->setValue(2.5); // Connect widget signals p->ConnectSignals(); @@ -161,6 +162,15 @@ void AnimationDockWidgetImpl::ConnectSignals() &QDoubleSpinBox::valueChanged, self_, [this](double d) { Q_EMIT self_->LoopSpeedChanged(d); }); + QObject::connect( + self_->ui->loopDelaySpinBox, + &QDoubleSpinBox::valueChanged, + self_, + [this](double d) + { + Q_EMIT self_->LoopDelayChanged(std::chrono::milliseconds( + static_cast(d * 1000.0))); + }); // Animation controls QObject::connect(self_->ui->beginButton, diff --git a/scwx-qt/source/scwx/qt/ui/animation_dock_widget.hpp b/scwx-qt/source/scwx/qt/ui/animation_dock_widget.hpp index 705ca02f..ea42a541 100644 --- a/scwx-qt/source/scwx/qt/ui/animation_dock_widget.hpp +++ b/scwx-qt/source/scwx/qt/ui/animation_dock_widget.hpp @@ -38,6 +38,7 @@ signals: void LoopTimeChanged(std::chrono::minutes loopTime); void LoopSpeedChanged(double loopSpeed); + void LoopDelayChanged(std::chrono::milliseconds loopDelay); void AnimationStepBeginSelected(); void AnimationStepBackSelected(); diff --git a/scwx-qt/source/scwx/qt/ui/animation_dock_widget.ui b/scwx-qt/source/scwx/qt/ui/animation_dock_widget.ui index 4e3502ca..8a3ab3b8 100644 --- a/scwx-qt/source/scwx/qt/ui/animation_dock_widget.ui +++ b/scwx-qt/source/scwx/qt/ui/animation_dock_widget.ui @@ -7,7 +7,7 @@ 0 0 200 - 337 + 348 @@ -130,13 +130,6 @@ 0 - - - - Loop Time - - - @@ -156,6 +149,13 @@ + + + + Loop Time + + + @@ -179,6 +179,32 @@ + + + + Loop Delay + + + + + + + sec + + + 1 + + + 15.000000000000000 + + + 0.100000000000000 + + + 2.500000000000000 + + +