]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/draganddrophelper.h
* Use Nepomuk for getting the meta data instead of KFileMetaInfo.
[dolphin.git] / src / draganddrophelper.h
index 920ff5135d06fe7f81091ad6dd6545ca222abb69..4859740cd9dc02a4ea920ac8cc14363d455b6680 100644 (file)
@@ -1,6 +1,7 @@
 /***************************************************************************
  *   Copyright (C) 2007 by Peter Penz <peter.penz@gmx.at>                  *
- *   Copyright (C) 2007 by David Faure <faure@kde.org>                     *                                                                       *                                                                         *
+ *   Copyright (C) 2007 by David Faure <faure@kde.org>                     *
+ *                                                                         *
  *   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     *
@@ -20,7 +21,8 @@
 #ifndef DRAGANDDROPHELPER_H
 #define DRAGANDDROPHELPER_H
 
-#include <QtCore/Qt>
+#include "libdolphin_export.h"
+#include <QObject>
 
 class DolphinController;
 class KFileItem;
@@ -36,26 +38,35 @@ class QWidget;
  * @brief Helper class for having a common drag and drop behavior.
  *
  * The class is used by DolphinIconsView, DolphinDetailsView,
- * DolphinColumnView and SidebarTreeView to have a consistent
+ * DolphinColumnView and PanelTreeView to have a consistent
  * drag and drop behavior between all views.
  */
-class DragAndDropHelper
+class LIBDOLPHINPRIVATE_EXPORT DragAndDropHelper : public QObject
 {
+    Q_OBJECT
 
 public:
+    static DragAndDropHelper& instance();
+
     /**
      * Returns true, if Dolphin supports the dragging of
      * the given mime data.
      */
-    static bool isMimeDataSupported(const QMimeData* mimeData);
-    
+    bool isMimeDataSupported(const QMimeData* mimeData) const;
+
     /**
      * Creates a drag object for the view \a itemView for all selected items.
      */
-    static void startDrag(QAbstractItemView* itemView,
-                          Qt::DropActions supportedActions,
-                          DolphinController* controller = 0);
-                          
+    void startDrag(QAbstractItemView* itemView,
+                   Qt::DropActions supportedActions,
+                   DolphinController* controller = 0);
+
+    /**
+     * Returns true if and only if the view \a itemView was the last view to 
+     * be passed to startDrag(...), and that drag is still in progress.
+     */
+    bool isDragSource(QAbstractItemView* itemView);
+
     /**
      * Handles the dropping of URLs to the given
      * destination. A context menu with the options
@@ -66,10 +77,20 @@ public:
      * @param event     Drop event.
      * @param widget    Source widget where the dragging has been started.
      */
-    static void dropUrls(const KFileItem& destItem,
-                         const KUrl& destPath,
-                         QDropEvent* event,
-                         QWidget* widget);
+    void dropUrls(const KFileItem& destItem,
+                  const KUrl& destPath,
+                  QDropEvent* event,
+                  QWidget* widget);
+signals:
+    void errorMessage(const QString& msg);
+
+private:
+    DragAndDropHelper();
+    // The last view passed in startDrag(...), or 0 if
+    // no startDrag(...) initiated drag is in progress.
+    QAbstractItemView *m_dragSource;
+
+    friend class DragAndDropHelperSingleton;
 };
 
 #endif