summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--library/backend/event.cpp6
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