* 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 <assert.h>
-#include <qdatetime.h>
-#include <qdir.h>
-#include <qfile.h>
+#include <QDateTime>
+#include <QFile>
#include <klocale.h>
#include <kstandarddirs.h>
#include <kinstance.h>
#include "viewproperties.h"
-
#include "dolphinsettings.h"
+#include "generalsettings.h"
#define FILE_NAME "/.directory"
-ViewProperties::ViewProperties(KUrl url) :
+ViewProperties::ViewProperties(const KUrl& url) :
m_changedProps(false),
m_autoSave(true),
- m_subDirValidityHidden(false),
m_node(0)
{
- url.cleanPath();
- m_filepath = url.path();
+ KUrl cleanUrl(url);
+ cleanUrl.cleanPath();
+ m_filepath = cleanUrl.path();
if ((m_filepath.length() < 1) || (m_filepath.at(0) != QChar('/'))) {
m_node = new ViewPropertySettings();
return;
}
- // 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 (url.isLocalFile()) {
- QFileInfo info(m_filepath);
-
+ // 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.
+ const bool useGlobalViewProps = DolphinSettings::instance().generalSettings()->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 {
- QString basePath = KGlobal::instance()->instanceName();
- basePath.append("/view_properties/remote/").append(url.host());
- rootDir = KStandardDirs::locateLocal("data", basePath);
- m_filepath = rootDir + m_filepath;
+ m_filepath = destinationDir("remote") + m_filepath;
}
m_node = new ViewPropertySettings(KSharedConfig::openConfig(m_filepath + FILE_NAME));
-
- QDir dir(m_filepath);
- const bool isValidForSubDirs = m_node->validForSubDirs();
- while ((dir.path() != rootDir) && dir.cdUp()) {
- QString parentPath(dir.path() + FILE_NAME);
-
- if (!QFile::exists(parentPath))
- {
- continue;
- }
-
- ViewPropertySettings parentNode(KSharedConfig::openConfig(dir.path() + FILE_NAME));
- const bool inheritProps = parentNode.validForSubDirs() &&
- (parentNode.timestamp() > m_node->timestamp());
-
- if (inheritProps) {
- delete m_node;
- m_node = new ViewPropertySettings(KSharedConfig::openConfig(dir.path() + FILE_NAME));
- break;
- }
- }
-
- if (isValidForSubDirs) {
- m_subDirValidityHidden = true;
- }
}
ViewProperties::~ViewProperties()
}
delete m_node;
+ m_node = 0;
}
void ViewProperties::setViewMode(DolphinView::Mode mode)
return static_cast<DolphinView::Mode>(m_node->viewMode());
}
-void ViewProperties::setShowHiddenFilesEnabled(bool show)
+void ViewProperties::setShowPreview(bool show)
+{
+ if (m_node->showPreview() != show) {
+ m_node->setShowPreview(show);
+ updateTimeStamp();
+ }
+}
+
+bool ViewProperties::showPreview() const
+{
+ return m_node->showPreview();
+}
+
+
+void ViewProperties::setShowHiddenFiles(bool show)
{
if (m_node->showHiddenFiles() != show) {
m_node->setShowHiddenFiles(show);
}
}
-bool ViewProperties::isShowHiddenFilesEnabled() const
+bool ViewProperties::showHiddenFiles() const
{
return m_node->showHiddenFiles();
}
return static_cast<Qt::SortOrder>(m_node->sortOrder());
}
-void ViewProperties::setValidForSubDirs(bool valid)
+void ViewProperties::setDirProperties(const ViewProperties& props)
{
- if (m_node->validForSubDirs() != valid) {
- m_node->setValidForSubDirs(valid);
- updateTimeStamp();
- }
-}
-
-bool ViewProperties::isValidForSubDirs() const
-{
- return m_node->validForSubDirs();
+ setViewMode(props.viewMode());
+ setShowPreview(props.showPreview());
+ setShowHiddenFiles(props.showHiddenFiles());
+ setSorting(props.sorting());
+ setSortOrder(props.sortOrder());
}
void ViewProperties::setAutoSaveEnabled(bool autoSave)
m_changedProps = false;
}
-ViewProperties& ViewProperties::operator = (const ViewProperties& props)
+QString ViewProperties::destinationDir(const QString& subDir) const
{
- if (&props != this) {
- m_changedProps = props.m_changedProps;
- m_autoSave = props.m_autoSave;
- m_subDirValidityHidden = props.m_subDirValidityHidden;
- m_filepath = props.m_filepath;
- m_node = new ViewPropertySettings();
- //*m_node = *(props.m_node);
- }
+ QString basePath = KGlobal::instance()->instanceName();
+ basePath.append("/view_properties/").append(subDir);
+ return KStandardDirs::locateLocal("data", basePath);
+}
+
+ViewProperties::ViewProperties(const ViewProperties& props)
+{
+ assert(false);
+}
- return *this;
+ViewProperties& ViewProperties::operator = (const ViewProperties& props)
+{
+ assert(false);
}