From a5c1de6df33539c518f694252b9353a6395184c0 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Fri, 17 Apr 2020 00:20:16 +1000 Subject: [PATCH] timebasedwidget: implemented go to in/out --- app/panel/timebased/timebased.cpp | 10 ++++++++++ app/panel/timebased/timebased.h | 4 ++++ app/widget/panel/panel.h | 4 ++++ app/widget/timebased/timebased.cpp | 22 ++++++++++++++++++++++ app/widget/timebased/timebased.h | 4 ++++ 5 files changed, 44 insertions(+) diff --git a/app/panel/timebased/timebased.cpp b/app/panel/timebased/timebased.cpp index c2cb4a9eb..7918dab60 100644 --- a/app/panel/timebased/timebased.cpp +++ b/app/panel/timebased/timebased.cpp @@ -195,4 +195,14 @@ void TimeBasedPanel::ToggleShowAll() GetTimeBasedWidget()->ToggleShowAll(); } +void TimeBasedPanel::GoToIn() +{ + GetTimeBasedWidget()->GoToIn(); +} + +void TimeBasedPanel::GoToOut() +{ + GetTimeBasedWidget()->GoToOut(); +} + OLIVE_NAMESPACE_EXIT diff --git a/app/panel/timebased/timebased.h b/app/panel/timebased/timebased.h index 4e6f8ec2e..5d04ef23b 100644 --- a/app/panel/timebased/timebased.h +++ b/app/panel/timebased/timebased.h @@ -80,6 +80,10 @@ public: virtual void ToggleShowAll() override; + virtual void GoToIn() override; + + virtual void GoToOut() override; + public slots: void SetTimebase(const rational& timebase); diff --git a/app/widget/panel/panel.h b/app/widget/panel/panel.h index 8216c3534..cbedb87d5 100644 --- a/app/widget/panel/panel.h +++ b/app/widget/panel/panel.h @@ -146,6 +146,10 @@ public: virtual void ToggleShowAll(){} + virtual void GoToIn(){} + + virtual void GoToOut(){} + protected: /** * @brief paintEvent diff --git a/app/widget/timebased/timebased.cpp b/app/widget/timebased/timebased.cpp index 54f32d9e5..356ccf766 100644 --- a/app/widget/timebased/timebased.cpp +++ b/app/widget/timebased/timebased.cpp @@ -462,4 +462,26 @@ void TimeBasedWidget::ToggleShowAll() } } +void TimeBasedWidget::GoToIn() +{ + if (viewer_node_) { + if (points_ && points_->workarea()->enabled()) { + SetTimeAndSignal(Timecode::time_to_timestamp(points_->workarea()->in(), timebase())); + } else { + GoToStart(); + } + } +} + +void TimeBasedWidget::GoToOut() +{ + if (viewer_node_) { + if (points_ && points_->workarea()->enabled()) { + SetTimeAndSignal(Timecode::time_to_timestamp(points_->workarea()->out(), timebase())); + } else { + GoToEnd(); + } + } +} + OLIVE_NAMESPACE_EXIT diff --git a/app/widget/timebased/timebased.h b/app/widget/timebased/timebased.h index 22581ed30..08457286f 100644 --- a/app/widget/timebased/timebased.h +++ b/app/widget/timebased/timebased.h @@ -86,6 +86,10 @@ public slots: void ToggleShowAll(); + void GoToIn(); + + void GoToOut(); + TimeRuler* ruler() const; protected slots: