sortmode.h
00001 /* 00002 This file is part of libkabc. 00003 Copyright (c) 2004 Tobias Koenig <tokoe@kde.org> 00004 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Library General Public 00007 License as published by the Free Software Foundation; either 00008 version 2 of the License, or (at your option) any later version. 00009 00010 This library is distributed in the hope that it will be useful, 00011 but WITHOUT ANY WARRANTY; without even the implied warranty of 00012 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00013 Library General Public License for more details. 00014 00015 You should have received a copy of the GNU Library General Public License 00016 along with this library; see the file COPYING.LIB. If not, write to 00017 the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 00018 Boston, MA 02110-1301, USA. 00019 */ 00020 00021 #ifndef KABC_SORTMODE_H 00022 #define KABC_SORTMODE_H 00023 00024 #include <kdelibs_export.h> 00025 00026 #include <kabc/addressee.h> 00027 00028 namespace KABC { 00029 00036 class KABC_EXPORT SortMode 00037 { 00038 public: 00043 virtual bool lesser( const KABC::Addressee &first, const KABC::Addressee &second ) const = 0; 00044 }; 00045 00046 class KABC_EXPORT NameSortMode : public SortMode 00047 { 00048 public: 00049 enum NameType 00050 { 00051 FormattedName, 00052 FamilyName, 00053 GivenName 00054 }; 00055 00061 NameSortMode(); 00062 00071 NameSortMode( NameType type, bool ascending = true ); 00072 00076 virtual bool lesser( const KABC::Addressee&, const KABC::Addressee& ) const; 00077 00078 private: 00079 NameType mNameType; 00080 bool mAscendingOrder; 00081 00082 class NameSortModePrivate; 00083 NameSortModePrivate *d; 00084 }; 00085 00086 class KABC_EXPORT FieldSortMode : public SortMode 00087 { 00088 public: 00097 FieldSortMode( KABC::Field *field, bool ascending = true ); 00098 00102 virtual bool lesser( const KABC::Addressee&, const KABC::Addressee& ) const; 00103 00104 private: 00105 KABC::Field *mField; 00106 bool mAscendingOrder; 00107 00108 class FieldSortModePrivate; 00109 FieldSortModePrivate *d; 00110 }; 00111 00112 } 00113 00114 #endif