/***************************************************************************
* 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 *
#ifndef DRAGANDDROPHELPER_H
#define DRAGANDDROPHELPER_H
-#include <QtCore/Qt>
+#include "libdolphin_export.h"
+#include <QObject>
class DolphinController;
class KFileItem;
* @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
* @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