┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/dolphinview.cpp73
-rw-r--r--src/dolphinview.h9
2 files changed, 48 insertions, 34 deletions
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
@@ -476,6 +476,15 @@ 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.
*/