From 4ce922536e648f2e7b8c85a1fe0878596fac0e92 Mon Sep 17 00:00:00 2001 From: Thomas Wilshaw Date: Wed, 11 Aug 2021 17:15:35 +0100 Subject: [PATCH] Create marker widget and attempt to add to timeline --- app/dialog/about/about.cpp | 5 +++++ app/widget/CMakeLists.txt | 1 + app/widget/timeruler/seekablewidget.cpp | 23 +++++++++++++++++++++++ app/widget/timeruler/seekablewidget.h | 9 +++++++++ app/widget/timeruler/timeruler.h | 1 + 5 files changed, 39 insertions(+) diff --git a/app/dialog/about/about.cpp b/app/dialog/about/about.cpp index e3500e217..792ca5173 100644 --- a/app/dialog/about/about.cpp +++ b/app/dialog/about/about.cpp @@ -30,6 +30,8 @@ #include "patreon.h" #include "scrollinglabel.h" +#include "widget/marker/marker.h" + namespace olive { AboutDialog::AboutDialog(bool welcome_dialog, QWidget *parent) : @@ -74,6 +76,9 @@ AboutDialog::AboutDialog(bool welcome_dialog, QWidget *parent) : label->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum); horiz_layout->addWidget(label); + Marker* marker = new Marker(); + horiz_layout->addWidget(marker); + layout->addLayout(horiz_layout); // Patrons where possible diff --git a/app/widget/CMakeLists.txt b/app/widget/CMakeLists.txt index 38fefccbd..18e5bb112 100644 --- a/app/widget/CMakeLists.txt +++ b/app/widget/CMakeLists.txt @@ -28,6 +28,7 @@ add_subdirectory(focusablelineedit) add_subdirectory(handmovableview) add_subdirectory(keyframeview) add_subdirectory(manageddisplay) +add_subdirectory(marker) add_subdirectory(menu) add_subdirectory(nodecombobox) add_subdirectory(nodeparamview) diff --git a/app/widget/timeruler/seekablewidget.cpp b/app/widget/timeruler/seekablewidget.cpp index a5845c25c..7e9b7ff36 100644 --- a/app/widget/timeruler/seekablewidget.cpp +++ b/app/widget/timeruler/seekablewidget.cpp @@ -44,6 +44,10 @@ SeekableWidget::SeekableWidget(QWidget* parent) : playhead_width_ = QtUtils::QFontMetricsWidth(fm, "H"); setContextMenuPolicy(Qt::CustomContextMenu); + + marker_layout_ = new QHBoxLayout(this); + + UpdateMarkers(); } void SeekableWidget::ConnectTimelinePoints(TimelinePoints *points) @@ -62,6 +66,8 @@ void SeekableWidget::ConnectTimelinePoints(TimelinePoints *points) connect(timeline_points_->workarea(), &TimelineWorkArea::EnabledChanged, this, static_cast(&SeekableWidget::update)); connect(timeline_points_->markers(), &TimelineMarkerList::MarkerAdded, this, static_cast(&SeekableWidget::update)); connect(timeline_points_->markers(), &TimelineMarkerList::MarkerRemoved, this, static_cast(&SeekableWidget::update)); + + connect(timeline_points_->markers(), &TimelineMarkerList::MarkerAdded, this, static_cast(&SeekableWidget::UpdateMarkers)); } update(); @@ -127,6 +133,23 @@ void SeekableWidget::SetScroll(int s) update(); } +void SeekableWidget::UpdateMarkers() +{ + printf("Test"); + if (timeline_points()) { + foreach(Marker * marker, marker_widgets) { + marker->deleteLater(); + } + marker_widgets.clear(); + + foreach(TimelineMarker * marker, timeline_points()->markers()->list()) { + Marker* marker_widget = new Marker(); + marker_widgets.append(marker_widget); + marker_layout_->addWidget(marker_widget); + } + } +} + int SeekableWidget::TimeToScreen(const rational &time) const { return qFloor(TimeToScene(time)) - scroll_; diff --git a/app/widget/timeruler/seekablewidget.h b/app/widget/timeruler/seekablewidget.h index 8cccaf64b..74f930d6d 100644 --- a/app/widget/timeruler/seekablewidget.h +++ b/app/widget/timeruler/seekablewidget.h @@ -21,10 +21,13 @@ #ifndef SEEKABLEWIDGET_H #define SEEKABLEWIDGET_H +#include + #include "common/rational.h" #include "timeline/timelinepoints.h" #include "widget/snapservice/snapservice.h" #include "widget/timebased/timescaledobject.h" +#include "widget/marker/marker.h" namespace olive { @@ -55,6 +58,8 @@ public slots: void SetScroll(int s); + void UpdateMarkers(); + protected: void SeekToScreenPoint(int screen); @@ -102,6 +107,10 @@ private: bool dragging_; + QHBoxLayout* marker_layout_; + + QVector marker_widgets; + }; } diff --git a/app/widget/timeruler/timeruler.h b/app/widget/timeruler/timeruler.h index 496117238..77a7b3b82 100644 --- a/app/widget/timeruler/timeruler.h +++ b/app/widget/timeruler/timeruler.h @@ -27,6 +27,7 @@ #include "common/timerange.h" #include "seekablewidget.h" #include "render/playbackcache.h" +#include "widget/marker/marker.h" namespace olive {