kabc Library API Documentation

addresseelist.h

00001 /*
00002     This file is part of libkabc.
00003     Copyright (c) 2002 Jost Schenck <jost@schenck.de>
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., 59 Temple Place - Suite 330,
00018     Boston, MA 02111-1307, USA.
00019 */
00020 
00021 #ifndef KABC_ADDRESSEELIST_H
00022 #define KABC_ADDRESSEELIST_H
00023 
00024 #include <qvaluelist.h>
00025 
00026 #include "addressee.h"
00027 #include "field.h"
00028 
00029 namespace KABC {
00030 
00040 namespace SortingTraits
00041 { 
00042 
00043 class Uid
00044 {
00045   public:
00046     static bool eq( const Addressee &, const Addressee & );
00047     static bool lt( const Addressee &, const Addressee & );
00048 };
00049 
00050 class Name
00051 {
00052   public:
00053     static bool eq( const Addressee &, const Addressee & );
00054     static bool lt( const Addressee &, const Addressee & );
00055 };
00056 
00057 class FormattedName
00058 {
00059   public:
00060     static bool eq( const Addressee &, const Addressee & );
00061     static bool lt( const Addressee &, const Addressee & );
00062 };
00063 
00064 class FamilyName // fallback to given name
00065 {
00066   public: 
00067     static bool eq( const Addressee &, const Addressee & );
00068     static bool lt( const Addressee &, const Addressee & );
00069 };
00070 
00071 class GivenName  // fallback to family name
00072 {
00073   public: 
00074     static bool eq( const Addressee &, const Addressee & );
00075     static bool lt( const Addressee &, const Addressee & );
00076 };
00077 
00078 }
00079 
00083 typedef enum { Uid, Name, FormattedName, FamilyName, GivenName } SortingCriterion;
00084 
00108 class AddresseeList : public QValueList<Addressee>
00109 {
00110   public:
00111     AddresseeList();
00112     ~AddresseeList();
00113     AddresseeList( const AddresseeList & );
00114     AddresseeList( const QValueList<Addressee> & );
00115 
00119     void dump() const;
00120   
00126     void setReverseSorting( bool r = true ) { mReverseSorting = r; }
00127 
00132     bool reverseSorting() const { return mReverseSorting; }
00133 
00138     void sortBy( SortingCriterion c );
00139 
00140     void sortByField( Field *field );
00141 
00151     void sort();
00152 
00180     template<class Trait> void sortByTrait();
00181 
00186     SortingCriterion sortingCriterion() const { return mActiveSortingCriterion; }
00187 
00188   private:
00189     bool mReverseSorting;
00190     SortingCriterion mActiveSortingCriterion;
00191 };
00192 
00193 }
00194 
00195 #endif
KDE Logo
This file is part of the documentation for kdelibs Version 3.1.5.
Documentation copyright © 1996-2002 the KDE developers.
Generated on Wed Jan 28 13:29:18 2004 by doxygen 1.3.4 written by Dimitri van Heesch, © 1997-2001