X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/3d4e6938f57fcf010b4fda7255384098327eb67d..bd925ea49a7e4e7c6e652f4529dcd0c4e25fd19a:/src/dolphinview.cpp diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index 4b221a0e3..f5a972d37 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -86,9 +87,6 @@ DolphinView::DolphinView(QWidget* parent, m_topLayout->setSpacing(0); m_topLayout->setMargin(0); - connect(m_dirLister, SIGNAL(completed()), - this, SLOT(updateCutItems())); - m_controller = new DolphinController(this); m_controller->setUrl(url); @@ -230,7 +228,7 @@ void DolphinView::setShowPreview(bool show) m_iconManager->setShowPreview(show); emit showPreviewChanged(); - loadDirectory(viewPropsUrl, true); + loadDirectory(viewPropsUrl); } bool DolphinView::showPreview() const @@ -251,7 +249,7 @@ void DolphinView::setShowHiddenFiles(bool show) m_dirLister->setShowingDotFiles(show); emit showHiddenFilesChanged(); - loadDirectory(viewPropsUrl, true); + loadDirectory(viewPropsUrl); } bool DolphinView::showHiddenFiles() const @@ -400,13 +398,13 @@ QPoint DolphinView::contentsPosition() const void DolphinView::zoomIn() { m_controller->triggerZoomIn(); - reload(); + m_iconManager->updatePreviews(); } void DolphinView::zoomOut() { m_controller->triggerZoomOut(); - reload(); + m_iconManager->updatePreviews(); } bool DolphinView::isZoomInPossible() const @@ -455,7 +453,7 @@ void DolphinView::setAdditionalInfo(KFileItemDelegate::InformationList info) if (itemView() != m_detailsView) { // the details view requires no reloading of the directory, as it maps // the file item delegate info to its columns internally - loadDirectory(viewPropsUrl, true); + loadDirectory(viewPropsUrl); } } @@ -540,15 +538,24 @@ void DolphinView::mouseReleaseEvent(QMouseEvent* event) void DolphinView::wheelEvent(QWheelEvent* event) { - if ((event->modifiers() & Qt::ControlModifier) == Qt::ControlModifier) { - int d = event->delta(); - if (d > 0 && isZoomInPossible()) { + if (event->modifiers() & Qt::ControlModifier) { + const int delta = event->delta(); + if ((delta > 0) && isZoomInPossible()) { zoomIn(); - } else if (d < 0 && isZoomOutPossible()) { + } else if ((delta < 0) && isZoomOutPossible()) { zoomOut(); } - event->accept(); + event->accept(); + } +} + +bool DolphinView::eventFilter(QObject* watched, QEvent* event) +{ + if ((watched == itemView()) && (event->type() == QEvent::FocusIn)) { + m_controller->requestActivation(); } + + return QWidget::eventFilter(watched, event); } void DolphinView::activate() @@ -900,6 +907,9 @@ void DolphinView::createView() } Q_ASSERT(view != 0); + view->installEventFilter(this); + + m_controller->setItemView(view); m_fileItemDelegate = new KFileItemDelegate(view); view->setItemDelegate(m_fileItemDelegate); @@ -1094,8 +1104,8 @@ void DolphinView::paste() const KUrl::List sourceUrls = KUrl::List::fromMimeData(mimeData); - // per default the pasting is done into the current Url of the view - KUrl destUrl(url()); + // per default the pasting is done into the current URL of the view + KUrl destUrl = url(); // check whether the pasting should be done into a selected directory const KUrl::List selectedUrls = this->selectedUrls(); @@ -1108,6 +1118,17 @@ void DolphinView::paste() // only one item is selected which is a directory, hence paste // into this directory destUrl = selectedUrls.first(); + if (sourceUrls.contains(destUrl)) { + const QString text = i18nc("@info", "The folder %1 is pasted into itself. Is this intended?", fileItem.name()); + int result = KMessageBox::questionYesNo(window(), + text, + i18nc("@title:window", "Paste into Folder"), + KGuiItem(i18nc("@label", "Paste"), "dialog-ok"), + KGuiItem(i18nc("@label", "Cancel"), "dialog-cancel")); + if (result == KMessageBox::No) { + return; + } + } } } @@ -1130,7 +1151,14 @@ QPair DolphinView::pasteInfo() const KUrl::List urls = KUrl::List::fromMimeData(mimeData); if (!urls.isEmpty()) { ret.first = true; - ret.second = i18ncp("@action:inmenu", "Paste One File", "Paste %1 Files", urls.count()); + if (urls.count() == 1) { + const KFileItem item(KFileItem::Unknown, KFileItem::Unknown, urls.first(), true); + ret.second = item.isDir() ? i18nc("@action:inmenu", "Paste One Folder") : + i18nc("@action:inmenu", "Paste One File"); + + } else { + ret.second = i18ncp("@action:inmenu", "Paste One Item", "Paste %1 Items", urls.count()); + } } else { ret.first = false; ret.second = i18nc("@action:inmenu", "Paste");