[gnome-notes/wip/sadiq/fix-build-3-32] eds-provider: Port to libecal-2.0



commit 6db30071d2e71a21a989b8bba5053c28cdde2288
Author: Milan Crha <mcrha redhat com>
Date:   Tue Jun 11 12:43:30 2019 +0000

    eds-provider: Port to libecal-2.0
    
    Fixes https://gitlab.gnome.org/GNOME/gnome-notes/merge_requests/22

 build-aux/flatpak/org.gnome.Notes.json    | 10 ++--
 meson.build                               |  2 +-
 src/libbiji/provider/biji-memo-note.c     | 54 ++++++++++---------
 src/libbiji/provider/biji-memo-provider.c | 86 ++++++++++++++++---------------
 src/libbiji/provider/biji-memo-provider.h |  5 +-
 5 files changed, 80 insertions(+), 77 deletions(-)
---
diff --git a/build-aux/flatpak/org.gnome.Notes.json b/build-aux/flatpak/org.gnome.Notes.json
index ccccb84..c96b1ab 100644
--- a/build-aux/flatpak/org.gnome.Notes.json
+++ b/build-aux/flatpak/org.gnome.Notes.json
@@ -69,13 +69,17 @@
             "buildsystem" : "cmake",
             "config-opts" : [
                 "-DCMAKE_INSTALL_LIBDIR:PATH=/app/lib",
-                "-DBUILD_SHARED_LIBS:BOOL=ON"
+                "-DBUILD_SHARED_LIBS:BOOL=ON",
+                "-DGOBJECT_INTROSPECTION:BOOL=OFF",
+                "-DICAL_BUILD_DOCS:BOOL=OFF",
+                "-DICAL_GLIB_VAPI:BOOL=OFF",
+                "-DICAL_GLIB:BOOL=ON"
             ],
             "sources" : [
                 {
                     "type" : "archive",
-                    "url" : 
"https://github.com/libical/libical/releases/download/v3.0.1/libical-3.0.1.tar.gz";,
-                    "sha256" : "7f32a889df542592a357a73ff5f3bd7b5058450c1a3fb272b1c9a69e32d9ed10"
+                    "url" : 
"https://github.com/libical/libical/releases/download/v3.0.5/libical-3.0.5.tar.gz";,
+                    "sha256" : "7ad550c8c49c9b9983658e3ab3e68b1eee2439ec17b169a6b1e6ecb5274e78e6"
                 }
             ]
         },
