-rw-r--r-- | library/backend/event.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/library/backend/event.cpp b/library/backend/event.cpp index 7ccf16b..2d02a34 100644 --- a/library/backend/event.cpp +++ b/library/backend/event.cpp @@ -1070,139 +1070,139 @@ int EffectiveEvent::size() const { return ( mEnd.hour() - mStart.hour() ) * 3600 + (mEnd.minute() - mStart.minute() * 60 + mEnd.second() - mStart.second() ); } // vcal conversion code static inline VObject *safeAddPropValue( VObject *o, const char *prop, const QString &value ) { VObject *ret = 0; if ( o && !value.isEmpty() ) ret = addPropValue( o, prop, value.latin1() ); return ret; } static inline VObject *safeAddProp( VObject *o, const char *prop) { VObject *ret = 0; if ( o ) ret = addProp( o, prop ); return ret; } /* * Until we support vCal/iCal right * we will make DTSTART and other things * be floating in the sense of * RFC 2445 */ namespace { /* * Convert QDateTime to iso8601 but take * local time and do not use the Z at the end * */ QCString toISOLocal( const QDateTime& dt ) { QCString str; /* * year month day T Hour Minute Second * 4 2 2 2 2 2 digits */ str.sprintf("%04d%02d%02dT%02d%02d%02d", dt.date().year(), dt.date().month(), dt.date().year(), dt.time().hour(), dt.time().minute(), dt.time().second() ); return str; } }; static VObject *createVObject( const Event &e ) { VObject *vcal = newVObject( VCCalProp ); safeAddPropValue( vcal, VCVersionProp, "1.0" ); VObject *event = safeAddProp( vcal, VCEventProp ); - safeAddPropValue( event, VCDTstartProp, TimeConversion::toISO8601( e.start() ) ); - safeAddPropValue( event, VCDTendProp, TimeConversion::toISO8601( e.end() ) ); + safeAddPropValue( event, VCDTstartProp, toISOLocal( e.start() ) ); + safeAddPropValue( event, VCDTendProp, toISOLocal( e.end() ) ); safeAddPropValue( event, "X-Qtopia-NOTES", e.description() ); safeAddPropValue( event, VCDescriptionProp, e.description() ); safeAddPropValue( event, VCLocationProp, e.location() ); if ( e.hasAlarm() ) { VObject *alarm = safeAddProp( event, VCAAlarmProp ); QDateTime dt = e.start(); dt = dt.addSecs( -e.alarmTime()*60 ); - safeAddPropValue( alarm, VCRunTimeProp, TimeConversion::toISO8601( dt ) ); + safeAddPropValue( alarm, VCRunTimeProp, toISOLocal( dt ) ); safeAddPropValue( alarm, VCAudioContentProp, (e.alarmSound() == Event::Silent ? "silent" : "alarm" ) ); } safeAddPropValue( event, "X-Qtopia-TIMEZONE", e.timeZone() ); if ( e.type() == Event::AllDay ) safeAddPropValue( event, "X-Qtopia-AllDay", e.timeZone() ); // ### repeat missing // ### categories missing return vcal; } static Event parseVObject( VObject *obj ) { Event e; bool haveAlarm = FALSE; bool haveStart = FALSE; bool haveEnd = FALSE; QDateTime alarmTime; Event::SoundTypeChoice soundType = Event::Silent; VObjectIterator it; initPropIterator( &it, obj ); while( moreIteration( &it ) ) { VObject *o = nextVObject( &it ); QCString name = vObjectName( o ); QCString value = vObjectStringZValue( o ); if ( name == VCDTstartProp ) { e.setStart( TimeConversion::fromISO8601( value ) ); haveStart = TRUE; } else if ( name == VCDTendProp ) { e.setEnd( TimeConversion::fromISO8601( value ) ); haveEnd = TRUE; } else if ( name == "X-Qtopia-NOTES" ) { e.setNotes( value ); } else if ( name == VCDescriptionProp ) { e.setDescription( value ); } else if ( name == VCLocationProp ) { e.setLocation( value ); } else if ( name == VCAudioContentProp ) { haveAlarm = TRUE; VObjectIterator nit; initPropIterator( &nit, o ); while( moreIteration( &nit ) ) { VObject *o = nextVObject( &nit ); QCString name = vObjectName( o ); QCString value = vObjectStringZValue( o ); if ( name == VCRunTimeProp ) alarmTime = TimeConversion::fromISO8601( value ); else if ( name == VCAudioContentProp ) { if ( value == "silent" ) soundType = Event::Silent; else |