summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--library/backend/event.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/library/backend/event.cpp b/library/backend/event.cpp
index 7cac314..7ccf16b 100644
--- a/library/backend/event.cpp
+++ b/library/backend/event.cpp
@@ -1062,64 +1062,98 @@ QDate EffectiveEvent::endDate() const
else
return mEvent.end().date();
}
/*!
\internal
*/
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, "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, 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;
}