-rw-r--r-- | korganizer/calendarview.cpp | 73 |
1 files changed, 56 insertions, 17 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index 26323b1..898da6c 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp @@ -3037,5 +3037,14 @@ void CalendarView::changeEventDisplay(Event *which, int action) time = 500; #endif - QTimer::singleShot( time, this, SLOT ( checkConflictForEvent() ) ); + bool checkC = false; + if ( mConflictingEvent->doesFloat() ) { + checkC = KOPrefs::instance()->mCheckConflictsAllDayAllDay + || KOPrefs::instance()->mCheckConflictsAllDayNonAD; + } else { + checkC = KOPrefs::instance()->mCheckConflictsNonADAllDay + || KOPrefs::instance()->mCheckConflictsNonADNonAD; + } + if ( checkC ) + QTimer::singleShot( time, this, SLOT ( checkConflictForEvent() ) ); } // } @@ -3056,4 +3065,19 @@ void CalendarView::checkConflictForEvent() return; } + CalFilter *filterIN = 0; + CalFilter *filterALL = 0; + CalFilter *filter = mFilters.first(); + while(filter) { + if ( filter->name() == KOPrefs::instance()->mFilterConflictEditItem) + filterIN = filter; + if ( filter->name() == KOPrefs::instance()->mFilterConflictAllItem ) + filterALL = filter; + filter = mFilters.next(); + } + if ( filterIN ) { + if ( !filterIN->filterCalendarItem( conflictingEvent ) ) { + return; + } + } QPtrList<Event> testlist = mCalendar->events(); Event * test = testlist.first(); @@ -3062,24 +3086,39 @@ void CalendarView::checkConflictForEvent() bool found = false; Event * cE = 0; + bool chAD = KOPrefs::instance()->mCheckConflictsAllDayAllDay; + bool chNad = KOPrefs::instance()->mCheckConflictsAllDayNonAD; + if ( !conflictingEvent->doesFloat() ) { + chAD = KOPrefs::instance()->mCheckConflictsNonADAllDay; + chNad = KOPrefs::instance()->mCheckConflictsNonADNonAD; + } topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") ); while ( test ) { qApp->processEvents(); - bool skip = false; - if ( found ) - skip = !test->matchTime( ¤t, &conflict ); - else - skip = !test->matchTime( ¤t, 0 ); - if ( !skip && !test->doesFloat() ) { - if ( conflictingEvent->isOverlapping ( test, &retVal, ¤t ) ) { - if ( ! found ) { - conflict = retVal; - cE = test; - } else { - if ( retVal < conflict ) { - conflict = retVal; - cE = test; + bool skip = ( test->doesFloat() && !chAD ) || ( !test->doesFloat() && !chNad ); + if ( !skip ) { + if ( filterALL ) { + if ( !filterALL->filterCalendarItem( test ) ) { + skip = true; + } + } + if ( !skip ) { + if ( found ) + skip = !test->matchTime( ¤t, &conflict ); + else + skip = !test->matchTime( ¤t, 0 ); + if ( !skip ) { + if ( conflictingEvent->isOverlapping ( test, &retVal, ¤t ) ) { + if ( ! found ) { + conflict = retVal; + cE = test; + } else { + if ( retVal < conflict ) { + conflict = retVal; + cE = test; + } + } + found = true; } } - found = true; } } @@ -3091,5 +3130,5 @@ void CalendarView::checkConflictForEvent() qApp->processEvents(); int km = KMessageBox::warningContinueCancel(this,mess, - i18n("KO/Pi Conflict delected"),i18n("Show date"),i18n("No problem!")); + i18n("KO/Pi Conflict detected"),i18n("Show date"),i18n("No problem!")); if ( km != KMessageBox::Continue ) { return; |