diff options
| author | Rafael Fernández López <[email protected]> | 2007-06-18 09:27:12 +0000 |
|---|---|---|
| committer | Rafael Fernández López <[email protected]> | 2007-06-18 09:27:12 +0000 |
| commit | 4bf98b33866f92685719842092b9499c50fea4f2 (patch) | |
| tree | f85128fce078ad79b995899e39cd5e73d4358a6f /src | |
| parent | d098f9641a158243584b12d6d6174804b3e58589 (diff) | |
Let Descending order work
svn path=/trunk/KDE/kdebase/apps/; revision=677018
Diffstat (limited to 'src')
| -rw-r--r-- | src/dolphinsortfilterproxymodel.cpp | 4 | ||||
| -rw-r--r-- | src/klistview.cpp | 8 | ||||
| -rw-r--r-- | src/ksortfilterproxymodel.cpp | 12 | ||||
| -rw-r--r-- | src/ksortfilterproxymodel.h | 7 |
4 files changed, 27 insertions, 4 deletions
diff --git a/src/dolphinsortfilterproxymodel.cpp b/src/dolphinsortfilterproxymodel.cpp index 4097cbe9d..2860e213f 100644 --- a/src/dolphinsortfilterproxymodel.cpp +++ b/src/dolphinsortfilterproxymodel.cpp @@ -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) diff --git a/src/klistview.cpp b/src/klistview.cpp index b38f18263..acdc70220 100644 --- a/src/klistview.cpp +++ b/src/klistview.cpp @@ -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: diff --git a/src/ksortfilterproxymodel.cpp b/src/ksortfilterproxymodel.cpp index b716c399b..259b1b130 100644 --- a/src/ksortfilterproxymodel.cpp +++ b/src/ksortfilterproxymodel.cpp @@ -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 { diff --git a/src/ksortfilterproxymodel.h b/src/ksortfilterproxymodel.h index efe12cbc0..5184f510f 100644 --- a/src/ksortfilterproxymodel.h +++ b/src/ksortfilterproxymodel.h @@ -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 |
