From 4f0bd14f3d7086758ba84d3601d80957c2b16e6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Luis=20=C3=81ngel=20San=20Mart=C3=ADn?= Date: Mon, 18 Apr 2016 17:36:06 +0200 Subject: [PATCH] Enabled drop to import into info comics view. --- YACReaderLibrary/info_comics_view.cpp | 32 +++++++++++++++++++++++-- YACReaderLibrary/info_comics_view.h | 3 +++ YACReaderLibrary/qml/InfoComicsView.qml | 4 ---- 3 files changed, 33 insertions(+), 6 deletions(-) diff --git a/YACReaderLibrary/info_comics_view.cpp b/YACReaderLibrary/info_comics_view.cpp index d5e2e103..e781ce39 100644 --- a/YACReaderLibrary/info_comics_view.cpp +++ b/YACReaderLibrary/info_comics_view.cpp @@ -2,6 +2,8 @@ #include +#include "comic.h" +#include "comic_files_manager.h" #include "comic_model.h" #include "comic_db.h" #include "yacreader_comics_selection_helper.h" @@ -83,10 +85,9 @@ void InfoComicsView::setModel(ComicModel *model) ctxt->setContextProperty("comicsSelectionHelper", this); ctxt->setContextProperty("comicRatingHelper", this); ctxt->setContextProperty("dummyValue", true); - ctxt->setContextProperty("dragManager", this); + ctxt->setContextProperty("dragManager", this);*/ ctxt->setContextProperty("dropManager", this); - updateBackgroundConfig();*/ if(model->rowCount()>0) { @@ -160,3 +161,30 @@ void InfoComicsView::selectAll() { selectionHelper->selectAll(); } + +bool InfoComicsView::canDropUrls(const QList &urls, Qt::DropAction action) +{ + if(action == Qt::CopyAction) + { + QString currentPath; + foreach (QUrl url, urls) + { + //comics or folders are accepted, folders' content is validate in dropEvent (avoid any lag before droping) + currentPath = url.toLocalFile(); + if(Comic::fileIsComic(currentPath) || QFileInfo(currentPath).isDir()) + return true; + } + } + return false; +} + +void InfoComicsView::droppedFiles(const QList &urls, Qt::DropAction action) +{ + bool validAction = action == Qt::CopyAction; //TODO add move + + if(validAction) + { + QList > droppedFiles = ComicFilesManager::getDroppedFiles(urls); + emit copyComicsToCurrentFolder(droppedFiles); + } +} diff --git a/YACReaderLibrary/info_comics_view.h b/YACReaderLibrary/info_comics_view.h index 1bb908fa..f22a9bdd 100644 --- a/YACReaderLibrary/info_comics_view.h +++ b/YACReaderLibrary/info_comics_view.h @@ -36,6 +36,9 @@ public slots: protected slots: void setCurrentIndex(int index); + bool canDropUrls(const QList & urls, Qt::DropAction action); + void droppedFiles(const QList & urls, Qt::DropAction action); + protected: QToolBar * toolbar; QObject *flow; diff --git a/YACReaderLibrary/qml/InfoComicsView.qml b/YACReaderLibrary/qml/InfoComicsView.qml index e8164272..f3106710 100644 --- a/YACReaderLibrary/qml/InfoComicsView.qml +++ b/YACReaderLibrary/qml/InfoComicsView.qml @@ -108,10 +108,6 @@ Rectangle { }else drag.accepted = false; } - else if (dropManager.canDropFormats(drag.formats)) { - drag.accepted = true; - } else - drag.accepted = false; } onDropped: {