X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/fca6867fea49edb4134332562f518ddddd3fc2a1..e6527fca191823eec596078a183a162f2fd75d64:/src/dolphinview.cpp diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index 50f56a478..f06aa09a4 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -71,6 +71,7 @@ DolphinView::DolphinView(DolphinMainWindow* mainWindow, m_controller(0), m_iconsView(0), m_detailsView(0), + m_fileItemDelegate(0), m_filterBar(0), m_statusBar(0), m_dirModel(0), @@ -132,8 +133,8 @@ DolphinView::DolphinView(DolphinMainWindow* mainWindow, m_controller = new DolphinController(this); 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(urlsDropped(const KUrl::List&, const QModelIndex&, QWidget*)), + this, SLOT(dropUrls(const KUrl::List&, const QModelIndex&, QWidget*))); connect(m_controller, SIGNAL(sortingChanged(DolphinView::Sorting)), this, SLOT(updateSorting(DolphinView::Sorting))); connect(m_controller, SIGNAL(sortOrderChanged(Qt::SortOrder)), @@ -425,6 +426,22 @@ Qt::SortOrder DolphinView::sortOrder() const return m_proxyModel->sortOrder(); } +void DolphinView::setAdditionalInfo(KFileItemDelegate::AdditionalInformation info) +{ + ViewProperties props(m_urlNavigator->url()); + props.setAdditionalInfo(info); + + m_fileItemDelegate->setAdditionalInformation(info); + + emit additionalInfoChanged(info); + reload(); +} + +KFileItemDelegate::AdditionalInformation DolphinView::additionalInfo() const +{ + return m_fileItemDelegate->additionalInformation(); +} + void DolphinView::goBack() { m_urlNavigator->goBack(); @@ -613,6 +630,13 @@ void DolphinView::loadDirectory(const KUrl& url) emit sortOrderChanged(sortOrder); } + KFileItemDelegate::AdditionalInformation info = props.additionalInfo(); + if (info != m_fileItemDelegate->additionalInformation()) { + m_fileItemDelegate->setAdditionalInformation(info); + + emit additionalInfoChanged(info); + } + const bool showPreview = props.showPreview(); if (showPreview != m_controller->showPreview()) { m_controller->setShowPreview(showPreview); @@ -732,7 +756,7 @@ void DolphinView::generatePreviews(const KFileItemList& items) const QMimeData* mimeData = QApplication::clipboard()->mimeData(); if (KonqMimeData::decodeIsCutSelection(mimeData)) { - QTimer::singleShot(1000, this, SLOT(applyCutEffect())); + QTimer::singleShot(0, this, SLOT(applyCutEffect())); } } @@ -971,10 +995,10 @@ void DolphinView::openContextMenu(const QPoint& pos) } void DolphinView::dropUrls(const KUrl::List& urls, - const QPoint& pos) + const QModelIndex& index, + QWidget* source) { KFileItem* directory = 0; - const QModelIndex index = itemView()->indexAt(pos); if (isValidNameIndex(index)) { KFileItem* item = fileItem(index); assert(item != 0); @@ -984,8 +1008,17 @@ void DolphinView::dropUrls(const KUrl::List& urls, } } + if ((directory == 0) && (source == itemView())) { + // The dropping is done into the same viewport where + // the dragging has been started. Just ignore this... + return; + } + const KUrl& destination = (directory == 0) ? url() : directory->url(); + + kDebug() << "DolphinView::dropUrls() - destination: " << destination.prettyUrl() << endl; + dropUrls(urls, destination); } @@ -1036,6 +1069,7 @@ void DolphinView::createView() view->deleteLater(); m_iconsView = 0; m_detailsView = 0; + m_fileItemDelegate = 0; } assert(m_iconsView == 0); @@ -1054,6 +1088,10 @@ void DolphinView::createView() break; } + + m_fileItemDelegate = new KFileItemDelegate(view); + view->setItemDelegate(m_fileItemDelegate); + view->setModel(m_proxyModel); view->setSelectionMode(QAbstractItemView::ExtendedSelection);