-rw-r--r-- | libkcal/calfilter.cpp | 29 |
1 files changed, 20 insertions, 9 deletions
diff --git a/libkcal/calfilter.cpp b/libkcal/calfilter.cpp index c182db5..c425dfc 100644 --- a/libkcal/calfilter.cpp +++ b/libkcal/calfilter.cpp @@ -19,127 +19,138 @@ */ #include <kdebug.h> #include "calfilter.h" using namespace KCal; CalFilter::CalFilter() { mEnabled = true; mCriteria = ShowPublic | ShowPrivate| ShowConfidential ; } CalFilter::CalFilter(const QString &name) { mName = name; mEnabled = true; mCriteria = ShowPublic | ShowPrivate| ShowConfidential ; } CalFilter::~CalFilter() { } void CalFilter::apply(QPtrList<Event> *eventlist) { if (!mEnabled) return; // kdDebug(5800) << "CalFilter::apply()" << endl; Event *event = eventlist->first(); while(event) { if (!filterEvent(event)) { eventlist->remove(); event = eventlist->current(); } else { event = eventlist->next(); } } // kdDebug(5800) << "CalFilter::apply() done" << endl; } // TODO: avoid duplicating apply() code void CalFilter::apply(QPtrList<Todo> *eventlist) { if (!mEnabled) return; - -// kdDebug(5800) << "CalFilter::apply()" << endl; - Todo *event = eventlist->first(); while(event) { if (!filterTodo(event)) { eventlist->remove(); event = eventlist->current(); } else { event = eventlist->next(); } } // kdDebug(5800) << "CalFilter::apply() done" << endl; } - +bool CalFilter::filterCalendarItem(Incidence *in) +{ + if ( in->type() == "Event" ) + return filterEvent( (Event*) in ); + else if ( in->type() =="Todo" ) + return filterTodo( (Todo*) in); + else if ( in->type() =="Journal" ) + return filterJournal( (Journal*) in ); + return false; +} bool CalFilter::filterEvent(Event *event) { -// kdDebug(5800) << "CalFilter::filterEvent(): " << event->getSummary() << endl; - + if (mCriteria & HideEvents) + return false; if (mCriteria & HideRecurring) { if (event->recurrence()->doesRecur()) return false; } return filterIncidence(event); } - +bool CalFilter::filterJournal(Journal *j) +{ + if (mCriteria & HideJournals) + return false; + return true; +} bool CalFilter::filterTodo(Todo *todo) { -// kdDebug(5800) << "CalFilter::filterEvent(): " << event->getSummary() << endl; - + if (mCriteria & HideTodos) + return false; if (mCriteria & HideCompleted) { if (todo->isCompleted()) return false; } return filterIncidence(todo); } bool CalFilter::showCategories() { return mCriteria & ShowCategories; } int CalFilter::getSecrecy() { if ( (mCriteria & ShowPublic )) return Incidence::SecrecyPublic; if ( (mCriteria & ShowPrivate )) return Incidence::SecrecyPrivate; if ( (mCriteria & ShowConfidential )) return Incidence::SecrecyConfidential; return Incidence::SecrecyPublic; } bool CalFilter::filterIncidence(Incidence *incidence) { if ( mCriteria > 7 ) { switch (incidence->secrecy()) { case Incidence::SecrecyPublic: if (! (mCriteria & ShowPublic )) return false; break; case Incidence::SecrecyPrivate: if (! (mCriteria & ShowPrivate )) return false; break; case Incidence::SecrecyConfidential: if (! (mCriteria & ShowConfidential )) return false; break; default: return false; break; } } // kdDebug(5800) << "CalFilter::filterEvent(): " << event->getSummary() << endl; if (mCriteria & ShowCategories) { for (QStringList::Iterator it = mCategoryList.begin(); it != mCategoryList.end(); ++it ) { QStringList incidenceCategories = incidence->categories(); |