NOISSUE add pack import using drag&drop

Straight from the browser or the downloads folder.
This commit is contained in:
Petr Mrázek
2017-04-22 06:11:26 +02:00
parent 77a1d39f6b
commit 30863a88ab
6 changed files with 73 additions and 24 deletions

View File

@ -534,31 +534,46 @@ void GroupView::dropEvent(QDropEvent *event)
stopAutoScroll();
setState(NoState);
if (event->source() != this || !(event->possibleActions() & Qt::MoveAction))
if (event->source() == this)
{
if(event->possibleActions() & Qt::MoveAction)
{
QPair<VisualGroup *, int> dropPos = rowDropPos(event->pos() + offset());
const VisualGroup *category = dropPos.first;
const int row = dropPos.second;
if (row == -1)
{
viewport()->update();
return;
}
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)
{
return;
}
QPair<VisualGroup *, int> dropPos = rowDropPos(event->pos() + offset());
const VisualGroup *category = dropPos.first;
const int row = dropPos.second;
if (row == -1)
// files dropped from outside?
if (mimedata->hasUrls())
{
viewport()->update();
return;
auto urls = mimedata->urls();
emit droppedURLs(urls);
}
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();
}
void GroupView::startDrag(Qt::DropActions supportedActions)
@ -707,7 +722,7 @@ QList<QPair<QRect, QModelIndex>> GroupView::draggablePaintPairs(const QModelInde
bool GroupView::isDragEventAccepted(QDropEvent *event)
{
return false;
return true;
}
QPair<VisualGroup *, int> GroupView::rowDropPos(const QPoint &pos)

View File

@ -62,6 +62,9 @@ protected slots:
void modelReset();
void rowsRemoved();
signals:
void droppedURLs(QList<QUrl> urls);
protected:
virtual bool isIndexHidden(const QModelIndex &index) const override;
void mousePressEvent(QMouseEvent *event) override;