diff options
| author | Peter Penz <[email protected]> | 2012-05-26 13:40:48 +0200 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2012-05-26 13:41:30 +0200 |
| commit | 073f8cae13f2637c0bf2f5611295e103418d52ff (patch) | |
| tree | 08eadfa6f69f036a04945b2c6e512bfb8207e018 /src/panels | |
| parent | f7622d323926017b9acc4d42f05abdc4bd5ca456 (diff) | |
Further preperations for drag & drop support in the places panel
Diffstat (limited to 'src/panels')
| -rw-r--r-- | src/panels/places/placesitemmodel.cpp | 21 | ||||
| -rw-r--r-- | src/panels/places/placesitemmodel.h | 4 | ||||
| -rw-r--r-- | src/panels/places/placespanel.cpp | 7 | ||||
| -rw-r--r-- | src/panels/places/placespanel.h | 2 |
4 files changed, 30 insertions, 4 deletions
diff --git a/src/panels/places/placesitemmodel.cpp b/src/panels/places/placesitemmodel.cpp index 2a3dfa441..6723391db 100644 --- a/src/panels/places/placesitemmodel.cpp +++ b/src/panels/places/placesitemmodel.cpp @@ -331,14 +331,21 @@ QMimeData* PlacesItemModel::createMimeData(const QSet<int>& indexes) const if (!urls.isEmpty()) { urls.populateMimeData(mimeData); } - - const QString internalMimeType = "application/x-dolphinplacesmodel-" + - QString::number((qptrdiff)this); - mimeData->setData(internalMimeType, itemData); + mimeData->setData(internalMimeType(), itemData); return mimeData; } +void PlacesItemModel::dropMimeData(int index, const QMimeData* mimeData) +{ + Q_UNUSED(index); // TODO + if (mimeData->hasFormat(internalMimeType())) { + // TODO + } else if (mimeData->hasFormat("text/uri-list")) { + // TODO + } +} + KUrl PlacesItemModel::convertedUrl(const KUrl& url) { KUrl newUrl = url; @@ -879,6 +886,12 @@ void PlacesItemModel::triggerBookmarksSaving() } } +QString PlacesItemModel::internalMimeType() const +{ + return "application/x-dolphinplacesmodel-" + + QString::number((qptrdiff)this); +} + bool PlacesItemModel::equalBookmarkIdentifiers(const KBookmark& b1, const KBookmark& b2) { const QString udi1 = b1.metaDataItem("UDI"); diff --git a/src/panels/places/placesitemmodel.h b/src/panels/places/placesitemmodel.h index 18264f06a..95a994e76 100644 --- a/src/panels/places/placesitemmodel.h +++ b/src/panels/places/placesitemmodel.h @@ -108,6 +108,8 @@ public: /** @reimp */ virtual QMimeData* createMimeData(const QSet<int>& indexes) const; + void dropMimeData(int index, const QMimeData* mimeData); + /** * @return Converts the URL, which contains "virtual" URLs for system-items like * "search:/documents" into a Nepomuk-Query-URL that will be handled by @@ -195,6 +197,8 @@ private: */ void triggerBookmarksSaving(); + QString internalMimeType() const; + /** * @return True if the bookmarks have the same identifiers. The identifier * is the unique "ID"-property in case if no UDI is set, otherwise diff --git a/src/panels/places/placespanel.cpp b/src/panels/places/placespanel.cpp index 968c9af45..deef42935 100644 --- a/src/panels/places/placespanel.cpp +++ b/src/panels/places/placespanel.cpp @@ -43,6 +43,7 @@ #include "placesitemlistwidget.h" #include "placesitemmodel.h" #include <views/draganddrophelper.h> +#include <QGraphicsSceneDragDropEvent> #include <QVBoxLayout> #include <QShowEvent> @@ -88,6 +89,7 @@ void PlacesPanel::showEvent(QShowEvent* event) connect(m_controller, SIGNAL(itemMiddleClicked(int)), this, SLOT(slotItemMiddleClicked(int))); connect(m_controller, SIGNAL(itemContextMenuRequested(int,QPointF)), this, SLOT(slotItemContextMenuRequested(int,QPointF))); connect(m_controller, SIGNAL(viewContextMenuRequested(QPointF)), this, SLOT(slotViewContextMenuRequested(QPointF))); + connect(m_controller, SIGNAL(itemDropEvent(int,QGraphicsSceneDragDropEvent*)), this, SLOT(slotItemDropEvent(int,QGraphicsSceneDragDropEvent*))); KItemListContainer* container = new KItemListContainer(m_controller, this); container->setEnabledFrame(false); @@ -252,6 +254,11 @@ void PlacesPanel::slotViewContextMenuRequested(const QPointF& pos) selectClosestItem(); } +void PlacesPanel::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* event) +{ + m_model->dropMimeData(index, event->mimeData()); +} + void PlacesPanel::slotUrlsDropped(const KUrl& dest, QDropEvent* event, QWidget* parent) { Q_UNUSED(parent); diff --git a/src/panels/places/placespanel.h b/src/panels/places/placespanel.h index b3f259f56..d78b4ba61 100644 --- a/src/panels/places/placespanel.h +++ b/src/panels/places/placespanel.h @@ -28,6 +28,7 @@ class KItemListController; class PlacesItemEditDialog; class PlacesItem; class PlacesItemModel; +class QGraphicsSceneDragDropEvent; /** * @brief Combines bookmarks and mounted devices as list. @@ -54,6 +55,7 @@ private slots: void slotItemMiddleClicked(int index); void slotItemContextMenuRequested(int index, const QPointF& pos); void slotViewContextMenuRequested(const QPointF& pos); + void slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* event); void slotUrlsDropped(const KUrl& dest, QDropEvent* event, QWidget* parent); void slotTrashUpdated(KJob* job); |
