From e7bd514a39f0b07ddfec85f5f7b391e16af7d279 Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Fri, 24 Oct 2008 22:19:23 +0000 Subject: * Move code from DolphinDropController to DragAndDropHelper. * Move code which checks whether the dragging of a MIME type is supported to DragAndDropHelper. This allows adding an improved support for dropping compressed files from Ark to Dolphin later... CCMAIL: haraldhv@stud.ntnu.no svn path=/trunk/KDE/kdebase/apps/; revision=875611 --- src/draganddrophelper.cpp | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) (limited to 'src/draganddrophelper.cpp') diff --git a/src/draganddrophelper.cpp b/src/draganddrophelper.cpp index 6d8854d2d..6e3fff2fc 100644 --- a/src/draganddrophelper.cpp +++ b/src/draganddrophelper.cpp @@ -1,6 +1,6 @@ /*************************************************************************** * Copyright (C) 2007 by Peter Penz * - * * + * Copyright (C) 2007 by David Faure * * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * @@ -22,12 +22,19 @@ #include "dolphincontroller.h" #include +#include #include +#include #include #include #include +bool DragAndDropHelper::isMimeDataSupported(const QMimeData* mimeData) +{ + return mimeData->hasUrls() || mimeData->hasFormat("application/x-kde-dndextract"); +} + void DragAndDropHelper::startDrag(QAbstractItemView* itemView, Qt::DropActions supportedActions, DolphinController* controller) @@ -60,3 +67,22 @@ void DragAndDropHelper::startDrag(QAbstractItemView* itemView, drag->exec(supportedActions, Qt::IgnoreAction); } } + +void DragAndDropHelper::dropUrls(const KFileItem& destItem, + const KUrl& destPath, + QDropEvent* event, + QWidget* widget) +{ + const bool dropToItem = !destItem.isNull() && (destItem.isDir() || destItem.isDesktopFile()); + const KUrl destination = dropToItem ? destItem.url() : destPath; + + const KUrl::List urls = KUrl::List::fromMimeData(event->mimeData()); + const KUrl sourceDir = KUrl(urls.first().directory()); + if (sourceDir != destination) { + if (dropToItem) { + KonqOperations::doDrop(destItem, destination, event, widget); + } else { + KonqOperations::doDrop(KFileItem(), destination, event, widget); + } + } +} -- cgit v1.3