From 84010807786c352aaeb2320caf27e5f9048d8dec Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Wed, 24 Aug 2011 18:11:55 +0200 Subject: Interface cleanups for drag and drop support --- src/kitemviews/kitemlistcontroller.cpp | 67 +++++----------------------------- 1 file changed, 9 insertions(+), 58 deletions(-) (limited to 'src/kitemviews/kitemlistcontroller.cpp') diff --git a/src/kitemviews/kitemlistcontroller.cpp b/src/kitemviews/kitemlistcontroller.cpp index 15aab28d5..c3f3b36f4 100644 --- a/src/kitemviews/kitemlistcontroller.cpp +++ b/src/kitemviews/kitemlistcontroller.cpp @@ -26,11 +26,6 @@ #include "kitemlistrubberband_p.h" #include "kitemlistselectionmanager.h" -// TODO: Remove after moving mimeData() and createDropPixmap() into -// KFileItemModel/KFileItemListView -#include "kfileitemmodel.h" -#include - #include #include #include @@ -661,70 +656,26 @@ void KItemListController::slotRubberBandChanged() m_selectionManager->setSelectedItems(selectedItems + m_oldSelection); } -QPixmap KItemListController::createDragPixmap(const QSet& indexes) const -{ - if (!m_model || !m_view) { - return QPixmap(); - } - - // TODO: The current hack assumes a property "iconPixmap" in the model. The method - // will get an interface of KFileItemList later. - QSetIterator it(indexes); - while (it.hasNext()) { - const int index = it.next(); - // TODO: Only one item is considered currently - QPixmap pixmap = m_model->data(index).value("iconPixmap").value(); - if (pixmap.isNull()) { - KIcon icon(m_model->data(index).value("iconName").toString()); - const QSizeF size = m_view->itemSize(); - pixmap = icon.pixmap(size.toSize()); - } - return pixmap; - } - - return QPixmap(); -} - -QMimeData* KItemListController::createMimeData(const QSet& indexes) const +void KItemListController::startDragging() { - if (!m_model) { - return 0; + if (!m_view || !m_model) { + return; } - QMimeData* data = new QMimeData(); - - // TODO: Check KDirModel::mimeData() for a good reference implementation - KUrl::List urls; - QSetIterator it(indexes); - while (it.hasNext()) { - const int index = it.next(); - // TODO: Big hack to use KFileItemModel here. Remove after moving mimeData() - // into KFileItemModel. - KFileItemModel* model = qobject_cast(m_model); - Q_ASSERT(model); - const KUrl url = model->fileItem(index).url(); - urls.append(url); + const QSet selectedItems = m_selectionManager->selectedItems(); + QMimeData* data = m_model->createMimeData(selectedItems); + if (!data) { + return; } - urls.populateMimeData(data); - - return data; -} - -void KItemListController::startDragging() -{ // The created drag object will be owned and deleted // by QApplication::activeWindow(). QDrag* drag = new QDrag(QApplication::activeWindow()); + drag->setMimeData(data); - const QSet selectedItems = m_selectionManager->selectedItems(); - - const QPixmap pixmap = createDragPixmap(selectedItems); + const QPixmap pixmap = m_view->createDragPixmap(selectedItems); drag->setPixmap(pixmap); - QMimeData* data = createMimeData(selectedItems); - drag->setMimeData(data); - drag->exec(Qt::MoveAction | Qt::CopyAction | Qt::LinkAction, Qt::IgnoreAction); } -- cgit v1.3