From d77e9db1ae8262d817cde7b13c01dfd557669717 Mon Sep 17 00:00:00 2001 From: itsmattkc Date: Sun, 1 Jul 2018 15:40:08 +0100 Subject: [PATCH] added #96 --- README.md | 2 +- olive.pro.user | 2 +- panels/project.cpp | 72 +++++++++++++++++++++++-------------------- panels/project.h | 2 +- panels/project.ui | 2 +- ui/sourcetable.cpp | 39 ++++++++++++++++++++--- ui/sourcetable.h | 4 ++- ui/timelinewidget.cpp | 2 +- 8 files changed, 82 insertions(+), 43 deletions(-) diff --git a/README.md b/README.md index 23eb29d38..59c1e2593 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -#Olive Video Editor +# Olive Video Editor Olive is a non-linear video editor for Windows, macOS, and Linux. Binaries are not available as of yet, but will be very soon. If you're building from source, you'll need Qt and FFmpeg (recommended versions are Qt 5.5 and FFmpeg 3.4.2). \ No newline at end of file diff --git a/olive.pro.user b/olive.pro.user index a1ff0c084..012579420 100644 --- a/olive.pro.user +++ b/olive.pro.user @@ -1,6 +1,6 @@ - + EnvironmentId diff --git a/panels/project.cpp b/panels/project.cpp index f78203aae..b262a0bab 100644 --- a/panels/project.cpp +++ b/panels/project.cpp @@ -18,6 +18,8 @@ #include #include #include +#include +#include #include #include @@ -33,7 +35,7 @@ Project::Project(QWidget *parent) : QDockWidget(parent), ui(new Ui::Project) { - ui->setupUi(this); + ui->setupUi(this); } Project::~Project() @@ -166,44 +168,48 @@ Media* Project::import_file(QString file) { return m; } -void Project::import_dialog() { - QStringList files = QFileDialog::getOpenFileNames(this, "Import media...", "", "All Files (*.*)"); - for (int i=0;ifalse - QAbstractItemView::DragOnly + QAbstractItemView::DragDrop QAbstractItemView::ExtendedSelection diff --git a/ui/sourcetable.cpp b/ui/sourcetable.cpp index afb58ce0e..6082d1066 100644 --- a/ui/sourcetable.cpp +++ b/ui/sourcetable.cpp @@ -8,9 +8,11 @@ #include "playback/playback.h" #include +#include SourceTable::SourceTable(QWidget* parent) : QTreeWidget(parent) { - this->sortByColumn(0, Qt::AscendingOrder); + sortByColumn(0, Qt::AscendingOrder); + setAcceptDrops(true); } void SourceTable::mouseDoubleClickEvent(QMouseEvent* ) @@ -25,6 +27,35 @@ void SourceTable::mouseDoubleClickEvent(QMouseEvent* ) } } -//void SourceTable::dragEnterEvent(QDragEnterEvent *event) { -// event->accept(); -//} +void SourceTable::dragEnterEvent(QDragEnterEvent *event) { + if (event->mimeData()->hasUrls()) { + event->acceptProposedAction(); + } else { + QTreeWidget::dragEnterEvent(event); + } +} + +void SourceTable::dragMoveEvent(QDragMoveEvent *event) { + if (event->mimeData()->hasUrls()) { + event->acceptProposedAction(); + } else { + QTreeWidget::dragMoveEvent(event); + } +} + +void SourceTable::dropEvent(QDropEvent* event) { + const QMimeData* mimeData = event->mimeData(); + + if (mimeData->hasUrls()) { + QList urls = mimeData->urls(); + if (!urls.isEmpty()) { + QStringList paths; + for (int i=0;iprocess_file_list(paths); + } + event->acceptProposedAction(); + } + QTreeWidget::dropEvent(event); +} diff --git a/ui/sourcetable.h b/ui/sourcetable.h index 0fa3ff24f..b088e9671 100644 --- a/ui/sourcetable.h +++ b/ui/sourcetable.h @@ -11,7 +11,9 @@ public: SourceTable(QWidget* parent = 0); protected: void mouseDoubleClickEvent(QMouseEvent *event); -// void dragEnterEvent(QDragEnterEvent *event) override; + void dragEnterEvent(QDragEnterEvent *event); + void dragMoveEvent(QDragMoveEvent *event); + void dropEvent(QDropEvent *event); private: }; diff --git a/ui/timelinewidget.cpp b/ui/timelinewidget.cpp index 175ac9b15..c181ce671 100644 --- a/ui/timelinewidget.cpp +++ b/ui/timelinewidget.cpp @@ -1033,7 +1033,7 @@ void TimelineWidget::paintEvent(QPaintEvent*) { } bool TimelineWidget::is_track_visible(int track) { - return ((bottom_align && track < 0) || (!bottom_align && track >= 0)); + return (bottom_align == (track < 0)); } // **************************************