/***************************************************************************
- * Copyright (C) 2006-2010 by Peter Penz <peter.penz@gmx.at> *
+ * 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 *
#include "dolphin_directoryviewpropertysettings.h"
#include "dolphin_generalsettings.h"
-#include <kcomponentdata.h>
-#include <klocale.h>
-#include <kstandarddirs.h>
-#include <kurl.h>
+#include <KComponentData>
+#include <KLocale>
+#include <KStandardDirs>
+#include <KUrl>
#include <QDate>
#include <QFile>
{
GeneralSettings* settings = DolphinSettings::instance().generalSettings();
const bool useGlobalViewProps = settings->globalViewProps();
+ bool useDetailsViewWithPath = 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.
- const bool isSearchUrl = url.protocol().contains("search");
- if (isSearchUrl) {
- m_filePath = destinationDir("search");
- } else if (useGlobalViewProps) {
+ if (useGlobalViewProps) {
m_filePath = destinationDir("global");
+ } else if (url.protocol().contains("search")) {
+ m_filePath = destinationDir("search");
+ useDetailsViewWithPath = true;
+ } else if (url.protocol() == QLatin1String("trash")) {
+ m_filePath = destinationDir("trash");
+ useDetailsViewWithPath = true;
} else if (url.isLocalFile()) {
m_filePath = url.toLocalFile();
const QFileInfo info(m_filePath);
- if (!info.isWritable()) {
+ if (!info.isWritable() || !isPartOfHome(m_filePath)) {
m_filePath = destinationDir("local") + m_filePath;
}
} else {
// If the .directory file does not exist or the timestamp is too old,
// use default values instead.
- const bool useDefaultProps = (!useGlobalViewProps || isSearchUrl) &&
+ const bool useDefaultProps = (!useGlobalViewProps || useDetailsViewWithPath) &&
(!QFileInfo(file).exists() ||
(m_node->timestamp() < settings->viewPropsTimestamp()));
if (useDefaultProps) {
- if (isSearchUrl) {
+ if (useDetailsViewWithPath) {
setViewMode(DolphinView::DetailsView);
setAdditionalInfo(KFileItemDelegate::InformationList() << KFileItemDelegate::LocalPathOrUrl);
} else {
return prefix;
}
+
+bool ViewProperties::isPartOfHome(const QString& filePath)
+{
+ // For performance reasons cache the path in a static QString
+ // (see QDir::homePath() for more details)
+ static QString homePath;
+ if (homePath.isEmpty()) {
+ homePath = QDir::homePath();
+ Q_ASSERT(!homePath.isEmpty());
+ }
+
+ return filePath.startsWith(homePath);
+}