-rw-r--r-- | korganizer/komonthview.cpp | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/korganizer/komonthview.cpp b/korganizer/komonthview.cpp index 004ff50..cb69832 100644 --- a/korganizer/komonthview.cpp +++ b/korganizer/komonthview.cpp | |||
@@ -1247,68 +1247,77 @@ void KOMonthView::updateView() | |||
1247 | int i; | 1247 | int i; |
1248 | int timeSpan = (*cells).size()-1; | 1248 | int timeSpan = (*cells).size()-1; |
1249 | if ( KOPrefs::instance()->mMonthViewWeek ) | 1249 | if ( KOPrefs::instance()->mMonthViewWeek ) |
1250 | timeSpan = 6; | 1250 | timeSpan = 6; |
1251 | for( i = 0; i < timeSpan + 1; ++i ) { | 1251 | for( i = 0; i < timeSpan + 1; ++i ) { |
1252 | (*cells)[i]->startUpdateCell(); | 1252 | (*cells)[i]->startUpdateCell(); |
1253 | } | 1253 | } |
1254 | 1254 | ||
1255 | QPtrList<Event> events = calendar()->events(); | 1255 | QPtrList<Event> events = calendar()->events(); |
1256 | Event *event; | 1256 | Event *event; |
1257 | QDateTime dt; | 1257 | QDateTime dt; |
1258 | bool ok; | 1258 | bool ok; |
1259 | QDate endDate = mStartDate.addDays( timeSpan ); | 1259 | QDate endDate = mStartDate.addDays( timeSpan ); |
1260 | for( event = events.first(); event; event = events.next() ) { // for event | 1260 | for( event = events.first(); event; event = events.next() ) { // for event |
1261 | if ( event->doesRecur() ) { | 1261 | if ( event->doesRecur() ) { |
1262 | bool last; | 1262 | bool last; |
1263 | qDebug("********************************************** "); | ||
1264 | qDebug("Event summary: %s ", event->summary().latin1()); | ||
1263 | QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last ); | 1265 | QDateTime incidenceStart = event->recurrence()->getPreviousDateTime( QDateTime( mStartDate ) , &last ); |
1264 | QDateTime incidenceEnd; | 1266 | QDateTime incidenceEnd; |
1265 | int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() ); | 1267 | int eventlen = event->dtStart().date().daysTo ( event->dtEnd().date() ); |
1268 | qDebug("eventlen %d ", eventlen); | ||
1266 | bool invalid = false; | 1269 | bool invalid = false; |
1267 | while( true ) { | 1270 | while( true ) { |
1268 | if ( incidenceStart.isValid() ) { | 1271 | if ( incidenceStart.isValid() ) { |
1269 | incidenceEnd = incidenceStart.addDays( eventlen ); | 1272 | incidenceEnd = incidenceStart.addDays( eventlen ); |
1270 | int st = incidenceStart.date().daysTo( endDate ); | 1273 | int st = incidenceStart.date().daysTo( endDate ); |
1271 | if ( st >= 0 ) { // start before timeend | 1274 | if ( st >= 0 ) { // start before timeend |
1272 | int end = mStartDate.daysTo( incidenceEnd.date() ); | 1275 | int end = mStartDate.daysTo( incidenceEnd.date() ); |
1273 | if ( end >= 0 ) { // end after timestart --- got one! | 1276 | if ( end >= 0 ) { // end after timestart --- got one! |
1274 | //normalize | 1277 | //normalize |
1275 | st = timeSpan - st; | 1278 | st = timeSpan - st; |
1276 | if ( st < 0 ) st = 0; | 1279 | if ( st < 0 ) st = 0; |
1277 | if ( end > timeSpan ) end = timeSpan; | 1280 | if ( end > timeSpan ) end = timeSpan; |
1278 | int iii; | 1281 | int iii; |
1279 | //qDebug("found %s %d %d ",event->summary().latin1(), st, end ); | 1282 | //qDebug("found %s %d %d ",event->summary().latin1(), st, end ); |
1280 | for ( iii = st;iii<= end;++iii) | 1283 | for ( iii = st;iii<= end;++iii) |
1281 | (*cells)[iii]->insertEvent( event ); | 1284 | (*cells)[iii]->insertEvent( event ); |
1282 | } | 1285 | } |
1283 | } | 1286 | } |
1284 | } else { | 1287 | } else { |
1285 | if ( invalid ) | 1288 | if ( invalid ) |
1286 | break; | 1289 | break; |
1287 | invalid = true; | 1290 | invalid = true; |
1288 | //qDebug("invalid %s", event->summary().latin1()); | 1291 | qDebug("invalid %s", event->summary().latin1()); |
1289 | incidenceStart = QDateTime( mStartDate ).addSecs( -2 );; | 1292 | incidenceStart = QDateTime( mStartDate ).addSecs( -2 );; |
1290 | } | 1293 | } |
1291 | if ( last ) | 1294 | if ( last ) |
1292 | break; | 1295 | break; |
1293 | bool ok; | 1296 | bool ok; |
1297 | qDebug("TRY next occurence %s ", incidenceStart.toString().latin1()); | ||
1294 | incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok ); | 1298 | incidenceStart = event->getNextOccurence( incidenceStart.addSecs( 1 ) ,&ok ); |
1295 | if ( ! ok ) | 1299 | if ( ! ok ) { |
1300 | qDebug("NOT OK "); | ||
1296 | break; | 1301 | break; |
1297 | if ( incidenceStart.date() > endDate ) | 1302 | } |
1303 | if ( incidenceStart.date() > endDate ) { | ||
1304 | qDebug("incidenceStart.date() > endDate "); | ||
1298 | break; | 1305 | break; |
1306 | } | ||
1307 | qDebug("next occurence %s ", incidenceStart.toString().latin1()); | ||
1299 | } | 1308 | } |
1300 | } else { // no recur | 1309 | } else { // no recur |
1301 | int st = event->dtStart().date().daysTo( endDate ); | 1310 | int st = event->dtStart().date().daysTo( endDate ); |
1302 | if ( st >= 0 ) { // start before timeend | 1311 | if ( st >= 0 ) { // start before timeend |
1303 | int end = mStartDate.daysTo( event->dtEnd().date() ); | 1312 | int end = mStartDate.daysTo( event->dtEnd().date() ); |
1304 | if ( end >= 0 ) { // end after timestart --- got one! | 1313 | if ( end >= 0 ) { // end after timestart --- got one! |
1305 | //normalize | 1314 | //normalize |
1306 | st = timeSpan - st; | 1315 | st = timeSpan - st; |
1307 | if ( st < 0 ) st = 0; | 1316 | if ( st < 0 ) st = 0; |
1308 | if ( end > timeSpan ) end = timeSpan; | 1317 | if ( end > timeSpan ) end = timeSpan; |
1309 | int iii; | 1318 | int iii; |
1310 | for ( iii = st;iii<= end;++iii) | 1319 | for ( iii = st;iii<= end;++iii) |
1311 | (*cells)[iii]->insertEvent( event ); | 1320 | (*cells)[iii]->insertEvent( event ); |
1312 | } | 1321 | } |
1313 | } | 1322 | } |
1314 | } | 1323 | } |