From 6150ac5d5d8e2d10a30381407cec550ff0aa392c Mon Sep 17 00:00:00 2001 From: Peter Penz Date: Wed, 9 May 2012 15:49:14 +0200 Subject: [PATCH] Assure backward compatibility for the sort-role Dolphin 2.1 uses "text" instead of "name" as default-role. Provide backward compatibility with older .directory files and assure that they get updated. --- src/views/viewproperties.cpp | 25 ++++++++++++++++--------- src/views/viewproperties.h | 4 ++-- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/views/viewproperties.cpp b/src/views/viewproperties.cpp index 8dadf4e49..3a9a2a370 100644 --- a/src/views/viewproperties.cpp +++ b/src/views/viewproperties.cpp @@ -177,6 +177,10 @@ void ViewProperties::setSortRole(const QByteArray& role) QByteArray ViewProperties::sortRole() const { + if (m_node->version() <= NameRolePropertiesVersion) { + const_cast(this)->convertNameRoleToTextRole(); + } + return m_node->sortRole().toLatin1(); } @@ -270,9 +274,11 @@ QList ViewProperties::visibleRoles() const if (visibleRoles.isEmpty() && version <= AdditionalInfoViewPropertiesVersion) { // Convert the obsolete additionalInfo-property from older versions into the // visibleRoles-property - visibleRoles = const_cast(this)->convertAdditionalInfo(); + const_cast(this)->convertAdditionalInfo(); + visibleRoles = m_node->visibleRoles(); } else if (version <= NameRolePropertiesVersion) { - visibleRoles = const_cast(this)->convertNameRole(); + const_cast(this)->convertNameRoleToTextRole(); + visibleRoles = m_node->visibleRoles(); } foreach (const QString& visibleRole, visibleRoles) { @@ -375,7 +381,7 @@ QString ViewProperties::viewModePrefix() const return prefix; } -QStringList ViewProperties::convertAdditionalInfo() +void ViewProperties::convertAdditionalInfo() { QStringList visibleRoles; @@ -404,11 +410,9 @@ QStringList ViewProperties::convertAdditionalInfo() m_node->setAdditionalInfo(QStringList()); m_node->setVisibleRoles(visibleRoles); update(); - - return visibleRoles; } -QStringList ViewProperties::convertNameRole() +void ViewProperties::convertNameRoleToTextRole() { QStringList visibleRoles = m_node->visibleRoles(); for (int i = 0; i < visibleRoles.count(); ++i) { @@ -418,13 +422,16 @@ QStringList ViewProperties::convertNameRole() } } + QString sortRole = m_node->sortRole(); + if (sortRole == QLatin1String("name")) { + sortRole = QLatin1String("text"); + } + m_node->setVisibleRoles(visibleRoles); + m_node->setSortRole(sortRole); update(); - - return visibleRoles; } - bool ViewProperties::isPartOfHome(const QString& filePath) { // For performance reasons cache the path in a static QString diff --git a/src/views/viewproperties.h b/src/views/viewproperties.h index cfa98e9e4..97fb7cdba 100644 --- a/src/views/viewproperties.h +++ b/src/views/viewproperties.h @@ -145,14 +145,14 @@ private: * Dolphin < 2.0: Converts the old additionalInfo-property into * the visibleRoles-property and clears the additionalInfo-property. */ - QStringList convertAdditionalInfo(); + void convertAdditionalInfo(); /** * Provides backward compatibility with .directory files created with * Dolphin < 2.1: Converts the old name-role "name" to the generic * role "text". */ - QStringList convertNameRole(); + void convertNameRoleToTextRole(); /** * Returns true, if \a filePath is part of the home-path (see QDir::homePath()). -- 2.47.3