diff options
| author | Kai Uwe Broulik <[email protected]> | 2022-04-07 21:41:43 +0200 |
|---|---|---|
| committer | Kai Uwe Broulik <[email protected]> | 2022-04-11 18:01:51 +0200 |
| commit | 0c7f7c92ed961ce46a7b42aeeb1c30070c95ae17 (patch) | |
| tree | 82dabd76e9ab21f0d2c24b9aaef8bcad0b12c25b /src/views | |
| parent | 3bf471e02a440bd008d69c5939b7c5bf2c03df54 (diff) | |
[Places Panel] Support drag and drop from Ark
Accepts Ark's special dnd mime types so that archive contents can
be dragged onto a place to extract and/or (mount and) switch to the
hovered location.
Diffstat (limited to 'src/views')
| -rw-r--r-- | src/views/draganddrophelper.cpp | 12 | ||||
| -rw-r--r-- | src/views/draganddrophelper.h | 9 |
2 files changed, 17 insertions, 4 deletions
diff --git a/src/views/draganddrophelper.cpp b/src/views/draganddrophelper.cpp index 2466b2ab7..b3f2a4c3e 100644 --- a/src/views/draganddrophelper.cpp +++ b/src/views/draganddrophelper.cpp @@ -35,10 +35,9 @@ bool DragAndDropHelper::urlListMatchesUrl(const QList<QUrl>& urls, const QUrl& d KIO::DropJob* DragAndDropHelper::dropUrls(const QUrl& destUrl, QDropEvent* event, QWidget* window) { const QMimeData* mimeData = event->mimeData(); - if (mimeData->hasFormat(QStringLiteral("application/x-kde-ark-dndextract-service")) && - mimeData->hasFormat(QStringLiteral("application/x-kde-ark-dndextract-path"))) { - const QString remoteDBusClient = mimeData->data(QStringLiteral("application/x-kde-ark-dndextract-service")); - const QString remoteDBusPath = mimeData->data(QStringLiteral("application/x-kde-ark-dndextract-path")); + if (isArkDndMimeType(mimeData)) { + const QString remoteDBusClient = mimeData->data(arkDndServiceMimeType()); + const QString remoteDBusPath = mimeData->data(arkDndPathMimeType()); QDBusMessage message = QDBusMessage::createMethodCall(remoteDBusClient, remoteDBusPath, QStringLiteral("org.kde.ark.DndExtract"), QStringLiteral("extractSelectedFilesTo")); @@ -63,3 +62,8 @@ void DragAndDropHelper::clearUrlListMatchesUrlCache() DragAndDropHelper::m_urlListMatchesUrlCache.clear(); } +bool DragAndDropHelper::isArkDndMimeType(const QMimeData *mimeData) +{ + return mimeData->hasFormat(arkDndServiceMimeType()) + && mimeData->hasFormat(arkDndPathMimeType()); +} diff --git a/src/views/draganddrophelper.h b/src/views/draganddrophelper.h index 5f9d3754b..19a30404e 100644 --- a/src/views/draganddrophelper.h +++ b/src/views/draganddrophelper.h @@ -11,9 +11,11 @@ #include "dolphin_export.h" #include <QList> +#include <QString> #include <QUrl> class QDropEvent; +class QMimeData; class QWidget; namespace KIO { class DropJob; } @@ -43,6 +45,13 @@ public: static bool urlListMatchesUrl(const QList<QUrl>& 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(); |