diff --git a/meson.build b/meson.build
index c23f030..a86efa6 100644
--- a/meson.build
+++ b/meson.build
@@ -114,7 +114,7 @@ bijiben_deps = [
   dependency('glib-2.0', version: '>= 2.53.4'),
   dependency('goa-1.0'),
   dependency('gtk+-3.0', version: '>= 3.19.3'),
-  dependency('libecal-1.2', version: '>= 3.13.90'),
+  dependency('libecal-2.0', version: '>= 3.33.2'),
   dependency('libedataserver-1.2', version: '>= 3.13.90'),
   dependency('libxml-2.0'),
   dependency('uuid'),
diff --git a/src/libbiji/provider/biji-memo-note.c b/src/libbiji/provider/biji-memo-note.c
index 6a31abb..a02f30d 100644
--- a/src/libbiji/provider/biji-memo-note.c
+++ b/src/libbiji/provider/biji-memo-note.c
@@ -54,7 +54,7 @@ cal_comp_is_on_server (ECalComponent *comp,
 {
   const gchar *uid;
   gchar *rid = NULL;
-  icalcomponent *icalcomp = NULL;
+  ICalComponent *icalcomp = NULL;
   GError *error = NULL;
 
   g_return_val_if_fail (comp != NULL, FALSE);
@@ -68,7 +68,7 @@ cal_comp_is_on_server (ECalComponent *comp,
    * confirm and we can just delete the event.  Otherwise, we ask
    * the user.
    */
-  e_cal_component_get_uid (comp, &uid);
+  uid = e_cal_component_get_uid (comp);
 
   /* TODO We should not be checking for this here. But since
    *   e_cal_util_construct_instance does not create the instances
@@ -83,7 +83,7 @@ cal_comp_is_on_server (ECalComponent *comp,
 
   if (icalcomp != NULL)
   {
-    icalcomponent_free (icalcomp);
+    g_clear_object (&icalcomp);
     g_free (rid);
 
     return TRUE;
@@ -113,26 +113,26 @@ fill_in_components (ECalComponent *comp,
                     ECalComponent *clone,
                    BijiMemoNote  *self)
 {
-  ECalComponentText  text;
+  ECalComponentText *text;
   GSList             l;
   glong              mtime;
-  icaltimetype       t;
+  ICalTime          *t;
 
 
   /* ----------------- FIELDS FROM "memo_page_fill_components"------------------ */
 
 
   /* Set : title */
-  text.value = biji_item_get_title (BIJI_ITEM (self));
-  text.altrep = NULL;
-  e_cal_component_set_summary (clone, &text);
+  text = e_cal_component_text_new (biji_item_get_title (BIJI_ITEM (self)), NULL);
+  e_cal_component_set_summary (clone, text);
+  e_cal_component_text_free (text);
 
   /* Set : content */
-  text.value = biji_note_obj_get_raw_text (BIJI_NOTE_OBJ (self));
-  text.altrep = NULL;
-  l.data = &text;
+  text = e_cal_component_text_new (biji_note_obj_get_raw_text (BIJI_NOTE_OBJ (self)), NULL);
+  l.data = text;
   l.next = NULL;
-  e_cal_component_set_description_list (clone, &l);
+  e_cal_component_set_descriptions (clone, &l);
+  e_cal_component_text_free (text);
 
 
   /* dtstart : we'd rather use "created", "modified" */
@@ -167,8 +167,12 @@ fill_in_components (ECalComponent *comp,
   */
 
   mtime = biji_item_get_mtime (BIJI_ITEM (self));
-  if (icaltime_from_time_val (mtime, &t))
-    e_cal_component_set_last_modified (clone, &t);
+  t = icaltime_from_time_val (mtime);
+  if (t)
+  {
+    e_cal_component_set_last_modified (clone, t);
+    g_object_unref (t);
+  }
 }
 
 
@@ -181,12 +185,10 @@ memo_note_save (BijiNoteObj *note)
 {
   BijiMemoNote *self = BIJI_MEMO_NOTE (note);
   BijiMemoNotePrivate *priv = self->priv;
-  const gchar *orig_uid;
-  icalcomponent *icalcomp;
+  ICalComponent *icalcomp;
   gboolean result;
   GError *error;
   ECalComponent *clone;
-  //gchar *orig_uid_copy;
 
   clone = e_cal_component_clone (priv->ecal);
   fill_in_components (priv->ecal, clone, self);
@@ -196,11 +198,6 @@ memo_note_save (BijiNoteObj *note)
   g_object_unref (priv->ecal);
   priv->ecal = clone;
 
-  e_cal_component_get_uid (priv->ecal, &orig_uid);
-
-  /* Make a copy of it, because call of e_cal_create_object()
-   * rewrites the internal uid.
-   orig_uid_copy = g_strdup (orig_uid); */
   icalcomp = e_cal_component_get_icalcomponent (priv->ecal);
 
 
@@ -208,10 +205,10 @@ memo_note_save (BijiNoteObj *note)
   {
     gchar *uid = NULL;
     result = e_cal_client_create_object_sync (
-    priv->client, icalcomp, &uid, NULL, &error);
+    priv->client, icalcomp, E_CAL_OPERATION_FLAG_NONE, &uid, NULL, &error);
       if (result)
       {
-        icalcomponent_set_uid (icalcomp, uid);
+        i_cal_component_set_uid (icalcomp, uid);
        g_free (uid);
         //g_signal_emit_by_name (editor, "object_created");
       }
@@ -220,7 +217,7 @@ memo_note_save (BijiNoteObj *note)
   else
   {
     result = e_cal_client_modify_object_sync (
-      priv->client, icalcomp, E_CAL_OBJ_MOD_THIS, NULL, &error);
+      priv->client, icalcomp, E_CAL_OBJ_MOD_THIS, E_CAL_OPERATION_FLAG_NONE, NULL, &error);
     e_cal_component_commit_sequence (clone);
   }
 }
@@ -349,11 +346,12 @@ memo_delete (BijiNoteObj *note)
   const gchar *uid;
 
   self = BIJI_MEMO_NOTE (note);
-  e_cal_component_get_uid (self->priv->ecal, &uid);
+  uid = e_cal_component_get_uid (self->priv->ecal);
   e_cal_client_remove_object (self->priv->client,
                               uid,
                               NULL,               /* rid : all occurences */
                               E_CAL_OBJ_MOD_ALL,  /*       all occurences */
+                              E_CAL_OPERATION_FLAG_NONE,
                               NULL,               /* Cancellable */
                               on_memo_deleted,
                               self);
@@ -377,8 +375,8 @@ memo_get_basename (BijiNoteObj *note)
 {
   const gchar *out;
 
-  e_cal_component_get_uid (
-    BIJI_MEMO_NOTE (note)->priv->ecal, &out);
+  out = e_cal_component_get_uid (
+    BIJI_MEMO_NOTE (note)->priv->ecal);
 
   return g_strdup (out);
 }
diff --git a/src/libbiji/provider/biji-memo-provider.c b/src/libbiji/provider/biji-memo-provider.c
index 665c18c..b96ebfd 100644
--- a/src/libbiji/provider/biji-memo-provider.c
+++ b/src/libbiji/provider/biji-memo-provider.c
@@ -72,7 +72,7 @@ static GParamSpec *properties[BIJI_MEMO_PROP] = { NULL, };
 
 
 gboolean
-time_val_from_icaltime (icaltimetype *itt, glong *result)
+time_val_from_icaltime (ICalTime *itt, glong *result)
 {
   GTimeVal t;
   gchar *iso;
@@ -83,7 +83,7 @@ time_val_from_icaltime (icaltimetype *itt, glong *result)
   t.tv_sec = 0;
   t.tv_usec = 0;
 
-  iso = isodate_from_time_t (icaltime_as_timet (*itt));
+  iso = isodate_from_time_t (i_cal_time_as_timet (itt));
 
   if (g_time_val_from_iso8601 (iso, &t))
   {
@@ -97,23 +97,24 @@ time_val_from_icaltime (icaltimetype *itt, glong *result)
 
 
 
-gboolean
-icaltime_from_time_val (glong t, icaltimetype *out)
+ICalTime *
+icaltime_from_time_val (glong t)
 {
   GTimeVal tv;
   GDate    *date;
+  ICalTime *out;
 
   tv.tv_sec = t;
   tv.tv_usec = 0;
 
   date = g_date_new ();
   g_date_set_time_val (date, &tv);
-  *out = icaltime_from_day_of_year (
+  out = i_cal_time_new_from_day_of_year (
     g_date_get_day_of_year (date),
     g_date_get_year (date));
 
   g_date_free (date);
-  return TRUE;
+  return out;
 }
 
 
@@ -259,12 +260,11 @@ on_object_list_got (GObject      *obj,
   for (l = self->memos; l != NULL; l = l->next)
   {
     ECalComponent      *co; /* Memo */
-    ECalComponentText   text;
-    const gchar        *uid;
+    ECalComponentText  *text;
     BijiMemoItem       *item;
-    icaltimetype       *t;
+    ICalTime           *t;
     glong               time, dtstart;
-    ECalComponentDateTime tz;
+    ECalComponentDateTime *tz;
 
 
     item = memo_item_new (self);
@@ -272,43 +272,43 @@ on_object_list_got (GObject      *obj,
     co = item->ecal = e_cal_component_new_from_icalcomponent (l->data);
 
     /* Summary, url */
-    e_cal_component_get_summary (co, &text);
-    item->set.title = g_strdup (text.value);
-    e_cal_component_get_uid (co, &uid);
-    item->set.url = g_strdup (uid);
+    text = e_cal_component_get_summary (co);
+    item->set.title = text ? g_strdup (e_cal_component_text_get_value (text)) : NULL;
+    e_cal_component_text_free (text);
+    item->set.url = g_strdup (e_cal_component_get_uid (co));
 
 
     /* Last modified, created */
-    e_cal_component_get_dtstart (co, &tz);
-    if (time_val_from_icaltime (tz.value, &time))
+    tz = e_cal_component_get_dtstart (co);
+    if (time_val_from_icaltime (tz ? e_cal_component_datetime_get_value (tz) : NULL, &time))
       dtstart = time;
     else
       dtstart = 0;
-    e_cal_component_free_datetime(&tz);
+    e_cal_component_datetime_free (tz);
 
-    e_cal_component_get_last_modified (co, &t); // or dtstart
+    t = e_cal_component_get_last_modified (co); /* or dtstart */
     if (time_val_from_icaltime (t, &time))
       item->set.mtime = time;
     else
       item->set.mtime = dtstart;
-    e_cal_component_free_icaltimetype (t);
+    g_clear_object (&t);
 
-    e_cal_component_get_created (co, &t); // or dtstart
+    t = e_cal_component_get_created (co); /* or dtstart */
     if (time_val_from_icaltime (t, &time))
       item->set.created = time;
     else
       item->set.created = dtstart;
-    e_cal_component_free_icaltimetype (t);
+    g_clear_object (&t);
 
     /* Description */
-    e_cal_component_get_description_list (co, &desc);
+    desc = e_cal_component_get_descriptions (co);
     for (ll=desc; ll!=NULL; ll=ll->next)
     {
       ECalComponentText *txt = ll->data;
 
-      if (txt->value != NULL)
+      if (txt && e_cal_component_text_get_value (txt) != NULL)
       {
-        item->set.content = g_strdup (txt->value);
+        item->set.content = g_strdup (e_cal_component_text_get_value (txt));
        break;
       }
     }
@@ -317,7 +317,7 @@ on_object_list_got (GObject      *obj,
       g_warning ("note %s has no content", item->set.title);
 
 
-    e_cal_component_free_text_list (desc);
+    g_slist_free_full (desc, e_cal_component_text_free);
     g_queue_push_head (self->queue, item);
   }
 
@@ -537,13 +537,13 @@ memo_create_note (BijiProvider *provider,
   BijiMemoProvider *self = BIJI_MEMO_PROVIDER (provider);
   BijiInfoSet    info;
   BijiNoteObj   *note;
-  icalcomponent *icalcomp;
+  ICalComponent *icalcomp;
   ECalComponent *comp;
   gchar         *title, *html;
   time_t         dttime;
-  ECalComponentDateTime dt;
-  icaltimezone  *zone;
-  struct icaltimetype itt;
+  ECalComponentDateTime *dt;
+  ICalTimezone  *zone;
+  ICalTime      *itt;
 
 
   title = NULL;
@@ -564,12 +564,12 @@ memo_create_note (BijiProvider *provider,
     self->client, &icalcomp, NULL, NULL);
 
   if (icalcomp == NULL)
-    icalcomp = icalcomponent_new (ICAL_VJOURNAL_COMPONENT);
+    icalcomp = i_cal_component_new (I_CAL_VJOURNAL_COMPONENT);
 
   comp = e_cal_component_new ();
   if (!e_cal_component_set_icalcomponent (comp, icalcomp))
   {
-    icalcomponent_free (icalcomp);
+    g_object_unref (icalcomp);
     e_cal_component_set_new_vtype (comp, E_CAL_COMPONENT_JOURNAL);
   }
 
@@ -580,15 +580,16 @@ memo_create_note (BijiProvider *provider,
 
   if (dttime)
   {
-    itt = icaltime_from_timet_with_zone (
+    itt = i_cal_time_new_from_timet_with_zone (
       dttime, FALSE, zone);
-    dt.value = &itt;
-    dt.tzid = icaltimezone_get_tzid (zone);
+    dt = e_cal_component_datetime_new_take (itt, g_strdup (zone ? i_cal_timezone_get_tzid (zone) : NULL));
+
+    e_cal_component_set_dtstart (comp, dt);
+    e_cal_component_set_dtend (comp, dt);
+    e_cal_component_set_last_modified (comp, itt);
+    e_cal_component_set_created (comp, itt);
 
-    e_cal_component_set_dtstart (comp, &dt);
-    e_cal_component_set_dtend (comp, &dt);
-    e_cal_component_set_last_modified (comp, &itt);
-    e_cal_component_set_created (comp, &itt);
+    e_cal_component_datetime_free (dt);
   }
 
   if (dttime)
@@ -596,12 +597,12 @@ memo_create_note (BijiProvider *provider,
 
 
   /* make sure the component has an UID and info get it */
-  if (! (info.url = (gchar *) icalcomponent_get_uid (icalcomp)))
+  if (! (info.url = (gchar *) i_cal_component_get_uid (icalcomp)))
   {
     gchar *uid;
 
-    uid = e_cal_component_gen_uid ();
-    icalcomponent_set_uid (icalcomp, uid);
+    uid = e_util_generate_uid ();
+    i_cal_component_set_uid (icalcomp, uid);
     info.url = uid;
   }
 
@@ -625,6 +626,7 @@ memo_create_note (BijiProvider *provider,
 
   e_cal_client_create_object (self->client,
                               icalcomp,
+                              E_CAL_OPERATION_FLAG_NONE,
                               NULL, /* GCancellable */
                               on_object_created,
                               self);
@@ -651,7 +653,7 @@ biji_memo_provider_finalize (GObject *object)
 {
   BijiMemoProvider *self = BIJI_MEMO_PROVIDER (object);
 
-  e_cal_client_free_icalcomp_slist (self->memos);
+  g_slist_free_full (self->memos, g_object_unref);
 
   g_hash_table_unref (self->tracker);
   g_hash_table_unref (self->items);
diff --git a/src/libbiji/provider/biji-memo-provider.h b/src/libbiji/provider/biji-memo-provider.h
index c68d210..735a7d2 100644
--- a/src/libbiji/provider/biji-memo-provider.h
+++ b/src/libbiji/provider/biji-memo-provider.h
@@ -37,11 +37,10 @@ BijiProvider   *biji_memo_provider_new          (BijiManager *manager,
 
 
 
-gboolean        icaltime_from_time_val          (glong          t,
-                                                 icaltimetype *out);
+ICalTime *      icaltime_from_time_val          (glong t);
 
 
-gboolean        time_val_from_icaltime          (icaltimetype *itt,
+gboolean        time_val_from_icaltime          (ICalTime *itt,
                                                  glong *result);
 
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]