diff options
Diffstat (limited to 'kabc/addresseelist.h')
-rw-r--r-- | kabc/addresseelist.h | 221 |
1 files changed, 0 insertions, 221 deletions
diff --git a/kabc/addresseelist.h b/kabc/addresseelist.h deleted file mode 100644 index 7c9df0275..000000000 --- a/kabc/addresseelist.h +++ /dev/null @@ -1,221 +0,0 @@ -/* - This file is part of libkabc. - Copyright (c) 2002 Jost Schenck <jost@schenck.de> - 2003 Tobias Koenig <tokoe@kde.org> - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Library General Public - License as published by the Free Software Foundation; either - version 2 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Library General Public License for more details. - - You should have received a copy of the GNU Library General Public License - along with this library; see the file COPYING.LIB. If not, write to - the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, - Boston, MA 02110-1301, USA. -*/ - -#ifndef KABC_ADDRESSEELIST_H -#define KABC_ADDRESSEELIST_H - -#include <tqvaluelist.h> - -#include "addressee.h" - -namespace KABC { - -class Field; -class SortField; -class SortMode; - -/** - * Each trait must implement one static function for equality, one for "less - * than". Class name should be the field name. A trait does not necessarily - * have to stick to just one field: a trait sorting by family name can e.g. - * sort addressees with equal family name by given name. - * - * If you want to implement reverse sorting, you do not have to write another - * trait, as AddresseeList takes care of that. - */ -namespace SortingTraits -{ - -class KABC_EXPORT Uid -{ - public: - static bool eq( const Addressee &, const Addressee & ); - static bool lt( const Addressee &, const Addressee & ); -}; - -class KABC_EXPORT Name -{ - public: - static bool eq( const Addressee &, const Addressee & ); - static bool lt( const Addressee &, const Addressee & ); -}; - -class KABC_EXPORT FormattedName -{ - public: - static bool eq( const Addressee &, const Addressee & ); - static bool lt( const Addressee &, const Addressee & ); -}; - -class KABC_EXPORT FamilyName // fallback to given name -{ - public: - static bool eq( const Addressee &, const Addressee & ); - static bool lt( const Addressee &, const Addressee & ); -}; - -class KABC_EXPORT GivenName // fallback to family name -{ - public: - static bool eq( const Addressee &, const Addressee & ); - static bool lt( const Addressee &, const Addressee & ); -}; - -} - -/** - * Addressee attribute used for sorting. - */ -typedef enum { Uid, Name, FormattedName, FamilyName, GivenName } SortingCriterion; - -/** - * @short a TQValueList of Addressee, with sorting functionality - * - * This class extends the functionality of TQValueList with - * sorting methods specific to the Addressee class. It can be used - * just like any other TQValueList but is no template class. - * - * An AddresseeList does not automatically keep sorted when addressees - * are added or removed or the sorting order is changed, as this would - * slow down larger operations by sorting after every step. So after - * such operations you have to call {@link #sort} or {@link #sortBy} to - * create a defined order again. - * - * Iterator usage is inherited by TQValueList and extensively documented - * there. Please remember that the state of an iterator is undefined - * after any sorting operation. - * - * For the enumeration Type SortingCriterion, which specifies the - * field by the collection will be sorted, the following values exist: - * Uid, Name, FormattedName, FamilyName, GivenName. - * - * @author Jost Schenck jost@schenck.de - */ -class KABC_EXPORT AddresseeList : public TQValueList<Addressee> -{ - public: - AddresseeList(); - ~AddresseeList(); - AddresseeList( const AddresseeList & ); - AddresseeList( const TQValueList<Addressee> & ); - - /** - * Debug output. - */ - void dump() const; - - /** - * Determines the direction of sorting. On change, the list - * will <em>not</em> automatically be resorted. - * @param r <tt>true</tt> if sorting should be done reverse, <tt>false</tt> otherwise - */ - void setReverseSorting( bool r = true ) { mReverseSorting = r; } - - /** - * Returns the direction of sorting. - * @return <tt>true</tt> if sorting is done reverse, <tt>false</tt> otherwise - */ - bool reverseSorting() const { return mReverseSorting; } - - /** - * Sorts this list by a specific criterion. - * @param c the criterion by which should be sorted - */ - void sortBy( SortingCriterion c ); - - /** - * Sorts this list by a specific field. If no parameter is given, the - * last used Field object will be used. - * @param field pointer to the Field object to be sorted by - */ - void sortByField( Field *field = 0 ); - - /** - * Sorts this list by a specific sorting mode. - * @param mode pointer to the sorting mode object to be sorted by - * @since 3.4 - */ - void sortByMode( SortMode *mode = 0 ); - - /** - * Sorts this list by its active sorting criterion. This normally is the - * criterion of the last sortBy operation or <tt>FormattedName</tt> if up - * to now there has been no sortBy operation. - * - * Please note that the sorting trait of the last {@link #sortByTrait} - * method call is not remembered and thus the action can not be repeated - * by this method. - */ - void sort(); - - /** - * Templated sort function. You normally will not want to use this but - * {@link #sortBy} and {@link #sort} instead as the existing sorting - * criteria completely suffice for most cases. - * - * However, if you do want to use some special sorting criterion, you can - * write a trait class that will be provided to this templated method. - * This trait class has to have a class declaration like the following: - * \code - * class MySortingTrait { - * public: - * // eq returns true if a1 and a2 are equal - * static bool eq(KABC::Addressee a1, KABC::Addressee a2); - * // lt returns true is a1 is "less than" a2 - * static bool lt(KABC::Addressee a1, KABC::Addressee a2); - * }; - * \endcode - * You can then pass this class to the sortByTrait method like this: - * \code - * myAddresseelist.sortByTrait<MySortingTrait>(); - * \endcode - * Please note that the {@link #sort} method can not be used to repeat the - * sorting of the last <tt>sortByTrait</tt> action. - * - * Right now this method uses the bubble sort algorithm. This should be - * replaced for a better one when I have time. - */ - template<class Trait> void sortByTrait(); - - /** - * Returns the active sorting criterion, ie the sorting criterion that - * will be used by a {@link #sort} call. - */ - SortingCriterion sortingCriterion() const { return mActiveSortingCriterion; } - - /** - * Returns the active sorting field, ie a pointer to the Field object - * which was used for the last {@link #sortByField} operation. - * This function returns the last GLOBAL sorting field, not - * the class specific one. - * You're a lot better off by keeping track of this locally. - */ - Field* sortingField() const; - - private: - bool mReverseSorting; - SortingCriterion mActiveSortingCriterion; - //KDE 4.0 - add a d-pointer here! -}; - -} - -#endif |