summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2005-01-16 11:22:49 (UTC)
committer zautrix <zautrix>2005-01-16 11:22:49 (UTC)
commitd57ed4438bbd6e3d9a7a0e46283d3e7645b4e47b (patch) (side-by-side diff)
tree522438ce187845f6d74d7888be203759138615fa
parent92b8de5ff678bddf69b9f0a45c1d90829c50c592 (diff)
downloadkdepimpi-d57ed4438bbd6e3d9a7a0e46283d3e7645b4e47b.zip
kdepimpi-d57ed4438bbd6e3d9a7a0e46283d3e7645b4e47b.tar.gz
kdepimpi-d57ed4438bbd6e3d9a7a0e46283d3e7645b4e47b.tar.bz2
filter impl
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--korganizer/calendarview.cpp8
-rw-r--r--korganizer/filtereditdialog.cpp7
-rw-r--r--libkcal/calfilter.cpp29
-rw-r--r--libkcal/calfilter.h3
4 files changed, 37 insertions, 10 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp
index 8258c74..02c5e45 100644
--- a/korganizer/calendarview.cpp
+++ b/korganizer/calendarview.cpp
@@ -1078,4 +1078,5 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
++deletedEventR;
} else {
+ if ( !filterIN || filterIN->filterCalendarItem( inR ) ){
inR->setLastModified( modifiedCalendar );
inL = inR->clone();
@@ -1086,6 +1087,8 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
++addedEvent;
}
+ }
} else {
if ( inR->lastModified() > mLastCalendarSync || mode == 5 ) {
+ if ( !filterIN || filterIN->filterCalendarItem( inR ) ){
inR->setLastModified( modifiedCalendar );
inL = inR->clone();
@@ -1093,4 +1096,5 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
local->addIncidence( inL );
++addedEvent;
+ }
} else {
checkExternSyncEvent(eventRSyncSharp, inR);
@@ -1135,4 +1139,5 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
} else {
if ( ! mSyncManager->mWriteBackExistingOnly ) {
+ if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){
inL->removeID(mCurrentSyncDevice );
++addedEventR;
@@ -1145,4 +1150,5 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
}
}
+ }
} else {
if ( inL->lastModified() < mLastCalendarSync && mode != 4 ) {
@@ -1152,4 +1158,5 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
} else {
if ( ! mSyncManager->mWriteBackExistingOnly ) {
+ if ( !filterOUT || filterOUT->filterCalendarItem( inL ) ){
++addedEventR;
inL->setLastModified( modifiedCalendar );
@@ -1162,4 +1169,5 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int
}
}
+ }
inL = el.next();
}
diff --git a/korganizer/filtereditdialog.cpp b/korganizer/filtereditdialog.cpp
index ca09844..df84911 100644
--- a/korganizer/filtereditdialog.cpp
+++ b/korganizer/filtereditdialog.cpp
@@ -237,4 +237,8 @@ void FilterEditDialog::readFilter(CalFilter *filter)
mEditor->mConfidentialCheck->setChecked(c & CalFilter::ShowConfidential);
+ mEditor->mEventCheck->setChecked(c & CalFilter::HideEvents);
+ mEditor->mTodoCheck->setChecked(c & CalFilter::HideTodos);
+ mEditor->mJournalCheck->setChecked(c & CalFilter::HideJournals);
+
if (c & CalFilter::ShowCategories) {
mEditor->mCatShowCheck->setChecked(true);
@@ -260,4 +264,7 @@ void FilterEditDialog::writeFilter(CalFilter *filter)
if (mEditor->mPrivateCheck->isChecked()) c |= CalFilter::ShowPrivate;
if (mEditor->mConfidentialCheck->isChecked()) c |= CalFilter::ShowConfidential;
+ if (mEditor->mEventCheck->isChecked()) c |= CalFilter::HideEvents;
+ if (mEditor->mTodoCheck->isChecked()) c |= CalFilter::HideTodos;
+ if (mEditor->mJournalCheck->isChecked()) c |= CalFilter::HideJournals;
filter->setCriteria(c);
diff --git a/libkcal/calfilter.cpp b/libkcal/calfilter.cpp
index c182db5..c425dfc 100644
--- a/libkcal/calfilter.cpp
+++ b/libkcal/calfilter.cpp
@@ -65,7 +65,4 @@ void CalFilter::apply(QPtrList<Todo> *eventlist)
{
if (!mEnabled) return;
-
-// kdDebug(5800) << "CalFilter::apply()" << endl;
-
Todo *event = eventlist->first();
while(event) {
@@ -80,9 +77,18 @@ void CalFilter::apply(QPtrList<Todo> *eventlist)
// 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;
@@ -91,9 +97,14 @@ bool CalFilter::filterEvent(Event *event)
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;
diff --git a/libkcal/calfilter.h b/libkcal/calfilter.h
index 5ad0064..29db441 100644
--- a/libkcal/calfilter.h
+++ b/libkcal/calfilter.h
@@ -62,5 +62,6 @@ class CalFilter {
*/
void apply(QPtrList<Todo> *todolist);
-
+ bool CalFilter::filterCalendarItem(Incidence *in);
+ bool CalFilter::filterJournal(Journal *in);
/**
Apply filter criteria on the specified event. Return true, if event passes