X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/3d4e6938f57fcf010b4fda7255384098327eb67d..44d938cf4b421e6c8d39a069809ffbf807f1e02e:/src/dolphinview.cpp diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index 4b221a0e3..20d3db4ae 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); @@ -216,69 +214,16 @@ DolphinView::Mode DolphinView::mode() const return m_mode; } -void DolphinView::setShowPreview(bool show) -{ - if (m_showPreview == show) { - return; - } - - const KUrl viewPropsUrl = viewPropertiesUrl(); - ViewProperties props(viewPropsUrl); - props.setShowPreview(show); - - m_showPreview = show; - m_iconManager->setShowPreview(show); - emit showPreviewChanged(); - - loadDirectory(viewPropsUrl, true); -} - bool DolphinView::showPreview() const { return m_showPreview; } -void DolphinView::setShowHiddenFiles(bool show) -{ - if (m_dirLister->showingDotFiles() == show) { - return; - } - - const KUrl viewPropsUrl = viewPropertiesUrl(); - ViewProperties props(viewPropsUrl); - props.setShowHiddenFiles(show); - - m_dirLister->setShowingDotFiles(show); - emit showHiddenFilesChanged(); - - loadDirectory(viewPropsUrl, true); -} - bool DolphinView::showHiddenFiles() const { return m_dirLister->showingDotFiles(); } -void DolphinView::setCategorizedSorting(bool categorized) -{ - if (categorized == categorizedSorting()) { - return; - } - - // setCategorizedSorting(true) may only get invoked - // if the view supports categorized sorting - Q_ASSERT(!categorized || supportsCategorizedSorting()); - - ViewProperties props(viewPropertiesUrl()); - props.setCategorizedSorting(categorized); - props.save(); - - m_storedCategorizedSorting = categorized; - m_proxyModel->setCategorizedModel(categorized); - - emit categorizedSortingChanged(); -} - bool DolphinView::categorizedSorting() const { // If all view modes would support categorized sorting, returning @@ -400,13 +345,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 +400,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 +485,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() @@ -859,18 +813,12 @@ void DolphinView::emitContentsMoved() void DolphinView::showHoverInformation(const KFileItem& item) { - if (hasSelection() || !m_active) { - return; - } - emit requestItemInfo(item); } void DolphinView::clearHoverInformation() { - if (m_active) { - emit requestItemInfo(KFileItem()); - } + emit requestItemInfo(KFileItem()); } void DolphinView::createView() @@ -900,6 +848,9 @@ void DolphinView::createView() } Q_ASSERT(view != 0); + view->installEventFilter(this); + + m_controller->setItemView(view); m_fileItemDelegate = new KFileItemDelegate(view); view->setItemDelegate(m_fileItemDelegate); @@ -1013,14 +964,19 @@ void DolphinView::renameSelectedItems() } } } + } else if (DolphinSettings::instance().generalSettings()->renameInline()) { + Q_ASSERT(items.count() == 1); + + if (isColumnViewActive()) { + m_columnView->editItem(items.first()); + } else { + const QModelIndex dirIndex = m_dolphinModel->indexForItem(items.first()); + const QModelIndex proxyIndex = m_proxyModel->mapFromSource(dirIndex); + itemView()->edit(proxyIndex); + } } else { - // Only one item has been selected for renaming. Use the custom - // renaming mechanism from the views. Q_ASSERT(items.count() == 1); - // TODO: Think about using KFileItemDelegate as soon as it supports editing. - // Currently the RenameDialog is used, but I'm not sure whether inline renaming - // is a benefit for the user at all -> let's wait for some input first... RenameDialog dialog(this, items); if (dialog.exec() == QDialog::Rejected) { return; @@ -1093,34 +1049,69 @@ void DolphinView::paste() const QMimeData* mimeData = clipboard->mimeData(); const KUrl::List sourceUrls = KUrl::List::fromMimeData(mimeData); - - // 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(); - if (selectedUrls.count() == 1) { - const KFileItem fileItem(S_IFDIR, - KFileItem::Unknown, - selectedUrls.first(), - true); - if (fileItem.isDir()) { - // only one item is selected which is a directory, hence paste - // into this directory - destUrl = selectedUrls.first(); - } - } - if (KonqMimeData::decodeIsCutSelection(mimeData)) { - KonqOperations::copy(this, KonqOperations::MOVE, sourceUrls, destUrl); + KonqOperations::copy(this, KonqOperations::MOVE, sourceUrls, url()); emit doingOperation(KonqFileUndoManager::MOVE); clipboard->clear(); } else { - KonqOperations::copy(this, KonqOperations::COPY, sourceUrls, destUrl); + KonqOperations::copy(this, KonqOperations::COPY, sourceUrls, url()); emit doingOperation(KonqFileUndoManager::COPY); } } +void DolphinView::setShowPreview(bool show) +{ + if (m_showPreview == show) { + return; + } + + const KUrl viewPropsUrl = viewPropertiesUrl(); + ViewProperties props(viewPropsUrl); + props.setShowPreview(show); + + m_showPreview = show; + m_iconManager->setShowPreview(show); + emit showPreviewChanged(); + + loadDirectory(viewPropsUrl); +} + +void DolphinView::setShowHiddenFiles(bool show) +{ + if (m_dirLister->showingDotFiles() == show) { + return; + } + + const KUrl viewPropsUrl = viewPropertiesUrl(); + ViewProperties props(viewPropsUrl); + props.setShowHiddenFiles(show); + + m_dirLister->setShowingDotFiles(show); + emit showHiddenFilesChanged(); + + loadDirectory(viewPropsUrl); +} + +void DolphinView::setCategorizedSorting(bool categorized) +{ + if (categorized == categorizedSorting()) { + return; + } + + // setCategorizedSorting(true) may only get invoked + // if the view supports categorized sorting + Q_ASSERT(!categorized || supportsCategorizedSorting()); + + ViewProperties props(viewPropertiesUrl()); + props.setCategorizedSorting(categorized); + props.save(); + + m_storedCategorizedSorting = categorized; + m_proxyModel->setCategorizedModel(categorized); + + emit categorizedSortingChanged(); +} + QPair DolphinView::pasteInfo() const { QPair ret; @@ -1130,25 +1121,19 @@ 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"); } - if (ret.first) { - const KFileItemList items = selectedItems(); - const uint count = items.count(); - if (count > 1) { - // pasting should not be allowed when more than one file - // is selected - ret.first = false; - } else if (count == 1) { - // Only one file is selected. Pasting is only allowed if this - // file is a directory. - ret.first = items.first().isDir(); - } - } return ret; }