diff options
| author | Peter Penz <[email protected]> | 2008-10-24 22:19:23 +0000 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2008-10-24 22:19:23 +0000 |
| commit | e7bd514a39f0b07ddfec85f5f7b391e16af7d279 (patch) | |
| tree | ea10c9444acfed8339121c9d884c024445f8067b /src/draganddrophelper.cpp | |
| parent | a96437d600ac1dad74084dff3fcd870cd8eb5024 (diff) | |
* 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: [email protected]
svn path=/trunk/KDE/kdebase/apps/; revision=875611
Diffstat (limited to 'src/draganddrophelper.cpp')
| -rw-r--r-- | src/draganddrophelper.cpp | 28 |
1 files changed, 27 insertions, 1 deletions
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 <[email protected]> * - * * + * Copyright (C) 2007 by David Faure <[email protected]> * * * * 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 <kdirmodel.h> +#include <kfileitem.h> #include <kicon.h> +#include <konq_operations.h> #include <QAbstractItemView> #include <QAbstractProxyModel> #include <QDrag> +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); + } + } +} |
