X-Git-Url: https://cloud.milkyroute.net/gitweb/dolphin.git/blobdiff_plain/163fa7ce30c0bd1b18d0c750bf9358560c2db7af..ec00f379dc42b00a64ab1af25bb4bb1a06bd7449:/src/viewproperties.cpp diff --git a/src/viewproperties.cpp b/src/viewproperties.cpp index 60e91cabf..835be2aad 100644 --- a/src/viewproperties.cpp +++ b/src/viewproperties.cpp @@ -1,6 +1,6 @@ /*************************************************************************** - * Copyright (C) 2006 by Peter Penz * - * peter.penz@gmx.at * + * Copyright (C) 2006 by Peter Penz () * + * Copyright (C) 2006 by Aaron J. Seigo () * * * * 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 * @@ -15,33 +15,32 @@ * 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., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * ***************************************************************************/ -#include +#include "viewproperties.h" -#include -#include -#include +#include "dolphinsettings.h" +#include "dolphin_directoryviewpropertysettings.h" +#include "dolphin_generalsettings.h" +#include #include #include #include -#include -#include "viewproperties.h" - -#include "dolphinsettings.h" +#include +#include +#include #define FILE_NAME "/.directory" ViewProperties::ViewProperties(const KUrl& url) : - m_changedProps(false), - m_autoSave(true), - m_node(0) + m_changedProps(false), + m_autoSave(true), + m_node(0) { KUrl cleanUrl(url); - cleanUrl.cleanPath(); m_filepath = cleanUrl.path(); @@ -53,25 +52,37 @@ ViewProperties::ViewProperties(const KUrl& url) : // We try and save it to a file 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. - QString rootDir("/"); // TODO: should this be set to the root of the bookmark, if any? - if (cleanUrl.isLocalFile()) { - QFileInfo info(m_filepath); - + GeneralSettings* settings = DolphinSettings::instance().generalSettings(); + const bool useGlobalViewProps = settings->globalViewProps(); + if (useGlobalViewProps) { + m_filepath = destinationDir("global"); + } else if (cleanUrl.isLocalFile()) { + const QFileInfo info(m_filepath); if (!info.isWritable()) { - QString basePath = KGlobal::instance()->instanceName(); - basePath.append("/view_properties/local"); - rootDir = KStandardDirs::locateLocal("data", basePath); - m_filepath = rootDir + m_filepath; + m_filepath = destinationDir("local") + m_filepath; } + } else { + m_filepath = destinationDir("remote") + m_filepath; } - else { - QString basePath = KGlobal::instance()->instanceName(); - basePath.append("/view_properties/remote/").append(cleanUrl.host()); - rootDir = KStandardDirs::locateLocal("data", basePath); - m_filepath = rootDir + m_filepath; - } - m_node = new ViewPropertySettings(KSharedConfig::openConfig(m_filepath + FILE_NAME)); + const QString file(m_filepath + FILE_NAME); + m_node = new ViewPropertySettings(KSharedConfig::openConfig(file)); + + const bool useDefaultProps = !useGlobalViewProps && + (!QFileInfo(file).exists() || + (m_node->timestamp() < settings->viewPropsTimestamp())); + if (useDefaultProps) { + // If the .directory file does not exist or the timestamp is too old, + // use the values from the global .directory file instead, which acts + // as default view for new folders in this case. + settings->setGlobalViewProps(true); + + ViewProperties defaultProps(url); + setDirProperties(defaultProps); + + settings->setGlobalViewProps(false); + m_changedProps = false; + } } ViewProperties::~ViewProperties() @@ -119,6 +130,20 @@ void ViewProperties::setShowHiddenFiles(bool show) } } +void ViewProperties::setCategorizedSorting(bool categorized) +{ + if (m_node->categorizedSorting() != categorized) { + m_node->setCategorizedSorting(categorized); + updateTimeStamp(); + } +} + +bool ViewProperties::categorizedSorting() const +{ + return m_node->categorizedSorting(); +} + + bool ViewProperties::showHiddenFiles() const { return m_node->showHiddenFiles(); @@ -150,6 +175,31 @@ Qt::SortOrder ViewProperties::sortOrder() const return static_cast(m_node->sortOrder()); } +void ViewProperties::setAdditionalInfo(KFileItemDelegate::AdditionalInformation info) +{ + if (m_node->additionalInfo() != info) { + m_node->setAdditionalInfo(info); + updateTimeStamp(); + } +} + +KFileItemDelegate::AdditionalInformation ViewProperties::additionalInfo() const +{ + return static_cast(m_node->additionalInfo()); +} + + +void ViewProperties::setDirProperties(const ViewProperties& props) +{ + setViewMode(props.viewMode()); + setShowPreview(props.showPreview()); + setShowHiddenFiles(props.showHiddenFiles()); + setCategorizedSorting(props.categorizedSorting()); + setSorting(props.sorting()); + setSortOrder(props.sortOrder()); + setAdditionalInfo(props.additionalInfo()); +} + void ViewProperties::setAutoSaveEnabled(bool autoSave) { m_autoSave = autoSave; @@ -173,12 +223,16 @@ void ViewProperties::save() m_changedProps = false; } -ViewProperties::ViewProperties(const ViewProperties& props) +KUrl ViewProperties::mirroredDirectory() { - assert(false); + QString basePath = KGlobal::mainComponent().componentName(); + basePath.append("/view_properties/"); + return KUrl(KStandardDirs::locateLocal("data", basePath)); } -ViewProperties& ViewProperties::operator = (const ViewProperties& props) +QString ViewProperties::destinationDir(const QString& subDir) const { - assert(false); + QString basePath = KGlobal::mainComponent().componentName(); + basePath.append("/view_properties/").append(subDir); + return KStandardDirs::locateLocal("data", basePath); }