From 30863a88abbbac05aff914326557882a2f09f4e4 Mon Sep 17 00:00:00 2001 From: Petr Mrázek Date: Sat, 22 Apr 2017 06:11:26 +0200 Subject: NOISSUE add pack import using drag&drop Straight from the browser or the downloads folder. --- application/groupview/GroupView.cpp | 49 ++++++++++++++++++++++++------------- application/groupview/GroupView.h | 3 +++ 2 files changed, 35 insertions(+), 17 deletions(-) (limited to 'application/groupview') diff --git a/application/groupview/GroupView.cpp b/application/groupview/GroupView.cpp index a6844102..1ce0568b 100644 --- a/application/groupview/GroupView.cpp +++ b/application/groupview/GroupView.cpp @@ -534,31 +534,46 @@ void GroupView::dropEvent(QDropEvent *event) stopAutoScroll(); setState(NoState); - if (event->source() != this || !(event->possibleActions() & Qt::MoveAction)) + if (event->source() == this) { - return; - } + if(event->possibleActions() & Qt::MoveAction) + { + QPair dropPos = rowDropPos(event->pos() + offset()); + const VisualGroup *category = dropPos.first; + const int row = dropPos.second; - QPair dropPos = rowDropPos(event->pos() + offset()); - const VisualGroup *category = dropPos.first; - const int row = dropPos.second; + if (row == -1) + { + viewport()->update(); + return; + } - if (row == -1) + const QString categoryText = category->text; + if (model()->dropMimeData(event->mimeData(), Qt::MoveAction, row, 0, QModelIndex())) + { + model()->setData(model()->index(row, 0), categoryText, + GroupViewRoles::GroupRole); + event->setDropAction(Qt::MoveAction); + event->accept(); + } + updateGeometries(); + viewport()->update(); + } + } + auto mimedata = event->mimeData(); + + // check if the action is supported + if (!mimedata) { - viewport()->update(); return; } - const QString categoryText = category->text; - if (model()->dropMimeData(event->mimeData(), Qt::MoveAction, row, 0, QModelIndex())) + // files dropped from outside? + if (mimedata->hasUrls()) { - model()->setData(model()->index(row, 0), categoryText, - GroupViewRoles::GroupRole); - event->setDropAction(Qt::MoveAction); - event->accept(); + auto urls = mimedata->urls(); + emit droppedURLs(urls); } - updateGeometries(); - viewport()->update(); } void GroupView::startDrag(Qt::DropActions supportedActions) @@ -707,7 +722,7 @@ QList> GroupView::draggablePaintPairs(const QModelInde bool GroupView::isDragEventAccepted(QDropEvent *event) { - return false; + return true; } QPair GroupView::rowDropPos(const QPoint &pos) diff --git a/application/groupview/GroupView.h b/application/groupview/GroupView.h index e0ff1cd9..37c37f2f 100644 --- a/application/groupview/GroupView.h +++ b/application/groupview/GroupView.h @@ -62,6 +62,9 @@ protected slots: void modelReset(); void rowsRemoved(); +signals: + void droppedURLs(QList urls); + protected: virtual bool isIndexHidden(const QModelIndex &index) const override; void mousePressEvent(QMouseEvent *event) override; -- cgit