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
This commit is contained in:
Peter Penz 2007-07-29 15:33:52 +00:00
parent 4ad6cc3e3d
commit 253c3c87a8
2 changed files with 49 additions and 35 deletions

View file

@ -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);
applyViewProperties(url);
startDirLister(url);
emit urlChanged(url);
return;
}
m_controller->setUrl(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);

View file

@ -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.