X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/38fa728aa607af2fb890f4d602d68ed1ae9d2278..b1c9b5126d:/src/draganddrophelper.h diff --git a/src/draganddrophelper.h b/src/draganddrophelper.h index 93f9ddd12..4859740cd 100644 --- a/src/draganddrophelper.h +++ b/src/draganddrophelper.h @@ -1,5 +1,6 @@ /*************************************************************************** * Copyright (C) 2007 by Peter Penz * + * Copyright (C) 2007 by David Faure * * * * 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 * @@ -20,8 +21,14 @@ #ifndef DRAGANDDROPHELPER_H #define DRAGANDDROPHELPER_H -#include +#include "libdolphin_export.h" +#include +class DolphinController; +class KFileItem; +class KUrl; +class QDropEvent; +class QMimeData; class QAbstractItemView; class QBrush; class QRect; @@ -31,17 +38,59 @@ 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. + */ + 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); + 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 + * 'Move Here', 'Copy Here', 'Link Here' and + * 'Cancel' is offered to the user. + * @param destItem Item of the destination (can be null, see KFileItem::isNull()). + * @param destPath Path of the destination. + * @param event Drop event. + * @param widget Source widget where the dragging has been started. + */ + 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