X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/d9f5e191a6bd32a4dc15b3a3eb34795cda7697dd..e80f07735774cfd8e4debef48cbef7869506e585:/src/dolphincolumnwidget.cpp diff --git a/src/dolphincolumnwidget.cpp b/src/dolphincolumnwidget.cpp index e2670f10d..abd236c7d 100644 --- a/src/dolphincolumnwidget.cpp +++ b/src/dolphincolumnwidget.cpp @@ -26,8 +26,8 @@ #include "dolphinmodel.h" #include "dolphinsortfilterproxymodel.h" #include "dolphinsettings.h" - #include "dolphin_columnmodesettings.h" +#include "draganddrophelper.h" #include #include @@ -115,18 +115,16 @@ DolphinColumnWidget::DolphinColumnWidget(QWidget* parent, m_dirLister->setShowingDotFiles(showHiddenFiles); connect(m_dirLister, SIGNAL(newItems(const KFileItemList&)), this, SLOT(generatePreviews(const KFileItemList&))); +} - m_dolphinModel = new DolphinModel(this); - m_dolphinModel->setDirLister(m_dirLister); - m_dolphinModel->setDropsAllowed(DolphinModel::DropOnDirectory); - - m_proxyModel = new DolphinSortFilterProxyModel(this); - m_proxyModel->setSourceModel(m_dolphinModel); - - setModel(m_proxyModel); +void DolphinColumnWidget::setModel ( QAbstractItemModel * model ) +{ + m_proxyModel = dynamic_cast(model); + if(m_proxyModel) + m_dolphinModel = dynamic_cast(m_proxyModel->sourceModel()); new KMimeTypeResolver(this, m_dolphinModel); - - m_dirLister->openUrl(url, KDirLister::NoFlags); + m_dirLister->openUrl(m_url, KDirLister::NoFlags); + QListView::setModel(m_proxyModel); } DolphinColumnWidget::~DolphinColumnWidget() @@ -197,6 +195,11 @@ void DolphinColumnWidget::setNameFilter(const QString& nameFilter) m_proxyModel->setFilterRegExp(nameFilter); } +void DolphinColumnWidget::startDrag(Qt::DropActions supportedActions) +{ + DragAndDropHelper::startDrag(this, supportedActions); +} + void DolphinColumnWidget::dragEnterEvent(QDragEnterEvent* event) { if (event->mimeData()->hasUrls()) { @@ -222,10 +225,13 @@ void DolphinColumnWidget::dragMoveEvent(QDragMoveEvent* event) // TODO: remove this code when the issue #160611 is solved in Qt 4.4 const QModelIndex index = indexAt(event->pos()); setDirtyRegion(m_dropRect); - if (itemForIndex(index).isDir()) { - m_dropRect = visualRect(index); - } else { - m_dropRect.setSize(QSize()); // set as invalid + + m_dropRect.setSize(QSize()); // set as invalid + if (index.isValid()) { + const KFileItem item = itemForIndex(index); + if (!item.isNull() && item.isDir()) { + m_dropRect = visualRect(index); + } } setDirtyRegion(m_dropRect); } @@ -271,7 +277,7 @@ void DolphinColumnWidget::paintEvent(QPaintEvent* event) // TODO: remove this code when the issue #160611 is solved in Qt 4.4 if (m_dragging) { const QBrush& brush = m_viewOptions.palette.brush(QPalette::Normal, QPalette::Highlight); - DolphinController::drawHoverIndication(viewport(), m_dropRect, brush); + DragAndDropHelper::drawHoverIndication(viewport(), m_dropRect, brush); } } @@ -326,6 +332,7 @@ void DolphinColumnWidget::selectionChanged(const QItemSelection& selected, const selModel->select(selected, QItemSelectionModel::Select); selModel->select(deselected, QItemSelectionModel::Deselect); } + void DolphinColumnWidget::triggerItem(const QModelIndex& index) { const KFileItem item = itemForIndex(index);