From 6432262d2ea139c29d98c73fef72643126366010 Mon Sep 17 00:00:00 2001 From: Peter Hedlund Date: Thu, 6 Apr 2006 21:51:06 +0000 Subject: [PATCH] Improvements to sorting svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=527111 --- kdeeducore/keduvocdocument.cpp | 27 ++++++++++++++++++++------- kdeeducore/keduvocdocument.h | 11 ++++++++++- kdeeducore/keduvocexpression.cpp | 7 ++++--- kdeeducore/keduvocexpression.h | 7 ++++--- 4 files changed, 38 insertions(+), 14 deletions(-) diff --git a/kdeeducore/keduvocdocument.cpp b/kdeeducore/keduvocdocument.cpp index 71514f1..4d8c4ac 100644 --- a/kdeeducore/keduvocdocument.cpp +++ b/kdeeducore/keduvocdocument.cpp @@ -640,18 +640,31 @@ bool sortAscending; bool operator< (const KEduVocExpression &e1, const KEduVocExpression &e2) { - int i; if (sortAscending) if (sortIndex == 0) - i = QString::localeAwareCompare(e1.original(), e2.original()); + return e1.original() < e2.original(); else - i = QString::localeAwareCompare(e1.translation(sortIndex), e2.translation(sortIndex)); + return e1.translation(sortIndex) < e2.translation(sortIndex); else if (sortIndex == 0) - i = QString::localeAwareCompare(e2.original(), e1.original()); + return !(e1.original() < e2.original()); else - i = QString::localeAwareCompare(e2.translation(sortIndex), e2.translation(sortIndex)); - return (i >= 0); + return !(e1.translation(sortIndex) < e2.translation(sortIndex)); +} + +bool KEduVocDocument::sort(int index, Qt::SortOrder order) +{ + bool result = false; + if (m_enableSorting && index < numIdentifiers()) + { + if (m_sortIdentifier.count() < m_identifiers.count()) + for (int i = m_sortIdentifier.count(); i < (int) m_identifiers.count(); i++) + m_sortIdentifier.append(false); + + m_sortIdentifier[index] = (order == Qt::AscendingOrder); + result = sort(index); + } + return result; } bool KEduVocDocument::sort(int index) @@ -665,7 +678,7 @@ bool KEduVocDocument::sort(int index) sortAscending = m_sortIdentifier[index]; sortIndex = index; - qStableSort(m_vocabulary); + qSort(m_vocabulary); m_sortIdentifier[index] = !m_sortIdentifier[index]; result = m_sortIdentifier[index]; } diff --git a/kdeeducore/keduvocdocument.h b/kdeeducore/keduvocdocument.h index ea1b120..fc5c074 100644 --- a/kdeeducore/keduvocdocument.h +++ b/kdeeducore/keduvocdocument.h @@ -314,11 +314,20 @@ class KEduVocDocument : public QObject /** * Sorts vocabulary alphabetically * - * @param index index expression + * @param index index identifier (0 = original, 1..n = translations * @returns the direction of sorting: true = ascending */ bool sort(int index); + /** + * Sorts vocabulary alphabetically + * + * @param index index identifier (0 = original, 1..n = translations + * @param order the order used when sorting + * @returns the direction of sorting: true = ascending + */ + bool sort(int index, Qt::SortOrder order); + /** * Removes equal entries (original plus all translations) * diff --git a/kdeeducore/keduvocexpression.cpp b/kdeeducore/keduvocexpression.cpp index eed7a07..f9cb23b 100644 --- a/kdeeducore/keduvocexpression.cpp +++ b/kdeeducore/keduvocexpression.cpp @@ -3,7 +3,7 @@ ----------------------------------------------------------------------- copyright : (C) 1999-2001 Ewald Arnold (C) 2001 The KDE-EDU team - (C) 2005 Peter Hedlund + (C) 2005-2006 Peter Hedlund email : peter.hedlund@kdemail.net ***************************************************************************/ @@ -32,6 +32,7 @@ void KEduVocExpression::Init() m_queryDates.append(dt); m_reverseQueryDates.append(dt); m_lesson = 0; + m_sortIndex = 0; } KEduVocExpression::KEduVocExpression () @@ -796,11 +797,11 @@ void KEduVocExpression::setType (int idx, const QString &type) void KEduVocExpression::setLeitnerBox( const QString& box ) { - m_leitnerBox = box; + m_leitnerBox = box; } QString& KEduVocExpression::leitnerBox() { - return m_leitnerBox; + return m_leitnerBox; } diff --git a/kdeeducore/keduvocexpression.h b/kdeeducore/keduvocexpression.h index bb4d91b..62107e5 100644 --- a/kdeeducore/keduvocexpression.h +++ b/kdeeducore/keduvocexpression.h @@ -3,7 +3,7 @@ ----------------------------------------------------------------------- copyright : (C) 1999-2001 Ewald Arnold (C) 2001 The KDE-EDU team - (C) 2005 Peter Hedlund + (C) 2005-2006 Peter Hedlund email : peter.hedlund@kdemail.net ***************************************************************************/ @@ -436,11 +436,11 @@ public: */ QString& leitnerBox(); - protected: +protected: void Init(); - private: +private: QString m_original; // all these vectors must be deleted in removeTranslation() @@ -468,6 +468,7 @@ public: QList m_multipleChoices; QString m_leitnerBox; + int m_sortIndex; int m_lesson; bool m_inQuery; bool m_active; -- 2.47.3