]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/views/draganddrophelper.h
DolphinStatusbar: Fix background and margins for non-Breeze styles
[dolphin.git] / src / views / draganddrophelper.h
index 19a30404e727a54c36787463a71cc8ce0b75c612..73043febc2ee91d70766179197c732e16af4a3ee 100644 (file)
@@ -10,6 +10,8 @@
 
 #include "dolphin_export.h"
 
+#include <KFileItem>
+
 #include <QList>
 #include <QString>
 #include <QUrl>
 class QDropEvent;
 class QMimeData;
 class QWidget;
-namespace KIO { class DropJob; }
+namespace KIO
+{
+class DropJob;
+}
 
 class DOLPHIN_EXPORT DragAndDropHelper
 {
@@ -35,26 +40,50 @@ public:
      * @return          KIO::DropJob pointer or null in case the destUrl is contained
      *                  in the mimeData url list.
      */
-    static KIO::DropJob* dropUrls(const QUrl& destUrl,
-                                  QDropEvent* event,
-                                  QWidget *window);
+    static KIO::DropJob *dropUrls(const QUrl &destUrl, QDropEvent *event, QWidget *window);
+
+    /**
+     * Checks if the destination supports dropping.
+     *
+     * @param destItem  The item destination.
+     * @return          True if the destination is a directory and is writable, or it's a desktop file.
+     *                  False otherwise.
+     */
+    static bool supportsDropping(const KFileItem &destItem);
+
+    /**
+     * Updates the drop action according to whether the destination supports dropping.
+     * If supportsDropping(destUrl), set dropAction = proposedAction. Otherwise, set
+     * dropAction = Qt::IgnoreAction.
+     *
+     * @param event     Drop event.
+     * @param destUrl   Destination URL.
+     */
+    static void updateDropAction(QDropEvent *event, const QUrl &destUrl);
 
     /**
      * @return True if destUrl is contained in the urls parameter.
      */
-    static bool urlListMatchesUrl(const QList<QUrl>& urls, const QUrl& destUrl);
+    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"); }
+    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();
+
 private:
     /**
      * Stores the results of the expensive checks made in urlListMatchesUrl.