diff options
author | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-08-27 23:01:53 +0000 |
---|---|---|
committer | tpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2010-08-27 23:01:53 +0000 |
commit | cfa6b4114cea52b167caaaeb417f98f83edd690f (patch) | |
tree | 5fb46adfe9f1caf37e2716e79b148176b09574ab /libkcal/icalformat.cpp | |
parent | a3e46fcf743ccdac7c2461658898ca254bf64dd6 (diff) | |
download | tdepim-cfa6b4114cea52b167caaaeb417f98f83edd690f.tar.gz tdepim-cfa6b4114cea52b167caaaeb417f98f83edd690f.zip |
Initial (i.e. read only) support for RECURRENCE-ID modified incidence series.
Write support requires further debugging and/or compliance checks with respect to Zimbra;
there is no obvious reason why it should not be working but Zimbra fails with 409 when saving.
User interface support is mostly complete, with event links being tracked across deletes.
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdepim@1168937 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'libkcal/icalformat.cpp')
-rw-r--r-- | libkcal/icalformat.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/libkcal/icalformat.cpp b/libkcal/icalformat.cpp index 4fae0eaf2..c6a245c80 100644 --- a/libkcal/icalformat.cpp +++ b/libkcal/icalformat.cpp @@ -293,6 +293,50 @@ TQString ICalFormat::toString( Incidence *incidence ) return text; } +TQString ICalFormat::toString( Incidence *incidence, Calendar *calendar ) +{ + icalcomponent *component; + TQString text = ""; + + // See if there are any parent or child events that must be added to the string + if ( incidence->hasRecurrenceID() ) { + // Get the parent + IncidenceList il = incidence->childIncidences(); + IncidenceListIterator it; + it = il.begin(); + Incidence *parentIncidence; + parentIncidence = calendar->incidence(*it); + il = parentIncidence->childIncidences(); + if (il.count() > 0) { + for ( it = il.begin(); it != il.end(); ++it ) { + component = mImpl->writeIncidence( calendar->incidence(*it) ); + text = text + TQString::fromUtf8( icalcomponent_as_ical_string( component ) ); + icalcomponent_free( component ); + } + } + component = mImpl->writeIncidence( parentIncidence ); + text = text + TQString::fromUtf8( icalcomponent_as_ical_string( component ) ); + icalcomponent_free( component ); + } + else { + // This incidence is a potential parent + IncidenceList il = incidence->childIncidences(); + if (il.count() > 0) { + IncidenceListIterator it; + for ( it = il.begin(); it != il.end(); ++it ) { + component = mImpl->writeIncidence( calendar->incidence(*it) ); + text = text + TQString::fromUtf8( icalcomponent_as_ical_string( component ) ); + icalcomponent_free( component ); + } + } + component = mImpl->writeIncidence( incidence ); + text = text + TQString::fromUtf8( icalcomponent_as_ical_string( component ) ); + icalcomponent_free( component ); + } + + return text; +} + TQString ICalFormat::toString( RecurrenceRule *recurrence ) { icalproperty *property; |