]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Assure backward compatibility for the sort-role
authorPeter Penz <peter.penz19@gmail.com>
Wed, 9 May 2012 13:49:14 +0000 (15:49 +0200)
committerPeter Penz <peter.penz19@gmail.com>
Wed, 9 May 2012 13:50:54 +0000 (15:50 +0200)
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
src/views/viewproperties.h

index 8dadf4e49300404767e8dabdd5e458ecbb98f3e6..3a9a2a370e1577b974a9589b40c2a97d918fe1b0 100644 (file)
@@ -177,6 +177,10 @@ void ViewProperties::setSortRole(const QByteArray& role)
 
 QByteArray ViewProperties::sortRole() const
 {
+    if (m_node->version() <= NameRolePropertiesVersion) {
+        const_cast<ViewProperties*>(this)->convertNameRoleToTextRole();
+    }
+
     return m_node->sortRole().toLatin1();
 }
 
@@ -270,9 +274,11 @@ QList<QByteArray> ViewProperties::visibleRoles() const
     if (visibleRoles.isEmpty() && version <= AdditionalInfoViewPropertiesVersion) {
         // Convert the obsolete additionalInfo-property from older versions into the
         // visibleRoles-property
-        visibleRoles = const_cast<ViewProperties*>(this)->convertAdditionalInfo();
+        const_cast<ViewProperties*>(this)->convertAdditionalInfo();
+        visibleRoles = m_node->visibleRoles();
     } else if (version <= NameRolePropertiesVersion) {
-        visibleRoles = const_cast<ViewProperties*>(this)->convertNameRole();
+        const_cast<ViewProperties*>(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
index cfa98e9e44b86afdcac2edd5d5bef74a10723cd1..97fb7cdba7232e3cbada6497cff0eb90fb5e8d79 100644 (file)
@@ -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()).