00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
#ifndef KABC_ADDRESSEELIST_H
00023
#define KABC_ADDRESSEELIST_H
00024
00025
#include <qvaluelist.h>
00026
00027
#include "addressee.h"
00028
00029
namespace KABC {
00030
00031
class Field;
00032
class SortField;
00033
class SortMode;
00034
00044 namespace SortingTraits
00045 {
00046
00047
class KABC_EXPORT Uid
00048 {
00049
public:
00050
static bool eq(
const Addressee &,
const Addressee & );
00051
static bool lt(
const Addressee &,
const Addressee & );
00052 };
00053
00054
class KABC_EXPORT Name
00055 {
00056
public:
00057
static bool eq(
const Addressee &,
const Addressee & );
00058
static bool lt(
const Addressee &,
const Addressee & );
00059 };
00060
00061
class KABC_EXPORT FormattedName
00062 {
00063
public:
00064
static bool eq(
const Addressee &,
const Addressee & );
00065
static bool lt(
const Addressee &,
const Addressee & );
00066 };
00067
00068
class KABC_EXPORT FamilyName
00069 {
00070
public:
00071
static bool eq(
const Addressee &,
const Addressee & );
00072
static bool lt(
const Addressee &,
const Addressee & );
00073 };
00074
00075
class KABC_EXPORT GivenName
00076 {
00077
public:
00078
static bool eq(
const Addressee &,
const Addressee & );
00079
static bool lt(
const Addressee &,
const Addressee & );
00080 };
00081
00082 }
00083
00087 typedef enum { Uid, Name, FormattedName, FamilyName, GivenName } SortingCriterion;
00088
00112 class KABC_EXPORT AddresseeList :
public QValueList<Addressee>
00113 {
00114
public:
00115 AddresseeList();
00116 ~AddresseeList();
00117 AddresseeList(
const AddresseeList & );
00118 AddresseeList(
const QValueList<Addressee> & );
00119
00123
void dump()
const;
00124
00130 void setReverseSorting(
bool r =
true ) { mReverseSorting = r; }
00131
00136 bool reverseSorting()
const {
return mReverseSorting; }
00137
00142
void sortBy( SortingCriterion c );
00143
00149
void sortByField( Field *field = 0 );
00150
00156
void sortByMode(
SortMode *mode = 0 );
00157
00167
void sort();
00168
00196
template<
class Trait>
void sortByTrait();
00197
00202 SortingCriterion sortingCriterion()
const {
return mActiveSortingCriterion; }
00203
00211 Field* sortingField() const;
00212
00213 private:
00214
bool mReverseSorting;
00215 SortingCriterion mActiveSortingCriterion;
00216
00217 };
00218
00219 }
00220
00221 #endif