From 04631061871c5f1739dcbdb1066475c62cf6feda Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Fri, 3 Jan 2020 21:17:51 +1100 Subject: [PATCH] began timeline edit tool --- app/widget/timelinewidget/timelinewidget.cpp | 33 ++++++++++++------- app/widget/timelinewidget/timelinewidget.h | 17 ++++++++-- app/widget/timelinewidget/tool/CMakeLists.txt | 1 + app/widget/timelinewidget/tool/edit.cpp | 21 ++++++++++++ 4 files changed, 57 insertions(+), 15 deletions(-) create mode 100644 app/widget/timelinewidget/tool/edit.cpp diff --git a/app/widget/timelinewidget/timelinewidget.cpp b/app/widget/timelinewidget/timelinewidget.cpp index 34f40a0a5..67747e0a9 100644 --- a/app/widget/timelinewidget/timelinewidget.cpp +++ b/app/widget/timelinewidget/timelinewidget.cpp @@ -54,19 +54,23 @@ TimelineWidget::TimelineWidget(QWidget *parent) : tools_.resize(::Tool::kCount); tools_.fill(nullptr); - tools_.replace(::Tool::kPointer, std::make_shared(this)); - // tools_.replace(::Tool::kEdit, new PointerTool(this)); FIXME: Implement - tools_.replace(::Tool::kRipple, std::make_shared(this)); - tools_.replace(::Tool::kRolling, std::make_shared(this)); - tools_.replace(::Tool::kRazor, std::make_shared(this)); - tools_.replace(::Tool::kSlip, std::make_shared(this)); - tools_.replace(::Tool::kSlide, std::make_shared(this)); - tools_.replace(::Tool::kZoom, std::make_shared(this)); - tools_.replace(::Tool::kTransition, std::make_shared(this)); + tools_.replace(::Tool::kPointer, new PointerTool(this)); + tools_.replace(::Tool::kEdit, new EditTool(this)); + tools_.replace(::Tool::kRipple, new RippleTool(this)); + tools_.replace(::Tool::kRolling, new RollingTool(this)); + tools_.replace(::Tool::kRazor, new RazorTool(this)); + tools_.replace(::Tool::kSlip, new SlipTool(this)); + tools_.replace(::Tool::kSlide, new SlideTool(this)); + tools_.replace(::Tool::kZoom, new ZoomTool(this)); + tools_.replace(::Tool::kTransition, new TransitionTool(this)); //tools_.replace(::Tool::kRecord, new PointerTool(this)); FIXME: Implement - tools_.replace(::Tool::kAdd, std::make_shared(this)); + tools_.replace(::Tool::kAdd, new AddTool(this)); - import_tool_ = std::make_shared(this); + import_tool_ = new ImportTool(this); + + // We add this to the list to make deleting all tools easier, it should never get accessed through the list under + // normal circumstances (but *technically* its index would be Tool::kCount) + tools_.append(import_tool_); // Global scrollbar horizontal_scroll_ = new QScrollBar(Qt::Horizontal); @@ -119,6 +123,11 @@ TimelineWidget::TimelineWidget(QWidget *parent) : SetScale(90.0); } +TimelineWidget::~TimelineWidget() +{ + qDeleteAll(tools_); +} + void TimelineWidget::Clear() { SetTimebase(0); @@ -639,7 +648,7 @@ void TimelineWidget::UpdateTimelineLength(const rational &length) TimelineWidget::Tool *TimelineWidget::GetActiveTool() { - return tools_.at(Core::instance()->tool()).get(); + return tools_.at(Core::instance()->tool()); } void TimelineWidget::ViewMousePressed(TimelineViewMouseEvent *event) diff --git a/app/widget/timelinewidget/timelinewidget.h b/app/widget/timelinewidget/timelinewidget.h index dda430586..c33c7c698 100644 --- a/app/widget/timelinewidget/timelinewidget.h +++ b/app/widget/timelinewidget/timelinewidget.h @@ -22,6 +22,8 @@ class TimelineWidget : public QWidget, public TimelineScaledObject public: TimelineWidget(QWidget* parent = nullptr); + virtual ~TimelineWidget() override; + void Clear(); void SetTime(int64_t timestamp); @@ -216,6 +218,16 @@ private: int import_pre_buffer_; }; + class EditTool : public Tool + { + public: + EditTool(TimelineWidget* parent); + + virtual void MousePress(TimelineViewMouseEvent *event) override; + virtual void MouseMove(TimelineViewMouseEvent *event) override; + virtual void MouseRelease(TimelineViewMouseEvent *event) override; + }; + class RazorTool : public Tool { public: @@ -314,7 +326,6 @@ private: virtual void MousePress(TimelineViewMouseEvent *event) override; virtual void MouseMove(TimelineViewMouseEvent *event) override; virtual void MouseRelease(TimelineViewMouseEvent *event) override; - protected: private: bool dual_transition_; }; @@ -333,9 +344,9 @@ private: Tool* GetActiveTool(); - QVector< std::shared_ptr > tools_; + QVector tools_; - std::shared_ptr import_tool_; + Tool* import_tool_; Tool* active_tool_; diff --git a/app/widget/timelinewidget/tool/CMakeLists.txt b/app/widget/timelinewidget/tool/CMakeLists.txt index f2719085a..53b862a84 100644 --- a/app/widget/timelinewidget/tool/CMakeLists.txt +++ b/app/widget/timelinewidget/tool/CMakeLists.txt @@ -17,6 +17,7 @@ set(OLIVE_SOURCES ${OLIVE_SOURCES} widget/timelinewidget/tool/add.cpp + widget/timelinewidget/tool/edit.cpp widget/timelinewidget/tool/import.cpp widget/timelinewidget/tool/pointer.cpp widget/timelinewidget/tool/razor.cpp diff --git a/app/widget/timelinewidget/tool/edit.cpp b/app/widget/timelinewidget/tool/edit.cpp new file mode 100644 index 000000000..c2945d17f --- /dev/null +++ b/app/widget/timelinewidget/tool/edit.cpp @@ -0,0 +1,21 @@ +#include "widget/timelinewidget/timelinewidget.h" + +TimelineWidget::EditTool::EditTool(TimelineWidget* parent) : + Tool(parent) +{ +} + +void TimelineWidget::EditTool::MousePress(TimelineViewMouseEvent *event) +{ + +} + +void TimelineWidget::EditTool::MouseMove(TimelineViewMouseEvent *event) +{ + +} + +void TimelineWidget::EditTool::MouseRelease(TimelineViewMouseEvent *event) +{ + +}