From f344e262e8ecd29e80e71904bd95d2692aef9d4d Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Thu, 21 Jun 2018 10:50:19 -0700 Subject: [PATCH] added go to cut shortcuts and fixed waveform display bug --- mainwindow.cpp | 14 ++++++++++++++ mainwindow.h | 4 ++++ mainwindow.ui | 21 ++++++++++++++++++++- olive.pro.user | 2 +- panels/timeline.cpp | 32 ++++++++++++++++++++++++++++++++ panels/timeline.h | 2 ++ playback/cacher.h | 2 +- ui/timelineheader.h | 8 ++++---- ui/timelinewidget.cpp | 14 +------------- ui/timelinewidget.h | 10 +++++----- ui/viewercontainer.h | 2 +- ui/viewerwidget.h | 6 +++--- 12 files changed, 88 insertions(+), 29 deletions(-) diff --git a/mainwindow.cpp b/mainwindow.cpp index 5c4ac2c0c..8f14c4e1f 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -368,3 +368,17 @@ void MainWindow::on_actionSlip_Tool_triggered() { if (panel_timeline->focused()) panel_timeline->ui->toolSlipButton->click(); } + +void MainWindow::on_actionGo_to_Previous_Cut_triggered() +{ + if (panel_timeline->focused() || panel_viewer->hasFocus()) { + panel_timeline->previous_cut(); + } +} + +void MainWindow::on_actionGo_to_Next_Cut_triggered() +{ + if (panel_timeline->focused() || panel_viewer->hasFocus()) { + panel_timeline->next_cut(); + } +} diff --git a/mainwindow.h b/mainwindow.h index 11109de08..d60867fcd 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -101,6 +101,10 @@ private slots: void on_actionSlip_Tool_triggered(); + void on_actionGo_to_Previous_Cut_triggered(); + + void on_actionGo_to_Next_Cut_triggered(); + private: Ui::MainWindow *ui; void setup_layout(); diff --git a/mainwindow.ui b/mainwindow.ui index 657e3d5e9..23c9f2965 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -24,7 +24,7 @@ 0 0 653 - 34 + 29 @@ -102,6 +102,9 @@ + + + @@ -446,6 +449,22 @@ Slip Tool + + + Go to Previous Cut + + + Up + + + + + Go to Next Cut + + + Down + + diff --git a/olive.pro.user b/olive.pro.user index 894eacd94..2bdb25d2c 100644 --- a/olive.pro.user +++ b/olive.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/panels/timeline.cpp b/panels/timeline.cpp index 8d6319ac7..b2cbb74a7 100644 --- a/panels/timeline.cpp +++ b/panels/timeline.cpp @@ -64,6 +64,38 @@ void Timeline::next_frame() { seek(playhead+1); } +void Timeline::previous_cut() { + bool seek_enabled = false; + long p_cut = 0; + for (int i=0;iclip_count();i++) { + Clip* c = sequence->get_clip(i); + if (c->timeline_out > p_cut && c->timeline_out < playhead) { + p_cut = c->timeline_out; + seek_enabled = true; + } else if (c->timeline_in > p_cut && c->timeline_in < playhead) { + p_cut = c->timeline_in; + seek_enabled = true; + } + } + if (seek_enabled) seek(p_cut); +} + +void Timeline::next_cut() { + bool seek_enabled = false; + long n_cut = LONG_MAX; + for (int i=0;iclip_count();i++) { + Clip* c = sequence->get_clip(i); + if (c->timeline_out < n_cut && c->timeline_out > playhead) { + n_cut = c->timeline_out; + seek_enabled = true; + } else if (c->timeline_in < n_cut && c->timeline_in > playhead) { + n_cut = c->timeline_in; + seek_enabled = true; + } + } + if (seek_enabled) seek(n_cut); +} + void Timeline::seek(long p) { pause(); diff --git a/panels/timeline.h b/panels/timeline.h index cebaa187a..703d691d0 100644 --- a/panels/timeline.h +++ b/panels/timeline.h @@ -82,6 +82,8 @@ public: void go_to_start(); void previous_frame(); void next_frame(); + void previous_cut(); + void next_cut(); void seek(long p); void toggle_play(); void play(); diff --git a/playback/cacher.h b/playback/cacher.h index d99924864..1658c4c1c 100644 --- a/playback/cacher.h +++ b/playback/cacher.h @@ -10,7 +10,7 @@ class Cacher : public QThread // Q_OBJECT public: Cacher(Clip* c); - void run() override; + void run(); bool caching; diff --git a/ui/timelineheader.h b/ui/timelineheader.h index 1132e71b0..9dbead229 100644 --- a/ui/timelineheader.h +++ b/ui/timelineheader.h @@ -10,10 +10,10 @@ public: explicit TimelineHeader(QWidget *parent = 0); protected: - void paintEvent(QPaintEvent*) override; - void mousePressEvent(QMouseEvent*) override; - void mouseMoveEvent(QMouseEvent*) override; - void mouseReleaseEvent(QMouseEvent*) override; + void paintEvent(QPaintEvent*); + void mousePressEvent(QMouseEvent*); + void mouseMoveEvent(QMouseEvent*); + void mouseReleaseEvent(QMouseEvent*); private: bool dragging; diff --git a/ui/timelinewidget.cpp b/ui/timelinewidget.cpp index dab63191c..188d65a94 100644 --- a/ui/timelinewidget.cpp +++ b/ui/timelinewidget.cpp @@ -205,7 +205,6 @@ void TimelineWidget::mousePressEvent(QMouseEvent *event) { case TIMELINE_TOOL_EDIT: panel_timeline->seek(panel_timeline->drag_frame_start); panel_timeline->selecting = true; - break; case TIMELINE_TOOL_RAZOR: { @@ -807,24 +806,13 @@ void TimelineWidget::redraw_clips() { for (int i=0;imedia_stream->audio_preview.size())/divider)*divider; for (int j=0;jmedia_stream->audio_channels;j++) { - int mid = channel_height*j+(channel_height/2); + int mid = clip_rect.top()+channel_height*j+(channel_height/2); int offset = waveform_index+(j*2); qint8 min = (float)clip->media_stream->audio_preview[offset] / 128.0f * (channel_height/2); qint8 max = (float)clip->media_stream->audio_preview[offset+1] / 128.0f * (channel_height/2); clip_painter.drawLine(clip_rect.left()+i, mid+min, clip_rect.left()+i, mid+max); } } - -// for (int i=waveform_x;imedia_stream->audio_channels;j++) { -// int mid = channel_height*j+(channel_height/2); -// int offset = i+(j*2); -// qint8 min = (float)clip->media_stream->audio_preview[offset] / 128.0f * (channel_height/2); -// qint8 max = (float)clip->media_stream->audio_preview[offset+1] / 128.0f * (channel_height/2); -// clip_painter.drawLine(draw_x, mid+min, draw_x, mid+max); -// } -// draw_x++; -// } } } diff --git a/ui/timelinewidget.h b/ui/timelinewidget.h index 92cd55b5f..15cf9990d 100644 --- a/ui/timelinewidget.h +++ b/ui/timelinewidget.h @@ -21,13 +21,13 @@ public: void redraw_clips(); protected: - void paintEvent(QPaintEvent*) override; - void resizeEvent(QResizeEvent*) override; + void paintEvent(QPaintEvent*); + void resizeEvent(QResizeEvent*); void mouseDoubleClickEvent(QMouseEvent *event); - void mousePressEvent(QMouseEvent *event) override; - void mouseReleaseEvent(QMouseEvent *event) override; - void mouseMoveEvent(QMouseEvent *event) override; + void mousePressEvent(QMouseEvent *event); + void mouseReleaseEvent(QMouseEvent *event); + void mouseMoveEvent(QMouseEvent *event); void dragEnterEvent(QDragEnterEvent *event); void dragLeaveEvent(QDragLeaveEvent *event); diff --git a/ui/viewercontainer.h b/ui/viewercontainer.h index 516d82bff..678868e3c 100644 --- a/ui/viewercontainer.h +++ b/ui/viewercontainer.h @@ -13,7 +13,7 @@ public: void adjust(); protected: - void resizeEvent(QResizeEvent *event) override; + void resizeEvent(QResizeEvent *event); signals: diff --git a/ui/viewerwidget.h b/ui/viewerwidget.h index 079e6d397..bc2ac695d 100644 --- a/ui/viewerwidget.h +++ b/ui/viewerwidget.h @@ -19,10 +19,10 @@ public: bool force_audio; bool enable_paint; protected: - void paintEvent(QPaintEvent *e) override; - void initializeGL() override; + void paintEvent(QPaintEvent *e); + void initializeGL(); // void resizeGL(int w, int h); - void paintGL() override; + void paintGL(); private: QTimer retry_timer; private slots: