┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/draganddrophelper.cpp
diff options
context:
space:
mode:
authorPeter Penz <[email protected]>2008-10-24 22:19:23 +0000
committerPeter Penz <[email protected]>2008-10-24 22:19:23 +0000
commite7bd514a39f0b07ddfec85f5f7b391e16af7d279 (patch)
treeea10c9444acfed8339121c9d884c024445f8067b /src/draganddrophelper.cpp
parenta96437d600ac1dad74084dff3fcd870cd8eb5024 (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.cpp28
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);
+ }
+ }
+}