X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/ff239e9297b6a71d330e1f991bb6d75c2a2353ae..7f96282e41012a367b956f8a36758c32c51767c8:/src/views/viewproperties.cpp diff --git a/src/views/viewproperties.cpp b/src/views/viewproperties.cpp index 8588bb238..8dadf4e49 100644 --- a/src/views/viewproperties.cpp +++ b/src/views/viewproperties.cpp @@ -28,13 +28,15 @@ #include #include +#include #include #include #include namespace { - const int CurrentViewPropertiesVersion = 2; const int AdditionalInfoViewPropertiesVersion = 1; + const int NameRolePropertiesVersion = 2; + const int CurrentViewPropertiesVersion = 3; // String representation to mark the additional properties of // the details view as customized by the user. See @@ -57,7 +59,7 @@ ViewProperties::ViewProperties(const KUrl& url) : if (useGlobalViewProps) { m_filePath = destinationDir("global"); } else if (url.protocol().contains("search")) { - m_filePath = destinationDir("search"); + m_filePath = destinationDir("search/") + directoryHashForUrl(url); useDetailsViewWithPath = true; } else if (url.protocol() == QLatin1String("trash")) { m_filePath = destinationDir("trash"); @@ -256,7 +258,7 @@ QList ViewProperties::visibleRoles() const // is accepted. QList roles; - roles.append("name"); + roles.append("text"); // Iterate through all stored keys and append all roles that match to // the curren view mode. @@ -264,16 +266,19 @@ QList ViewProperties::visibleRoles() const const int prefixLength = prefix.length(); QStringList visibleRoles = m_node->visibleRoles(); - if (visibleRoles.isEmpty() && m_node->version() <= AdditionalInfoViewPropertiesVersion) { + const int version = m_node->version(); + if (visibleRoles.isEmpty() && version <= AdditionalInfoViewPropertiesVersion) { // Convert the obsolete additionalInfo-property from older versions into the // visibleRoles-property visibleRoles = const_cast(this)->convertAdditionalInfo(); + } else if (version <= NameRolePropertiesVersion) { + visibleRoles = const_cast(this)->convertNameRole(); } foreach (const QString& visibleRole, visibleRoles) { if (visibleRole.startsWith(prefix)) { const QByteArray role = visibleRole.right(visibleRole.length() - prefixLength).toLatin1(); - if (role != "name") { + if (role != "text") { roles.append(role); } } @@ -281,7 +286,7 @@ QList ViewProperties::visibleRoles() const // For the details view the size and date should be shown per default // until the additional information has been explicitly changed by the user - const bool useDefaultValues = roles.count() == 1 // "name" + const bool useDefaultValues = roles.count() == 1 // "text" && (m_node->viewMode() == DolphinView::DetailsView) && !visibleRoles.contains(CustomizedDetailsString); if (useDefaultValues) { @@ -292,6 +297,19 @@ QList ViewProperties::visibleRoles() const return roles; } +void ViewProperties::setHeaderColumnWidths(const QList& widths) +{ + if (m_node->headerColumnWidths() != widths) { + m_node->setHeaderColumnWidths(widths); + update(); + } +} + +QList ViewProperties::headerColumnWidths() const +{ + return m_node->headerColumnWidths(); +} + void ViewProperties::setDirProperties(const ViewProperties& props) { setViewMode(props.viewMode()); @@ -302,6 +320,7 @@ void ViewProperties::setDirProperties(const ViewProperties& props) setSortOrder(props.sortOrder()); setSortFoldersFirst(props.sortFoldersFirst()); setVisibleRoles(props.visibleRoles()); + setHeaderColumnWidths(props.headerColumnWidths()); } void ViewProperties::setAutoSaveEnabled(bool autoSave) @@ -389,6 +408,23 @@ QStringList ViewProperties::convertAdditionalInfo() return visibleRoles; } +QStringList ViewProperties::convertNameRole() +{ + QStringList visibleRoles = m_node->visibleRoles(); + for (int i = 0; i < visibleRoles.count(); ++i) { + if (visibleRoles[i].endsWith("_name")) { + const int leftLength = visibleRoles[i].length() - 5; + visibleRoles[i] = visibleRoles[i].left(leftLength) + "_text"; + } + } + + m_node->setVisibleRoles(visibleRoles); + update(); + + return visibleRoles; +} + + bool ViewProperties::isPartOfHome(const QString& filePath) { // For performance reasons cache the path in a static QString @@ -401,3 +437,12 @@ bool ViewProperties::isPartOfHome(const QString& filePath) return filePath.startsWith(homePath); } + +QString ViewProperties::directoryHashForUrl(const KUrl& url) +{ + const QByteArray hashValue = QCryptographicHash::hash(url.prettyUrl().toLatin1(), + QCryptographicHash::Sha1); + QString hashString = hashValue.toBase64(); + hashString.replace('/', '-'); + return hashString; +}