From 0e7b051228265b5ffd83fe9f20f0b2746764824d Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sat, 22 Feb 2020 14:45:50 +1100 Subject: [PATCH] timelinewidget: show cache status in timeline too --- app/panel/timebased/timebased.cpp | 5 +++++ app/panel/timebased/timebased.h | 2 ++ app/panel/viewer/viewerbase.cpp | 5 +++++ app/panel/viewer/viewerbase.h | 2 ++ app/widget/timebased/timebased.h | 4 ++-- app/widget/timelinewidget/timelinewidget.cpp | 2 ++ app/window/mainwindow/mainwindow.cpp | 2 ++ 7 files changed, 20 insertions(+), 2 deletions(-) diff --git a/app/panel/timebased/timebased.cpp b/app/panel/timebased/timebased.cpp index 54cf74881..2e76ae10f 100644 --- a/app/panel/timebased/timebased.cpp +++ b/app/panel/timebased/timebased.cpp @@ -91,6 +91,11 @@ ViewerOutput *TimeBasedPanel::GetConnectedViewer() const return widget_->GetConnectedNode(); } +TimeRuler *TimeBasedPanel::ruler() const +{ + return widget_->ruler(); +} + void TimeBasedPanel::ConnectViewerNode(ViewerOutput *node) { if (widget_->GetConnectedNode()) { diff --git a/app/panel/timebased/timebased.h b/app/panel/timebased/timebased.h index 2b7a8f053..59a4ec84e 100644 --- a/app/panel/timebased/timebased.h +++ b/app/panel/timebased/timebased.h @@ -18,6 +18,8 @@ public: ViewerOutput* GetConnectedViewer() const; + TimeRuler* ruler() const; + virtual void ZoomIn() override; virtual void ZoomOut() override; diff --git a/app/panel/viewer/viewerbase.cpp b/app/panel/viewer/viewerbase.cpp index f97f5505b..5b19bff7c 100644 --- a/app/panel/viewer/viewerbase.cpp +++ b/app/panel/viewer/viewerbase.cpp @@ -32,3 +32,8 @@ void ViewerPanelBase::ConnectTimeBasedPanel(TimeBasedPanel *panel) connect(panel, &TimeBasedPanel::ShuttleStopRequested, this, &ViewerPanelBase::ShuttleStop); connect(panel, &TimeBasedPanel::ShuttleRightRequested, this, &ViewerPanelBase::ShuttleRight); } + +VideoRenderBackend *ViewerPanelBase::video_renderer() const +{ + return static_cast(GetTimeBasedWidget())->video_renderer(); +} diff --git a/app/panel/viewer/viewerbase.h b/app/panel/viewer/viewerbase.h index d764c057e..d25106fd7 100644 --- a/app/panel/viewer/viewerbase.h +++ b/app/panel/viewer/viewerbase.h @@ -20,6 +20,8 @@ public: void ConnectTimeBasedPanel(TimeBasedPanel* panel); + VideoRenderBackend* video_renderer() const; + }; #endif // VIEWERPANELBASE_H diff --git a/app/widget/timebased/timebased.h b/app/widget/timebased/timebased.h index f0242324e..b68180c91 100644 --- a/app/widget/timebased/timebased.h +++ b/app/widget/timebased/timebased.h @@ -48,12 +48,12 @@ public slots: void GoToNextCut(); + TimeRuler* ruler() const; + protected slots: void SetTimeAndSignal(const int64_t& t); protected: - TimeRuler* ruler() const; - QScrollBar* scrollbar() const; virtual void TimebaseChangedEvent(const rational&) override; diff --git a/app/widget/timelinewidget/timelinewidget.cpp b/app/widget/timelinewidget/timelinewidget.cpp index 48aa01fb7..31c46adf1 100644 --- a/app/widget/timelinewidget/timelinewidget.cpp +++ b/app/widget/timelinewidget/timelinewidget.cpp @@ -205,6 +205,7 @@ void TimelineWidget::ConnectNodeInternal(ViewerOutput *n) connect(n, &ViewerOutput::TrackHeightChanged, this, &TimelineWidget::TrackHeightChanged); SetTimebase(n->video_params().time_base()); + UpdateTimelineLength(n->Length()); for (int i=0;i(i); @@ -566,6 +567,7 @@ void TimelineWidget::UpdateTimelineLength(const rational &length) foreach (TimelineAndTrackView* view, views_) { view->view()->SetEndTime(length); } + ruler()->SetCacheStatusLength(length); } TimelineWidget::Tool *TimelineWidget::GetActiveTool() diff --git a/app/window/mainwindow/mainwindow.cpp b/app/window/mainwindow/mainwindow.cpp index 8330a589c..2c63dc655 100644 --- a/app/window/mainwindow/mainwindow.cpp +++ b/app/window/mainwindow/mainwindow.cpp @@ -90,6 +90,8 @@ MainWindow::MainWindow(QWidget *parent) : connect(curve_panel_, &CurvePanel::TimeChanged, viewer_panel_, &ViewerPanel::SetTime); connect(curve_panel_, &CurvePanel::TimeChanged, timeline_panel_, &TimelinePanel::SetTime); connect(curve_panel_, &CurvePanel::TimeChanged, param_panel_, &ParamPanel::SetTime); + connect(viewer_panel_->video_renderer(), &VideoRenderBackend::CachedTimeReady, timeline_panel_->ruler(), &TimeRuler::CacheTimeReady); + connect(viewer_panel_->video_renderer(), &VideoRenderBackend::RangeInvalidated, timeline_panel_->ruler(), &TimeRuler::CacheInvalidatedRange); viewer_panel_->ConnectTimeBasedPanel(timeline_panel_); viewer_panel_->ConnectTimeBasedPanel(param_panel_);