X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/5360bc3ab328c8b1161b0c5df9c5785829a3e880..d9c11ee99906558ae853fc3b42167e884d2a940e:/src/views/draganddrophelper.cpp diff --git a/src/views/draganddrophelper.cpp b/src/views/draganddrophelper.cpp index 2466b2ab7..aaf2baa38 100644 --- a/src/views/draganddrophelper.cpp +++ b/src/views/draganddrophelper.cpp @@ -17,31 +17,34 @@ QHash DragAndDropHelper::m_urlListMatchesUrlCache; -bool DragAndDropHelper::urlListMatchesUrl(const QList& urls, const QUrl& destUrl) +bool DragAndDropHelper::urlListMatchesUrl(const QList &urls, const QUrl &destUrl) { auto iteratorResult = m_urlListMatchesUrlCache.constFind(destUrl); if (iteratorResult != m_urlListMatchesUrlCache.constEnd()) { return *iteratorResult; } - const bool destUrlMatches = - std::find_if(urls.constBegin(), urls.constEnd(), [destUrl](const QUrl& url) { - return url.matches(destUrl, QUrl::StripTrailingSlash); - }) != urls.constEnd(); + const bool destUrlMatches = std::find_if(urls.constBegin(), + urls.constEnd(), + [destUrl](const QUrl &url) { + return url.matches(destUrl, QUrl::StripTrailingSlash); + }) + != urls.constEnd(); return *m_urlListMatchesUrlCache.insert(destUrl, destUrlMatches); } -KIO::DropJob* DragAndDropHelper::dropUrls(const QUrl& destUrl, QDropEvent* event, QWidget* window) +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")); + const QMimeData *mimeData = event->mimeData(); + 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")); + QDBusMessage message = QDBusMessage::createMethodCall(remoteDBusClient, + remoteDBusPath, + QStringLiteral("org.kde.ark.DndExtract"), + QStringLiteral("extractSelectedFilesTo")); message.setArguments({destUrl.toDisplayString(QUrl::PreferLocalFile)}); QDBusConnection::sessionBus().call(message); } else { @@ -63,3 +66,7 @@ void DragAndDropHelper::clearUrlListMatchesUrlCache() DragAndDropHelper::m_urlListMatchesUrlCache.clear(); } +bool DragAndDropHelper::isArkDndMimeType(const QMimeData *mimeData) +{ + return mimeData->hasFormat(arkDndServiceMimeType()) && mimeData->hasFormat(arkDndPathMimeType()); +}