LogoKolab Groupware OBS > Projects
Log In

View File 0002-ical3-support.patch of Package libcalendaring (Project Kolab:Winterfell)

From fc5d939abcc32c03f3513ae9239b2b3c765329f5 Mon Sep 17 00:00:00 2001
From: Christian Mollekopf <chrigi_1@fastmail.fm>
Date: Mon, 9 Jul 2018 14:48:47 +0200
Subject: Build with ical 3

---
 kcalcore/icalformat_p.cpp  |  9 +++++----
 kcalcore/icaltimezones.cpp | 12 +++++-------
 2 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/kcalcore/icalformat_p.cpp b/kcalcore/icalformat_p.cpp
index 83401a8..92c6618 100644
--- a/kcalcore/icalformat_p.cpp
+++ b/kcalcore/icalformat_p.cpp
@@ -2360,7 +2360,6 @@ icaltimetype ICalFormatImpl::writeICalDate(const QDate &date)
     t.second = 0;
 
     t.is_date = 1;
-    t.is_utc = 0;
     t.zone = 0;
 
     return t;
@@ -2382,7 +2381,9 @@ icaltimetype ICalFormatImpl::writeICalDateTime(const KDateTime &datetime)
         t.second = datetime.time().second();
     }
     t.zone = 0;   // zone is NOT set
-    t.is_utc = datetime.isUtc() ? 1 : 0;
+    if (datetime.isUtc()) {
+        t = icaltime_convert_to_zone(t, icaltimezone_get_utc_timezone());
+    }
 
     // _dumpIcaltime( t );
 
@@ -2457,7 +2458,7 @@ icalproperty *ICalFormatImpl::writeICalDateTimeProperty(const icalproperty_kind
     }
 
     KTimeZone ktz;
-    if (!t.is_utc) {
+    if (!icaltime_is_utc(t)) {
         ktz = dt.timeZone();
     }
 
@@ -2490,7 +2491,7 @@ KDateTime ICalFormatImpl::readICalDateTime(icalproperty *p,
 //  _dumpIcaltime( t );
 
     KDateTime::Spec timeSpec;
-    if (t.is_utc  ||  t.zone == icaltimezone_get_utc_timezone()) {
+    if (icaltime_is_utc(t) ||  t.zone == icaltimezone_get_utc_timezone()) {
         timeSpec = KDateTime::UTC;   // the time zone is UTC
         utc = false;    // no need to convert to UTC
     } else {
diff --git a/kcalcore/icaltimezones.cpp b/kcalcore/icaltimezones.cpp
index fa7104d..43edf62 100644
--- a/kcalcore/icaltimezones.cpp
+++ b/kcalcore/icaltimezones.cpp
@@ -54,7 +54,7 @@ static QDateTime toQDateTime( const icaltimetype &t )
 {
   return QDateTime( QDate( t.year, t.month, t.day ),
                     QTime( t.hour, t.minute, t.second ),
-                    ( t.is_utc ? Qt::UTC : Qt::LocalTime ) );
+                    (icaltime_is_utc(t) ? Qt::UTC : Qt::LocalTime) );
 }
 
 // Maximum date for time zone data.
@@ -81,7 +81,6 @@ static icaltimetype writeLocalICalDateTime( const QDateTime &utc, int offset )
   t.second = local.time().second();
   t.is_date = 0;
   t.zone = 0;
-  t.is_utc = 0;
   return t;
 }
 
@@ -932,7 +931,7 @@ ICalTimeZone ICalTimeZoneSource::parse( icalcomponent *vtimezone )
     case ICAL_LASTMODIFIED_PROPERTY:
     {
       const icaltimetype t = icalproperty_get_lastmodified(p);
-      if ( t.is_utc ) {
+      if (icaltime_is_utc(t)) {
         data->d->lastModified = toQDateTime( t );
       } else {
         qDebug() << "LAST-MODIFIED not UTC";
@@ -1289,7 +1288,7 @@ QList<QDateTime> ICalTimeZoneSourcePrivate::parsePhase( icalcomponent *c,
   // Convert DTSTART to QDateTime, and from local time to UTC
   const QDateTime localStart = toQDateTime( dtstart );   // local time
   dtstart.second -= prevOffset;
-  dtstart.is_utc = 1;
+  dtstart = icaltime_convert_to_zone(dtstart, icaltimezone_get_utc_timezone());
   const QDateTime utcStart = toQDateTime( icaltime_normalize( dtstart ) );   // UTC
 
   transitions += utcStart;
@@ -1316,13 +1315,12 @@ QList<QDateTime> ICalTimeZoneSourcePrivate::parsePhase( icalcomponent *c,
           t.minute = dtstart.minute;
           t.second = dtstart.second;
           t.is_date = 0;
-          t.is_utc = 0;    // dtstart is in local time
         }
         // RFC2445 states that RDATE must be in local time,
         // but we support UTC as well to be safe.
-        if ( !t.is_utc ) {
+        if (!icaltime_is_utc(t)) {
           t.second -= prevOffset;    // convert to UTC
-          t.is_utc = 1;
+          t = icaltime_convert_to_zone(t, icaltimezone_get_utc_timezone());
           t = icaltime_normalize( t );
         }
         transitions += toQDateTime( t );
-- 
cgit v1.1