summaryrefslogtreecommitdiff
path: root/library/backend
Unidiff
Diffstat (limited to 'library/backend') (more/less context) (ignore 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
1070{ 1070{
1071 return ( mEnd.hour() - mStart.hour() ) * 3600 1071 return ( mEnd.hour() - mStart.hour() ) * 3600
1072 + (mEnd.minute() - mStart.minute() * 60 1072 + (mEnd.minute() - mStart.minute() * 60
1073 + mEnd.second() - mStart.second() ); 1073 + mEnd.second() - mStart.second() );
1074} 1074}
1075 1075
1076 1076
1077// vcal conversion code 1077// vcal conversion code
1078static inline VObject *safeAddPropValue( VObject *o, const char *prop, const QString &value ) 1078static inline VObject *safeAddPropValue( VObject *o, const char *prop, const QString &value )
1079{ 1079{
1080 VObject *ret = 0; 1080 VObject *ret = 0;
1081 if ( o && !value.isEmpty() ) 1081 if ( o && !value.isEmpty() )
1082 ret = addPropValue( o, prop, value.latin1() ); 1082 ret = addPropValue( o, prop, value.latin1() );
1083 return ret; 1083 return ret;
1084} 1084}
1085 1085
1086static inline VObject *safeAddProp( VObject *o, const char *prop) 1086static inline VObject *safeAddProp( VObject *o, const char *prop)
1087{ 1087{
1088 VObject *ret = 0; 1088 VObject *ret = 0;
1089 if ( o ) 1089 if ( o )
1090 ret = addProp( o, prop ); 1090 ret = addProp( o, prop );
1091 return ret; 1091 return ret;
1092} 1092}
1093 1093
1094/* 1094/*
1095 * Until we support vCal/iCal right 1095 * Until we support vCal/iCal right
1096 * we will make DTSTART and other things 1096 * we will make DTSTART and other things
1097 * be floating in the sense of 1097 * be floating in the sense of
1098 * RFC 2445 1098 * RFC 2445
1099 */ 1099 */
1100namespace { 1100namespace {
1101/* 1101/*
1102 * Convert QDateTime to iso8601 but take 1102 * Convert QDateTime to iso8601 but take
1103 * local time and do not use the Z at the end 1103 * local time and do not use the Z at the end
1104 * 1104 *
1105 */ 1105 */
1106 QCString toISOLocal( const QDateTime& dt ) { 1106 QCString toISOLocal( const QDateTime& dt ) {
1107 QCString str; 1107 QCString str;
1108 /* 1108 /*
1109 * year month day T Hour Minute Second 1109 * year month day T Hour Minute Second
1110 * 4 2 2 2 2 2 digits 1110 * 4 2 2 2 2 2 digits
1111 */ 1111 */
1112 str.sprintf("%04d%02d%02dT%02d%02d%02d", 1112 str.sprintf("%04d%02d%02dT%02d%02d%02d",
1113 dt.date().year(), 1113 dt.date().year(),
1114 dt.date().month(), 1114 dt.date().month(),
1115 dt.date().year(), 1115 dt.date().year(),
1116 dt.time().hour(), 1116 dt.time().hour(),
1117 dt.time().minute(), 1117 dt.time().minute(),
1118 dt.time().second() ); 1118 dt.time().second() );
1119 1119
1120 1120
1121 1121
1122 return str; 1122 return str;
1123 } 1123 }
1124 1124
1125 1125
1126}; 1126};
1127 1127
1128static VObject *createVObject( const Event &e ) 1128static VObject *createVObject( const Event &e )
1129{ 1129{
1130 VObject *vcal = newVObject( VCCalProp ); 1130 VObject *vcal = newVObject( VCCalProp );
1131 safeAddPropValue( vcal, VCVersionProp, "1.0" ); 1131 safeAddPropValue( vcal, VCVersionProp, "1.0" );
1132 VObject *event = safeAddProp( vcal, VCEventProp ); 1132 VObject *event = safeAddProp( vcal, VCEventProp );
1133 1133
1134 safeAddPropValue( event, VCDTstartProp, TimeConversion::toISO8601( e.start() ) ); 1134 safeAddPropValue( event, VCDTstartProp, toISOLocal( e.start() ) );
1135 safeAddPropValue( event, VCDTendProp, TimeConversion::toISO8601( e.end() ) ); 1135 safeAddPropValue( event, VCDTendProp, toISOLocal( e.end() ) );
1136 safeAddPropValue( event, "X-Qtopia-NOTES", e.description() ); 1136 safeAddPropValue( event, "X-Qtopia-NOTES", e.description() );
1137 safeAddPropValue( event, VCDescriptionProp, e.description() ); 1137 safeAddPropValue( event, VCDescriptionProp, e.description() );
1138 safeAddPropValue( event, VCLocationProp, e.location() ); 1138 safeAddPropValue( event, VCLocationProp, e.location() );
1139 1139
1140 if ( e.hasAlarm() ) { 1140 if ( e.hasAlarm() ) {
1141 VObject *alarm = safeAddProp( event, VCAAlarmProp ); 1141 VObject *alarm = safeAddProp( event, VCAAlarmProp );
1142 QDateTime dt = e.start(); 1142 QDateTime dt = e.start();
1143 dt = dt.addSecs( -e.alarmTime()*60 ); 1143 dt = dt.addSecs( -e.alarmTime()*60 );
1144 safeAddPropValue( alarm, VCRunTimeProp, TimeConversion::toISO8601( dt ) ); 1144 safeAddPropValue( alarm, VCRunTimeProp, toISOLocal( dt ) );
1145 safeAddPropValue( alarm, VCAudioContentProp, 1145 safeAddPropValue( alarm, VCAudioContentProp,
1146 (e.alarmSound() == Event::Silent ? "silent" : "alarm" ) ); 1146 (e.alarmSound() == Event::Silent ? "silent" : "alarm" ) );
1147 } 1147 }
1148 1148
1149 safeAddPropValue( event, "X-Qtopia-TIMEZONE", e.timeZone() ); 1149 safeAddPropValue( event, "X-Qtopia-TIMEZONE", e.timeZone() );
1150 1150
1151 if ( e.type() == Event::AllDay ) 1151 if ( e.type() == Event::AllDay )
1152 safeAddPropValue( event, "X-Qtopia-AllDay", e.timeZone() ); 1152 safeAddPropValue( event, "X-Qtopia-AllDay", e.timeZone() );
1153 1153
1154 // ### repeat missing 1154 // ### repeat missing
1155 1155
1156 // ### categories missing 1156 // ### categories missing
1157 1157
1158 return vcal; 1158 return vcal;
1159} 1159}
1160 1160
1161 1161
1162static Event parseVObject( VObject *obj ) 1162static Event parseVObject( VObject *obj )
1163{ 1163{
1164 Event e; 1164 Event e;
1165 1165
1166 bool haveAlarm = FALSE; 1166 bool haveAlarm = FALSE;
1167 bool haveStart = FALSE; 1167 bool haveStart = FALSE;
1168 bool haveEnd = FALSE; 1168 bool haveEnd = FALSE;
1169 QDateTime alarmTime; 1169 QDateTime alarmTime;
1170 Event::SoundTypeChoice soundType = Event::Silent; 1170 Event::SoundTypeChoice soundType = Event::Silent;
1171 1171
1172 VObjectIterator it; 1172 VObjectIterator it;
1173 initPropIterator( &it, obj ); 1173 initPropIterator( &it, obj );
1174 while( moreIteration( &it ) ) { 1174 while( moreIteration( &it ) ) {
1175 VObject *o = nextVObject( &it ); 1175 VObject *o = nextVObject( &it );
1176 QCString name = vObjectName( o ); 1176 QCString name = vObjectName( o );
1177 QCString value = vObjectStringZValue( o ); 1177 QCString value = vObjectStringZValue( o );
1178 if ( name == VCDTstartProp ) { 1178 if ( name == VCDTstartProp ) {
1179 e.setStart( TimeConversion::fromISO8601( value ) ); 1179 e.setStart( TimeConversion::fromISO8601( value ) );
1180 haveStart = TRUE; 1180 haveStart = TRUE;
1181 } 1181 }
1182 else if ( name == VCDTendProp ) { 1182 else if ( name == VCDTendProp ) {
1183 e.setEnd( TimeConversion::fromISO8601( value ) ); 1183 e.setEnd( TimeConversion::fromISO8601( value ) );
1184 haveEnd = TRUE; 1184 haveEnd = TRUE;
1185 } 1185 }
1186 else if ( name == "X-Qtopia-NOTES" ) { 1186 else if ( name == "X-Qtopia-NOTES" ) {
1187 e.setNotes( value ); 1187 e.setNotes( value );
1188 } 1188 }
1189 else if ( name == VCDescriptionProp ) { 1189 else if ( name == VCDescriptionProp ) {
1190 e.setDescription( value ); 1190 e.setDescription( value );
1191 } 1191 }
1192 else if ( name == VCLocationProp ) { 1192 else if ( name == VCLocationProp ) {
1193 e.setLocation( value ); 1193 e.setLocation( value );
1194 } 1194 }
1195 else if ( name == VCAudioContentProp ) { 1195 else if ( name == VCAudioContentProp ) {
1196 haveAlarm = TRUE; 1196 haveAlarm = TRUE;
1197 VObjectIterator nit; 1197 VObjectIterator nit;
1198 initPropIterator( &nit, o ); 1198 initPropIterator( &nit, o );
1199 while( moreIteration( &nit ) ) { 1199 while( moreIteration( &nit ) ) {
1200 VObject *o = nextVObject( &nit ); 1200 VObject *o = nextVObject( &nit );
1201 QCString name = vObjectName( o ); 1201 QCString name = vObjectName( o );
1202 QCString value = vObjectStringZValue( o ); 1202 QCString value = vObjectStringZValue( o );
1203 if ( name == VCRunTimeProp ) 1203 if ( name == VCRunTimeProp )
1204 alarmTime = TimeConversion::fromISO8601( value ); 1204 alarmTime = TimeConversion::fromISO8601( value );
1205 else if ( name == VCAudioContentProp ) { 1205 else if ( name == VCAudioContentProp ) {
1206 if ( value == "silent" ) 1206 if ( value == "silent" )
1207 soundType = Event::Silent; 1207 soundType = Event::Silent;
1208 else 1208 else