--- calendar/gcalresource.cpp 2011/01/05 00:51:05 1211814 +++ calendar/gcalresource.cpp 2011/01/21 15:45:14 1216151 @@ -203,12 +203,16 @@ temp = gcal_event_get_end(event); end = end.fromString(temp, KDateTime::ISODate); kevent->setDtStart(start); + + if (end.isDateOnly()) { + // KCal::Event::dtEnd() is inclusive, not exclusive. + // ( When serializing back to ICal, +1 is added internaly, to respect ical rfc ) + end = end.addDays(-1); + } kevent->setDtEnd(end); - + qDebug() << "start: " << start.dateTime() << "\tend: " << end.dateTime(); - - /* remoteID: edit_url */ KUrl urlEtag(gcal_event_get_url(event)); item.setRemoteId(urlEtag.url()); @@ -379,8 +383,15 @@ temp = gcal_event_get_end(event); end = end.fromString(temp, KDateTime::ISODate); kevent->setDtStart(start); - kevent->setDtEnd(end); + + if (end.isDateOnly()) { + // KCal::Event::dtEnd() is inclusive, not exclusive. + // ( When serializing back to ICal, +1 is added internaly, to respect ical rfc ) + end = end.addDays(-1); + } + kevent->setDtEnd(end); + url = gcal_event_get_url(event); item.setRemoteId(url.url()); item.setPayload(IncidencePtr(kevent)); @@ -527,6 +538,12 @@ gcal_event_set_start(event, t_byte.data()); time = kevent->dtEnd(); + + if (time.isDateOnly()) { + // KCal::Event::dtEnd() is inclusive, not exclusive. + time = time.addDays(1); + } + temp = time.toString(KDateTime::ISODate); t_byte = temp.toUtf8(); gcal_event_set_end(event, t_byte.data()); @@ -627,6 +644,12 @@ gcal_event_set_start(event, t_byte.data()); time = kevent->dtEnd(); + + if (time.isDateOnly()) { + // KCal::Event::dtEnd() is inclusive, not exclusive. + time = time.addDays(1); + } + temp = time.toString(KDateTime::ISODate); t_byte = temp.toUtf8(); gcal_event_set_end(event, t_byte.data());