Timeline pause

This commit is contained in:
Dan Paulat 2023-05-27 01:17:19 -05:00
parent 41b9e25ea8
commit ba1de683fa
6 changed files with 79 additions and 36 deletions

View file

@ -16,21 +16,18 @@ namespace ui
static const std::string logPrefix_ = "scwx::qt::ui::animation_dock_widget";
static const auto logger_ = scwx::util::Logger::Create(logPrefix_);
enum class AnimationState
{
Play,
Pause
};
class AnimationDockWidgetImpl
{
public:
explicit AnimationDockWidgetImpl(AnimationDockWidget* self) : self_ {self} {}
~AnimationDockWidgetImpl() = default;
const QIcon kPauseIcon_ {":/res/icons/font-awesome-6/pause-solid.svg"};
const QIcon kPlayIcon_ {":/res/icons/font-awesome-6/play-solid.svg"};
AnimationDockWidget* self_;
AnimationState animationState_ {AnimationState::Pause};
types::AnimationState animationState_ {types::AnimationState::Pause};
std::chrono::sys_days selectedDate_ {};
std::chrono::seconds selectedTime_ {};
@ -171,17 +168,7 @@ void AnimationDockWidgetImpl::ConnectSignals()
QObject::connect(self_->ui->playButton,
&QAbstractButton::clicked,
self_,
[this]()
{
if (animationState_ == AnimationState::Pause)
{
emit self_->AnimationPlaySelected();
}
else
{
emit self_->AnimationPauseSelected();
}
});
[this]() { emit self_->AnimationPlaySelected(); });
QObject::connect(self_->ui->stepNextButton,
&QAbstractButton::clicked,
self_,
@ -192,6 +179,21 @@ void AnimationDockWidgetImpl::ConnectSignals()
[this]() { emit self_->AnimationStepEndSelected(); });
}
void AnimationDockWidget::UpdateAnimationState(types::AnimationState state)
{
// Update icon to opposite of state
switch (state)
{
case types::AnimationState::Pause:
ui->playButton->setIcon(p->kPlayIcon_);
break;
case types::AnimationState::Play:
ui->playButton->setIcon(p->kPauseIcon_);
break;
}
}
} // namespace ui
} // namespace qt
} // namespace scwx

View file

@ -28,6 +28,9 @@ public:
explicit AnimationDockWidget(QWidget* parent = nullptr);
~AnimationDockWidget();
public slots:
void UpdateAnimationState(types::AnimationState state);
signals:
void ViewTypeChanged(types::MapTime viewType);
void DateTimeChanged(std::chrono::system_clock::time_point dateTime);
@ -37,7 +40,6 @@ signals:
void AnimationStepBeginSelected();
void AnimationStepBackSelected();
void AnimationPauseSelected();
void AnimationPlaySelected();
void AnimationStepNextSelected();
void AnimationStepEndSelected();