-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 | |||
@@ -3036,7 +3036,16 @@ void CalendarView::changeEventDisplay(Event *which, int action) | |||
3036 | #ifdef DESKTOP_VERSION | 3036 | #ifdef DESKTOP_VERSION |
3037 | time = 500; | 3037 | time = 500; |
3038 | #endif | 3038 | #endif |
3039 | QTimer::singleShot( time, this, SLOT ( checkConflictForEvent() ) ); | 3039 | bool checkC = false; |
3040 | if ( mConflictingEvent->doesFloat() ) { | ||
3041 | checkC = KOPrefs::instance()->mCheckConflictsAllDayAllDay | ||
3042 | || KOPrefs::instance()->mCheckConflictsAllDayNonAD; | ||
3043 | } else { | ||
3044 | checkC = KOPrefs::instance()->mCheckConflictsNonADAllDay | ||
3045 | || KOPrefs::instance()->mCheckConflictsNonADNonAD; | ||
3046 | } | ||
3047 | if ( checkC ) | ||
3048 | QTimer::singleShot( time, this, SLOT ( checkConflictForEvent() ) ); | ||
3040 | } | 3049 | } |
3041 | // } | 3050 | // } |
3042 | } else { | 3051 | } else { |
@@ -3055,32 +3064,62 @@ void CalendarView::checkConflictForEvent() | |||
3055 | if ( ! conflictingEvent->matchTime( ¤t, 0 ) ) { | 3064 | if ( ! conflictingEvent->matchTime( ¤t, 0 ) ) { |
3056 | return; | 3065 | return; |
3057 | } | 3066 | } |
3067 | CalFilter *filterIN = 0; | ||
3068 | CalFilter *filterALL = 0; | ||
3069 | CalFilter *filter = mFilters.first(); | ||
3070 | while(filter) { | ||
3071 | if ( filter->name() == KOPrefs::instance()->mFilterConflictEditItem) | ||
3072 | filterIN = filter; | ||
3073 | if ( filter->name() == KOPrefs::instance()->mFilterConflictAllItem ) | ||
3074 | filterALL = filter; | ||
3075 | filter = mFilters.next(); | ||
3076 | } | ||
3077 | if ( filterIN ) { | ||
3078 | if ( !filterIN->filterCalendarItem( conflictingEvent ) ) { | ||
3079 | return; | ||
3080 | } | ||
3081 | } | ||
3058 | QPtrList<Event> testlist = mCalendar->events(); | 3082 | QPtrList<Event> testlist = mCalendar->events(); |
3059 | Event * test = testlist.first(); | 3083 | Event * test = testlist.first(); |
3060 | QDateTime conflict; | 3084 | QDateTime conflict; |
3061 | QDateTime retVal; | 3085 | QDateTime retVal; |
3062 | bool found = false; | 3086 | bool found = false; |
3063 | Event * cE = 0; | 3087 | Event * cE = 0; |
3088 | bool chAD = KOPrefs::instance()->mCheckConflictsAllDayAllDay; | ||
3089 | bool chNad = KOPrefs::instance()->mCheckConflictsAllDayNonAD; | ||
3090 | if ( !conflictingEvent->doesFloat() ) { | ||
3091 | chAD = KOPrefs::instance()->mCheckConflictsNonADAllDay; | ||
3092 | chNad = KOPrefs::instance()->mCheckConflictsNonADNonAD; | ||
3093 | } | ||
3064 | topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") ); | 3094 | topLevelWidget()->setCaption( i18n("Checking conflicts ... please wait") ); |
3065 | while ( test ) { | 3095 | while ( test ) { |
3066 | qApp->processEvents(); | 3096 | qApp->processEvents(); |
3067 | bool skip = false; | 3097 | bool skip = ( test->doesFloat() && !chAD ) || ( !test->doesFloat() && !chNad ); |
3068 | if ( found ) | 3098 | if ( !skip ) { |
3069 | skip = !test->matchTime( ¤t, &conflict ); | 3099 | if ( filterALL ) { |
3070 | else | 3100 | if ( !filterALL->filterCalendarItem( test ) ) { |
3071 | skip = !test->matchTime( ¤t, 0 ); | 3101 | skip = true; |
3072 | if ( !skip && !test->doesFloat() ) { | 3102 | } |
3073 | if ( conflictingEvent->isOverlapping ( test, &retVal, ¤t ) ) { | 3103 | } |
3074 | if ( ! found ) { | 3104 | if ( !skip ) { |
3075 | conflict = retVal; | 3105 | if ( found ) |
3076 | cE = test; | 3106 | skip = !test->matchTime( ¤t, &conflict ); |
3077 | } else { | 3107 | else |
3078 | if ( retVal < conflict ) { | 3108 | skip = !test->matchTime( ¤t, 0 ); |
3079 | conflict = retVal; | 3109 | if ( !skip ) { |
3080 | cE = test; | 3110 | if ( conflictingEvent->isOverlapping ( test, &retVal, ¤t ) ) { |
3111 | if ( ! found ) { | ||
3112 | conflict = retVal; | ||
3113 | cE = test; | ||
3114 | } else { | ||
3115 | if ( retVal < conflict ) { | ||
3116 | conflict = retVal; | ||
3117 | cE = test; | ||
3118 | } | ||
3119 | } | ||
3120 | found = true; | ||
3081 | } | 3121 | } |
3082 | } | 3122 | } |
3083 | found = true; | ||
3084 | } | 3123 | } |
3085 | } | 3124 | } |
3086 | test = testlist.next(); | 3125 | test = testlist.next(); |
@@ -3090,7 +3129,7 @@ void CalendarView::checkConflictForEvent() | |||
3090 | QString mess = i18n("The event\n%1\nconflicts with event\n%2\nat date\n%3.\n").arg(KGlobal::formatMessage ( conflictingEvent->summary(),0 ) ).arg( KGlobal::formatMessage ( cE->summary(),0 )).arg(KGlobal::locale()->formatDate(conflict.date()) ) ; | 3129 | QString mess = i18n("The event\n%1\nconflicts with event\n%2\nat date\n%3.\n").arg(KGlobal::formatMessage ( conflictingEvent->summary(),0 ) ).arg( KGlobal::formatMessage ( cE->summary(),0 )).arg(KGlobal::locale()->formatDate(conflict.date()) ) ; |
3091 | qApp->processEvents(); | 3130 | qApp->processEvents(); |
3092 | int km = KMessageBox::warningContinueCancel(this,mess, | 3131 | int km = KMessageBox::warningContinueCancel(this,mess, |
3093 | i18n("KO/Pi Conflict delected"),i18n("Show date"),i18n("No problem!")); | 3132 | i18n("KO/Pi Conflict detected"),i18n("Show date"),i18n("No problem!")); |
3094 | if ( km != KMessageBox::Continue ) { | 3133 | if ( km != KMessageBox::Continue ) { |
3095 | return; | 3134 | return; |
3096 | } | 3135 | } |