]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/viewproperties.cpp
- Performance optimization in DolphinView::loadDirectory() (don't store the view...
[dolphin.git] / src / viewproperties.cpp
index 52129bd8025cc7a36397ed7d064360fca7c8f9a4..cd66519fd1dde40aa4a620a757f83c2f1a8a294f 100644 (file)
 
 #include <assert.h>
 
-#include <qdatetime.h>
-#include <qdir.h>
-#include <qfile.h>
+#include <QDateTime>
+#include <QFile>
 
 #include <klocale.h>
 #include <kstandarddirs.h>
 #include <kurl.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(true);
-    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
+    // 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()) {
+    if (cleanUrl.isLocalFile()) {
         QFileInfo info(m_filepath);
 
         if (!info.isWritable()) {
             QString basePath = KGlobal::instance()->instanceName();
             basePath.append("/view_properties/local");
-            rootDir = locateLocal("data", basePath);
+            rootDir = KStandardDirs::locateLocal("data", basePath);
             m_filepath = rootDir + m_filepath;
         }
     }
     else {
         QString basePath = KGlobal::instance()->instanceName();
-        basePath.append("/view_properties/remote/").append(url.host());
-        rootDir = locateLocal("data", basePath);
+        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));
-
-    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) {
-            *m_node = parentNode;
-            break;
-        }
-    }
-
-    if (isValidForSubDirs) {
-        m_subDirValidityHidden = true;
-    }
 }
 
 ViewProperties::~ViewProperties()
@@ -103,6 +80,7 @@ ViewProperties::~ViewProperties()
     }
 
     delete m_node;
+    m_node = 0;
 }
 
 void ViewProperties::setViewMode(DolphinView::Mode mode)
@@ -118,7 +96,21 @@ DolphinView::Mode ViewProperties::viewMode() const
     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);
@@ -126,7 +118,7 @@ void ViewProperties::setShowHiddenFilesEnabled(bool show)
     }
 }
 
-bool ViewProperties::isShowHiddenFilesEnabled() const
+bool ViewProperties::showHiddenFiles() const
 {
     return m_node->showHiddenFiles();
 }
@@ -157,19 +149,6 @@ Qt::SortOrder ViewProperties::sortOrder() const
     return static_cast<Qt::SortOrder>(m_node->sortOrder());
 }
 
-void ViewProperties::setValidForSubDirs(bool valid)
-{
-    if (m_node->validForSubDirs() != valid) {
-        m_node->setValidForSubDirs(valid);
-        updateTimeStamp();
-    }
-}
-
-bool ViewProperties::isValidForSubDirs() const
-{
-    return m_node->validForSubDirs();
-}
-
 void ViewProperties::setAutoSaveEnabled(bool autoSave)
 {
     m_autoSave = autoSave;
@@ -188,21 +167,20 @@ void ViewProperties::updateTimeStamp()
 
 void ViewProperties::save()
 {
-    KStandardDirs::makeDir(m_filepath);
-    m_node->writeConfig();
-    m_changedProps = false;
+    const bool rememberSettings = !DolphinSettings::instance().generalSettings()->globalViewProps();
+    if (rememberSettings) {
+        KStandardDirs::makeDir(m_filepath);
+        m_node->writeConfig();
+        m_changedProps = false;
+    }
 }
 
-ViewProperties& ViewProperties::operator = (const ViewProperties& props)
+ViewProperties::ViewProperties(const ViewProperties& props)
 {
-    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);
-    }
+    assert(false);
+}
 
-    return *this;
+ViewProperties& ViewProperties::operator = (const ViewProperties& props)
+{
+    assert(false);
 }