summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--korganizer/komonthview.cpp15
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
@@ -1239,84 +1239,93 @@ void KOMonthView::updateView()
1239 clearSelection(); 1239 clearSelection();
1240 QPtrVector<MonthViewCell> *cells; 1240 QPtrVector<MonthViewCell> *cells;
1241 if ( mShowWeekView ) { 1241 if ( mShowWeekView ) {
1242 cells = &mCellsW; 1242 cells = &mCellsW;
1243 } else { 1243 } else {
1244 cells = &mCells; 1244 cells = &mCells;
1245 } 1245 }
1246#if 1 1246#if 1
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 }
1315 } 1324 }
1316 // insert due todos 1325 // insert due todos
1317 QPtrList<Todo> todos = calendar()->todos( ); 1326 QPtrList<Todo> todos = calendar()->todos( );
1318 Todo *todo; 1327 Todo *todo;
1319 for(todo = todos.first(); todo; todo = todos.next()) { 1328 for(todo = todos.first(); todo; todo = todos.next()) {
1320 //insertTodo( todo ); 1329 //insertTodo( todo );
1321 if ( todo->hasDueDate() ) { 1330 if ( todo->hasDueDate() ) {
1322 int day = mStartDate.daysTo( todo->dtDue().date() ); 1331 int day = mStartDate.daysTo( todo->dtDue().date() );