X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/d8669c68e40a6571dfcbdf38e3281a4aeb8c2be6..7e61bb47d742c116fcd63223778cf9dda8b6aaac:/src/dolphiniconsview.cpp diff --git a/src/dolphiniconsview.cpp b/src/dolphiniconsview.cpp index 98d1a05b1..840d7f5fb 100644 --- a/src/dolphiniconsview.cpp +++ b/src/dolphiniconsview.cpp @@ -19,14 +19,18 @@ ***************************************************************************/ #include "dolphiniconsview.h" +#include "dolphinmainwindow.h" #include "dolphinview.h" +#include #include #include +#include + DolphinIconsView::DolphinIconsView(DolphinView* parent) : QListView(parent), - m_parentView( parent ) + m_dolphinView(parent) { setResizeMode(QListView::Adjust); } @@ -58,17 +62,49 @@ void DolphinIconsView::contextMenuEvent(QContextMenuEvent* event) const QModelIndex index = indexAt(event->pos()); if (index.isValid()) { - KDirModel* dirModel = static_cast(model()); - item = dirModel->itemForIndex(index); + item = m_dolphinView->fileItem(index); } - m_parentView->openContextMenu(item, event->globalPos()); + m_dolphinView->openContextMenu(item, event->globalPos()); } void DolphinIconsView::mouseReleaseEvent(QMouseEvent* event) { QListView::mouseReleaseEvent(event); - m_parentView->declareViewActive(); + m_dolphinView->declareViewActive(); +} + +void DolphinIconsView::dragEnterEvent(QDragEnterEvent* event) +{ + if (event->mimeData()->hasUrls()) { + event->acceptProposedAction(); + } +} + +void DolphinIconsView::dropEvent(QDropEvent* event) +{ + KFileItem* directory = 0; + bool dropIntoDirectory = false; + const QModelIndex index = indexAt(event->pos()); + if (index.isValid()) { + KFileItem* item = m_dolphinView->fileItem(index); + assert(item != 0); + dropIntoDirectory = item->isDir(); + if (dropIntoDirectory) { + directory = item; + } + } + + const KUrl::List urls = KUrl::List::fromMimeData(event->mimeData()); + if (urls.isEmpty() || (event->source() == this) && !dropIntoDirectory) { + QListView::dropEvent(event); + } + else { + event->acceptProposedAction(); + const KUrl& destination = (directory == 0) ? m_dolphinView->url() : + directory->url(); + m_dolphinView->mainWindow()->dropUrls(urls, destination); + } } #include "dolphiniconsview.moc"