]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/viewproperties.cpp
Cleanup of URL drop handling (simplified code, modifier keys work again). After furth...
[dolphin.git] / src / viewproperties.cpp
index a3a8ec46bbf16d3671bbad4821d71711733fdc0e..c0343350d62a4eef66582a5e7d97b16f4f811b31 100644 (file)
  *   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()
@@ -105,6 +75,7 @@ ViewProperties::~ViewProperties()
     }
 
     delete m_node;
+    m_node = 0;
 }
 
 void ViewProperties::setViewMode(DolphinView::Mode mode)
@@ -120,7 +91,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);
@@ -128,7 +113,7 @@ void ViewProperties::setShowHiddenFilesEnabled(bool show)
     }
 }
 
-bool ViewProperties::isShowHiddenFilesEnabled() const
+bool ViewProperties::showHiddenFiles() const
 {
     return m_node->showHiddenFiles();
 }
@@ -159,17 +144,13 @@ Qt::SortOrder ViewProperties::sortOrder() const
     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)
@@ -195,16 +176,19 @@ void ViewProperties::save()
     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);
 }