X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/acee6d0fc59e1c1c5e1d842620245ee3d1e514b7..4620d8995ea12d5903f185824cc7ee210d45cf0b:/src/views/dolphinview.cpp diff --git a/src/views/dolphinview.cpp b/src/views/dolphinview.cpp index a31bf566d..ea7441600 100644 --- a/src/views/dolphinview.cpp +++ b/src/views/dolphinview.cpp @@ -81,6 +81,7 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) : m_tabsForFiles(false), m_assureVisibleCurrentIndex(false), m_isFolderWritable(true), + m_dragging(false), m_url(url), m_mode(DolphinView::IconsView), m_additionalInfoList(), @@ -137,9 +138,6 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) : KItemListController* controller = m_container->controller(); controller->setSelectionBehavior(KItemListController::MultiSelection); - if (GeneralSettings::autoExpandFolders()) { - controller->setAutoActivationDelay(750); - } connect(controller, SIGNAL(itemActivated(int)), this, SLOT(slotItemActivated(int))); connect(controller, SIGNAL(itemsActivated(QSet)), this, SLOT(slotItemsActivated(QSet))); connect(controller, SIGNAL(itemMiddleClicked(int)), this, SLOT(slotItemMiddleClicked(int))); @@ -158,6 +156,7 @@ DolphinView::DolphinView(const KUrl& url, QWidget* parent) : } KItemListView* view = controller->view(); + view->installEventFilter(this); connect(view, SIGNAL(sortOrderChanged(Qt::SortOrder,Qt::SortOrder)), this, SLOT(slotSortOrderChangedByHeader(Qt::SortOrder,Qt::SortOrder))); connect(view, SIGNAL(sortRoleChanged(QByteArray,QByteArray)), @@ -449,11 +448,24 @@ void DolphinView::stopLoading() m_dirLister->stop(); } -void DolphinView::refresh() +void DolphinView::readSettings() { + const int oldZoomLevel = m_container->zoomLevel(); + GeneralSettings::self()->readConfig(); - m_container->refresh(); + m_container->readSettings(); applyViewProperties(); + + const int newZoomLevel = m_container->zoomLevel(); + if (newZoomLevel != oldZoomLevel) { + emit zoomLevelChanged(newZoomLevel, oldZoomLevel); + } +} + +void DolphinView::writeSettings() +{ + GeneralSettings::self()->writeConfig(); + m_container->writeSettings(); } void DolphinView::setNameFilter(const QString& nameFilter) @@ -664,6 +676,22 @@ bool DolphinView::eventFilter(QObject* watched, QEvent* event) } break; + case QEvent::GraphicsSceneDragEnter: + if (watched == m_container->controller()->view()) { + m_dragging = true; + } + break; + + case QEvent::GraphicsSceneDragLeave: + if (watched == m_container->controller()->view()) { + m_dragging = false; + } + break; + + case QEvent::GraphicsSceneDrop: + if (watched == m_container->controller()->view()) { + m_dragging = false; + } default: break; } @@ -684,6 +712,12 @@ void DolphinView::wheelEvent(QWheelEvent* event) } } +void DolphinView::hideEvent(QHideEvent* event) +{ + hideToolTip(); + QWidget::hideEvent(event); +} + void DolphinView::activate() { setActive(true); @@ -792,7 +826,7 @@ void DolphinView::slotItemHovered(int index) { const KFileItem item = fileItemModel()->fileItem(index); - if (GeneralSettings::showToolTips() && QApplication::mouseButtons() == Qt::NoButton) { + if (GeneralSettings::showToolTips() && !m_dragging) { QRectF itemRect = m_container->controller()->view()->itemContextRect(index); const QPoint pos = m_container->mapToGlobal(itemRect.topLeft().toPoint()); itemRect.moveTo(pos); @@ -812,13 +846,16 @@ void DolphinView::slotItemUnhovered(int index) void DolphinView::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* event) { + KUrl destUrl; KFileItem destItem = fileItemModel()->fileItem(index); - if (destItem.isNull()) { + if (destItem.isNull() || (!destItem.isDir() && !destItem.isDesktopFile())) { + // Use the URL of the view as drop target if the item is no directory + // or desktop-file destItem = fileItemModel()->rootItem(); - if (destItem.isNull()) { - kWarning() << "No destination item available for drop operation."; - return; - } + destUrl = url(); + } else { + // The item represents a directory or desktop-file + destUrl = destItem.url(); } QDropEvent dropEvent(event->pos().toPoint(), @@ -827,7 +864,7 @@ void DolphinView::slotItemDropEvent(int index, QGraphicsSceneDragDropEvent* even event->buttons(), event->modifiers()); - const QString error = DragAndDropHelper::dropUrls(destItem, &dropEvent); + const QString error = DragAndDropHelper::dropUrls(destItem, destUrl, &dropEvent); if (!error.isEmpty()) { emit errorMessage(error); } @@ -866,16 +903,6 @@ void DolphinView::emitSelectionChangedSignal() emit selectionChanged(selectedItems()); } -void DolphinView::dropUrls(const KFileItem& destItem, - const KUrl& destPath, - QDropEvent* event) -{ - Q_UNUSED(destItem); - Q_UNUSED(destPath); - markPastedUrlsAsSelected(event->mimeData()); - //DragAndDropHelper::instance().dropUrls(destItem, destPath, event, this); -} - void DolphinView::updateSorting(DolphinView::Sorting sorting) { ViewProperties props(url()); @@ -1159,19 +1186,6 @@ void DolphinView::applyViewProperties() const Mode mode = props.viewMode(); if (m_mode != mode) { - // Prevent an animated transition of the position and size of the items when switching - // the view-mode by temporary clearing the model and updating it again after the view mode - // has been modified. - const bool restoreModel = (model->count() > 0); - if (restoreModel) { - const int currentItemIndex = m_container->controller()->selectionManager()->currentItem(); - if (currentItemIndex >= 0) { - m_currentItemUrl = model->fileItem(currentItemIndex).url(); - } - m_selectedUrls = selectedItems().urlList(); - model->clear(); - } - const Mode previousMode = m_mode; m_mode = mode; @@ -1192,10 +1206,6 @@ void DolphinView::applyViewProperties() if (m_container->zoomLevel() != oldZoomLevel) { emit zoomLevelChanged(m_container->zoomLevel(), oldZoomLevel); } - - if (restoreModel) { - loadDirectory(url()); - } } const bool hiddenFilesShown = props.hiddenFilesShown();