]> cloud.milkyroute.net Git - dolphin.git/commitdiff
Let Descending order work
authorRafael Fernández López <ereslibre@kde.org>
Mon, 18 Jun 2007 09:27:12 +0000 (09:27 +0000)
committerRafael Fernández López <ereslibre@kde.org>
Mon, 18 Jun 2007 09:27:12 +0000 (09:27 +0000)
svn path=/trunk/KDE/kdebase/apps/; revision=677018

src/dolphinsortfilterproxymodel.cpp
src/klistview.cpp
src/ksortfilterproxymodel.cpp
src/ksortfilterproxymodel.h

index 4097cbe9df659a2dabefd83dc4fca23b53ae66e1..2860e213f176bac5ab196d717a24f7a74b28f7e3 100644 (file)
@@ -89,7 +89,7 @@ void DolphinSortFilterProxyModel::sort(int column, Qt::SortOrder sortOrder)
                 dirModelColumnToDolphinView[column]  :
                 DolphinView::SortByName;
     setSortRole(m_sorting);
-    QSortFilterProxyModel::sort(column, sortOrder);
+    KSortFilterProxyModel::sort(column, sortOrder);
 }
 
 bool DolphinSortFilterProxyModel::hasChildren(const QModelIndex& parent) const
@@ -249,7 +249,7 @@ bool DolphinSortFilterProxyModel::lessThan(const QModelIndex& left,
 }
 
 int DolphinSortFilterProxyModel::naturalCompare(const QString& a,
-        const QString& b)
+                                                const QString& b)
 {
     // This method chops the input a and b into pieces of
     // digits and non-digits (a1.05 becomes a | 1 | . | 05)
index b38f18263fa689c8b6d12801095f834f5faf32d9..acdc70220a3e5f11b535b57c6164ebf042c7a4b8 100644 (file)
@@ -55,10 +55,14 @@ public:
     {
         if (purpose == GeneralPurpose)
         {
-            return proxyModel->lessThanGeneralPurpose(left, right);
+            return proxyModel->sortOrder() == Qt::AscendingOrder ?
+                   proxyModel->lessThanGeneralPurpose(left, right) :
+                   !proxyModel->lessThanGeneralPurpose(left, right);
         }
 
-        return proxyModel->lessThanCategoryPurpose(left, right);
+        return proxyModel->sortOrder() == Qt::AscendingOrder ?
+               proxyModel->lessThanCategoryPurpose(left, right) :
+               !proxyModel->lessThanCategoryPurpose(left, right);
     }
 
 private:
index b716c399be9e1e36fe1d86ef7a585a2e742d516f..259b1b130b9a84e478a147ca885e5e83275d37cc 100644 (file)
@@ -29,6 +29,18 @@ KSortFilterProxyModel::~KSortFilterProxyModel()
 {
 }
 
+void KSortFilterProxyModel::sort(int column, Qt::SortOrder order)
+{
+    QSortFilterProxyModel::sort(column, order);
+
+    m_sortOrder = order;
+}
+
+Qt::SortOrder KSortFilterProxyModel::sortOrder() const
+{
+    return m_sortOrder;
+}
+
 bool KSortFilterProxyModel::lessThanCategoryPurpose(const QModelIndex &left,
                                                     const QModelIndex &right) const
 {
index efe12cbc0c143ca7e8b9043a53ef562f12da18f1..5184f510ff8ff996fd35a3eafbe0ef1c6f512634 100644 (file)
@@ -32,11 +32,18 @@ public:
     KSortFilterProxyModel(QObject *parent = 0);
     ~KSortFilterProxyModel();
 
+    virtual void sort(int column, Qt::SortOrder order = Qt::AscendingOrder);
+
+    Qt::SortOrder sortOrder() const;
+
     virtual bool lessThanGeneralPurpose(const QModelIndex &left,
                                         const QModelIndex &right) const = 0;
 
     virtual bool lessThanCategoryPurpose(const QModelIndex &left,
                                          const QModelIndex &right) const;
+
+private:
+    Qt::SortOrder m_sortOrder;
 };
 
 #endif