summaryrefslogtreecommitdiffabout
authorzautrix <zautrix>2004-07-11 09:44:35 (UTC)
committer zautrix <zautrix>2004-07-11 09:44:35 (UTC)
commit2aeb681a7e8a0696608485f36d9c0561ba505c5c (patch) (unidiff)
tree72918e536cb8d447e6e8acb213294299ec09de56
parente5707eabc31da78bc299029de2cefd84d77291cd (diff)
downloadkdepimpi-2aeb681a7e8a0696608485f36d9c0561ba505c5c.zip
kdepimpi-2aeb681a7e8a0696608485f36d9c0561ba505c5c.tar.gz
kdepimpi-2aeb681a7e8a0696608485f36d9c0561ba505c5c.tar.bz2
removed two debug output
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libkcal/icalformatimpl.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/libkcal/icalformatimpl.cpp b/libkcal/icalformatimpl.cpp
index 964ffe3..3437f45 100644
--- a/libkcal/icalformatimpl.cpp
+++ b/libkcal/icalformatimpl.cpp
@@ -1118,815 +1118,815 @@ Attachment *ICalFormatImpl::readAttachment(icalproperty *attach)
1118{ 1118{
1119 icalattach *a = icalproperty_get_attach(attach); 1119 icalattach *a = icalproperty_get_attach(attach);
1120 icalparameter_value v = ICAL_VALUE_NONE; 1120 icalparameter_value v = ICAL_VALUE_NONE;
1121 icalparameter_encoding e = ICAL_ENCODING_NONE; 1121 icalparameter_encoding e = ICAL_ENCODING_NONE;
1122 1122
1123 Attachment *attachment = 0; 1123 Attachment *attachment = 0;
1124 /* 1124 /*
1125 icalparameter *vp = icalproperty_get_first_parameter(attach, ICAL_VALUE_PARAMETER); 1125 icalparameter *vp = icalproperty_get_first_parameter(attach, ICAL_VALUE_PARAMETER);
1126 if (vp) 1126 if (vp)
1127 v = icalparameter_get_value(vp); 1127 v = icalparameter_get_value(vp);
1128 1128
1129 icalparameter *ep = icalproperty_get_first_parameter(attach, ICAL_ENCODING_PARAMETER); 1129 icalparameter *ep = icalproperty_get_first_parameter(attach, ICAL_ENCODING_PARAMETER);
1130 if (ep) 1130 if (ep)
1131 e = icalparameter_get_encoding(ep); 1131 e = icalparameter_get_encoding(ep);
1132 */ 1132 */
1133 int isurl = icalattach_get_is_url (a); 1133 int isurl = icalattach_get_is_url (a);
1134 if (isurl == 0) 1134 if (isurl == 0)
1135 attachment = new Attachment((const char*)icalattach_get_data(a)); 1135 attachment = new Attachment((const char*)icalattach_get_data(a));
1136 else { 1136 else {
1137 attachment = new Attachment(QString(icalattach_get_url(a))); 1137 attachment = new Attachment(QString(icalattach_get_url(a)));
1138 } 1138 }
1139 1139
1140 icalparameter *p = icalproperty_get_first_parameter(attach, ICAL_FMTTYPE_PARAMETER); 1140 icalparameter *p = icalproperty_get_first_parameter(attach, ICAL_FMTTYPE_PARAMETER);
1141 if (p) 1141 if (p)
1142 attachment->setMimeType(QString(icalparameter_get_fmttype(p))); 1142 attachment->setMimeType(QString(icalparameter_get_fmttype(p)));
1143 1143
1144 return attachment; 1144 return attachment;
1145} 1145}
1146#include <qtextcodec.h> 1146#include <qtextcodec.h>
1147void ICalFormatImpl::readIncidence(icalcomponent *parent,Incidence *incidence) 1147void ICalFormatImpl::readIncidence(icalcomponent *parent,Incidence *incidence)
1148{ 1148{
1149 readIncidenceBase(parent,incidence); 1149 readIncidenceBase(parent,incidence);
1150 1150
1151 icalproperty *p = icalcomponent_get_first_property(parent,ICAL_ANY_PROPERTY); 1151 icalproperty *p = icalcomponent_get_first_property(parent,ICAL_ANY_PROPERTY);
1152 bool readrec = false; 1152 bool readrec = false;
1153 const char *text; 1153 const char *text;
1154 int intvalue; 1154 int intvalue;
1155 icaltimetype icaltime; 1155 icaltimetype icaltime;
1156 icaldurationtype icalduration; 1156 icaldurationtype icalduration;
1157 struct icalrecurrencetype rectype; 1157 struct icalrecurrencetype rectype;
1158 QStringList categories; 1158 QStringList categories;
1159 1159
1160 while (p) { 1160 while (p) {
1161 icalproperty_kind kind = icalproperty_isa(p); 1161 icalproperty_kind kind = icalproperty_isa(p);
1162 switch (kind) { 1162 switch (kind) {
1163 1163
1164 case ICAL_CREATED_PROPERTY: 1164 case ICAL_CREATED_PROPERTY:
1165 icaltime = icalproperty_get_created(p); 1165 icaltime = icalproperty_get_created(p);
1166 incidence->setCreated(readICalDateTime(icaltime)); 1166 incidence->setCreated(readICalDateTime(icaltime));
1167 break; 1167 break;
1168 1168
1169 case ICAL_SEQUENCE_PROPERTY: // sequence 1169 case ICAL_SEQUENCE_PROPERTY: // sequence
1170 intvalue = icalproperty_get_sequence(p); 1170 intvalue = icalproperty_get_sequence(p);
1171 incidence->setRevision(intvalue); 1171 incidence->setRevision(intvalue);
1172 break; 1172 break;
1173 1173
1174 case ICAL_LASTMODIFIED_PROPERTY: // last modification date 1174 case ICAL_LASTMODIFIED_PROPERTY: // last modification date
1175 icaltime = icalproperty_get_lastmodified(p); 1175 icaltime = icalproperty_get_lastmodified(p);
1176 incidence->setLastModified(readICalDateTime(icaltime)); 1176 incidence->setLastModified(readICalDateTime(icaltime));
1177 break; 1177 break;
1178 1178
1179 case ICAL_DTSTART_PROPERTY: // start date and time 1179 case ICAL_DTSTART_PROPERTY: // start date and time
1180 icaltime = icalproperty_get_dtstart(p); 1180 icaltime = icalproperty_get_dtstart(p);
1181 if (icaltime.is_date) { 1181 if (icaltime.is_date) {
1182 incidence->setDtStart(QDateTime(readICalDate(icaltime),QTime(0,0,0))); 1182 incidence->setDtStart(QDateTime(readICalDate(icaltime),QTime(0,0,0)));
1183 incidence->setFloats(true); 1183 incidence->setFloats(true);
1184 } else { 1184 } else {
1185 incidence->setDtStart(readICalDateTime(icaltime)); 1185 incidence->setDtStart(readICalDateTime(icaltime));
1186 } 1186 }
1187 break; 1187 break;
1188 1188
1189 case ICAL_DURATION_PROPERTY: // start date and time 1189 case ICAL_DURATION_PROPERTY: // start date and time
1190 icalduration = icalproperty_get_duration(p); 1190 icalduration = icalproperty_get_duration(p);
1191 incidence->setDuration(readICalDuration(icalduration)); 1191 incidence->setDuration(readICalDuration(icalduration));
1192 break; 1192 break;
1193 1193
1194 case ICAL_DESCRIPTION_PROPERTY: // description 1194 case ICAL_DESCRIPTION_PROPERTY: // description
1195 text = icalproperty_get_description(p); 1195 text = icalproperty_get_description(p);
1196 incidence->setDescription(QString::fromUtf8(text)); 1196 incidence->setDescription(QString::fromUtf8(text));
1197 break; 1197 break;
1198 1198
1199 case ICAL_SUMMARY_PROPERTY: // summary 1199 case ICAL_SUMMARY_PROPERTY: // summary
1200 { 1200 {
1201 text = icalproperty_get_summary(p); 1201 text = icalproperty_get_summary(p);
1202 incidence->setSummary(QString::fromUtf8(text)); 1202 incidence->setSummary(QString::fromUtf8(text));
1203 } 1203 }
1204 break; 1204 break;
1205 case ICAL_STATUS_PROPERTY: // summary 1205 case ICAL_STATUS_PROPERTY: // summary
1206 { 1206 {
1207 if ( ICAL_STATUS_CANCELLED == icalproperty_get_status(p) ) 1207 if ( ICAL_STATUS_CANCELLED == icalproperty_get_status(p) )
1208 incidence->setCancelled( true ); 1208 incidence->setCancelled( true );
1209 } 1209 }
1210 break; 1210 break;
1211 1211
1212 case ICAL_LOCATION_PROPERTY: // location 1212 case ICAL_LOCATION_PROPERTY: // location
1213 text = icalproperty_get_location(p); 1213 text = icalproperty_get_location(p);
1214 incidence->setLocation(QString::fromUtf8(text)); 1214 incidence->setLocation(QString::fromUtf8(text));
1215 break; 1215 break;
1216 1216
1217#if 0 1217#if 0
1218 // status 1218 // status
1219 if ((vo = isAPropertyOf(vincidence, VCStatusProp)) != 0) { 1219 if ((vo = isAPropertyOf(vincidence, VCStatusProp)) != 0) {
1220 incidence->setStatus(s = fakeCString(vObjectUStringZValue(vo))); 1220 incidence->setStatus(s = fakeCString(vObjectUStringZValue(vo)));
1221 deleteStr(s); 1221 deleteStr(s);
1222 } 1222 }
1223 else 1223 else
1224 incidence->setStatus("NEEDS ACTION"); 1224 incidence->setStatus("NEEDS ACTION");
1225#endif 1225#endif
1226 1226
1227 case ICAL_PRIORITY_PROPERTY: // priority 1227 case ICAL_PRIORITY_PROPERTY: // priority
1228 intvalue = icalproperty_get_priority(p); 1228 intvalue = icalproperty_get_priority(p);
1229 incidence->setPriority(intvalue); 1229 incidence->setPriority(intvalue);
1230 break; 1230 break;
1231 1231
1232 case ICAL_CATEGORIES_PROPERTY: // categories 1232 case ICAL_CATEGORIES_PROPERTY: // categories
1233 text = icalproperty_get_categories(p); 1233 text = icalproperty_get_categories(p);
1234 categories.append(QString::fromUtf8(text)); 1234 categories.append(QString::fromUtf8(text));
1235 break; 1235 break;
1236 //******************************************* 1236 //*******************************************
1237 case ICAL_RRULE_PROPERTY: 1237 case ICAL_RRULE_PROPERTY:
1238 // we do need (maybe )start datetime of incidence for recurrence 1238 // we do need (maybe )start datetime of incidence for recurrence
1239 // such that we can read recurrence only after we read incidence completely 1239 // such that we can read recurrence only after we read incidence completely
1240 readrec = true; 1240 readrec = true;
1241 rectype = icalproperty_get_rrule(p); 1241 rectype = icalproperty_get_rrule(p);
1242 break; 1242 break;
1243 1243
1244 case ICAL_EXDATE_PROPERTY: 1244 case ICAL_EXDATE_PROPERTY:
1245 icaltime = icalproperty_get_exdate(p); 1245 icaltime = icalproperty_get_exdate(p);
1246 incidence->addExDate(readICalDate(icaltime)); 1246 incidence->addExDate(readICalDate(icaltime));
1247 break; 1247 break;
1248 1248
1249 case ICAL_CLASS_PROPERTY: { 1249 case ICAL_CLASS_PROPERTY: {
1250 int inttext = icalproperty_get_class(p); 1250 int inttext = icalproperty_get_class(p);
1251 if (inttext == ICAL_CLASS_PUBLIC ) { 1251 if (inttext == ICAL_CLASS_PUBLIC ) {
1252 incidence->setSecrecy(Incidence::SecrecyPublic); 1252 incidence->setSecrecy(Incidence::SecrecyPublic);
1253 } else if (inttext == ICAL_CLASS_CONFIDENTIAL ) { 1253 } else if (inttext == ICAL_CLASS_CONFIDENTIAL ) {
1254 incidence->setSecrecy(Incidence::SecrecyConfidential); 1254 incidence->setSecrecy(Incidence::SecrecyConfidential);
1255 } else { 1255 } else {
1256 incidence->setSecrecy(Incidence::SecrecyPrivate); 1256 incidence->setSecrecy(Incidence::SecrecyPrivate);
1257 } 1257 }
1258 } 1258 }
1259 break; 1259 break;
1260 1260
1261 case ICAL_ATTACH_PROPERTY: // attachments 1261 case ICAL_ATTACH_PROPERTY: // attachments
1262 incidence->addAttachment(readAttachment(p)); 1262 incidence->addAttachment(readAttachment(p));
1263 break; 1263 break;
1264 1264
1265 default: 1265 default:
1266// kdDebug(5800) << "ICALFormat::readIncidence(): Unknown property: " << kind 1266// kdDebug(5800) << "ICALFormat::readIncidence(): Unknown property: " << kind
1267// << endl; 1267// << endl;
1268 break; 1268 break;
1269 } 1269 }
1270 1270
1271 p = icalcomponent_get_next_property(parent,ICAL_ANY_PROPERTY); 1271 p = icalcomponent_get_next_property(parent,ICAL_ANY_PROPERTY);
1272 } 1272 }
1273 if ( readrec ) { 1273 if ( readrec ) {
1274 readRecurrenceRule(rectype,incidence); 1274 readRecurrenceRule(rectype,incidence);
1275 } 1275 }
1276 // kpilot stuff 1276 // kpilot stuff
1277// TODO: move this application-specific code to kpilot 1277// TODO: move this application-specific code to kpilot
1278 QString kp = incidence->nonKDECustomProperty("X-PILOTID"); 1278 QString kp = incidence->nonKDECustomProperty("X-PILOTID");
1279 if (!kp.isNull()) { 1279 if (!kp.isNull()) {
1280 incidence->setPilotId(kp.toInt()); 1280 incidence->setPilotId(kp.toInt());
1281 } 1281 }
1282 kp = incidence->nonKDECustomProperty("X-PILOTSTAT"); 1282 kp = incidence->nonKDECustomProperty("X-PILOTSTAT");
1283 if (!kp.isNull()) { 1283 if (!kp.isNull()) {
1284 incidence->setSyncStatus(kp.toInt()); 1284 incidence->setSyncStatus(kp.toInt());
1285 } 1285 }
1286 kp = incidence->nonKDECustomProperty("X-ZAURUSID"); 1286 kp = incidence->nonKDECustomProperty("X-ZAURUSID");
1287 if (!kp.isNull()) { 1287 if (!kp.isNull()) {
1288 incidence->setZaurusId(kp.toInt()); 1288 incidence->setZaurusId(kp.toInt());
1289 } 1289 }
1290 1290
1291 kp = incidence->nonKDECustomProperty("X-ZAURUSUID"); 1291 kp = incidence->nonKDECustomProperty("X-ZAURUSUID");
1292 if (!kp.isNull()) { 1292 if (!kp.isNull()) {
1293 incidence->setZaurusUid(kp.toInt()); 1293 incidence->setZaurusUid(kp.toInt());
1294 } 1294 }
1295 1295
1296 kp = incidence->nonKDECustomProperty("X-ZAURUSSTAT"); 1296 kp = incidence->nonKDECustomProperty("X-ZAURUSSTAT");
1297 if (!kp.isNull()) { 1297 if (!kp.isNull()) {
1298 incidence->setZaurusStat(kp.toInt()); 1298 incidence->setZaurusStat(kp.toInt());
1299 } 1299 }
1300 1300
1301 // Cancel backwards compatibility mode for subsequent changes by the application 1301 // Cancel backwards compatibility mode for subsequent changes by the application
1302 incidence->recurrence()->setCompatVersion(); 1302 incidence->recurrence()->setCompatVersion();
1303 1303
1304 // add categories 1304 // add categories
1305 incidence->setCategories(categories); 1305 incidence->setCategories(categories);
1306 1306
1307 // iterate through all alarms 1307 // iterate through all alarms
1308 for (icalcomponent *alarm = icalcomponent_get_first_component(parent,ICAL_VALARM_COMPONENT); 1308 for (icalcomponent *alarm = icalcomponent_get_first_component(parent,ICAL_VALARM_COMPONENT);
1309 alarm; 1309 alarm;
1310 alarm = icalcomponent_get_next_component(parent,ICAL_VALARM_COMPONENT)) { 1310 alarm = icalcomponent_get_next_component(parent,ICAL_VALARM_COMPONENT)) {
1311 readAlarm(alarm,incidence); 1311 readAlarm(alarm,incidence);
1312 } 1312 }
1313} 1313}
1314 1314
1315void ICalFormatImpl::readIncidenceBase(icalcomponent *parent,IncidenceBase *incidenceBase) 1315void ICalFormatImpl::readIncidenceBase(icalcomponent *parent,IncidenceBase *incidenceBase)
1316{ 1316{
1317 icalproperty *p = icalcomponent_get_first_property(parent,ICAL_ANY_PROPERTY); 1317 icalproperty *p = icalcomponent_get_first_property(parent,ICAL_ANY_PROPERTY);
1318 1318
1319 while (p) { 1319 while (p) {
1320 icalproperty_kind kind = icalproperty_isa(p); 1320 icalproperty_kind kind = icalproperty_isa(p);
1321 switch (kind) { 1321 switch (kind) {
1322 1322
1323 case ICAL_UID_PROPERTY: // unique id 1323 case ICAL_UID_PROPERTY: // unique id
1324 incidenceBase->setUid(QString::fromUtf8(icalproperty_get_uid(p))); 1324 incidenceBase->setUid(QString::fromUtf8(icalproperty_get_uid(p)));
1325 break; 1325 break;
1326 1326
1327 case ICAL_ORGANIZER_PROPERTY: // organizer 1327 case ICAL_ORGANIZER_PROPERTY: // organizer
1328 incidenceBase->setOrganizer(QString::fromUtf8(icalproperty_get_organizer(p))); 1328 incidenceBase->setOrganizer(QString::fromUtf8(icalproperty_get_organizer(p)));
1329 break; 1329 break;
1330 1330
1331 case ICAL_ATTENDEE_PROPERTY: // attendee 1331 case ICAL_ATTENDEE_PROPERTY: // attendee
1332 incidenceBase->addAttendee(readAttendee(p)); 1332 incidenceBase->addAttendee(readAttendee(p));
1333 break; 1333 break;
1334 1334
1335 default: 1335 default:
1336 break; 1336 break;
1337 } 1337 }
1338 1338
1339 p = icalcomponent_get_next_property(parent,ICAL_ANY_PROPERTY); 1339 p = icalcomponent_get_next_property(parent,ICAL_ANY_PROPERTY);
1340 } 1340 }
1341 1341
1342 // custom properties 1342 // custom properties
1343 readCustomProperties(parent, incidenceBase); 1343 readCustomProperties(parent, incidenceBase);
1344} 1344}
1345 1345
1346void ICalFormatImpl::readCustomProperties(icalcomponent *parent,CustomProperties *properties) 1346void ICalFormatImpl::readCustomProperties(icalcomponent *parent,CustomProperties *properties)
1347{ 1347{
1348 QMap<QCString, QString> customProperties; 1348 QMap<QCString, QString> customProperties;
1349 1349
1350 icalproperty *p = icalcomponent_get_first_property(parent,ICAL_X_PROPERTY); 1350 icalproperty *p = icalcomponent_get_first_property(parent,ICAL_X_PROPERTY);
1351 1351
1352 while (p) { 1352 while (p) {
1353 QString value = QString::fromUtf8(icalproperty_get_x(p)); 1353 QString value = QString::fromUtf8(icalproperty_get_x(p));
1354 customProperties[icalproperty_get_x_name(p)] = value; 1354 customProperties[icalproperty_get_x_name(p)] = value;
1355 //qDebug("ICalFormatImpl::readCustomProperties %s %s",value.latin1(), icalproperty_get_x_name(p) ); 1355 //qDebug("ICalFormatImpl::readCustomProperties %s %s",value.latin1(), icalproperty_get_x_name(p) );
1356 1356
1357 p = icalcomponent_get_next_property(parent,ICAL_X_PROPERTY); 1357 p = icalcomponent_get_next_property(parent,ICAL_X_PROPERTY);
1358 } 1358 }
1359 1359
1360 properties->setCustomProperties(customProperties); 1360 properties->setCustomProperties(customProperties);
1361} 1361}
1362 1362
1363void ICalFormatImpl::readRecurrenceRule(struct icalrecurrencetype rrule,Incidence *incidence) 1363void ICalFormatImpl::readRecurrenceRule(struct icalrecurrencetype rrule,Incidence *incidence)
1364{ 1364{
1365// kdDebug(5800) << "Read recurrence for " << incidence->summary() << endl; 1365// kdDebug(5800) << "Read recurrence for " << incidence->summary() << endl;
1366 1366
1367 Recurrence *recur = incidence->recurrence(); 1367 Recurrence *recur = incidence->recurrence();
1368 recur->setCompatVersion(mCalendarVersion); 1368 recur->setCompatVersion(mCalendarVersion);
1369 recur->unsetRecurs(); 1369 recur->unsetRecurs();
1370 1370
1371 struct icalrecurrencetype r = rrule; 1371 struct icalrecurrencetype r = rrule;
1372 1372
1373 dumpIcalRecurrence(r); 1373 dumpIcalRecurrence(r);
1374 readRecurrence( r, recur, incidence); 1374 readRecurrence( r, recur, incidence);
1375} 1375}
1376 1376
1377void ICalFormatImpl::readRecurrence( const struct icalrecurrencetype &r, Recurrence* recur, Incidence *incidence) 1377void ICalFormatImpl::readRecurrence( const struct icalrecurrencetype &r, Recurrence* recur, Incidence *incidence)
1378{ 1378{
1379 int wkst; 1379 int wkst;
1380 int index = 0; 1380 int index = 0;
1381 short day = 0; 1381 short day = 0;
1382 QBitArray qba(7); 1382 QBitArray qba(7);
1383 int frequ = r.freq; 1383 int frequ = r.freq;
1384 int interv = r.interval; 1384 int interv = r.interval;
1385 // preprocessing for odd recurrence definitions 1385 // preprocessing for odd recurrence definitions
1386 1386
1387 if ( r.freq == ICAL_MONTHLY_RECURRENCE ) { 1387 if ( r.freq == ICAL_MONTHLY_RECURRENCE ) {
1388 if ( r.by_month[0] != ICAL_RECURRENCE_ARRAY_MAX) { 1388 if ( r.by_month[0] != ICAL_RECURRENCE_ARRAY_MAX) {
1389 interv = 12; 1389 interv = 12;
1390 } 1390 }
1391 } 1391 }
1392 if ( r.freq == ICAL_YEARLY_RECURRENCE ) { 1392 if ( r.freq == ICAL_YEARLY_RECURRENCE ) {
1393 if ( r.by_month[0] != ICAL_RECURRENCE_ARRAY_MAX && r.by_day[0] != ICAL_RECURRENCE_ARRAY_MAX ) { 1393 if ( r.by_month[0] != ICAL_RECURRENCE_ARRAY_MAX && r.by_day[0] != ICAL_RECURRENCE_ARRAY_MAX ) {
1394 frequ = ICAL_MONTHLY_RECURRENCE; 1394 frequ = ICAL_MONTHLY_RECURRENCE;
1395 interv = 12* r.interval; 1395 interv = 12* r.interval;
1396 } 1396 }
1397 } 1397 }
1398 1398
1399 switch (frequ) { 1399 switch (frequ) {
1400 case ICAL_MINUTELY_RECURRENCE: 1400 case ICAL_MINUTELY_RECURRENCE:
1401 if (!icaltime_is_null_time(r.until)) { 1401 if (!icaltime_is_null_time(r.until)) {
1402 recur->setMinutely(interv,readICalDateTime(r.until)); 1402 recur->setMinutely(interv,readICalDateTime(r.until));
1403 } else { 1403 } else {
1404 if (r.count == 0) 1404 if (r.count == 0)
1405 recur->setMinutely(interv,-1); 1405 recur->setMinutely(interv,-1);
1406 else 1406 else
1407 recur->setMinutely(interv,r.count); 1407 recur->setMinutely(interv,r.count);
1408 } 1408 }
1409 break; 1409 break;
1410 case ICAL_HOURLY_RECURRENCE: 1410 case ICAL_HOURLY_RECURRENCE:
1411 if (!icaltime_is_null_time(r.until)) { 1411 if (!icaltime_is_null_time(r.until)) {
1412 recur->setHourly(interv,readICalDateTime(r.until)); 1412 recur->setHourly(interv,readICalDateTime(r.until));
1413 } else { 1413 } else {
1414 if (r.count == 0) 1414 if (r.count == 0)
1415 recur->setHourly(interv,-1); 1415 recur->setHourly(interv,-1);
1416 else 1416 else
1417 recur->setHourly(interv,r.count); 1417 recur->setHourly(interv,r.count);
1418 } 1418 }
1419 break; 1419 break;
1420 case ICAL_DAILY_RECURRENCE: 1420 case ICAL_DAILY_RECURRENCE:
1421 if (!icaltime_is_null_time(r.until)) { 1421 if (!icaltime_is_null_time(r.until)) {
1422 recur->setDaily(interv,readICalDate(r.until)); 1422 recur->setDaily(interv,readICalDate(r.until));
1423 } else { 1423 } else {
1424 if (r.count == 0) 1424 if (r.count == 0)
1425 recur->setDaily(interv,-1); 1425 recur->setDaily(interv,-1);
1426 else 1426 else
1427 recur->setDaily(interv,r.count); 1427 recur->setDaily(interv,r.count);
1428 } 1428 }
1429 break; 1429 break;
1430 case ICAL_WEEKLY_RECURRENCE: 1430 case ICAL_WEEKLY_RECURRENCE:
1431 // kdDebug(5800) << "WEEKLY_RECURRENCE" << endl; 1431 // kdDebug(5800) << "WEEKLY_RECURRENCE" << endl;
1432 wkst = (r.week_start + 5)%7 + 1; 1432 wkst = (r.week_start + 5)%7 + 1;
1433 if (!icaltime_is_null_time(r.until)) { 1433 if (!icaltime_is_null_time(r.until)) {
1434 recur->setWeekly(interv,qba,readICalDate(r.until),wkst); 1434 recur->setWeekly(interv,qba,readICalDate(r.until),wkst);
1435 } else { 1435 } else {
1436 if (r.count == 0) 1436 if (r.count == 0)
1437 recur->setWeekly(interv,qba,-1,wkst); 1437 recur->setWeekly(interv,qba,-1,wkst);
1438 else 1438 else
1439 recur->setWeekly(interv,qba,r.count,wkst); 1439 recur->setWeekly(interv,qba,r.count,wkst);
1440 } 1440 }
1441 if ( r.by_day[0] == ICAL_RECURRENCE_ARRAY_MAX) { 1441 if ( r.by_day[0] == ICAL_RECURRENCE_ARRAY_MAX) {
1442 int wday = incidence->dtStart().date().dayOfWeek ()-1; 1442 int wday = incidence->dtStart().date().dayOfWeek ()-1;
1443 //qDebug("weekly error found "); 1443 //qDebug("weekly error found ");
1444 qba.setBit(wday); 1444 qba.setBit(wday);
1445 } else { 1445 } else {
1446 while((day = r.by_day[index++]) != ICAL_RECURRENCE_ARRAY_MAX) { 1446 while((day = r.by_day[index++]) != ICAL_RECURRENCE_ARRAY_MAX) {
1447 // kdDebug(5800) << " " << day << endl; 1447 // kdDebug(5800) << " " << day << endl;
1448 qba.setBit((day+5)%7); // convert from Sunday=1 to Monday=0 1448 qba.setBit((day+5)%7); // convert from Sunday=1 to Monday=0
1449 } 1449 }
1450 } 1450 }
1451 break; 1451 break;
1452 case ICAL_MONTHLY_RECURRENCE: 1452 case ICAL_MONTHLY_RECURRENCE:
1453 1453
1454 if (r.by_day[0] != ICAL_RECURRENCE_ARRAY_MAX) { 1454 if (r.by_day[0] != ICAL_RECURRENCE_ARRAY_MAX) {
1455 if (!icaltime_is_null_time(r.until)) { 1455 if (!icaltime_is_null_time(r.until)) {
1456 recur->setMonthly(Recurrence::rMonthlyPos,interv, 1456 recur->setMonthly(Recurrence::rMonthlyPos,interv,
1457 readICalDate(r.until)); 1457 readICalDate(r.until));
1458 } else { 1458 } else {
1459 if (r.count == 0) 1459 if (r.count == 0)
1460 recur->setMonthly(Recurrence::rMonthlyPos,interv,-1); 1460 recur->setMonthly(Recurrence::rMonthlyPos,interv,-1);
1461 else 1461 else
1462 recur->setMonthly(Recurrence::rMonthlyPos,interv,r.count); 1462 recur->setMonthly(Recurrence::rMonthlyPos,interv,r.count);
1463 } 1463 }
1464 bool useSetPos = false; 1464 bool useSetPos = false;
1465 short pos = 0; 1465 short pos = 0;
1466 while((day = r.by_day[index++]) != ICAL_RECURRENCE_ARRAY_MAX) { 1466 while((day = r.by_day[index++]) != ICAL_RECURRENCE_ARRAY_MAX) {
1467 // kdDebug(5800) << "----a " << index << ": " << day << endl; 1467 // kdDebug(5800) << "----a " << index << ": " << day << endl;
1468 pos = icalrecurrencetype_day_position(day); 1468 pos = icalrecurrencetype_day_position(day);
1469 if (pos) { 1469 if (pos) {
1470 day = icalrecurrencetype_day_day_of_week(day); 1470 day = icalrecurrencetype_day_day_of_week(day);
1471 QBitArray ba(7); // don't wipe qba 1471 QBitArray ba(7); // don't wipe qba
1472 ba.setBit((day+5)%7); // convert from Sunday=1 to Monday=0 1472 ba.setBit((day+5)%7); // convert from Sunday=1 to Monday=0
1473 recur->addMonthlyPos(pos,ba); 1473 recur->addMonthlyPos(pos,ba);
1474 } else { 1474 } else {
1475 qba.setBit((day+5)%7); // convert from Sunday=1 to Monday=0 1475 qba.setBit((day+5)%7); // convert from Sunday=1 to Monday=0
1476 useSetPos = true; 1476 useSetPos = true;
1477 } 1477 }
1478 } 1478 }
1479 if (useSetPos) { 1479 if (useSetPos) {
1480 if (r.by_set_pos[0] != ICAL_RECURRENCE_ARRAY_MAX) { 1480 if (r.by_set_pos[0] != ICAL_RECURRENCE_ARRAY_MAX) {
1481 recur->addMonthlyPos(r.by_set_pos[0],qba); 1481 recur->addMonthlyPos(r.by_set_pos[0],qba);
1482 } 1482 }
1483 } 1483 }
1484 } else if (r.by_month_day[0] != ICAL_RECURRENCE_ARRAY_MAX) { 1484 } else if (r.by_month_day[0] != ICAL_RECURRENCE_ARRAY_MAX) {
1485 if (!icaltime_is_null_time(r.until)) { 1485 if (!icaltime_is_null_time(r.until)) {
1486 recur->setMonthly(Recurrence::rMonthlyDay,interv, 1486 recur->setMonthly(Recurrence::rMonthlyDay,interv,
1487 readICalDate(r.until)); 1487 readICalDate(r.until));
1488 } else { 1488 } else {
1489 if (r.count == 0) 1489 if (r.count == 0)
1490 recur->setMonthly(Recurrence::rMonthlyDay,interv,-1); 1490 recur->setMonthly(Recurrence::rMonthlyDay,interv,-1);
1491 else 1491 else
1492 recur->setMonthly(Recurrence::rMonthlyDay,interv,r.count); 1492 recur->setMonthly(Recurrence::rMonthlyDay,interv,r.count);
1493 } 1493 }
1494 while((day = r.by_month_day[index++]) != ICAL_RECURRENCE_ARRAY_MAX) { 1494 while((day = r.by_month_day[index++]) != ICAL_RECURRENCE_ARRAY_MAX) {
1495 // kdDebug(5800) << "----b " << day << endl; 1495 // kdDebug(5800) << "----b " << day << endl;
1496 recur->addMonthlyDay(day); 1496 recur->addMonthlyDay(day);
1497 } 1497 }
1498 } 1498 }
1499 break; 1499 break;
1500 case ICAL_YEARLY_RECURRENCE: 1500 case ICAL_YEARLY_RECURRENCE:
1501 if (r.by_year_day[0] != ICAL_RECURRENCE_ARRAY_MAX) { 1501 if (r.by_year_day[0] != ICAL_RECURRENCE_ARRAY_MAX) {
1502 qDebug(" YEARLY DAY OF YEAR"); 1502 //qDebug(" YEARLY DAY OF YEAR");
1503 if (!icaltime_is_null_time(r.until)) { 1503 if (!icaltime_is_null_time(r.until)) {
1504 recur->setYearly(Recurrence::rYearlyDay,interv, 1504 recur->setYearly(Recurrence::rYearlyDay,interv,
1505 readICalDate(r.until)); 1505 readICalDate(r.until));
1506 } else { 1506 } else {
1507 if (r.count == 0) 1507 if (r.count == 0)
1508 recur->setYearly(Recurrence::rYearlyDay,interv,-1); 1508 recur->setYearly(Recurrence::rYearlyDay,interv,-1);
1509 else 1509 else
1510 recur->setYearly(Recurrence::rYearlyDay,interv,r.count); 1510 recur->setYearly(Recurrence::rYearlyDay,interv,r.count);
1511 } 1511 }
1512 while((day = r.by_year_day[index++]) != ICAL_RECURRENCE_ARRAY_MAX) { 1512 while((day = r.by_year_day[index++]) != ICAL_RECURRENCE_ARRAY_MAX) {
1513 recur->addYearlyNum(day); 1513 recur->addYearlyNum(day);
1514 } 1514 }
1515 } else if ( true /*r.by_month[0] != ICAL_RECURRENCE_ARRAY_MAX*/) { 1515 } else if ( true /*r.by_month[0] != ICAL_RECURRENCE_ARRAY_MAX*/) {
1516 if (r.by_day[0] != ICAL_RECURRENCE_ARRAY_MAX) { 1516 if (r.by_day[0] != ICAL_RECURRENCE_ARRAY_MAX) {
1517 qDebug("YEARLY POS NOT SUPPORTED BY GUI"); 1517 qDebug("YEARLY POS NOT SUPPORTED BY GUI");
1518 if (!icaltime_is_null_time(r.until)) { 1518 if (!icaltime_is_null_time(r.until)) {
1519 recur->setYearly(Recurrence::rYearlyPos,interv, 1519 recur->setYearly(Recurrence::rYearlyPos,interv,
1520 readICalDate(r.until)); 1520 readICalDate(r.until));
1521 } else { 1521 } else {
1522 if (r.count == 0) 1522 if (r.count == 0)
1523 recur->setYearly(Recurrence::rYearlyPos,interv,-1); 1523 recur->setYearly(Recurrence::rYearlyPos,interv,-1);
1524 else 1524 else
1525 recur->setYearly(Recurrence::rYearlyPos,interv,r.count); 1525 recur->setYearly(Recurrence::rYearlyPos,interv,r.count);
1526 } 1526 }
1527 bool useSetPos = false; 1527 bool useSetPos = false;
1528 short pos = 0; 1528 short pos = 0;
1529 while((day = r.by_day[index++]) != ICAL_RECURRENCE_ARRAY_MAX) { 1529 while((day = r.by_day[index++]) != ICAL_RECURRENCE_ARRAY_MAX) {
1530 // kdDebug(5800) << "----a " << index << ": " << day << endl; 1530 // kdDebug(5800) << "----a " << index << ": " << day << endl;
1531 pos = icalrecurrencetype_day_position(day); 1531 pos = icalrecurrencetype_day_position(day);
1532 if (pos) { 1532 if (pos) {
1533 day = icalrecurrencetype_day_day_of_week(day); 1533 day = icalrecurrencetype_day_day_of_week(day);
1534 QBitArray ba(7); // don't wipe qba 1534 QBitArray ba(7); // don't wipe qba
1535 ba.setBit((day+5)%7); // convert from Sunday=1 to Monday=0 1535 ba.setBit((day+5)%7); // convert from Sunday=1 to Monday=0
1536 recur->addYearlyMonthPos(pos,ba); 1536 recur->addYearlyMonthPos(pos,ba);
1537 } else { 1537 } else {
1538 qba.setBit((day+5)%7); // convert from Sunday=1 to Monday=0 1538 qba.setBit((day+5)%7); // convert from Sunday=1 to Monday=0
1539 useSetPos = true; 1539 useSetPos = true;
1540 } 1540 }
1541 } 1541 }
1542 if (useSetPos) { 1542 if (useSetPos) {
1543 if (r.by_set_pos[0] != ICAL_RECURRENCE_ARRAY_MAX) { 1543 if (r.by_set_pos[0] != ICAL_RECURRENCE_ARRAY_MAX) {
1544 recur->addYearlyMonthPos(r.by_set_pos[0],qba); 1544 recur->addYearlyMonthPos(r.by_set_pos[0],qba);
1545 } 1545 }
1546 } 1546 }
1547 } else { 1547 } else {
1548 qDebug("YEARLY MONTH "); 1548 //qDebug("YEARLY MONTH ");
1549 if (!icaltime_is_null_time(r.until)) { 1549 if (!icaltime_is_null_time(r.until)) {
1550 recur->setYearly(Recurrence::rYearlyMonth,interv, 1550 recur->setYearly(Recurrence::rYearlyMonth,interv,
1551 readICalDate(r.until)); 1551 readICalDate(r.until));
1552 } else { 1552 } else {
1553 if (r.count == 0) 1553 if (r.count == 0)
1554 recur->setYearly(Recurrence::rYearlyMonth,interv,-1); 1554 recur->setYearly(Recurrence::rYearlyMonth,interv,-1);
1555 else 1555 else
1556 recur->setYearly(Recurrence::rYearlyMonth,interv,r.count); 1556 recur->setYearly(Recurrence::rYearlyMonth,interv,r.count);
1557 } 1557 }
1558 if ( r.by_month[0] != ICAL_RECURRENCE_ARRAY_MAX ) { 1558 if ( r.by_month[0] != ICAL_RECURRENCE_ARRAY_MAX ) {
1559 index = 0; 1559 index = 0;
1560 while((day = r.by_month[index++]) != ICAL_RECURRENCE_ARRAY_MAX) { 1560 while((day = r.by_month[index++]) != ICAL_RECURRENCE_ARRAY_MAX) {
1561 recur->addYearlyNum(day); 1561 recur->addYearlyNum(day);
1562 } 1562 }
1563 } else { 1563 } else {
1564 recur->addYearlyNum(incidence->dtStart().date().month()); 1564 recur->addYearlyNum(incidence->dtStart().date().month());
1565 } 1565 }
1566 } 1566 }
1567 1567
1568 } 1568 }
1569 break; 1569 break;
1570 default: 1570 default:
1571 ; 1571 ;
1572 break; 1572 break;
1573 } 1573 }
1574} 1574}
1575 1575
1576void ICalFormatImpl::readAlarm(icalcomponent *alarm,Incidence *incidence) 1576void ICalFormatImpl::readAlarm(icalcomponent *alarm,Incidence *incidence)
1577{ 1577{
1578 //kdDebug(5800) << "Read alarm for " << incidence->summary() << endl; 1578 //kdDebug(5800) << "Read alarm for " << incidence->summary() << endl;
1579 1579
1580 Alarm* ialarm = incidence->newAlarm(); 1580 Alarm* ialarm = incidence->newAlarm();
1581 ialarm->setRepeatCount(0); 1581 ialarm->setRepeatCount(0);
1582 ialarm->setEnabled(true); 1582 ialarm->setEnabled(true);
1583 1583
1584 // Determine the alarm's action type 1584 // Determine the alarm's action type
1585 icalproperty *p = icalcomponent_get_first_property(alarm,ICAL_ACTION_PROPERTY); 1585 icalproperty *p = icalcomponent_get_first_property(alarm,ICAL_ACTION_PROPERTY);
1586 if ( !p ) { 1586 if ( !p ) {
1587 return; 1587 return;
1588 } 1588 }
1589 1589
1590 icalproperty_action action = icalproperty_get_action(p); 1590 icalproperty_action action = icalproperty_get_action(p);
1591 Alarm::Type type = Alarm::Display; 1591 Alarm::Type type = Alarm::Display;
1592 switch ( action ) { 1592 switch ( action ) {
1593 case ICAL_ACTION_DISPLAY: type = Alarm::Display; break; 1593 case ICAL_ACTION_DISPLAY: type = Alarm::Display; break;
1594 case ICAL_ACTION_AUDIO: type = Alarm::Audio; break; 1594 case ICAL_ACTION_AUDIO: type = Alarm::Audio; break;
1595 case ICAL_ACTION_PROCEDURE: type = Alarm::Procedure; break; 1595 case ICAL_ACTION_PROCEDURE: type = Alarm::Procedure; break;
1596 case ICAL_ACTION_EMAIL: type = Alarm::Email; break; 1596 case ICAL_ACTION_EMAIL: type = Alarm::Email; break;
1597 default: 1597 default:
1598 ; 1598 ;
1599 return; 1599 return;
1600 } 1600 }
1601 ialarm->setType(type); 1601 ialarm->setType(type);
1602 1602
1603 p = icalcomponent_get_first_property(alarm,ICAL_ANY_PROPERTY); 1603 p = icalcomponent_get_first_property(alarm,ICAL_ANY_PROPERTY);
1604 while (p) { 1604 while (p) {
1605 icalproperty_kind kind = icalproperty_isa(p); 1605 icalproperty_kind kind = icalproperty_isa(p);
1606 1606
1607 switch (kind) { 1607 switch (kind) {
1608 case ICAL_TRIGGER_PROPERTY: { 1608 case ICAL_TRIGGER_PROPERTY: {
1609 icaltriggertype trigger = icalproperty_get_trigger(p); 1609 icaltriggertype trigger = icalproperty_get_trigger(p);
1610 if (icaltime_is_null_time(trigger.time)) { 1610 if (icaltime_is_null_time(trigger.time)) {
1611 if (icaldurationtype_is_null_duration(trigger.duration)) { 1611 if (icaldurationtype_is_null_duration(trigger.duration)) {
1612 kdDebug(5800) << "ICalFormatImpl::readAlarm(): Trigger has no time and no duration." << endl; 1612 kdDebug(5800) << "ICalFormatImpl::readAlarm(): Trigger has no time and no duration." << endl;
1613 } else { 1613 } else {
1614 Duration duration = icaldurationtype_as_int( trigger.duration ); 1614 Duration duration = icaldurationtype_as_int( trigger.duration );
1615 icalparameter *param = icalproperty_get_first_parameter(p,ICAL_RELATED_PARAMETER); 1615 icalparameter *param = icalproperty_get_first_parameter(p,ICAL_RELATED_PARAMETER);
1616 if (param && icalparameter_get_related(param) == ICAL_RELATED_END) 1616 if (param && icalparameter_get_related(param) == ICAL_RELATED_END)
1617 ialarm->setEndOffset(duration); 1617 ialarm->setEndOffset(duration);
1618 else 1618 else
1619 ialarm->setStartOffset(duration); 1619 ialarm->setStartOffset(duration);
1620 } 1620 }
1621 } else { 1621 } else {
1622 ialarm->setTime(readICalDateTime(trigger.time)); 1622 ialarm->setTime(readICalDateTime(trigger.time));
1623 } 1623 }
1624 break; 1624 break;
1625 } 1625 }
1626 case ICAL_DURATION_PROPERTY: { 1626 case ICAL_DURATION_PROPERTY: {
1627 icaldurationtype duration = icalproperty_get_duration(p); 1627 icaldurationtype duration = icalproperty_get_duration(p);
1628 ialarm->setSnoozeTime(icaldurationtype_as_int(duration)/60); 1628 ialarm->setSnoozeTime(icaldurationtype_as_int(duration)/60);
1629 break; 1629 break;
1630 } 1630 }
1631 case ICAL_REPEAT_PROPERTY: 1631 case ICAL_REPEAT_PROPERTY:
1632 ialarm->setRepeatCount(icalproperty_get_repeat(p)); 1632 ialarm->setRepeatCount(icalproperty_get_repeat(p));
1633 break; 1633 break;
1634 1634
1635 // Only in DISPLAY and EMAIL and PROCEDURE alarms 1635 // Only in DISPLAY and EMAIL and PROCEDURE alarms
1636 case ICAL_DESCRIPTION_PROPERTY: { 1636 case ICAL_DESCRIPTION_PROPERTY: {
1637 QString description = QString::fromUtf8(icalproperty_get_description(p)); 1637 QString description = QString::fromUtf8(icalproperty_get_description(p));
1638 switch ( action ) { 1638 switch ( action ) {
1639 case ICAL_ACTION_DISPLAY: 1639 case ICAL_ACTION_DISPLAY:
1640 ialarm->setText( description ); 1640 ialarm->setText( description );
1641 break; 1641 break;
1642 case ICAL_ACTION_PROCEDURE: 1642 case ICAL_ACTION_PROCEDURE:
1643 ialarm->setProgramArguments( description ); 1643 ialarm->setProgramArguments( description );
1644 break; 1644 break;
1645 case ICAL_ACTION_EMAIL: 1645 case ICAL_ACTION_EMAIL:
1646 ialarm->setMailText( description ); 1646 ialarm->setMailText( description );
1647 break; 1647 break;
1648 default: 1648 default:
1649 break; 1649 break;
1650 } 1650 }
1651 break; 1651 break;
1652 } 1652 }
1653 // Only in EMAIL alarm 1653 // Only in EMAIL alarm
1654 case ICAL_SUMMARY_PROPERTY: 1654 case ICAL_SUMMARY_PROPERTY:
1655 ialarm->setMailSubject(QString::fromUtf8(icalproperty_get_summary(p))); 1655 ialarm->setMailSubject(QString::fromUtf8(icalproperty_get_summary(p)));
1656 break; 1656 break;
1657 1657
1658 // Only in EMAIL alarm 1658 // Only in EMAIL alarm
1659 case ICAL_ATTENDEE_PROPERTY: { 1659 case ICAL_ATTENDEE_PROPERTY: {
1660 QString email = QString::fromUtf8(icalproperty_get_attendee(p)); 1660 QString email = QString::fromUtf8(icalproperty_get_attendee(p));
1661 QString name; 1661 QString name;
1662 icalparameter *param = icalproperty_get_first_parameter(p,ICAL_CN_PARAMETER); 1662 icalparameter *param = icalproperty_get_first_parameter(p,ICAL_CN_PARAMETER);
1663 if (param) { 1663 if (param) {
1664 name = QString::fromUtf8(icalparameter_get_cn(param)); 1664 name = QString::fromUtf8(icalparameter_get_cn(param));
1665 } 1665 }
1666 ialarm->addMailAddress(Person(name, email)); 1666 ialarm->addMailAddress(Person(name, email));
1667 break; 1667 break;
1668 } 1668 }
1669 // Only in AUDIO and EMAIL and PROCEDURE alarms 1669 // Only in AUDIO and EMAIL and PROCEDURE alarms
1670 case ICAL_ATTACH_PROPERTY: { 1670 case ICAL_ATTACH_PROPERTY: {
1671 icalattach *attach = icalproperty_get_attach(p); 1671 icalattach *attach = icalproperty_get_attach(p);
1672 QString url = QFile::decodeName(icalattach_get_url(attach)); 1672 QString url = QFile::decodeName(icalattach_get_url(attach));
1673 switch ( action ) { 1673 switch ( action ) {
1674 case ICAL_ACTION_AUDIO: 1674 case ICAL_ACTION_AUDIO:
1675 ialarm->setAudioFile( url ); 1675 ialarm->setAudioFile( url );
1676 break; 1676 break;
1677 case ICAL_ACTION_PROCEDURE: 1677 case ICAL_ACTION_PROCEDURE:
1678 ialarm->setProgramFile( url ); 1678 ialarm->setProgramFile( url );
1679 break; 1679 break;
1680 case ICAL_ACTION_EMAIL: 1680 case ICAL_ACTION_EMAIL:
1681 ialarm->addMailAttachment( url ); 1681 ialarm->addMailAttachment( url );
1682 break; 1682 break;
1683 default: 1683 default:
1684 break; 1684 break;
1685 } 1685 }
1686 break; 1686 break;
1687 } 1687 }
1688 default: 1688 default:
1689 break; 1689 break;
1690 } 1690 }
1691 1691
1692 p = icalcomponent_get_next_property(alarm,ICAL_ANY_PROPERTY); 1692 p = icalcomponent_get_next_property(alarm,ICAL_ANY_PROPERTY);
1693 } 1693 }
1694 1694
1695 // custom properties 1695 // custom properties
1696 readCustomProperties(alarm, ialarm); 1696 readCustomProperties(alarm, ialarm);
1697 1697
1698 // TODO: check for consistency of alarm properties 1698 // TODO: check for consistency of alarm properties
1699} 1699}
1700 1700
1701icaltimetype ICalFormatImpl::writeICalDate(const QDate &date) 1701icaltimetype ICalFormatImpl::writeICalDate(const QDate &date)
1702{ 1702{
1703 icaltimetype t; 1703 icaltimetype t;
1704 1704
1705 t.year = date.year(); 1705 t.year = date.year();
1706 t.month = date.month(); 1706 t.month = date.month();
1707 t.day = date.day(); 1707 t.day = date.day();
1708 1708
1709 t.hour = 0; 1709 t.hour = 0;
1710 t.minute = 0; 1710 t.minute = 0;
1711 t.second = 0; 1711 t.second = 0;
1712 1712
1713 t.is_date = 1; 1713 t.is_date = 1;
1714 1714
1715 t.is_utc = 0; 1715 t.is_utc = 0;
1716 1716
1717 t.zone = 0; 1717 t.zone = 0;
1718 1718
1719 return t; 1719 return t;
1720} 1720}
1721 1721
1722icaltimetype ICalFormatImpl::writeICalDateTime(const QDateTime &dt ) 1722icaltimetype ICalFormatImpl::writeICalDateTime(const QDateTime &dt )
1723{ 1723{
1724 icaltimetype t; 1724 icaltimetype t;
1725 t.is_date = 0; 1725 t.is_date = 0;
1726 t.zone = 0; 1726 t.zone = 0;
1727 QDateTime datetime; 1727 QDateTime datetime;
1728 if ( mParent->utc() ) { 1728 if ( mParent->utc() ) {
1729 int offset = KGlobal::locale()->localTimeOffset( dt ); 1729 int offset = KGlobal::locale()->localTimeOffset( dt );
1730 datetime = dt.addSecs ( -offset*60); 1730 datetime = dt.addSecs ( -offset*60);
1731 t.is_utc = 1; 1731 t.is_utc = 1;
1732 } 1732 }
1733 else { 1733 else {
1734 datetime = dt; 1734 datetime = dt;
1735 t.is_utc = 0; 1735 t.is_utc = 0;
1736 1736
1737 } 1737 }
1738 t.year = datetime.date().year(); 1738 t.year = datetime.date().year();
1739 t.month = datetime.date().month(); 1739 t.month = datetime.date().month();
1740 t.day = datetime.date().day(); 1740 t.day = datetime.date().day();
1741 1741
1742 t.hour = datetime.time().hour(); 1742 t.hour = datetime.time().hour();
1743 t.minute = datetime.time().minute(); 1743 t.minute = datetime.time().minute();
1744 t.second = datetime.time().second(); 1744 t.second = datetime.time().second();
1745 1745
1746 //qDebug("*** time %s localtime %s ",dt .toString().latin1() ,datetime .toString().latin1() ); 1746 //qDebug("*** time %s localtime %s ",dt .toString().latin1() ,datetime .toString().latin1() );
1747 1747
1748// if ( mParent->utc() ) { 1748// if ( mParent->utc() ) {
1749// datetime = KGlobal::locale()->localTime( dt ); 1749// datetime = KGlobal::locale()->localTime( dt );
1750// qDebug("*** time %s localtime %s ",dt .toString().latin1() ,datetime .toString().latin1() ); 1750// qDebug("*** time %s localtime %s ",dt .toString().latin1() ,datetime .toString().latin1() );
1751// if (mParent->timeZoneId().isEmpty()) 1751// if (mParent->timeZoneId().isEmpty())
1752// t = icaltime_as_utc(t, 0); 1752// t = icaltime_as_utc(t, 0);
1753// else 1753// else
1754// t = icaltime_as_utc(t,mParent->timeZoneId().local8Bit()); 1754// t = icaltime_as_utc(t,mParent->timeZoneId().local8Bit());
1755// } 1755// }
1756 1756
1757 return t; 1757 return t;
1758} 1758}
1759 1759
1760QDateTime ICalFormatImpl::readICalDateTime(icaltimetype t) 1760QDateTime ICalFormatImpl::readICalDateTime(icaltimetype t)
1761{ 1761{
1762 QDateTime dt (QDate(t.year,t.month,t.day), 1762 QDateTime dt (QDate(t.year,t.month,t.day),
1763 QTime(t.hour,t.minute,t.second) ); 1763 QTime(t.hour,t.minute,t.second) );
1764 1764
1765 if (t.is_utc) { 1765 if (t.is_utc) {
1766 int offset = KGlobal::locale()->localTimeOffset( dt ); 1766 int offset = KGlobal::locale()->localTimeOffset( dt );
1767 dt = dt.addSecs ( offset*60); 1767 dt = dt.addSecs ( offset*60);
1768 } 1768 }
1769 1769
1770 return dt; 1770 return dt;
1771} 1771}
1772 1772
1773QDate ICalFormatImpl::readICalDate(icaltimetype t) 1773QDate ICalFormatImpl::readICalDate(icaltimetype t)
1774{ 1774{
1775 return QDate(t.year,t.month,t.day); 1775 return QDate(t.year,t.month,t.day);
1776} 1776}
1777 1777
1778icaldurationtype ICalFormatImpl::writeICalDuration(int seconds) 1778icaldurationtype ICalFormatImpl::writeICalDuration(int seconds)
1779{ 1779{
1780 icaldurationtype d; 1780 icaldurationtype d;
1781 1781
1782 d.weeks = seconds % gSecondsPerWeek; 1782 d.weeks = seconds % gSecondsPerWeek;
1783 seconds -= d.weeks * gSecondsPerWeek; 1783 seconds -= d.weeks * gSecondsPerWeek;
1784 d.days = seconds % gSecondsPerDay; 1784 d.days = seconds % gSecondsPerDay;
1785 seconds -= d.days * gSecondsPerDay; 1785 seconds -= d.days * gSecondsPerDay;
1786 d.hours = seconds % gSecondsPerHour; 1786 d.hours = seconds % gSecondsPerHour;
1787 seconds -= d.hours * gSecondsPerHour; 1787 seconds -= d.hours * gSecondsPerHour;
1788 d.minutes = seconds % gSecondsPerMinute; 1788 d.minutes = seconds % gSecondsPerMinute;
1789 seconds -= d.minutes * gSecondsPerMinute; 1789 seconds -= d.minutes * gSecondsPerMinute;
1790 d.seconds = seconds; 1790 d.seconds = seconds;
1791 d.is_neg = 0; 1791 d.is_neg = 0;
1792 1792
1793 return d; 1793 return d;
1794} 1794}
1795 1795
1796int ICalFormatImpl::readICalDuration(icaldurationtype d) 1796int ICalFormatImpl::readICalDuration(icaldurationtype d)
1797{ 1797{
1798 int result = 0; 1798 int result = 0;
1799 1799
1800 result += d.weeks * gSecondsPerWeek; 1800 result += d.weeks * gSecondsPerWeek;
1801 result += d.days * gSecondsPerDay; 1801 result += d.days * gSecondsPerDay;
1802 result += d.hours * gSecondsPerHour; 1802 result += d.hours * gSecondsPerHour;
1803 result += d.minutes * gSecondsPerMinute; 1803 result += d.minutes * gSecondsPerMinute;
1804 result += d.seconds; 1804 result += d.seconds;
1805 1805
1806 if (d.is_neg) result *= -1; 1806 if (d.is_neg) result *= -1;
1807 1807
1808 return result; 1808 return result;
1809} 1809}
1810 1810
1811icalcomponent *ICalFormatImpl::createCalendarComponent(Calendar *cal) 1811icalcomponent *ICalFormatImpl::createCalendarComponent(Calendar *cal)
1812{ 1812{
1813 icalcomponent *calendar; 1813 icalcomponent *calendar;
1814 1814
1815 // Root component 1815 // Root component
1816 calendar = icalcomponent_new(ICAL_VCALENDAR_COMPONENT); 1816 calendar = icalcomponent_new(ICAL_VCALENDAR_COMPONENT);
1817 1817
1818 icalproperty *p; 1818 icalproperty *p;
1819 1819
1820 // Product Identifier 1820 // Product Identifier
1821 p = icalproperty_new_prodid(CalFormat::productId().utf8()); 1821 p = icalproperty_new_prodid(CalFormat::productId().utf8());
1822 icalcomponent_add_property(calendar,p); 1822 icalcomponent_add_property(calendar,p);
1823 1823
1824 // TODO: Add time zone 1824 // TODO: Add time zone
1825 1825
1826 // iCalendar version (2.0) 1826 // iCalendar version (2.0)
1827 p = icalproperty_new_version(const_cast<char *>(_ICAL_VERSION)); 1827 p = icalproperty_new_version(const_cast<char *>(_ICAL_VERSION));
1828 icalcomponent_add_property(calendar,p); 1828 icalcomponent_add_property(calendar,p);
1829 1829
1830 // Custom properties 1830 // Custom properties
1831 if( cal != 0 ) 1831 if( cal != 0 )
1832 writeCustomProperties(calendar, cal); 1832 writeCustomProperties(calendar, cal);
1833 1833
1834 return calendar; 1834 return calendar;
1835} 1835}
1836 1836
1837 1837
1838 1838
1839// take a raw vcalendar (i.e. from a file on disk, clipboard, etc. etc. 1839// take a raw vcalendar (i.e. from a file on disk, clipboard, etc. etc.
1840// and break it down from its tree-like format into the dictionary format 1840// and break it down from its tree-like format into the dictionary format
1841// that is used internally in the ICalFormatImpl. 1841// that is used internally in the ICalFormatImpl.
1842bool ICalFormatImpl::populate( Calendar *cal, icalcomponent *calendar) 1842bool ICalFormatImpl::populate( Calendar *cal, icalcomponent *calendar)
1843{ 1843{
1844 // this function will populate the caldict dictionary and other event 1844 // this function will populate the caldict dictionary and other event
1845 // lists. It turns vevents into Events and then inserts them. 1845 // lists. It turns vevents into Events and then inserts them.
1846 1846
1847 if (!calendar) return false; 1847 if (!calendar) return false;
1848 1848
1849// TODO: check for METHOD 1849// TODO: check for METHOD
1850#if 0 1850#if 0
1851 if ((curVO = isAPropertyOf(vcal, ICMethodProp)) != 0) { 1851 if ((curVO = isAPropertyOf(vcal, ICMethodProp)) != 0) {
1852 char *methodType = 0; 1852 char *methodType = 0;
1853 methodType = fakeCString(vObjectUStringZValue(curVO)); 1853 methodType = fakeCString(vObjectUStringZValue(curVO));
1854 if (mEnableDialogs) 1854 if (mEnableDialogs)
1855 KMessageBox::information(mTopWidget, 1855 KMessageBox::information(mTopWidget,
1856 i18n("This calendar is an iTIP transaction of type \"%1\".") 1856 i18n("This calendar is an iTIP transaction of type \"%1\".")
1857 .arg(methodType), 1857 .arg(methodType),
1858 i18n("%1: iTIP Transaction").arg(CalFormat::application())); 1858 i18n("%1: iTIP Transaction").arg(CalFormat::application()));
1859 delete methodType; 1859 delete methodType;
1860 } 1860 }
1861#endif 1861#endif
1862 1862
1863 icalproperty *p; 1863 icalproperty *p;
1864 1864
1865 p = icalcomponent_get_first_property(calendar,ICAL_PRODID_PROPERTY); 1865 p = icalcomponent_get_first_property(calendar,ICAL_PRODID_PROPERTY);
1866 if (!p) { 1866 if (!p) {
1867// TODO: does no PRODID really matter? 1867// TODO: does no PRODID really matter?
1868// mParent->setException(new ErrorFormat(ErrorFormat::CalVersionUnknown)); 1868// mParent->setException(new ErrorFormat(ErrorFormat::CalVersionUnknown));
1869// return false; 1869// return false;
1870 mLoadedProductId = ""; 1870 mLoadedProductId = "";
1871 mCalendarVersion = 0; 1871 mCalendarVersion = 0;
1872 } else { 1872 } else {
1873 mLoadedProductId = QString::fromUtf8(icalproperty_get_prodid(p)); 1873 mLoadedProductId = QString::fromUtf8(icalproperty_get_prodid(p));
1874 mCalendarVersion = CalFormat::calendarVersion(mLoadedProductId); 1874 mCalendarVersion = CalFormat::calendarVersion(mLoadedProductId);
1875 1875
1876 delete mCompat; 1876 delete mCompat;
1877 mCompat = CompatFactory::createCompat( mLoadedProductId ); 1877 mCompat = CompatFactory::createCompat( mLoadedProductId );
1878 } 1878 }
1879 1879
1880// TODO: check for unknown PRODID 1880// TODO: check for unknown PRODID
1881#if 0 1881#if 0
1882 if (!mCalendarVersion 1882 if (!mCalendarVersion
1883 && CalFormat::productId() != mLoadedProductId) { 1883 && CalFormat::productId() != mLoadedProductId) {
1884 // warn the user that we might have trouble reading non-known calendar. 1884 // warn the user that we might have trouble reading non-known calendar.
1885 if (mEnableDialogs) 1885 if (mEnableDialogs)
1886 KMessageBox::information(mTopWidget, 1886 KMessageBox::information(mTopWidget,
1887 i18n("This vCalendar file was not created by KOrganizer " 1887 i18n("This vCalendar file was not created by KOrganizer "
1888 "or any other product we support. Loading anyway..."), 1888 "or any other product we support. Loading anyway..."),
1889 i18n("%1: Unknown vCalendar Vendor").arg(CalFormat::application())); 1889 i18n("%1: Unknown vCalendar Vendor").arg(CalFormat::application()));
1890 } 1890 }
1891#endif 1891#endif
1892 1892
1893 p = icalcomponent_get_first_property(calendar,ICAL_VERSION_PROPERTY); 1893 p = icalcomponent_get_first_property(calendar,ICAL_VERSION_PROPERTY);
1894 if (!p) { 1894 if (!p) {
1895 mParent->setException(new ErrorFormat(ErrorFormat::CalVersionUnknown)); 1895 mParent->setException(new ErrorFormat(ErrorFormat::CalVersionUnknown));
1896 return false; 1896 return false;
1897 } else { 1897 } else {
1898 const char *version = icalproperty_get_version(p); 1898 const char *version = icalproperty_get_version(p);
1899 1899
1900 if (strcmp(version,"1.0") == 0) { 1900 if (strcmp(version,"1.0") == 0) {
1901 mParent->setException(new ErrorFormat(ErrorFormat::CalVersion1, 1901 mParent->setException(new ErrorFormat(ErrorFormat::CalVersion1,
1902 i18n("Expected iCalendar format"))); 1902 i18n("Expected iCalendar format")));
1903 return false; 1903 return false;
1904 } else if (strcmp(version,"2.0") != 0) { 1904 } else if (strcmp(version,"2.0") != 0) {
1905 mParent->setException(new ErrorFormat(ErrorFormat::CalVersionUnknown)); 1905 mParent->setException(new ErrorFormat(ErrorFormat::CalVersionUnknown));
1906 return false; 1906 return false;
1907 } 1907 }
1908 } 1908 }
1909 1909
1910 1910
1911// TODO: check for calendar format version 1911// TODO: check for calendar format version
1912#if 0 1912#if 0
1913 // warn the user we might have trouble reading this unknown version. 1913 // warn the user we might have trouble reading this unknown version.
1914 if ((curVO = isAPropertyOf(vcal, VCVersionProp)) != 0) { 1914 if ((curVO = isAPropertyOf(vcal, VCVersionProp)) != 0) {
1915 char *s = fakeCString(vObjectUStringZValue(curVO)); 1915 char *s = fakeCString(vObjectUStringZValue(curVO));
1916 if (strcmp(_VCAL_VERSION, s) != 0) 1916 if (strcmp(_VCAL_VERSION, s) != 0)
1917 if (mEnableDialogs) 1917 if (mEnableDialogs)
1918 KMessageBox::sorry(mTopWidget, 1918 KMessageBox::sorry(mTopWidget,
1919 i18n("This vCalendar file has version %1.\n" 1919 i18n("This vCalendar file has version %1.\n"
1920 "We only support %2.") 1920 "We only support %2.")
1921 .arg(s).arg(_VCAL_VERSION), 1921 .arg(s).arg(_VCAL_VERSION),
1922 i18n("%1: Unknown vCalendar Version").arg(CalFormat::application())); 1922 i18n("%1: Unknown vCalendar Version").arg(CalFormat::application()));
1923 deleteStr(s); 1923 deleteStr(s);
1924 } 1924 }
1925#endif 1925#endif
1926 1926
1927 // custom properties 1927 // custom properties
1928 readCustomProperties(calendar, cal); 1928 readCustomProperties(calendar, cal);
1929 1929
1930// TODO: set time zone 1930// TODO: set time zone
1931#if 0 1931#if 0
1932 // set the time zone 1932 // set the time zone