-rw-r--r-- | korganizer/calendarview.cpp | 23 | ||||
-rw-r--r-- | libkcal/alarm.cpp | 16 | ||||
-rw-r--r-- | libkcal/alarm.h | 2 | ||||
-rw-r--r-- | libkcal/phoneformat.cpp | 58 |
4 files changed, 63 insertions, 36 deletions
diff --git a/korganizer/calendarview.cpp b/korganizer/calendarview.cpp index cfd9290..d5d31e2 100644 --- a/korganizer/calendarview.cpp +++ b/korganizer/calendarview.cpp | |||
@@ -1121,12 +1121,13 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int | |||
1121 | } | 1121 | } |
1122 | } | 1122 | } |
1123 | } | 1123 | } |
1124 | } | 1124 | } |
1125 | inL = el.next(); | 1125 | inL = el.next(); |
1126 | } | 1126 | } |
1127 | int delFut = 0; | ||
1127 | if ( KOPrefs::instance()->mWriteBackInFuture ) { | 1128 | if ( KOPrefs::instance()->mWriteBackInFuture ) { |
1128 | er = remote->rawIncidences(); | 1129 | er = remote->rawIncidences(); |
1129 | inR = er.first(); | 1130 | inR = er.first(); |
1130 | QDateTime dt; | 1131 | QDateTime dt; |
1131 | QDateTime cur = QDateTime::currentDateTime(); | 1132 | QDateTime cur = QDateTime::currentDateTime(); |
1132 | QDateTime end = cur.addSecs( KOPrefs::instance()->mWriteBackInFuture * 3600 *24 *7 ); | 1133 | QDateTime end = cur.addSecs( KOPrefs::instance()->mWriteBackInFuture * 3600 *24 *7 ); |
@@ -1135,15 +1136,24 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int | |||
1135 | Todo * t = (Todo*)inR; | 1136 | Todo * t = (Todo*)inR; |
1136 | if ( t->hasDueDate() ) | 1137 | if ( t->hasDueDate() ) |
1137 | dt = t->dtDue(); | 1138 | dt = t->dtDue(); |
1138 | else | 1139 | else |
1139 | dt = cur.addSecs( 62 ); | 1140 | dt = cur.addSecs( 62 ); |
1140 | } | 1141 | } |
1141 | else dt = inR->dtStart(); | 1142 | else if (inR->type() == "Event" ) { |
1142 | if ( dt < cur || dt > end ) | 1143 | bool ok; |
1144 | dt = inR->getNextOccurence( cur, &ok ); | ||
1145 | if ( !ok ) | ||
1146 | dt = cur.addSecs( -62 ); | ||
1147 | } | ||
1148 | else | ||
1149 | dt = inR->dtStart(); | ||
1150 | if ( dt < cur || dt > end ) { | ||
1143 | remote->deleteIncidence( inR ); | 1151 | remote->deleteIncidence( inR ); |
1152 | ++delFut; | ||
1153 | } | ||
1144 | inR = er.next(); | 1154 | inR = er.next(); |
1145 | } | 1155 | } |
1146 | } | 1156 | } |
1147 | bar.hide(); | 1157 | bar.hide(); |
1148 | mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); | 1158 | mLastCalendarSync = QDateTime::currentDateTime().addSecs( 1 ); |
1149 | eventLSync->setReadOnly( false ); | 1159 | eventLSync->setReadOnly( false ); |
@@ -1155,12 +1165,17 @@ bool CalendarView::synchronizeCalendar( Calendar* local, Calendar* remote, int | |||
1155 | eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); | 1165 | eventLSync->setLocation(i18n("Local from: ") + mCurrentSyncName ); |
1156 | eventLSync->setReadOnly( true ); | 1166 | eventLSync->setReadOnly( true ); |
1157 | if ( mGlobalSyncMode == SYNC_MODE_NORMAL) | 1167 | if ( mGlobalSyncMode == SYNC_MODE_NORMAL) |
1158 | remote->addEvent( eventRSync ); | 1168 | remote->addEvent( eventRSync ); |
1159 | QString mes; | 1169 | QString mes; |
1160 | mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR ); | 1170 | mes .sprintf( i18n("Synchronization summary:\n\n %d items added to local\n %d items added to remote\n %d items updated on local\n %d items updated on remote\n %d items deleted on local\n %d items deleted on remote\n"),addedEvent, addedEventR, changedLocal, changedRemote, deletedEventL, deletedEventR ); |
1171 | QString delmess; | ||
1172 | if ( delFut ) { | ||
1173 | delmess.sprintf( i18n("%d items skipped on remote,\nbecause they are in the past or\nmore than %d weeks in the future.\n"),delFut, KOPrefs::instance()->mWriteBackInFuture ); | ||
1174 | mes += delmess; | ||
1175 | } | ||
1161 | if ( KOPrefs::instance()->mShowSyncSummary ) { | 1176 | if ( KOPrefs::instance()->mShowSyncSummary ) { |
1162 | KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); | 1177 | KMessageBox::information(this, mes, i18n("KO/Pi Synchronization") ); |
1163 | } | 1178 | } |
1164 | qDebug( mes ); | 1179 | qDebug( mes ); |
1165 | mCalendar->checkAlarmForIncidence( 0, true ); | 1180 | mCalendar->checkAlarmForIncidence( 0, true ); |
1166 | return syncOK; | 1181 | return syncOK; |
@@ -1242,18 +1257,16 @@ void CalendarView::syncExternal( int mode ) | |||
1242 | qApp->processEvents(); | 1257 | qApp->processEvents(); |
1243 | if ( syncOK ) { | 1258 | if ( syncOK ) { |
1244 | if ( KOPrefs::instance()->mWriteBackFile ) | 1259 | if ( KOPrefs::instance()->mWriteBackFile ) |
1245 | { | 1260 | { |
1246 | QPtrList<Incidence> iL = mCalendar->rawIncidences(); | 1261 | QPtrList<Incidence> iL = mCalendar->rawIncidences(); |
1247 | Incidence* inc = iL.first(); | 1262 | Incidence* inc = iL.first(); |
1248 | /* obsolete | ||
1249 | while ( inc ) { | 1263 | while ( inc ) { |
1250 | inc->setZaurusStat( inc->revision () ); | 1264 | inc->removeID(mCurrentSyncDevice); |
1251 | inc = iL.next(); | 1265 | inc = iL.next(); |
1252 | } | 1266 | } |
1253 | */ | ||
1254 | #ifndef DESKTOP_VERSION | 1267 | #ifndef DESKTOP_VERSION |
1255 | if ( sharpFormat ) | 1268 | if ( sharpFormat ) |
1256 | sharpFormat->save(calendar); | 1269 | sharpFormat->save(calendar); |
1257 | #endif | 1270 | #endif |
1258 | if ( phoneFormat ) | 1271 | if ( phoneFormat ) |
1259 | phoneFormat->save(calendar); | 1272 | phoneFormat->save(calendar); |
diff --git a/libkcal/alarm.cpp b/libkcal/alarm.cpp index 07812c2..29e6205 100644 --- a/libkcal/alarm.cpp +++ b/libkcal/alarm.cpp | |||
@@ -297,12 +297,28 @@ void Alarm::setTime(const QDateTime &alarmTime) | |||
297 | { | 297 | { |
298 | mAlarmTime = alarmTime; | 298 | mAlarmTime = alarmTime; |
299 | mHasTime = true; | 299 | mHasTime = true; |
300 | 300 | ||
301 | mParent->updated(); | 301 | mParent->updated(); |
302 | } | 302 | } |
303 | int Alarm::offset() | ||
304 | { | ||
305 | if ( hasTime() ) { | ||
306 | if (mParent->type()=="Todo") { | ||
307 | Todo *t = static_cast<Todo*>(mParent); | ||
308 | return t->dtDue().secsTo( mAlarmTime ) ; | ||
309 | } else | ||
310 | return mParent->dtStart().secsTo( mAlarmTime ) ; | ||
311 | } | ||
312 | else | ||
313 | { | ||
314 | return mOffset.asSeconds(); | ||
315 | } | ||
316 | |||
317 | } | ||
318 | |||
303 | 319 | ||
304 | QDateTime Alarm::time() const | 320 | QDateTime Alarm::time() const |
305 | { | 321 | { |
306 | if ( hasTime() ) | 322 | if ( hasTime() ) |
307 | return mAlarmTime; | 323 | return mAlarmTime; |
308 | else | 324 | else |
diff --git a/libkcal/alarm.h b/libkcal/alarm.h index ae2eca3..682b626 100644 --- a/libkcal/alarm.h +++ b/libkcal/alarm.h | |||
@@ -55,13 +55,13 @@ class Alarm : public CustomProperties | |||
55 | the alarm's type-specific properties are initialised to null. | 55 | the alarm's type-specific properties are initialised to null. |
56 | @param type type of alarm. | 56 | @param type type of alarm. |
57 | */ | 57 | */ |
58 | void setType(Type type); | 58 | void setType(Type type); |
59 | /** Return the type of the alarm */ | 59 | /** Return the type of the alarm */ |
60 | Type type() const; | 60 | Type type() const; |
61 | 61 | int offset(); | |
62 | /** Set the alarm to be a display alarm. | 62 | /** Set the alarm to be a display alarm. |
63 | @param text text to display when the alarm is triggered. | 63 | @param text text to display when the alarm is triggered. |
64 | */ | 64 | */ |
65 | void setDisplayAlarm(const QString &text); | 65 | void setDisplayAlarm(const QString &text); |
66 | /** Set the text to be displayed when the alarm is triggered. | 66 | /** Set the text to be displayed when the alarm is triggered. |
67 | Ignored if the alarm is not a display alarm. | 67 | Ignored if the alarm is not a display alarm. |
diff --git a/libkcal/phoneformat.cpp b/libkcal/phoneformat.cpp index 6d0da5c..178a63e 100644 --- a/libkcal/phoneformat.cpp +++ b/libkcal/phoneformat.cpp | |||
@@ -135,13 +135,13 @@ ulong PhoneFormat::getCsumTodo( Todo* todo ) | |||
135 | attList << QString::number( prio ); | 135 | attList << QString::number( prio ); |
136 | QString alarmString = "na"; | 136 | QString alarmString = "na"; |
137 | Alarm *alarm; | 137 | Alarm *alarm; |
138 | if ( todo->alarms().count() > 0 ) { | 138 | if ( todo->alarms().count() > 0 ) { |
139 | alarm = todo->alarms().first(); | 139 | alarm = todo->alarms().first(); |
140 | if ( alarm->enabled() ) { | 140 | if ( alarm->enabled() ) { |
141 | alarmString = QString::number(alarm->startOffset().asSeconds() ); | 141 | alarmString = QString::number(alarm->offset() ); |
142 | } | 142 | } |
143 | } | 143 | } |
144 | attList << alarmString; | 144 | attList << alarmString; |
145 | attList << todo->categoriesStr(); | 145 | attList << todo->categoriesStr(); |
146 | attList << todo->secrecyStr(); | 146 | attList << todo->secrecyStr(); |
147 | return PhoneFormat::getCsum(attList ); | 147 | return PhoneFormat::getCsum(attList ); |
@@ -156,13 +156,13 @@ ulong PhoneFormat::getCsumEvent( Event* event ) | |||
156 | attList << event->location(); | 156 | attList << event->location(); |
157 | QString alarmString = "na"; | 157 | QString alarmString = "na"; |
158 | Alarm *alarm; | 158 | Alarm *alarm; |
159 | if ( event->alarms().count() > 0 ) { | 159 | if ( event->alarms().count() > 0 ) { |
160 | alarm = event->alarms().first(); | 160 | alarm = event->alarms().first(); |
161 | if ( alarm->enabled() ) { | 161 | if ( alarm->enabled() ) { |
162 | alarmString = QString::number( alarm->startOffset().asSeconds() ); | 162 | alarmString = QString::number( alarm->offset() ); |
163 | } | 163 | } |
164 | } | 164 | } |
165 | attList << alarmString; | 165 | attList << alarmString; |
166 | Recurrence* rec = event->recurrence(); | 166 | Recurrence* rec = event->recurrence(); |
167 | QStringList list; | 167 | QStringList list; |
168 | bool writeEndDate = false; | 168 | bool writeEndDate = false; |
@@ -274,14 +274,14 @@ ulong PhoneFormat::getCsum( const QStringList & attList) | |||
274 | add = add * mul *ii*ii*ii; | 274 | add = add * mul *ii*ii*ii; |
275 | cSum += add; | 275 | cSum += add; |
276 | } | 276 | } |
277 | } | 277 | } |
278 | 278 | ||
279 | } | 279 | } |
280 | QString dump = attList.join(","); | 280 | //QString dump = attList.join(","); |
281 | qDebug("csum: %d %s", cSum,dump.latin1()); | 281 | //qDebug("csum: %d %s", cSum,dump.latin1()); |
282 | 282 | ||
283 | return cSum; | 283 | return cSum; |
284 | 284 | ||
285 | } | 285 | } |
286 | //extern "C" GSM_Error GSM_InitConnection(GSM_StateMachine *s, int ReplyNum); | 286 | //extern "C" GSM_Error GSM_InitConnection(GSM_StateMachine *s, int ReplyNum); |
287 | #include <stdlib.h> | 287 | #include <stdlib.h> |
@@ -298,13 +298,12 @@ bool PhoneFormat::load( Calendar *calendar, Calendar *existingCal) | |||
298 | QString command ="./kammu --backup " + fileName + " -yes" ; | 298 | QString command ="./kammu --backup " + fileName + " -yes" ; |
299 | int ret = system ( command.latin1() ); | 299 | int ret = system ( command.latin1() ); |
300 | if ( ret != 0 ) { | 300 | if ( ret != 0 ) { |
301 | qDebug("Error::command returned %d", ret); | 301 | qDebug("Error::command returned %d", ret); |
302 | return false; | 302 | return false; |
303 | } | 303 | } |
304 | qDebug("Command returned %d", ret); | ||
305 | VCalFormat vfload; | 304 | VCalFormat vfload; |
306 | vfload.setLocalTime ( true ); | 305 | vfload.setLocalTime ( true ); |
307 | qDebug("loading file ..."); | 306 | qDebug("loading file ..."); |
308 | 307 | ||
309 | if ( ! vfload.load( calendar, fileName ) ) | 308 | if ( ! vfload.load( calendar, fileName ) ) |
310 | return false; | 309 | return false; |
@@ -345,13 +344,13 @@ bool PhoneFormat::load( Calendar *calendar, Calendar *existingCal) | |||
345 | ev->setCategories( QStringList() ); | 344 | ev->setCategories( QStringList() ); |
346 | } | 345 | } |
347 | int id = ev->pilotId(); | 346 | int id = ev->pilotId(); |
348 | Todo *event; | 347 | Todo *event; |
349 | event = existingCal->todo( mProfileName ,QString::number( id ) ); | 348 | event = existingCal->todo( mProfileName ,QString::number( id ) ); |
350 | if ( event ) { | 349 | if ( event ) { |
351 | qDebug("copy todo %s ", event->summary().latin1()); | 350 | //qDebug("copy todo %s ", event->summary().latin1()); |
352 | 351 | ||
353 | event = (Todo*)event->clone(); | 352 | event = (Todo*)event->clone(); |
354 | copyTodo( event, ev ); | 353 | copyTodo( event, ev ); |
355 | calendar->deleteTodo( ev ); | 354 | calendar->deleteTodo( ev ); |
356 | calendar->addTodo( event); | 355 | calendar->addTodo( event); |
357 | } | 356 | } |
@@ -377,21 +376,23 @@ void PhoneFormat::copyEvent( Event* to, Event* from ) | |||
377 | to->setLocation( from->location() ); | 376 | to->setLocation( from->location() ); |
378 | if ( !from->description().isEmpty() ) | 377 | if ( !from->description().isEmpty() ) |
379 | to->setDescription( from->description() ); | 378 | to->setDescription( from->description() ); |
380 | if ( !from->summary().isEmpty() ) | 379 | if ( !from->summary().isEmpty() ) |
381 | to->setSummary( from->summary() ); | 380 | to->setSummary( from->summary() ); |
382 | 381 | ||
383 | QPtrListIterator<Alarm> it( from->alarms() ); | 382 | if ( from->alarms().count() ) { |
384 | if ( it.current() ) | ||
385 | to->clearAlarms(); | 383 | to->clearAlarms(); |
386 | const Alarm *a; | 384 | Alarm *a = from->alarms().first(); |
387 | while( (a = it.current()) ) { | 385 | Alarm *b = to->newAlarm( ); |
388 | Alarm *b = new Alarm( *a ); | 386 | b->setEnabled( a->enabled() ); |
389 | b->setParent( to ); | 387 | if ( a->hasStartOffset() ) { |
390 | to->addAlarm( b ); | 388 | b->setStartOffset( a->startOffset() ); |
391 | ++it; | 389 | } |
390 | if ( a->hasTime() ) | ||
391 | b->setTime( a->time() ); | ||
392 | |||
392 | } | 393 | } |
393 | QStringList cat = to->categories(); | 394 | QStringList cat = to->categories(); |
394 | QStringList catFrom = from->categories(); | 395 | QStringList catFrom = from->categories(); |
395 | QString nCat; | 396 | QString nCat; |
396 | int iii; | 397 | int iii; |
397 | for ( iii = 0; iii < catFrom.count();++iii ) { | 398 | for ( iii = 0; iii < catFrom.count();++iii ) { |
@@ -417,22 +418,23 @@ void PhoneFormat::copyTodo( Todo* to, Todo* from ) | |||
417 | to->setLocation( from->location() ); | 418 | to->setLocation( from->location() ); |
418 | if ( !from->description().isEmpty() ) | 419 | if ( !from->description().isEmpty() ) |
419 | to->setDescription( from->description() ); | 420 | to->setDescription( from->description() ); |
420 | if ( !from->summary().isEmpty() ) | 421 | if ( !from->summary().isEmpty() ) |
421 | to->setSummary( from->summary() ); | 422 | to->setSummary( from->summary() ); |
422 | 423 | ||
423 | QPtrListIterator<Alarm> it( from->alarms() ); | 424 | if ( from->alarms().count() ) { |
424 | if ( it.current() ) | ||
425 | to->clearAlarms(); | 425 | to->clearAlarms(); |
426 | const Alarm *a; | 426 | Alarm *a = from->alarms().first(); |
427 | while( (a = it.current()) ) { | 427 | Alarm *b = to->newAlarm( ); |
428 | Alarm *b = new Alarm( *a ); | 428 | b->setEnabled( a->enabled() ); |
429 | b->setParent( to ); | 429 | if ( a->hasStartOffset() ) |
430 | to->addAlarm( b ); | 430 | b->setStartOffset( a->startOffset() ); |
431 | ++it; | 431 | if ( a->hasTime() ) |
432 | b->setTime( a->time() ); | ||
432 | } | 433 | } |
434 | |||
433 | QStringList cat = to->categories(); | 435 | QStringList cat = to->categories(); |
434 | QStringList catFrom = from->categories(); | 436 | QStringList catFrom = from->categories(); |
435 | QString nCat; | 437 | QString nCat; |
436 | int iii; | 438 | int iii; |
437 | for ( iii = 0; iii < catFrom.count();++iii ) { | 439 | for ( iii = 0; iii < catFrom.count();++iii ) { |
438 | nCat = catFrom[iii]; | 440 | nCat = catFrom[iii]; |
@@ -530,16 +532,13 @@ bool PhoneFormat::save( Calendar *calendar) | |||
530 | qDebug("Error S::command returned %d. asking users", ret); | 532 | qDebug("Error S::command returned %d. asking users", ret); |
531 | int retval = KMessageBox::warningContinueCancel(0, | 533 | int retval = KMessageBox::warningContinueCancel(0, |
532 | i18n("Error accessing device!\nPlease turn on connection\nand retry!"),i18n("KO/Pi phone sync"),i18n("Retry"),i18n("Cancel")); | 534 | i18n("Error accessing device!\nPlease turn on connection\nand retry!"),i18n("KO/Pi phone sync"),i18n("Retry"),i18n("Cancel")); |
533 | if ( retval != KMessageBox::Continue ) | 535 | if ( retval != KMessageBox::Continue ) |
534 | return false; | 536 | return false; |
535 | } | 537 | } |
536 | if ( ret != 0 ) { | 538 | |
537 | qDebug("Error S::command returned %d", ret); | ||
538 | return false; | ||
539 | } | ||
540 | // 5 reread data | 539 | // 5 reread data |
541 | message = i18n(" Rereading all data ... "); | 540 | message = i18n(" Rereading all data ... "); |
542 | status.setText ( message ); | 541 | status.setText ( message ); |
543 | qApp->processEvents(); | 542 | qApp->processEvents(); |
544 | CalendarLocal* calendarTemp = new CalendarLocal(); | 543 | CalendarLocal* calendarTemp = new CalendarLocal(); |
545 | calendarTemp->setTimeZoneId( calendar->timeZoneId()); | 544 | calendarTemp->setTimeZoneId( calendar->timeZoneId()); |
@@ -576,13 +575,13 @@ bool PhoneFormat::save( Calendar *calendar) | |||
576 | 575 | ||
577 | break; | 576 | break; |
578 | } | 577 | } |
579 | ev1 = er1.next(); | 578 | ev1 = er1.next(); |
580 | } | 579 | } |
581 | if ( ! ev1 ) { | 580 | if ( ! ev1 ) { |
582 | ev->removeID(mProfileName); | 581 | // ev->removeID(mProfileName); |
583 | qDebug("ERROR: No event found on phone for %s ", ev->summary().latin1()); | 582 | qDebug("ERROR: No event found on phone for %s ", ev->summary().latin1()); |
584 | } | 583 | } |
585 | 584 | ||
586 | 585 | ||
587 | ev = er.next(); | 586 | ev = er.next(); |
588 | } | 587 | } |
@@ -591,32 +590,31 @@ bool PhoneFormat::save( Calendar *calendar) | |||
591 | to = tl.first(); | 590 | to = tl.first(); |
592 | procCount = 0; | 591 | procCount = 0; |
593 | QPtrList<Todo> tl1 = calendarTemp->rawTodos(); | 592 | QPtrList<Todo> tl1 = calendarTemp->rawTodos(); |
594 | Todo* to1 ; | 593 | Todo* to1 ; |
595 | message = i18n(" Comparing todo # "); | 594 | message = i18n(" Comparing todo # "); |
596 | while ( to ) { | 595 | while ( to ) { |
597 | qDebug("todo2 %d ", procCount); | ||
598 | status.setText ( message + QString::number ( ++procCount ) ); | 596 | status.setText ( message + QString::number ( ++procCount ) ); |
599 | qApp->processEvents(); | 597 | qApp->processEvents(); |
600 | uint csum; | 598 | uint csum; |
601 | csum = PhoneFormat::getCsumTodo( to ); | 599 | csum = PhoneFormat::getCsumTodo( to ); |
602 | QString cSum = QString::number( csum ); | 600 | QString cSum = QString::number( csum ); |
603 | //to->setCsum( mProfileName, cSum ); | 601 | //to->setCsum( mProfileName, cSum ); |
604 | qDebug("Todo cSum %s ", cSum.latin1()); | 602 | //qDebug("Todo cSum %s ", cSum.latin1()); |
605 | Todo* to1 = tl1.first(); | 603 | Todo* to1 = tl1.first(); |
606 | while ( to1 ) { | 604 | while ( to1 ) { |
607 | if ( to1->getCsum( mProfileName ) == cSum ) { | 605 | if ( to1->getCsum( mProfileName ) == cSum ) { |
608 | tl1.remove( to1 ); | 606 | tl1.remove( to1 ); |
609 | afterSave( to ); | 607 | afterSave( to ); |
610 | to->setID(mProfileName, to1->getID(mProfileName) ); | 608 | to->setID(mProfileName, to1->getID(mProfileName) ); |
611 | break; | 609 | break; |
612 | } | 610 | } |
613 | to1 = tl1.next(); | 611 | to1 = tl1.next(); |
614 | } | 612 | } |
615 | if ( ! to1 ) { | 613 | if ( ! to1 ) { |
616 | to->removeID(mProfileName); | 614 | //to->removeID(mProfileName); |
617 | qDebug("ERROR: No todo found on phone for %s ", to->summary().latin1()); | 615 | qDebug("ERROR: No todo found on phone for %s ", to->summary().latin1()); |
618 | } | 616 | } |
619 | 617 | ||
620 | to = tl.next(); | 618 | to = tl.next(); |
621 | } | 619 | } |
622 | delete calendarTemp; | 620 | delete calendarTemp; |