/* This file is part of libkcal. Copyright (c) 2001,2003,2004 Cornelius Schumacher Copyright (C) 2003-2004 Reinhold Kainhofer 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 KCAL_CALFILTER_H #define KCAL_CALFILTER_H #include #include #include "event.h" #include "todo.h" #include "journal.h" #include "libkcal_export.h" namespace KCal { /** Filter for calendar objects. */ class LIBKCAL_EXPORT CalFilter { public: /** Construct filter. */ CalFilter(); /** Construct filter with name */ CalFilter( const TQString &name ); /** Destruct filter. */ ~CalFilter(); /** Set name of filter. */ void setName( const TQString &name ) { mName = name; } /** Return name of filter. */ TQString name() const { return mName; } /** Apply filter to eventlist, all events not matching filter criterias are removed from the list. */ void apply( Event::List *eventlist ) const; /** Apply filter to todolist, all todos not matching filter criterias are removed from the list. */ void apply( Todo::List *todolist ) const; /** Apply filter to todolist, all todos not matching filter criterias are removed from the list. */ void apply( Journal::List *journallist) const; /** Apply filter criteria on the specified incidence. Return true, if event passes criteria, otherwise return false. */ bool filterIncidence( Incidence * ) const; /** Enable or disable filter. */ void setEnabled( bool ); /** Return wheter the filter is enabled or not. */ bool isEnabled() const; /** Set list of categories, which is used for showing/hiding categories of events. See related functions. */ void setCategoryList( const TQStringList & ); /** Return category list, used for showing/hiding categories of events. See related functions. */ TQStringList categoryList() const; /** Set list of email addresses which are to be considered when finding incidences which the current user is not a participant of. This is normally the list used by KOPrefs::thatIsMe() as well. */ void setEmailList( const TQStringList & ); /** Return list of email addresses which are to be considered when finding incidences which the current user is not a participant of. This is normally the list used by KOPrefs::thatIsMe() as well. See related functions. */ TQStringList emailList() const; enum { HideRecurring = 1, HideCompleted = 2, ShowCategories = 4, HideInactiveTodos = 8, HideTodosWithoutAttendeeInEmailList = 16 }; /** Set criteria, which have to be fulfilled by events passing the filter. */ void setCriteria( int ); /** Get inclusive filter criteria. */ int criteria() const; /** Set the number of days for "Hide completed todos", after which todos are not shown any more. If nothing is set explicitly, all finished todos will be hidden if the "hide completed todos" option is selected. */ void setCompletedTimeSpan( int timespan ); /** Return the number of days for "Hide completed todos", after which todos are not shown any more. */ int completedTimeSpan() const; private: TQString mName; int mCriteria; bool mEnabled; TQStringList mCategoryList; TQStringList mEmailList; int mCompletedTimeSpan; class Private; Private *d; }; } #endif