X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/5360bc3ab328c8b1161b0c5df9c5785829a3e880..8e3addb7e73122a4c89ef347b03f714ff75a253a:/src/views/draganddrophelper.h diff --git a/src/views/draganddrophelper.h b/src/views/draganddrophelper.h index 5f9d3754b..73043febc 100644 --- a/src/views/draganddrophelper.h +++ b/src/views/draganddrophelper.h @@ -10,12 +10,19 @@ #include "dolphin_export.h" +#include + #include +#include #include class QDropEvent; +class QMimeData; class QWidget; -namespace KIO { class DropJob; } +namespace KIO +{ +class DropJob; +} class DOLPHIN_EXPORT DragAndDropHelper { @@ -33,19 +40,50 @@ public: * @return KIO::DropJob pointer or null in case the destUrl is contained * in the mimeData url list. */ - static KIO::DropJob* dropUrls(const QUrl& destUrl, - QDropEvent* event, - QWidget *window); + static KIO::DropJob *dropUrls(const QUrl &destUrl, QDropEvent *event, QWidget *window); + + /** + * Checks if the destination supports dropping. + * + * @param destItem The item destination. + * @return True if the destination is a directory and is writable, or it's a desktop file. + * False otherwise. + */ + static bool supportsDropping(const KFileItem &destItem); + + /** + * Updates the drop action according to whether the destination supports dropping. + * If supportsDropping(destUrl), set dropAction = proposedAction. Otherwise, set + * dropAction = Qt::IgnoreAction. + * + * @param event Drop event. + * @param destUrl Destination URL. + */ + static void updateDropAction(QDropEvent *event, const QUrl &destUrl); /** * @return True if destUrl is contained in the urls parameter. */ - static bool urlListMatchesUrl(const QList& urls, const QUrl& destUrl); + static bool urlListMatchesUrl(const QList &urls, const QUrl &destUrl); + + /** + * @return True if mimeData contains Ark's drag and drop mime types. + */ + static bool isArkDndMimeType(const QMimeData *mimeData); + static QString arkDndServiceMimeType() + { + return QStringLiteral("application/x-kde-ark-dndextract-service"); + } + static QString arkDndPathMimeType() + { + return QStringLiteral("application/x-kde-ark-dndextract-path"); + } /** * clear the internal cache. */ static void clearUrlListMatchesUrlCache(); + private: /** * Stores the results of the expensive checks made in urlListMatchesUrl.