From 546384562ae872614cd0c8fa568bd65ae41885da Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Fri, 16 Feb 2007 17:03:02 +0000 Subject: Reanimated drag & drop support again after introducing the DolphinController. It is now also possible to move the items inside an icon view like discussed on kde-devel/kde-usability. svn path=/trunk/KDE/kdebase/apps/; revision=634228 --- src/dolphinview.cpp | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) (limited to 'src/dolphinview.cpp') diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index d1416c40a..920224583 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -112,8 +112,10 @@ DolphinView::DolphinView(DolphinMainWindow* mainWindow, m_proxyModel->setSourceModel(m_dirModel); m_controller = new DolphinController(this); - connect(m_controller, SIGNAL(requestContextMenu(const QPoint&, const QPoint&)), - this, SLOT(openContextMenu(const QPoint&, const QPoint&))); + connect(m_controller, SIGNAL(requestContextMenu(const QPoint&)), + this, SLOT(openContextMenu(const QPoint&))); + connect(m_controller, SIGNAL(urlsDropped(const KUrl::List&, const QPoint&)), + this, SLOT(dropUrls(const KUrl::List&, const QPoint&))); connect(m_controller, SIGNAL(sortingChanged(DolphinView::Sorting)), this, SLOT(updateSorting(DolphinView::Sorting))); connect(m_controller, SIGNAL(sortOrderChanged(Qt::SortOrder)), @@ -855,7 +857,7 @@ void DolphinView::changeNameFilter(const QString& nameFilter) #endif } -void DolphinView::openContextMenu(const QPoint& pos, const QPoint& globalPos) +void DolphinView::openContextMenu(const QPoint& pos) { KFileItem* item = 0; @@ -864,10 +866,29 @@ void DolphinView::openContextMenu(const QPoint& pos, const QPoint& globalPos) item = fileItem(index); } - DolphinContextMenu contextMenu(this, item, globalPos); + DolphinContextMenu contextMenu(this, item); contextMenu.open(); } +void DolphinView::dropUrls(const KUrl::List& urls, + const QPoint& pos) +{ + KFileItem* directory = 0; + const QModelIndex index = itemView()->indexAt(pos); + if (index.isValid()) { + KFileItem* item = fileItem(index); + assert(item != 0); + if (item->isDir()) { + // the URLs are dropped above a directory + directory = item; + } + } + + const KUrl& destination = (directory == 0) ? url() : + directory->url(); + m_mainWindow->dropUrls(urls, destination); +} + void DolphinView::updateSorting(DolphinView::Sorting sorting) { ViewProperties props(url()); -- cgit v1.3