]> cloud.milkyroute.net Git - dolphin.git/blobdiff - src/viewproperties.cpp
Whenever we are trying to sort, bypass lessThanGeneralPurpose when is not allowed...
[dolphin.git] / src / viewproperties.cpp
index 485ed438498f6a8146bfe40e72c89d9721318ab8..319a06bc230a16c834fcd758fc366e70aa21570b 100644 (file)
  *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA          *
  ***************************************************************************/
 
-#include <assert.h>
+#include "viewproperties.h"
 
-#include <QDateTime>
-#include <QFile>
-#include <QFileInfo>
+#include "dolphinsettings.h"
+#include "dolphin_directoryviewpropertysettings.h"
+#include "dolphin_generalsettings.h"
 
 #include <kcomponentdata.h>
 #include <klocale.h>
 #include <kstandarddirs.h>
 #include <kurl.h>
-#include <kcomponentdata.h>
 
-#include "viewproperties.h"
-#include "dolphinsettings.h"
-#include "dolphin_generalsettings.h"
+#ifdef HAVE_NEPOMUK
+    #include <nepomuk/resourcemanager.h>
+#endif
+
+#include <QDate>
+#include <QFile>
+#include <QFileInfo>
+
+bool ViewProperties::m_nepomukSupport = false;
 
 #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)
 {
+#ifdef HAVE_NEPOMUK
+    static bool checkedNepomukSupport = false;
+    if (!checkedNepomukSupport) {
+        m_nepomukSupport = !Nepomuk::ResourceManager::instance()->init();
+        checkedNepomukSupport = true;
+    }
+#endif
+
     KUrl cleanUrl(url);
     cleanUrl.cleanPath();
     m_filepath = cleanUrl.path();
@@ -131,6 +144,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();
@@ -146,7 +173,15 @@ void ViewProperties::setSorting(DolphinView::Sorting sorting)
 
 DolphinView::Sorting ViewProperties::sorting() const
 {
-    return static_cast<DolphinView::Sorting>(m_node->sorting());
+    // If Nepomuk is not available, return SortByName as fallback if SortByRating
+    // or SortByTags is stored.
+    DolphinView::Sorting sorting = static_cast<DolphinView::Sorting>(m_node->sorting());
+    const bool sortByName = !m_nepomukSupport &&
+                            ((sorting == DolphinView::SortByRating) || (sorting == DolphinView::SortByTags));
+    if (sortByName) {
+        sorting = DolphinView::SortByName;
+    }
+    return sorting;
 }
 
 void ViewProperties::setSortOrder(Qt::SortOrder sortOrder)
@@ -181,6 +216,7 @@ 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());