-rw-r--r-- | libopie/pim/orecur.cpp | 66 |
1 files changed, 65 insertions, 1 deletions
diff --git a/libopie/pim/orecur.cpp b/libopie/pim/orecur.cpp index e6a4787..e3b45b4 100644 --- a/libopie/pim/orecur.cpp +++ b/libopie/pim/orecur.cpp | |||
@@ -1 +1,3 @@ | |||
1 | #include <time.h> | ||
2 | |||
1 | #include <qshared.h> | 3 | #include <qshared.h> |
@@ -4,2 +6,3 @@ | |||
4 | 6 | ||
7 | #include "otimezone.h" | ||
5 | #include "orecur.h" | 8 | #include "orecur.h" |
@@ -83,2 +86,10 @@ bool ORecur::doesRecur( const QDate& date ) { | |||
83 | bool ORecur::nextOcurrence( const QDate& from, QDate& next ) { | 86 | bool ORecur::nextOcurrence( const QDate& from, QDate& next ) { |
87 | bool stillLooking; | ||
88 | stillLooking = p_nextOccurrence( from, next ); | ||
89 | while ( stillLooking && data->list.contains(next) ) | ||
90 | stillLooking = p_nextOccurrence( next.addDays(1), next ); | ||
91 | |||
92 | return stillLooking; | ||
93 | } | ||
94 | bool ORecur::p_nextOccurrence( const QDate& from, QDate& next ) { | ||
84 | 95 | ||
@@ -97,3 +108,3 @@ bool ORecur::nextOcurrence( const QDate& from, QDate& next ) { | |||
97 | 108 | ||
98 | if (start() >= from) { | 109 | if (start() >= from ) { |
99 | next = start(); | 110 | next = start(); |
@@ -445,2 +456,55 @@ void ORecur::checkOrModify() { | |||
445 | } | 456 | } |
457 | QString ORecur::toString()const { | ||
458 | QString buf; | ||
459 | |||
460 | buf += " rtype=\""; | ||
461 | switch ( data->type ) { | ||
462 | case ORecur::Daily: | ||
463 | buf += "Daily"; | ||
464 | break; | ||
465 | case ORecur::Weekly: | ||
466 | buf += "Weekly"; | ||
467 | break; | ||
468 | case ORecur::MonthlyDay: | ||
469 | buf += "MonthlyDay"; | ||
470 | break; | ||
471 | case ORecur::MonthlyDate: | ||
472 | buf += "MonthlyDate"; | ||
473 | break; | ||
474 | case ORecur::Yearly: | ||
475 | buf += "Yearly"; | ||
476 | break; | ||
477 | default: | ||
478 | buf += "NoRepeat"; | ||
479 | break; | ||
480 | } | ||
481 | buf += "\""; | ||
482 | if (data->days > 0 ) | ||
483 | buf += " rweekdays=\"" + QString::number( static_cast<int>( data->days ) ) + "\""; | ||
484 | if ( data->pos != 0 ) | ||
485 | buf += " rposition=\"" + QString::number(data->pos ) + "\""; | ||
486 | |||
487 | buf += " rfreq=\"" + QString::number( data->freq ) + "\""; | ||
488 | buf += " rhasenddate=\"" + QString::number( static_cast<int>( data->hasEnd ) ) + "\""; | ||
489 | if ( data->hasEnd ) | ||
490 | buf += " enddt=\"" | ||
491 | + QString::number( OTimeZone::utc().fromUTCDateTime( QDateTime( data->end, QTime(12,0,0) ) ) ) | ||
492 | + "\""; | ||
493 | buf += " created=\"" + QString::number( OTimeZone::utc().fromUTCDateTime( data->create ) ) + "\""; | ||
494 | |||
495 | if ( data->list.isEmpty() ) return buf; | ||
496 | // save exceptions list here!! | ||
497 | ExceptionList::ConstIterator it; | ||
498 | ExceptionList list = data->list; | ||
499 | buf += " exceptions=\""; | ||
500 | QDate date; | ||
501 | for ( it = list.begin(); it != list.end(); ++it ) { | ||
502 | date = (*it); | ||
503 | if ( it != list.begin() ) buf += " "; | ||
504 | |||
505 | buf += QCString().sprintf("%04d%02d%02d", date.year(), date.month(), date.day() ); | ||
506 | } | ||
507 | buf += "\""; | ||
446 | 508 | ||
509 | return buf; | ||
510 | } | ||