From: Peter Penz Date: Sun, 29 Jul 2007 15:33:52 +0000 (+0000) Subject: Assure that the view properties of a column view are always stored in the folder... X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/commitdiff_plain/253c3c87a8a1b6418125f6fd90864c8daa76a0c1 Assure that the view properties of a column view are always stored in the folder represented by the first column. It is assured now, that all columns use the same view properties. Although one reason is because of technical 'restrictions' (KDirLister properties like 'show dot files' are applied to all sub directories too), I personally think it also makes sense from a usability point of view. svn path=/trunk/KDE/kdebase/apps/; revision=693944 --- diff --git a/src/dolphinview.cpp b/src/dolphinview.cpp index 0799ae8b9..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 @@ -424,21 +428,15 @@ void DolphinView::refresh() void DolphinView::setUrl(const KUrl& url) { if (m_controller->url() == url) { - // Although the view URL is equal to the controller URL, - // the view properties must be applied to the view. - // This assures a consistent state of the currently activated - // column and their view properties. - if (isColumnViewActive()) { - applyViewProperties(url); - } - } else { - m_controller->setUrl(url); + return; + } - applyViewProperties(url); + m_controller->setUrl(url); - startDirLister(url); - emit urlChanged(url); - } + applyViewProperties(url); + + startDirLister(url); + emit urlChanged(url); } void DolphinView::mouseReleaseEvent(QMouseEvent* event) @@ -597,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(); @@ -744,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); @@ -754,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); diff --git a/src/dolphinview.h b/src/dolphinview.h index b9fe49f00..b26a27069 100644 --- a/src/dolphinview.h +++ b/src/dolphinview.h @@ -475,6 +475,15 @@ private slots: private: void startDirLister(const KUrl& url, bool reload = false); + /** + * Returns the URL where the view properties should be stored. Usually + * DolphinView::url() is returned, but in the case of a Column View the + * view properties are always stored in the directory represented by the + * first column. It is recommendend whenever using the ViewProperties class + * to use DolphinView::viewPropertiesUrl() as URL. + */ + KUrl viewPropertiesUrl() const; + /** * Applies the view properties which are defined by the current URL * m_url to the DolphinView properties.