X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/7904ae417af2b7b59ee54a9f875191e9e4802492..41f7f4e4e89b97b5c7f31452774c37ce953dd125:/src/views/viewproperties.cpp diff --git a/src/views/viewproperties.cpp b/src/views/viewproperties.cpp index d7c6abd65..48ed65471 100644 --- a/src/views/viewproperties.cpp +++ b/src/views/viewproperties.cpp @@ -26,6 +26,8 @@ #include +#include + namespace { const int AdditionalInfoViewPropertiesVersion = 1; const int NameRolePropertiesVersion = 2; @@ -49,6 +51,8 @@ ViewProperties::ViewProperties(const QUrl& url) : GeneralSettings* settings = GeneralSettings::self(); const bool useGlobalViewProps = settings->globalViewProps() || url.isEmpty(); bool useDetailsViewWithPath = false; + bool useRecentDocumentsView = false; + bool useDownloadsView = false; // We try and save it to the file .directory in the directory being viewed. // If the directory is not writable by the user or the directory is not local, @@ -61,10 +65,18 @@ ViewProperties::ViewProperties(const QUrl& url) : } else if (url.scheme() == QLatin1String("trash")) { m_filePath = destinationDir(QStringLiteral("trash")); useDetailsViewWithPath = true; + } else if (url.scheme() == QLatin1String("recentdocuments")) { + m_filePath = destinationDir(QStringLiteral("recentdocuments")); + useRecentDocumentsView = true; } else if (url.isLocalFile()) { m_filePath = url.toLocalFile(); bool useDestinationDir = !isPartOfHome(m_filePath); + if (!useDestinationDir) { + const KFileItem fileItem(url); + useDestinationDir = fileItem.isSlow(); + } + if (!useDestinationDir) { const QFileInfo dirInfo(m_filePath); const QFileInfo fileInfo(m_filePath + QDir::separator() + ViewPropertiesFileName); @@ -78,6 +90,10 @@ ViewProperties::ViewProperties(const QUrl& url) : #endif m_filePath = destinationDir(QStringLiteral("local")) + m_filePath; } + + if (m_filePath == QStandardPaths::writableLocation(QStandardPaths::DownloadLocation)) { + useDownloadsView = true; + } } else { m_filePath = destinationDir(QStringLiteral("remote")) + m_filePath; } @@ -94,6 +110,17 @@ ViewProperties::ViewProperties(const QUrl& url) : if (useDetailsViewWithPath) { setViewMode(DolphinView::DetailsView); setVisibleRoles({"path"}); + } else if (useRecentDocumentsView || useDownloadsView) { + setSortRole(QByteArrayLiteral("modificationtime")); + setSortOrder(Qt::DescendingOrder); + + if (useRecentDocumentsView) { + setViewMode(DolphinView::DetailsView); + setVisibleRoles({QByteArrayLiteral("path")}); + } else if (useDownloadsView) { + setSortFoldersFirst(false); + setGroupedSorting(true); + } } else { // The global view-properties act as default for directories without // any view-property configuration. Constructing a ViewProperties @@ -283,7 +310,7 @@ QList ViewProperties::visibleRoles() const // // For the details-view a special case must be respected: Per default the size // and date should be shown without creating a .directory file. Only if - // the user explictly has modified the properties of the details view (marked + // the user explicitly has modified the properties of the details view (marked // by "CustomizedDetails"), also a details-view with no additional information // is accepted.