|
|
|
/*
|
|
|
|
This file is part of KAddressBook.
|
|
|
|
Copyright (c) 2002 Mike Pilone <mpilone@slac.com>
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
|
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
This program 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 General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with this program; if not, write to the Free Software
|
|
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
|
|
|
|
As a special exception, permission is given to link this program
|
|
|
|
with any edition of TQt, and distribute the resulting executable,
|
|
|
|
without including the source code for TQt in the source distribution.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef FILTER_H
|
|
|
|
#define FILTER_H
|
|
|
|
|
|
|
|
#include <tqstring.h>
|
|
|
|
#include <tqstringlist.h>
|
|
|
|
#include <tqvaluelist.h>
|
|
|
|
|
|
|
|
#include <tdeabc/addressee.h>
|
|
|
|
#include <tdeconfig.h>
|
|
|
|
|
|
|
|
/**
|
|
|
|
Filter for AddressBook related objects (Addressees)
|
|
|
|
|
|
|
|
@todo This class should be switched to use shared data.
|
|
|
|
*/
|
|
|
|
class Filter
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
typedef TQValueList<Filter> List;
|
|
|
|
|
|
|
|
enum MatchRule { Matching = 0, NotMatching = 1 };
|
|
|
|
|
|
|
|
Filter();
|
|
|
|
Filter( const TQString& name );
|
|
|
|
~Filter();
|
|
|
|
|
|
|
|
/**
|
|
|
|
Set the name of the filter.
|
|
|
|
*/
|
|
|
|
void setName( const TQString &name );
|
|
|
|
|
|
|
|
/**
|
|
|
|
@return The name of the filter.
|
|
|
|
*/
|
|
|
|
const TQString &name() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
@return Whether the filter is an internal one.
|
|
|
|
*/
|
|
|
|
bool isInternal() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
Apply the filter to the addressee list. All addressees not passing
|
|
|
|
the filter criterias will be removed from the list.
|
|
|
|
|
|
|
|
If the MatchRule is NotMatch, then all the addressees matching the
|
|
|
|
filter will be removed from the list.
|
|
|
|
*/
|
|
|
|
void apply( TDEABC::Addressee::List &addresseeList );
|
|
|
|
|
|
|
|
/**
|
|
|
|
Apply the filter to the addressee.
|
|
|
|
|
|
|
|
@return True if the addressee passes the criteria, false otherwise.
|
|
|
|
The return values are opposite if the MatchRule is NotMatch.
|
|
|
|
*/
|
|
|
|
bool filterAddressee( const TDEABC::Addressee &a ) const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
Enable or disable the filter
|
|
|
|
*/
|
|
|
|
void setEnabled( bool on );
|
|
|
|
|
|
|
|
/**
|
|
|
|
@return True if this filter is enabled, false otherwise.
|
|
|
|
*/
|
|
|
|
bool isEnabled() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
Set the list of categories. This list is used to filter addressees.
|
|
|
|
*/
|
|
|
|
void setCategories( const TQStringList &list );
|
|
|
|
|
|
|
|
/**
|
|
|
|
@return The list of categories.
|
|
|
|
*/
|
|
|
|
const TQStringList &categories() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
Saves the filter to the config file. The group should already be set.
|
|
|
|
*/
|
|
|
|
void save( TDEConfig *config );
|
|
|
|
|
|
|
|
/**
|
|
|
|
Loads the filter from the config file. The group should already be set.
|
|
|
|
*/
|
|
|
|
void restore( TDEConfig *config );
|
|
|
|
|
|
|
|
/**
|
|
|
|
Saves a list of filters to the config file.
|
|
|
|
|
|
|
|
@param config The config file to use
|
|
|
|
@param baseGroup The base groupname to use. The number of filters
|
|
|
|
will be written to this group, then a _1, _2, etc
|
|
|
|
will be append for each filter saved.
|
|
|
|
@param list The list of filters to be saved.
|
|
|
|
*/
|
|
|
|
static void save( TDEConfig *config, const TQString &baseGroup, Filter::List &list );
|
|
|
|
|
|
|
|
/**
|
|
|
|
Restores a list of filters from a config file.
|
|
|
|
|
|
|
|
@param config The config file to read from.
|
|
|
|
@param baseGroup The base group name to be used to find the filters
|
|
|
|
|
|
|
|
@return The list of filters.
|
|
|
|
*/
|
|
|
|
static Filter::List restore( TDEConfig *config, const TQString &baseGroup );
|
|
|
|
|
|
|
|
/**
|
|
|
|
Sets the filter rule. If the rule is Filter::Matching (default),
|
|
|
|
then the filter will return true on items that match the filter.
|
|
|
|
If the rule is Filter::NotMatching, then the filter will return
|
|
|
|
true on items that do not match the filter.
|
|
|
|
*/
|
|
|
|
void setMatchRule( MatchRule rule );
|
|
|
|
|
|
|
|
/**
|
|
|
|
@return The current match rule.
|
|
|
|
*/
|
|
|
|
MatchRule matchRule() const;
|
|
|
|
|
|
|
|
/**
|
|
|
|
@return true if the category list is empty.
|
|
|
|
*/
|
|
|
|
bool isEmpty() const;
|
|
|
|
|
|
|
|
private:
|
|
|
|
TQString mName;
|
|
|
|
TQStringList mCategoryList;
|
|
|
|
MatchRule mMatchRule;
|
|
|
|
bool mEnabled;
|
|
|
|
bool mInternal;
|
|
|
|
bool mIsEmpty;
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|