-/***************************************************************************
- * Copyright (C) 2006-2010 by Peter Penz <peter.penz19@gmail.com> *
- * Copyright (C) 2006 by Aaron J. Seigo <aseigo@kde.org> *
- * *
- * This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
- * *
- * This program is distributed in the hope that it will be useful, *
- * but WITHOUT ANY WARRANTY; without even the implied warranty of *
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
- * GNU General Public License for more details. *
- * *
- * You should have received a copy of the GNU General Public License *
- * along with this program; if not, write to the *
- * Free Software Foundation, Inc., *
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
- ***************************************************************************/
+/*
+ * SPDX-FileCopyrightText: 2006-2010 Peter Penz <peter.penz19@gmail.com>
+ * SPDX-FileCopyrightText: 2006 Aaron J. Seigo <aseigo@kde.org>
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
#include "viewproperties.h"
#include <QCryptographicHash>
+#include <KFileItem>
+
namespace {
const int AdditionalInfoViewPropertiesVersion = 1;
const int NameRolePropertiesVersion = 2;
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,
// we store the properties information in a local file.
if (useGlobalViewProps) {
m_filePath = destinationDir(QStringLiteral("global"));
- } else if (url.scheme().contains(QStringLiteral("search"))) {
+ } else if (url.scheme().contains(QLatin1String("search"))) {
m_filePath = destinationDir(QStringLiteral("search/")) + directoryHashForUrl(url);
useDetailsViewWithPath = true;
} 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);
#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;
}
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