X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/34ff90696f8a9d8a5d2c02be1b11b4d092b888c1..8a08dd71cae63ce4e2df8dbf5d93b8ba0dd27340:/src/dolphinview.cpp diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index 5a1de5217..7fc727475 100644 --- a/src/dolphinview.cpp +++ b/src/dolphinview.cpp @@ -176,11 +176,12 @@ void DolphinView::setMode(Mode mode) m_controller->setUrl(m_dirLister->url()); } - ViewProperties props(url()); + const KUrl viewPropsUrl = viewPropertiesUrl(); + ViewProperties props(viewPropsUrl); props.setViewMode(m_mode); createView(); - startDirLister(url()); + startDirLister(viewPropsUrl); emit modeChanged(); } @@ -192,13 +193,14 @@ DolphinView::Mode DolphinView::mode() const void DolphinView::setShowPreview(bool show) { - ViewProperties props(url()); + const KUrl viewPropsUrl = viewPropertiesUrl(); + ViewProperties props(viewPropsUrl); props.setShowPreview(show); m_controller->setShowPreview(show); emit showPreviewChanged(); - startDirLister(url(), true); + startDirLister(viewPropsUrl, true); } bool DolphinView::showPreview() const @@ -212,13 +214,14 @@ void DolphinView::setShowHiddenFiles(bool show) return; } - ViewProperties props(url()); + const KUrl viewPropsUrl = viewPropertiesUrl(); + ViewProperties props(viewPropsUrl); props.setShowHiddenFiles(show); m_dirLister->setShowingDotFiles(show); emit showHiddenFilesChanged(); - startDirLister(url(), true); + startDirLister(viewPropsUrl, true); } bool DolphinView::showHiddenFiles() const @@ -242,7 +245,7 @@ void DolphinView::setCategorizedSorting(bool categorized) delete categorizer; } - ViewProperties props(url()); + ViewProperties props(viewPropertiesUrl()); props.setCategorizedSorting(categorized); props.save(); @@ -393,14 +396,15 @@ Qt::SortOrder DolphinView::sortOrder() const void DolphinView::setAdditionalInfo(KFileItemDelegate::AdditionalInformation info) { - ViewProperties props(url()); + const KUrl viewPropsUrl = viewPropertiesUrl(); + ViewProperties props(viewPropsUrl); props.setAdditionalInfo(info); m_controller->setShowAdditionalInfo(info != KFileItemDelegate::NoInformation); m_fileItemDelegate->setAdditionalInformation(info); emit additionalInfoChanged(info); - startDirLister(url(), true); + startDirLister(viewPropsUrl, true); } KFileItemDelegate::AdditionalInformation DolphinView::additionalInfo() const @@ -465,18 +469,11 @@ void DolphinView::triggerItem(const QModelIndex& index) return; } - // Prefer the local path over the URL. This assures that the - // volume space information is correct. Assuming that the URL is media:/sda1, - // and the local path is /windows/C: For the URL the space info is related - // to the root partition (and hence wrong) and for the local path the space - // info is related to the windows partition (-> correct). - const QString localPath(item->localPath()); - KUrl url; - if (localPath.isEmpty()) { - url = item->url(); - } else { - url = localPath; - } + // The stuff below should be moved to ViewContainer and be just a signal? + + // Prefer the local path over the URL. + bool isLocal; + KUrl url = item->mostLocalUrl(isLocal); if (item->isDir()) { setUrl(url); @@ -548,9 +545,9 @@ void DolphinView::startDirLister(const KUrl& url, bool reload) if (!url.isValid()) { const QString location(url.pathOrUrl()); if (location.isEmpty()) { - emit errorMessage(i18n("The location is empty.")); + emit errorMessage(i18nc("@info:status", "The location is empty.")); } else { - emit errorMessage(i18n("The location '%1' is invalid.", location)); + emit errorMessage(i18nc("@info:status", "The location '%1' is invalid.", location)); } return; } @@ -598,21 +595,28 @@ void DolphinView::startDirLister(const KUrl& url, bool reload) } } +KUrl DolphinView::viewPropertiesUrl() const +{ + if (isColumnViewActive()) { + return m_dirLister->url(); + } + + return url(); +} + void DolphinView::applyViewProperties(const KUrl& url) { + if (isColumnViewActive() && m_dirLister->url().isParentOf(url)) { + // The column view is active, hence don't apply the view properties + // of sub directories (represented by columns) to the view. The + // view always represents the properties of the first column. + return; + } + const ViewProperties props(url); const Mode mode = props.viewMode(); - bool changeMode = (m_mode != mode); - if (changeMode && isColumnViewActive()) { - // The column view is active. Only change the - // mode if the current URL is no child of the column view. - if (m_dirLister->url().isParentOf(url)) { - changeMode = false; - } - } - - if (changeMode) { + if (m_mode != mode) { m_mode = mode; createView(); emit modeChanged(); @@ -745,7 +749,7 @@ void DolphinView::dropUrls(const KUrl::List& urls, void DolphinView::updateSorting(DolphinView::Sorting sorting) { - ViewProperties props(url()); + ViewProperties props(viewPropertiesUrl()); props.setSorting(sorting); m_proxyModel->setSorting(sorting); @@ -755,7 +759,7 @@ void DolphinView::updateSorting(DolphinView::Sorting sorting) void DolphinView::updateSortOrder(Qt::SortOrder order) { - ViewProperties props(url()); + ViewProperties props(viewPropertiesUrl()); props.setSortOrder(order); m_proxyModel->setSortOrder(order); @@ -803,13 +807,13 @@ void DolphinView::showHoverInformation(const QModelIndex& index) const KFileItem* item = fileItem(index); if (item != 0) { - emit requestItemInfo(item->url()); + emit requestItemInfo(*item); } } void DolphinView::clearHoverInformation() { - emit requestItemInfo(KUrl()); + emit requestItemInfo(KFileItem()); }