CVS commit by tokoe: Hmm, we need the 'reverse ordering' flag as well in the default sorting modes. M +1 -1 addresseelist.cpp 1.11 M +23 -12 sortmode.cpp 1.2 M +4 -2 sortmode.h 1.2 --- kdelibs/kabc/addresseelist.cpp #1.10:1.11 @@ -231,5 +231,5 @@ void AddresseeList::sortByField( Field * return; - KABC::FieldSortMode *mode = new KABC::FieldSortMode( sActiveField ); + KABC::FieldSortMode *mode = new KABC::FieldSortMode( sActiveField, !mReverseSorting ); KABC::Addressee::setSortMode( mode ); --- kdelibs/kabc/sortmode.cpp #1.1:1.2 @@ -26,11 +26,11 @@ using namespace KABC; NameSortMode::NameSortMode() - : mNameType( FormattedName ), d( 0 ) + : mNameType( FormattedName ), mAscendingOrder( true ), d( 0 ) { mNameType = FormattedName; } -NameSortMode::NameSortMode( NameType type ) - : mNameType( type ), d( 0 ) +NameSortMode::NameSortMode( NameType type, bool ascending ) + : mNameType( type ), mAscendingOrder( ascending ), d( 0 ) { } @@ -38,22 +38,29 @@ NameSortMode::NameSortMode( NameType typ bool NameSortMode::lesser( const KABC::Addressee &first, const KABC::Addressee &second ) const { + bool lesser = false; + switch ( mNameType ) { case FormattedName: - return ( QString::localeAwareCompare( first.formattedName(), second.formattedName() ) < 0 ); + lesser = QString::localeAwareCompare( first.formattedName(), second.formattedName() ) < 0; break; case FamilyName: - return ( QString::localeAwareCompare( first.familyName(), second.familyName() ) < 0 ); + lesser = QString::localeAwareCompare( first.familyName(), second.familyName() ) < 0; break; case GivenName: - return ( QString::localeAwareCompare( first.givenName(), second.givenName() ) < 0 ); + lesser = QString::localeAwareCompare( first.givenName(), second.givenName() ) < 0; break; default: - return false; + lesser = false; break; } + + if ( !mAscendingOrder ) + lesser = !lesser; + + return lesser; } -FieldSortMode::FieldSortMode( KABC::Field *field ) - : mField( field ), d( 0 ) +FieldSortMode::FieldSortMode( KABC::Field *field, bool ascending ) + : mField( field ), mAscendingOrder( ascending ), d( 0 ) { } @@ -63,6 +70,10 @@ bool FieldSortMode::lesser( const KABC:: if ( !mField ) return false; - else - return ( QString::localeAwareCompare( mField->value( first ), mField->value( second ) ) < 0 ); -} + else { + bool lesser = QString::localeAwareCompare( mField->value( first ), mField->value( second ) ) < 0; + if ( !mAscendingOrder ) + lesser = !lesser; + return lesser; + } +} --- kdelibs/kabc/sortmode.h #1.1:1.2 @@ -68,5 +68,5 @@ class KABC_EXPORT NameSortMode : public @param type The name type. */ - NameSortMode( NameType type ); + NameSortMode( NameType type, bool ascending = true ); /** @@ -77,4 +77,5 @@ class KABC_EXPORT NameSortMode : public private: NameType mNameType; + bool mAscendingOrder; class NameSortModePrivate; @@ -92,5 +93,5 @@ class KABC_EXPORT FieldSortMode : public @param field The field. */ - FieldSortMode( KABC::Field *field ); + FieldSortMode( KABC::Field *field, bool ascending = true ); /** @@ -101,4 +102,5 @@ class KABC_EXPORT FieldSortMode : public private: KABC::Field *mField; + bool mAscendingOrder; class FieldSortModePrivate;