[evolution/wip/mcrha/eds-libical-glib] Final parts of the src/calendar/gui



commit a808adc4b0a8219cdaee43a8dd7167408a175b89
Author: Milan Crha <mcrha redhat com>
Date:   Thu Mar 28 13:32:38 2019 +0100

    Final parts of the src/calendar/gui

 src/calendar/gui/CMakeLists.txt                  |   6 +-
 src/calendar/gui/e-comp-editor-page-recurrence.c |   2 +
 src/calendar/gui/e-comp-editor-property-part.c   | 395 ++++++++++++-----------
 src/calendar/gui/e-comp-editor-property-part.h   |   8 +-
 src/calendar/gui/e-comp-editor-property-parts.c  | 245 +++++++-------
 5 files changed, 349 insertions(+), 307 deletions(-)
---
diff --git a/src/calendar/gui/CMakeLists.txt b/src/calendar/gui/CMakeLists.txt
index 09cf401d6c..dcf5fe171d 100644
--- a/src/calendar/gui/CMakeLists.txt
+++ b/src/calendar/gui/CMakeLists.txt
@@ -35,8 +35,8 @@ set(SOURCES
        e-cal-dialogs.c
        e-cal-event.c
        e-cal-list-view.c
-       e-cal-model-calendar.c
        e-cal-model.c
+       e-cal-model-calendar.c
        e-cal-model-memos.c
        e-cal-model-tasks.c
        e-cal-ops.c
@@ -55,11 +55,11 @@ set(SOURCES
        e-comp-editor-property-parts.c
        e-comp-editor-task.c
        e-date-time-list.c
+       e-day-view.c
        e-day-view-layout.c
        e-day-view-main-item.c
        e-day-view-time-item.c
        e-day-view-top-item.c
-       e-day-view.c
        e-meeting-attendee.c
        e-meeting-list-view.c
        e-meeting-store.c
@@ -73,11 +73,11 @@ set(SOURCES
        e-send-options-utils.c
        e-task-table.c
        e-to-do-pane.c
+       e-week-view.c
        e-week-view-event-item.c
        e-week-view-layout.c
        e-week-view-main-item.c
        e-week-view-titles-item.c
-       e-week-view.c
        e-weekday-chooser.c
        e-timezone-entry.c
        itip-utils.c
diff --git a/src/calendar/gui/e-comp-editor-page-recurrence.c 
b/src/calendar/gui/e-comp-editor-page-recurrence.c
index 10ebba36e7..414940f6c5 100644
--- a/src/calendar/gui/e-comp-editor-page-recurrence.c
+++ b/src/calendar/gui/e-comp-editor-page-recurrence.c
@@ -1950,6 +1950,8 @@ ecep_recurrence_fill_component (ECompEditorPage *page,
 
                                g_clear_object (&tt);
                        }
+
+                       g_clear_object (&dtstart);
                }
 
                if (!ok) {
diff --git a/src/calendar/gui/e-comp-editor-property-part.c b/src/calendar/gui/e-comp-editor-property-part.c
index 3b661d7f43..60db700bdd 100644
--- a/src/calendar/gui/e-comp-editor-property-part.c
+++ b/src/calendar/gui/e-comp-editor-property-part.c
@@ -279,7 +279,7 @@ e_comp_editor_property_part_get_edit_widget (ECompEditorPropertyPart *property_p
 
 void
 e_comp_editor_property_part_fill_widget (ECompEditorPropertyPart *property_part,
-                                        icalcomponent *component)
+                                        ICalComponent *component)
 {
        ECompEditorPropertyPartClass *klass;
 
@@ -294,7 +294,7 @@ e_comp_editor_property_part_fill_widget (ECompEditorPropertyPart *property_part,
 
 void
 e_comp_editor_property_part_fill_component (ECompEditorPropertyPart *property_part,
-                                           icalcomponent *component)
+                                           ICalComponent *component)
 {
        ECompEditorPropertyPartClass *klass;
 
@@ -390,30 +390,33 @@ ecepp_string_create_widgets (ECompEditorPropertyPart *property_part,
 
 static void
 ecepp_string_fill_widget (ECompEditorPropertyPart *property_part,
-                         icalcomponent *component)
+                         ICalComponent *component)
 {
        ECompEditorPropertyPartStringClass *klass;
        GtkWidget *edit_widget;
-       GString *multivalue = NULL;
-       icalproperty *prop;
-       const gchar *value = NULL;
+       ICalProperty *prop;
+       gchar *text = NULL;
 
        g_return_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_STRING (property_part));
-       g_return_if_fail (component != NULL);
+       g_return_if_fail (I_CAL_IS_COMPONENT (component));
 
        edit_widget = e_comp_editor_property_part_get_edit_widget (property_part);
        g_return_if_fail (GTK_IS_ENTRY (edit_widget) || GTK_IS_SCROLLED_WINDOW (edit_widget));
 
        klass = E_COMP_EDITOR_PROPERTY_PART_STRING_GET_CLASS (property_part);
        g_return_if_fail (klass != NULL);
-       g_return_if_fail (klass->ical_prop_kind != ICAL_NO_PROPERTY);
-       g_return_if_fail (klass->ical_get_func != NULL);
+       g_return_if_fail (klass->prop_kind != I_CAL_NO_PROPERTY);
+       g_return_if_fail (klass->i_cal_get_func != NULL);
 
        if (e_comp_editor_property_part_string_is_multivalue (E_COMP_EDITOR_PROPERTY_PART_STRING 
(property_part))) {
-               for (prop = icalcomponent_get_first_property (component, klass->ical_prop_kind);
+               GString *multivalue = NULL;
+
+               for (prop = i_cal_component_get_first_property (component, klass->prop_kind);
                     prop;
-                    prop = icalcomponent_get_next_property (component, klass->ical_prop_kind)) {
-                       value = klass->ical_get_func (prop);
+                    g_object_unref (prop), prop = i_cal_component_get_next_property (component, 
klass->prop_kind)) {
+                       const gchar *value;
+
+                       value = klass->i_cal_get_func (prop);
 
                        if (!value || !*value)
                                continue;
@@ -427,53 +430,49 @@ ecepp_string_fill_widget (ECompEditorPropertyPart *property_part,
                }
 
                if (multivalue)
-                       value = multivalue->str;
-               else
-                       value = NULL;
+                       text = g_string_free (multivalue, FALSE);
        } else {
-               prop = icalcomponent_get_first_property (component, klass->ical_prop_kind);
-               if (prop)
-                       value = klass->ical_get_func (prop);
+               prop = i_cal_component_get_first_property (component, klass->prop_kind);
+               if (prop) {
+                       text = g_strdup (klass->i_cal_get_func (prop));
+                       g_object_unref (prop);
+               }
        }
 
-       if (!value)
-               value = "";
-
        if (GTK_IS_ENTRY (edit_widget)) {
-               gtk_entry_set_text (GTK_ENTRY (edit_widget), value);
+               gtk_entry_set_text (GTK_ENTRY (edit_widget), text ? text : "");
        } else /* if (GTK_IS_SCROLLED_WINDOW (edit_widget)) */ {
                GtkTextBuffer *buffer;
 
                buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (gtk_bin_get_child (GTK_BIN (edit_widget))));
-               gtk_text_buffer_set_text (buffer, value, -1);
+               gtk_text_buffer_set_text (buffer, text ? text : "", -1);
        }
 
        e_widget_undo_reset (edit_widget);
 
-       if (multivalue)
-               g_string_free (multivalue, TRUE);
+       g_free (text);
 }
 
 static void
 ecepp_string_fill_component (ECompEditorPropertyPart *property_part,
-                            icalcomponent *component)
+                            ICalComponent *component)
 {
        ECompEditorPropertyPartStringClass *klass;
        GtkWidget *edit_widget;
-       icalproperty *prop;
+       ICalProperty *prop;
        gchar *value;
 
        g_return_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_STRING (property_part));
-       g_return_if_fail (component != NULL);
+       g_return_if_fail (I_CAL_IS_COMPONENT (component));
 
        edit_widget = e_comp_editor_property_part_get_edit_widget (property_part);
        g_return_if_fail (GTK_IS_ENTRY (edit_widget) || GTK_IS_SCROLLED_WINDOW (edit_widget));
 
        klass = E_COMP_EDITOR_PROPERTY_PART_STRING_GET_CLASS (property_part);
        g_return_if_fail (klass != NULL);
-       g_return_if_fail (klass->ical_prop_kind != ICAL_NO_PROPERTY);
-       g_return_if_fail (klass->ical_new_func != NULL);
-       g_return_if_fail (klass->ical_set_func != NULL);
+       g_return_if_fail (klass->prop_kind != I_CAL_NO_PROPERTY);
+       g_return_if_fail (klass->i_cal_new_func != NULL);
+       g_return_if_fail (klass->i_cal_set_func != NULL);
 
        if (GTK_IS_ENTRY (edit_widget)) {
                value = g_strdup (gtk_entry_get_text (GTK_ENTRY (edit_widget)));
@@ -489,24 +488,22 @@ ecepp_string_fill_component (ECompEditorPropertyPart *property_part,
 
        if (e_comp_editor_property_part_string_is_multivalue (E_COMP_EDITOR_PROPERTY_PART_STRING 
(property_part))) {
                /* Clear all multivalues first */
-               while (prop = icalcomponent_get_first_property (component, klass->ical_prop_kind), prop) {
-                       icalcomponent_remove_property (component, prop);
-                       icalproperty_free (prop);
-               }
+               e_cal_util_component_remove_property_by_kind (component, klass->prop_kind, TRUE);
        }
 
-       prop = icalcomponent_get_first_property (component, klass->ical_prop_kind);
+       prop = i_cal_component_get_first_property (component, klass->prop_kind);
 
        if (value && *value) {
                if (prop) {
-                       klass->ical_set_func (prop, value);
+                       klass->i_cal_set_func (prop, value);
+                       g_object_unref (prop);
                } else {
-                       prop = klass->ical_new_func (value);
-                       icalcomponent_add_property (component, prop);
+                       prop = klass->i_cal_new_func (value);
+                       i_cal_component_take_property (component, prop);
                }
        } else if (prop) {
-               icalcomponent_remove_property (component, prop);
-               icalproperty_free (prop);
+               i_cal_component_remove_property (component, prop);
+               g_object_unref (prop);
        }
 
        g_free (value);
@@ -530,10 +527,10 @@ e_comp_editor_property_part_string_class_init (ECompEditorPropertyPartStringClas
 
        klass->entry_type = GTK_TYPE_ENTRY;
 
-       klass->ical_prop_kind = ICAL_NO_PROPERTY;
-       klass->ical_new_func = NULL;
-       klass->ical_set_func = NULL;
-       klass->ical_get_func = NULL;
+       klass->prop_kind = I_CAL_NO_PROPERTY;
+       klass->i_cal_new_func = NULL;
+       klass->i_cal_set_func = NULL;
+       klass->i_cal_get_func = NULL;
 
        part_class = E_COMP_EDITOR_PROPERTY_PART_CLASS (klass);
        part_class->create_widgets = ecepp_string_create_widgets;
@@ -595,11 +592,11 @@ static guint ecepp_datetime_signals[ECEPP_DATETIME_LAST_SIGNAL];
 
 G_DEFINE_ABSTRACT_TYPE (ECompEditorPropertyPartDatetime, e_comp_editor_property_part_datetime, 
E_TYPE_COMP_EDITOR_PROPERTY_PART)
 
-static icaltimezone *
+static ICalTimezone *
 ecepp_datetime_lookup_timezone (ECompEditorPropertyPartDatetime *part_datetime,
                                const gchar *tzid)
 {
-       icaltimezone *zone = NULL;
+       ICalTimezone *zone = NULL;
 
        if (!tzid || !*tzid)
                return NULL;
@@ -644,125 +641,135 @@ ecepp_datetime_create_widgets (ECompEditorPropertyPart *property_part,
 
 static void
 ecepp_datetime_fill_widget (ECompEditorPropertyPart *property_part,
-                           icalcomponent *component)
+                           ICalComponent *component)
 {
        ECompEditorPropertyPartDatetime *part_datetime;
        ECompEditorPropertyPartDatetimeClass *klass;
        GtkWidget *edit_widget;
-       icalproperty *prop;
-       struct icaltimetype value;
+       ICalProperty *prop;
+       ICalTime *value = NULL;
 
        g_return_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_DATETIME (property_part));
-       g_return_if_fail (component != NULL);
+       g_return_if_fail (I_CAL_IS_COMPONENT (component));
 
        edit_widget = e_comp_editor_property_part_get_edit_widget (property_part);
        g_return_if_fail (E_IS_DATE_EDIT (edit_widget));
 
        klass = E_COMP_EDITOR_PROPERTY_PART_DATETIME_GET_CLASS (property_part);
        g_return_if_fail (klass != NULL);
-       g_return_if_fail (klass->ical_prop_kind != ICAL_NO_PROPERTY);
-       g_return_if_fail (klass->ical_get_func != NULL);
+       g_return_if_fail (klass->prop_kind != I_CAL_NO_PROPERTY);
+       g_return_if_fail (klass->i_cal_get_func != NULL);
 
        part_datetime = E_COMP_EDITOR_PROPERTY_PART_DATETIME (property_part);
 
-       prop = icalcomponent_get_first_property (component, klass->ical_prop_kind);
+       prop = i_cal_component_get_first_property (component, klass->prop_kind);
        if (prop) {
                ETimezoneEntry *timezone_entry = g_weak_ref_get (&part_datetime->priv->timezone_entry);
 
-               value = klass->ical_get_func (prop);
+               value = klass->i_cal_get_func (prop);
 
-               if (timezone_entry && !value.is_date) {
-                       icaltimezone *editor_zone = e_timezone_entry_get_timezone (timezone_entry);
+               if (timezone_entry && value && !i_cal_time_is_date (value)) {
+                       ICalTimezone *editor_zone = e_timezone_entry_get_timezone (timezone_entry);
 
                        /* Attempt to convert time to the zone used in the editor */
-                       if (editor_zone && !value.zone && !icaltime_is_utc (value)) {
-                               icalparameter *param;
+                       if (editor_zone && !i_cal_time_get_timezone (value) && !i_cal_time_is_utc (value)) {
+                               ICalParameter *param;
 
-                               param = icalproperty_get_first_parameter (prop, ICAL_TZID_PARAMETER);
+                               param = i_cal_property_get_first_parameter (prop, I_CAL_TZID_PARAMETER);
                                if (param) {
                                        const gchar *tzid;
 
-                                       tzid = icalparameter_get_tzid (param);
+                                       tzid = i_cal_parameter_get_tzid (param);
 
                                        if (tzid && *tzid) {
                                                if (editor_zone &&
-                                                   (g_strcmp0 (icaltimezone_get_tzid (editor_zone), tzid) == 
0 ||
-                                                   g_strcmp0 (icaltimezone_get_location (editor_zone), tzid) 
== 0)) {
-                                                       value.zone = editor_zone;
+                                                   (g_strcmp0 (i_cal_timezone_get_tzid (editor_zone), tzid) 
== 0 ||
+                                                   g_strcmp0 (i_cal_timezone_get_location (editor_zone), 
tzid) == 0)) {
+                                                       i_cal_time_set_timezone (value, editor_zone);
                                                } else {
-                                                       value.zone = ecepp_datetime_lookup_timezone 
(part_datetime, tzid);
+                                                       i_cal_time_set_timezone (value, 
ecepp_datetime_lookup_timezone (part_datetime, tzid));
                                                }
                                        }
+
+                                       g_object_unref (param);
                                }
                        }
                }
 
                g_clear_object (&timezone_entry);
-       } else {
-               value = icaltime_null_time ();
        }
 
+       if (!value)
+               value = i_cal_time_null_time ();
+
        e_comp_editor_property_part_datetime_set_value (part_datetime, value);
+
+       g_clear_object (&value);
 }
 
 static void
 ecepp_datetime_fill_component (ECompEditorPropertyPart *property_part,
-                              icalcomponent *component)
+                              ICalComponent *component)
 {
        ECompEditorPropertyPartDatetime *part_datetime;
        ECompEditorPropertyPartDatetimeClass *klass;
        GtkWidget *edit_widget;
        EDateEdit *date_edit;
-       icalproperty *prop;
-       struct icaltimetype value;
+       ICalProperty *prop;
+       ICalTime *value;
        time_t tt;
 
        g_return_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_DATETIME (property_part));
-       g_return_if_fail (component != NULL);
+       g_return_if_fail (I_CAL_IS_COMPONENT (component));
 
        edit_widget = e_comp_editor_property_part_get_edit_widget (property_part);
        g_return_if_fail (E_IS_DATE_EDIT (edit_widget));
 
        klass = E_COMP_EDITOR_PROPERTY_PART_DATETIME_GET_CLASS (property_part);
        g_return_if_fail (klass != NULL);
-       g_return_if_fail (klass->ical_prop_kind != ICAL_NO_PROPERTY);
-       g_return_if_fail (klass->ical_new_func != NULL);
-       g_return_if_fail (klass->ical_get_func != NULL);
-       g_return_if_fail (klass->ical_set_func != NULL);
+       g_return_if_fail (klass->prop_kind != I_CAL_NO_PROPERTY);
+       g_return_if_fail (klass->i_cal_new_func != NULL);
+       g_return_if_fail (klass->i_cal_get_func != NULL);
+       g_return_if_fail (klass->i_cal_set_func != NULL);
 
        part_datetime = E_COMP_EDITOR_PROPERTY_PART_DATETIME (property_part);
        date_edit = E_DATE_EDIT (edit_widget);
        tt = e_date_edit_get_time (date_edit);
 
-       prop = icalcomponent_get_first_property (component, klass->ical_prop_kind);
+       prop = i_cal_component_get_first_property (component, klass->prop_kind);
 
        if (e_date_edit_get_allow_no_date_set (date_edit) && tt == (time_t) -1) {
                if (prop) {
-                       icalcomponent_remove_property (component, prop);
-                       icalproperty_free (prop);
+                       i_cal_component_remove_property (component, prop);
+                       g_object_unref (prop);
                }
        } else {
                value = e_comp_editor_property_part_datetime_get_value (part_datetime);
 
                if (prop) {
                        /* Remove the VALUE parameter, to correspond to the actual value being set */
-                       icalproperty_remove_parameter_by_kind (prop, ICAL_VALUE_PARAMETER);
+                       i_cal_property_remove_parameter_by_kind (prop, I_CAL_VALUE_PARAMETER);
 
-                       klass->ical_set_func (prop, value);
+                       klass->i_cal_set_func (prop, value);
 
                        /* Re-read the value, because it could be changed by the descendant */
-                       value = klass->ical_get_func (prop);
+                       g_clear_object (&value);
+                       value = klass->i_cal_get_func (prop);
 
                        cal_comp_util_update_tzid_parameter (prop, value);
                } else {
-                       prop = klass->ical_new_func (value);
+                       prop = klass->i_cal_new_func (value);
 
                        /* Re-read the value, because it could be changed by the descendant */
-                       value = klass->ical_get_func (prop);
+                       g_clear_object (&value);
+                       value = klass->i_cal_get_func (prop);
 
                        cal_comp_util_update_tzid_parameter (prop, value);
-                       icalcomponent_add_property (component, prop);
+                       i_cal_component_add_property (component, prop);
                }
+
+               g_clear_object (&value);
+               g_clear_object (&prop);
        }
 }
 
@@ -794,10 +801,10 @@ e_comp_editor_property_part_datetime_class_init (ECompEditorPropertyPartDatetime
 
        g_type_class_add_private (klass, sizeof (ECompEditorPropertyPartDatetimePrivate));
 
-       klass->ical_prop_kind = ICAL_NO_PROPERTY;
-       klass->ical_new_func = NULL;
-       klass->ical_set_func = NULL;
-       klass->ical_get_func = NULL;
+       klass->prop_kind = I_CAL_NO_PROPERTY;
+       klass->i_cal_new_func = NULL;
+       klass->i_cal_set_func = NULL;
+       klass->i_cal_get_func = NULL;
 
        part_class = E_COMP_EDITOR_PROPERTY_PART_CLASS (klass);
        part_class->create_widgets = ecepp_datetime_create_widgets;
@@ -807,7 +814,7 @@ e_comp_editor_property_part_datetime_class_init (ECompEditorPropertyPartDatetime
        object_class = G_OBJECT_CLASS (klass);
        object_class->finalize = ecepp_datetime_finalize;
 
-       /* icaltimezone *lookup_timezone (datetime, const gchar *tzid); */
+       /* ICalTimezone *lookup_timezone (datetime, const gchar *tzid); */
        ecepp_datetime_signals[ECEPP_DATETIME_LOOKUP_TIMEZONE] = g_signal_new (
                "lookup-timezone",
                G_OBJECT_CLASS_TYPE (object_class),
@@ -888,10 +895,11 @@ e_comp_editor_property_part_datetime_get_allow_no_date_set (ECompEditorPropertyP
 
 void
 e_comp_editor_property_part_datetime_set_value (ECompEditorPropertyPartDatetime *part_datetime,
-                                               struct icaltimetype value)
+                                               const ICalTime *value)
 {
        GtkWidget *edit_widget;
        EDateEdit *date_edit;
+       ICalTime *tmp_value = NULL;
 
        g_return_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_DATETIME (part_datetime));
 
@@ -900,53 +908,68 @@ e_comp_editor_property_part_datetime_set_value (ECompEditorPropertyPartDatetime
 
        date_edit = E_DATE_EDIT (edit_widget);
 
-       if (!e_date_edit_get_allow_no_date_set (date_edit) && (icaltime_is_null_time (value) ||
-           !icaltime_is_valid_time (value))) {
-               value = icaltime_current_time_with_zone (icaltimezone_get_utc_timezone ());
+       if (!e_date_edit_get_allow_no_date_set (date_edit) && (!value || i_cal_time_is_null_time (value) ||
+           !i_cal_time_is_valid_time (value))) {
+               tmp_value = i_cal_time_current_time_with_zone (i_cal_timezone_get_utc_timezone ());
+               value = tmp_value;
        }
 
-       if (icaltime_is_null_time (value) ||
-           !icaltime_is_valid_time (value)) {
+       if (!value || i_cal_time_is_null_time (value) ||
+           !i_cal_time_is_valid_time (value)) {
                e_date_edit_set_time (date_edit, (time_t) -1);
        } else {
+               ICalTimezone *zone;
+
+               zone = i_cal_time_get_timezone (value);
+
                /* Convert to the same time zone as the editor uses, if different */
-               if (!value.is_date && value.zone) {
+               if (!i_cal_time_is_date (value) && zone) {
                        ETimezoneEntry *timezone_entry = g_weak_ref_get 
(&part_datetime->priv->timezone_entry);
 
                        if (timezone_entry) {
-                               icaltimezone *editor_zone = e_timezone_entry_get_timezone (timezone_entry);
+                               ICalTimezone *editor_zone = e_timezone_entry_get_timezone (timezone_entry);
+
+                               if (editor_zone && zone != editor_zone &&
+                                   g_strcmp0 (i_cal_timezone_get_tzid (editor_zone), i_cal_timezone_get_tzid 
(zone)) != 0 &&
+                                   g_strcmp0 (i_cal_timezone_get_location (editor_zone), 
i_cal_timezone_get_location (zone)) != 0) {
+                                       if (tmp_value != value) {
+                                               tmp_value = i_cal_time_new_clone (value);
+                                               value = tmp_value;
+                                       }
 
-                               if (editor_zone && value.zone != editor_zone &&
-                                   g_strcmp0 (icaltimezone_get_tzid (editor_zone), icaltimezone_get_tzid 
((icaltimezone *) value.zone)) != 0 &&
-                                   g_strcmp0 (icaltimezone_get_location (editor_zone), 
icaltimezone_get_location ((icaltimezone *) value.zone)) != 0) {
-                                       icaltimezone_convert_time (&value, (icaltimezone *) value.zone, 
editor_zone);
-                                       value.zone = editor_zone;
+                                       i_cal_timezone_convert_time (tmp_value, zone, editor_zone);
+                                       i_cal_time_set_timezone (tmp_value, editor_zone);
                                }
                        }
 
                        g_clear_object (&timezone_entry);
                }
 
-               e_date_edit_set_date (date_edit, value.year, value.month, value.day);
+               g_clear_object (&zone);
 
-               if (!value.is_date)
-                       e_date_edit_set_time_of_day (date_edit, value.hour, value.minute);
+               e_date_edit_set_date (date_edit, i_cal_time_get_year (value), i_cal_time_get_month (value), 
i_cal_time_get_day (value));
+
+               if (!i_cal_time_is_date (value))
+                       e_date_edit_set_time_of_day (date_edit, i_cal_time_get_hour (value), 
i_cal_time_get_minute (value));
                else if (e_date_edit_get_show_time (date_edit))
                        e_date_edit_set_time_of_day (date_edit, 0, 0);
                else if (e_date_edit_get_allow_no_date_set (date_edit))
                        e_date_edit_set_time_of_day (date_edit, -1, -1);
 
-               e_comp_editor_property_part_datetime_set_date_only (part_datetime, value.is_date);
+               e_comp_editor_property_part_datetime_set_date_only (part_datetime, i_cal_time_is_date 
(value));
        }
+
+       g_clear_object (&tmp_value);
 }
 
-struct icaltimetype
+ICalTime *
 e_comp_editor_property_part_datetime_get_value (ECompEditorPropertyPartDatetime *part_datetime)
 {
        ETimezoneEntry *timezone_entry = NULL;
        GtkWidget *edit_widget;
        EDateEdit *date_edit;
-       struct icaltimetype value = icaltime_null_time ();
+       ICalTime *value = i_cal_time_null_time ();
+       gint year, month, day;
 
        g_return_val_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_DATETIME (part_datetime), value);
 
@@ -955,21 +978,27 @@ e_comp_editor_property_part_datetime_get_value (ECompEditorPropertyPartDatetime
 
        date_edit = E_DATE_EDIT (edit_widget);
 
-       if (!e_date_edit_get_date (date_edit, &value.year, &value.month, &value.day))
-               return icaltime_null_time ();
+       if (!e_date_edit_get_date (date_edit, &year, &month, &day))
+               return value;
+
+       i_cal_time_set_date (value, year, month, day);
 
        if (!e_date_edit_get_show_time (date_edit)) {
-               value.is_date = 1;
+               i_cal_time_set_is_date (value, TRUE);
        } else {
-               value.zone = NULL;
-               value.is_date = !e_date_edit_get_time_of_day (date_edit, &value.hour, &value.minute);
+               gint hour, minute;
+
+               i_cal_time_set_timezone (value, NULL);
+               i_cal_time_set_is_date (value, !e_date_edit_get_time_of_day (date_edit, &hour, &minute));
+
+               if (!i_cal_time_is_date (value)) {
+                       i_cal_time_set_time (value, hour, minute, 0);
 
-               if (!value.is_date) {
                        timezone_entry = g_weak_ref_get (&part_datetime->priv->timezone_entry);
                        if (timezone_entry)
-                               value.zone = e_timezone_entry_get_timezone (timezone_entry);
-                       if (!value.zone)
-                               value.zone = icaltimezone_get_utc_timezone ();
+                               i_cal_time_set_timezone (value, e_timezone_entry_get_timezone 
(timezone_entry));
+                       if (!i_cal_time_get_timezone (value))
+                               i_cal_time_set_timezone (value, i_cal_timezone_get_utc_timezone ());
                }
        }
 
@@ -1053,27 +1082,28 @@ ecepp_spin_create_widgets (ECompEditorPropertyPart *property_part,
 
 static void
 ecepp_spin_fill_widget (ECompEditorPropertyPart *property_part,
-                       icalcomponent *component)
+                       ICalComponent *component)
 {
        ECompEditorPropertyPartSpinClass *klass;
        GtkWidget *edit_widget;
-       icalproperty *prop;
+       ICalProperty *prop;
        gint value;
 
        g_return_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_SPIN (property_part));
-       g_return_if_fail (component != NULL);
+       g_return_if_fail (I_CAL_IS_COMPONENT (component));
 
        edit_widget = e_comp_editor_property_part_get_edit_widget (property_part);
        g_return_if_fail (GTK_IS_SPIN_BUTTON (edit_widget));
 
        klass = E_COMP_EDITOR_PROPERTY_PART_SPIN_GET_CLASS (property_part);
        g_return_if_fail (klass != NULL);
-       g_return_if_fail (klass->ical_prop_kind != ICAL_NO_PROPERTY);
-       g_return_if_fail (klass->ical_get_func != NULL);
+       g_return_if_fail (klass->prop_kind != I_CAL_NO_PROPERTY);
+       g_return_if_fail (klass->i_cal_get_func != NULL);
 
-       prop = icalcomponent_get_first_property (component, klass->ical_prop_kind);
+       prop = i_cal_component_get_first_property (component, klass->prop_kind);
        if (prop) {
-               value = klass->ical_get_func (prop);
+               value = klass->i_cal_get_func (prop);
+               g_object_unref (prop);
        } else {
                gdouble d_min, d_max;
 
@@ -1087,34 +1117,36 @@ ecepp_spin_fill_widget (ECompEditorPropertyPart *property_part,
 
 static void
 ecepp_spin_fill_component (ECompEditorPropertyPart *property_part,
-                          icalcomponent *component)
+                          ICalComponent *component)
 {
        ECompEditorPropertyPartSpinClass *klass;
        GtkWidget *edit_widget;
-       icalproperty *prop;
+       ICalProperty *prop;
        gint value;
 
        g_return_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_SPIN (property_part));
-       g_return_if_fail (component != NULL);
+       g_return_if_fail (I_CAL_COMPONENT (component));
 
        edit_widget = e_comp_editor_property_part_get_edit_widget (property_part);
        g_return_if_fail (GTK_IS_SPIN_BUTTON (edit_widget));
 
        klass = E_COMP_EDITOR_PROPERTY_PART_SPIN_GET_CLASS (property_part);
        g_return_if_fail (klass != NULL);
-       g_return_if_fail (klass->ical_prop_kind != ICAL_NO_PROPERTY);
-       g_return_if_fail (klass->ical_new_func != NULL);
-       g_return_if_fail (klass->ical_set_func != NULL);
+       g_return_if_fail (klass->prop_kind != I_CAL_NO_PROPERTY);
+       g_return_if_fail (klass->i_cal_new_func != NULL);
+       g_return_if_fail (klass->i_cal_set_func != NULL);
 
        value = gtk_spin_button_get_value_as_int (GTK_SPIN_BUTTON (edit_widget));
-       prop = icalcomponent_get_first_property (component, klass->ical_prop_kind);
+       prop = i_cal_component_get_first_property (component, klass->prop_kind);
 
        if (prop) {
-               klass->ical_set_func (prop, value);
+               klass->i_cal_set_func (prop, value);
        } else {
-               prop = klass->ical_new_func (value);
-               icalcomponent_add_property (component, prop);
+               prop = klass->i_cal_new_func (value);
+               i_cal_component_add_property (component, prop);
        }
+
+       g_clear_object (&prop);
 }
 
 static void
@@ -1132,10 +1164,10 @@ e_comp_editor_property_part_spin_class_init (ECompEditorPropertyPartSpinClass *k
 
        g_type_class_add_private (klass, sizeof (ECompEditorPropertyPartSpinPrivate));
 
-       klass->ical_prop_kind = ICAL_NO_PROPERTY;
-       klass->ical_new_func = NULL;
-       klass->ical_set_func = NULL;
-       klass->ical_get_func = NULL;
+       klass->prop_kind = I_CAL_NO_PROPERTY;
+       klass->i_cal_new_func = NULL;
+       klass->i_cal_set_func = NULL;
+       klass->i_cal_get_func = NULL;
 
        part_class = E_COMP_EDITOR_PROPERTY_PART_CLASS (klass);
        part_class->create_widgets = ecepp_spin_create_widgets;
@@ -1247,13 +1279,13 @@ ecepp_picker_create_widgets (ECompEditorPropertyPart *property_part,
 
 static void
 ecepp_picker_fill_widget (ECompEditorPropertyPart *property_part,
-                         icalcomponent *component)
+                         ICalComponent *component)
 {
        GtkWidget *edit_widget;
        gchar *id = NULL;
 
        g_return_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_PICKER (property_part));
-       g_return_if_fail (component != NULL);
+       g_return_if_fail (I_CAL_IS_COMPONENT (component));
 
        edit_widget = e_comp_editor_property_part_get_edit_widget (property_part);
        g_return_if_fail (GTK_IS_COMBO_BOX_TEXT (edit_widget));
@@ -1270,13 +1302,13 @@ ecepp_picker_fill_widget (ECompEditorPropertyPart *property_part,
 
 static void
 ecepp_picker_fill_component (ECompEditorPropertyPart *property_part,
-                            icalcomponent *component)
+                            ICalComponent *component)
 {
        GtkWidget *edit_widget;
        const gchar *id;
 
        g_return_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_PICKER (property_part));
-       g_return_if_fail (component != NULL);
+       g_return_if_fail (I_CAL_IS_COMPONENT (component));
 
        edit_widget = e_comp_editor_property_part_get_edit_widget (property_part);
        g_return_if_fail (GTK_IS_COMBO_BOX_TEXT (edit_widget));
@@ -1331,7 +1363,7 @@ e_comp_editor_property_part_picker_get_values (ECompEditorPropertyPartPicker *pa
 
 gboolean
 e_comp_editor_property_part_picker_get_from_component (ECompEditorPropertyPartPicker *part_picker,
-                                                      icalcomponent *component,
+                                                      ICalComponent *component,
                                                       gchar **out_id)
 {
        ECompEditorPropertyPartPickerClass *klass;
@@ -1348,7 +1380,7 @@ e_comp_editor_property_part_picker_get_from_component (ECompEditorPropertyPartPi
 void
 e_comp_editor_property_part_picker_set_to_component (ECompEditorPropertyPartPicker *part_picker,
                                                     const gchar *id,
-                                                    icalcomponent *component)
+                                                    ICalComponent *component)
 {
        ECompEditorPropertyPartPickerClass *klass;
 
@@ -1398,10 +1430,10 @@ struct _ECompEditorPropertyPartPickerWithMapPrivate {
        gint n_map_elems;
        gchar *label;
 
-       icalproperty_kind ical_prop_kind;
-       ECompEditorPropertyPartPickerMapICalNewFunc ical_new_func;
-       ECompEditorPropertyPartPickerMapICalSetFunc ical_set_func;
-       ECompEditorPropertyPartPickerMapICalGetFunc ical_get_func;
+       ICalPropertyKind prop_kind;
+       ECompEditorPropertyPartPickerMapICalNewFunc i_cal_new_func;
+       ECompEditorPropertyPartPickerMapICalSetFunc i_cal_set_func;
+       ECompEditorPropertyPartPickerMapICalGetFunc i_cal_get_func;
 };
 
 enum {
@@ -1440,28 +1472,29 @@ ecepp_picker_with_map_get_values (ECompEditorPropertyPartPicker *part_picker,
 
 static gboolean
 ecepp_picker_with_map_get_from_component (ECompEditorPropertyPartPicker *part_picker,
-                                         icalcomponent *component,
+                                         ICalComponent *component,
                                          gchar **out_id)
 {
        ECompEditorPropertyPartPickerWithMap *part_picker_with_map;
-       icalproperty *prop;
+       ICalProperty *prop;
        gint ii, value;
 
        g_return_val_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_PICKER_WITH_MAP (part_picker), FALSE);
-       g_return_val_if_fail (component != NULL, FALSE);
+       g_return_val_if_fail (I_CAL_IS_COMPONENT (component), FALSE);
        g_return_val_if_fail (out_id != NULL, FALSE);
 
        part_picker_with_map = E_COMP_EDITOR_PROPERTY_PART_PICKER_WITH_MAP (part_picker);
        g_return_val_if_fail (part_picker_with_map->priv->map != NULL, FALSE);
        g_return_val_if_fail (part_picker_with_map->priv->n_map_elems > 0, FALSE);
-       g_return_val_if_fail (part_picker_with_map->priv->ical_prop_kind != ICAL_NO_PROPERTY, FALSE);
-       g_return_val_if_fail (part_picker_with_map->priv->ical_get_func != NULL, FALSE);
+       g_return_val_if_fail (part_picker_with_map->priv->prop_kind != I_CAL_NO_PROPERTY, FALSE);
+       g_return_val_if_fail (part_picker_with_map->priv->i_cal_get_func != NULL, FALSE);
 
-       prop = icalcomponent_get_first_property (component, part_picker_with_map->priv->ical_prop_kind);
+       prop = i_cal_component_get_first_property (component, part_picker_with_map->priv->prop_kind);
        if (!prop)
                return FALSE;
 
-       value = part_picker_with_map->priv->ical_get_func (prop);
+       value = part_picker_with_map->priv->i_cal_get_func (prop);
+       g_clear_object (&prop);
 
        for (ii = 0; ii < part_picker_with_map->priv->n_map_elems; ii++) {
                gboolean matches;
@@ -1484,40 +1517,40 @@ ecepp_picker_with_map_get_from_component (ECompEditorPropertyPartPicker *part_pi
 static void
 ecepp_picker_with_map_set_to_component (ECompEditorPropertyPartPicker *part_picker,
                                        const gchar *id,
-                                       icalcomponent *component)
+                                       ICalComponent *component)
 {
        ECompEditorPropertyPartPickerWithMap *part_picker_with_map;
-       icalproperty *prop;
+       ICalProperty *prop;
        gint ii, value;
 
        g_return_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_PICKER_WITH_MAP (part_picker));
        g_return_if_fail (id != NULL);
-       g_return_if_fail (component != NULL);
+       g_return_if_fail (I_CAL_IS_COMPONENT (component));
 
        part_picker_with_map = E_COMP_EDITOR_PROPERTY_PART_PICKER_WITH_MAP (part_picker);
        g_return_if_fail (part_picker_with_map->priv->map != NULL);
        g_return_if_fail (part_picker_with_map->priv->n_map_elems > 0);
-       g_return_if_fail (part_picker_with_map->priv->ical_prop_kind != ICAL_NO_PROPERTY);
-       g_return_if_fail (part_picker_with_map->priv->ical_new_func != NULL);
-       g_return_if_fail (part_picker_with_map->priv->ical_set_func != NULL);
+       g_return_if_fail (part_picker_with_map->priv->prop_kind != I_CAL_NO_PROPERTY);
+       g_return_if_fail (part_picker_with_map->priv->i_cal_new_func != NULL);
+       g_return_if_fail (part_picker_with_map->priv->i_cal_set_func != NULL);
 
        ii = (gint) g_ascii_strtoll (id, NULL, 10);
        g_return_if_fail (ii >= 0 && ii < part_picker_with_map->priv->n_map_elems);
 
-       prop = icalcomponent_get_first_property (component, part_picker_with_map->priv->ical_prop_kind);
+       prop = i_cal_component_get_first_property (component, part_picker_with_map->priv->prop_kind);
        value = part_picker_with_map->priv->map[ii].value;
 
        if (part_picker_with_map->priv->map[ii].delete_prop) {
-               if (prop) {
-                       icalcomponent_remove_property (component, prop);
-                       icalproperty_free (prop);
-               }
+               if (prop)
+                       i_cal_component_remove_property (component, prop);
        } else if (prop) {
-               part_picker_with_map->priv->ical_set_func (prop, value);
+               part_picker_with_map->priv->i_cal_set_func (prop, value);
        } else {
-               prop = part_picker_with_map->priv->ical_new_func (value);
-               icalcomponent_add_property (component, prop);
+               prop = part_picker_with_map->priv->i_cal_new_func (value);
+               i_cal_component_add_property (component, prop);
        }
+
+       g_clear_object (&prop);
 }
 
 static void
@@ -1671,10 +1704,10 @@ ECompEditorPropertyPart *
 e_comp_editor_property_part_picker_with_map_new (const ECompEditorPropertyPartPickerMap map[],
                                                 gint n_map_elements,
                                                 const gchar *label,
-                                                icalproperty_kind ical_prop_kind,
-                                                ECompEditorPropertyPartPickerMapICalNewFunc ical_new_func,
-                                                ECompEditorPropertyPartPickerMapICalSetFunc ical_set_func,
-                                                ECompEditorPropertyPartPickerMapICalGetFunc ical_get_func)
+                                                ICalPropertyKind prop_kind,
+                                                ECompEditorPropertyPartPickerMapICalNewFunc i_cal_new_func,
+                                                ECompEditorPropertyPartPickerMapICalSetFunc i_cal_set_func,
+                                                ECompEditorPropertyPartPickerMapICalGetFunc i_cal_get_func)
 {
        ECompEditorPropertyPartPickerWithMap *part_picker_with_map;
        ECompEditorPropertyPartPickerMap *map_copy;
@@ -1684,10 +1717,10 @@ e_comp_editor_property_part_picker_with_map_new (const ECompEditorPropertyPartPi
        g_return_val_if_fail (map != NULL, NULL);
        g_return_val_if_fail (n_map_elements > 0, NULL);
        g_return_val_if_fail (label != NULL, NULL);
-       g_return_val_if_fail (ical_prop_kind != ICAL_NO_PROPERTY, NULL);
-       g_return_val_if_fail (ical_new_func != NULL, NULL);
-       g_return_val_if_fail (ical_set_func != NULL, NULL);
-       g_return_val_if_fail (ical_get_func != NULL, NULL);
+       g_return_val_if_fail (prop_kind != I_CAL_NO_PROPERTY, NULL);
+       g_return_val_if_fail (i_cal_new_func != NULL, NULL);
+       g_return_val_if_fail (i_cal_set_func != NULL, NULL);
+       g_return_val_if_fail (i_cal_get_func != NULL, NULL);
 
        map_copy = g_new0 (ECompEditorPropertyPartPickerMap, n_map_elements + 1);
        for (ii = 0; ii < n_map_elements; ii++) {
@@ -1702,10 +1735,10 @@ e_comp_editor_property_part_picker_with_map_new (const ECompEditorPropertyPartPi
 
        part_picker_with_map = E_COMP_EDITOR_PROPERTY_PART_PICKER_WITH_MAP (property_part);
 
-       part_picker_with_map->priv->ical_prop_kind = ical_prop_kind;
-       part_picker_with_map->priv->ical_new_func = ical_new_func;
-       part_picker_with_map->priv->ical_set_func = ical_set_func;
-       part_picker_with_map->priv->ical_get_func = ical_get_func;
+       part_picker_with_map->priv->prop_kind = prop_kind;
+       part_picker_with_map->priv->i_cal_new_func = i_cal_new_func;
+       part_picker_with_map->priv->i_cal_set_func = i_cal_set_func;
+       part_picker_with_map->priv->i_cal_get_func = i_cal_get_func;
 
        return property_part;
 }
diff --git a/src/calendar/gui/e-comp-editor-property-part.h b/src/calendar/gui/e-comp-editor-property-part.h
index 6c26560dea..cf29a09beb 100644
--- a/src/calendar/gui/e-comp-editor-property-part.h
+++ b/src/calendar/gui/e-comp-editor-property-part.h
@@ -217,7 +217,7 @@ struct _ECompEditorPropertyPartStringClass {
        ICalProperty *  (* i_cal_new_func)      (const gchar *value);
        void            (* i_cal_set_func)      (ICalProperty *prop,
                                                 const gchar *value);
-       const gchar *   (* i_cal_get_func)      (const ICalProperty *prop);
+       const gchar *   (* i_cal_get_func)      (ICalProperty *prop);
 };
 
 GType          e_comp_editor_property_part_string_get_type     (void) G_GNUC_CONST;
@@ -250,7 +250,7 @@ struct _ECompEditorPropertyPartDatetimeClass {
        ICalProperty *  (* i_cal_new_func)      (ICalTime *value);
        void            (* i_cal_set_func)      (ICalProperty *prop,
                                                 ICalTime *value);
-       ICalTime *      (* i_cal_get_func)      (const ICalProperty *prop);
+       ICalTime *      (* i_cal_get_func)      (ICalProperty *prop);
 };
 
 GType          e_comp_editor_property_part_datetime_get_type   (void) G_GNUC_CONST;
@@ -295,7 +295,7 @@ struct _ECompEditorPropertyPartSpinClass {
        ICalProperty *  (* i_cal_new_func)      (gint value);
        void            (* i_cal_set_func)      (ICalProperty *prop,
                                                 gint value);
-       gint            (* i_cal_get_func)      (const ICalProperty *prop);
+       gint            (* i_cal_get_func)      (ICalProperty *prop);
 };
 
 GType          e_comp_editor_property_part_spin_get_type       (void) G_GNUC_CONST;
@@ -366,7 +366,7 @@ typedef struct _ECompEditorPropertyPartPickerMap {
 typedef ICalProperty * (* ECompEditorPropertyPartPickerMapICalNewFunc) (gint value);
 typedef void           (* ECompEditorPropertyPartPickerMapICalSetFunc) (ICalProperty *prop,
                                                                         gint value);
-typedef gint           (* ECompEditorPropertyPartPickerMapICalGetFunc) (const ICalProperty *prop);
+typedef gint           (* ECompEditorPropertyPartPickerMapICalGetFunc) (ICalProperty *prop);
 
 struct _ECompEditorPropertyPartPickerWithMap {
        ECompEditorPropertyPartPicker parent;
diff --git a/src/calendar/gui/e-comp-editor-property-parts.c b/src/calendar/gui/e-comp-editor-property-parts.c
index 05ee33be32..2ba8eb020b 100644
--- a/src/calendar/gui/e-comp-editor-property-parts.c
+++ b/src/calendar/gui/e-comp-editor-property-parts.c
@@ -102,10 +102,10 @@ e_comp_editor_property_part_summary_class_init (ECompEditorPropertyPartSummaryCl
 
        part_string_class = E_COMP_EDITOR_PROPERTY_PART_STRING_CLASS (klass);
        part_string_class->entry_type = E_TYPE_SPELL_ENTRY;
-       part_string_class->ical_prop_kind = ICAL_SUMMARY_PROPERTY;
-       part_string_class->ical_new_func = icalproperty_new_summary;
-       part_string_class->ical_set_func = icalproperty_set_summary;
-       part_string_class->ical_get_func = icalproperty_get_summary;
+       part_string_class->prop_kind = I_CAL_SUMMARY_PROPERTY;
+       part_string_class->i_cal_new_func = i_cal_property_new_summary;
+       part_string_class->i_cal_set_func = i_cal_property_set_summary;
+       part_string_class->i_cal_get_func = i_cal_property_get_summary;
 
        part_class = E_COMP_EDITOR_PROPERTY_PART_CLASS (klass);
        part_class->create_widgets = ecepp_summary_create_widgets;
@@ -337,7 +337,7 @@ ecepp_location_create_widgets (ECompEditorPropertyPart *property_part,
 
 static void
 ecepp_location_fill_component (ECompEditorPropertyPart *property_part,
-                              icalcomponent *component)
+                              ICalComponent *component)
 {
        ECompEditorPropertyPartClass *part_class;
        GtkWidget *edit_widget;
@@ -368,10 +368,10 @@ e_comp_editor_property_part_location_class_init (ECompEditorPropertyPartLocation
        ECompEditorPropertyPartClass *part_class;
 
        part_string_class = E_COMP_EDITOR_PROPERTY_PART_STRING_CLASS (klass);
-       part_string_class->ical_prop_kind = ICAL_LOCATION_PROPERTY;
-       part_string_class->ical_new_func = icalproperty_new_location;
-       part_string_class->ical_set_func = icalproperty_set_location;
-       part_string_class->ical_get_func = icalproperty_get_location;
+       part_string_class->prop_kind = I_CAL_LOCATION_PROPERTY;
+       part_string_class->i_cal_new_func = i_cal_property_new_location;
+       part_string_class->i_cal_set_func = i_cal_property_set_location;
+       part_string_class->i_cal_get_func = i_cal_property_get_location;
 
        part_class = E_COMP_EDITOR_PROPERTY_PART_CLASS (klass);
        part_class->create_widgets = ecepp_location_create_widgets;
@@ -482,10 +482,10 @@ e_comp_editor_property_part_categories_class_init (ECompEditorPropertyPartCatego
        ECompEditorPropertyPartClass *part_class;
 
        part_string_class = E_COMP_EDITOR_PROPERTY_PART_STRING_CLASS (klass);
-       part_string_class->ical_prop_kind = ICAL_CATEGORIES_PROPERTY;
-       part_string_class->ical_new_func = icalproperty_new_categories;
-       part_string_class->ical_set_func = icalproperty_set_categories;
-       part_string_class->ical_get_func = icalproperty_get_categories;
+       part_string_class->prop_kind = I_CAL_CATEGORIES_PROPERTY;
+       part_string_class->i_cal_new_func = i_cal_property_new_categories;
+       part_string_class->i_cal_set_func = i_cal_property_set_categories;
+       part_string_class->i_cal_get_func = i_cal_property_get_categories;
 
        part_class = E_COMP_EDITOR_PROPERTY_PART_CLASS (klass);
        part_class->create_widgets = ecepp_categories_create_widgets;
@@ -581,13 +581,13 @@ ecepp_description_create_widgets (ECompEditorPropertyPart *property_part,
 
 static void
 ecepp_description_fill_widget (ECompEditorPropertyPart *property_part,
-                              icalcomponent *component)
+                              ICalComponent *component)
 {
        ECompEditorPropertyPartClass *part_class;
        GtkWidget *edit_widget;
 
        g_return_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_DESCRIPTION (property_part));
-       g_return_if_fail (component != NULL);
+       g_return_if_fail (I_CAL_IS_COMPONENT (component));
 
        part_class = E_COMP_EDITOR_PROPERTY_PART_CLASS (e_comp_editor_property_part_description_parent_class);
        g_return_if_fail (part_class != NULL);
@@ -614,10 +614,10 @@ e_comp_editor_property_part_description_class_init (ECompEditorPropertyPartDescr
 
        part_string_class = E_COMP_EDITOR_PROPERTY_PART_STRING_CLASS (klass);
        part_string_class->entry_type = GTK_TYPE_TEXT_VIEW;
-       part_string_class->ical_prop_kind = ICAL_DESCRIPTION_PROPERTY;
-       part_string_class->ical_new_func = icalproperty_new_description;
-       part_string_class->ical_set_func = icalproperty_set_description;
-       part_string_class->ical_get_func = icalproperty_get_description;
+       part_string_class->prop_kind = I_CAL_DESCRIPTION_PROPERTY;
+       part_string_class->i_cal_new_func = i_cal_property_new_description;
+       part_string_class->i_cal_set_func = i_cal_property_set_description;
+       part_string_class->i_cal_get_func = i_cal_property_get_description;
 
        part_class = E_COMP_EDITOR_PROPERTY_PART_CLASS (klass);
        part_class->create_widgets = ecepp_description_create_widgets;
@@ -710,10 +710,10 @@ e_comp_editor_property_part_url_class_init (ECompEditorPropertyPartUrlClass *kla
 
        part_string_class = E_COMP_EDITOR_PROPERTY_PART_STRING_CLASS (klass);
        part_string_class->entry_type = E_TYPE_URL_ENTRY;
-       part_string_class->ical_prop_kind = ICAL_URL_PROPERTY;
-       part_string_class->ical_new_func = icalproperty_new_url;
-       part_string_class->ical_set_func = icalproperty_set_url;
-       part_string_class->ical_get_func = icalproperty_get_url;
+       part_string_class->prop_kind = I_CAL_URL_PROPERTY;
+       part_string_class->i_cal_new_func = i_cal_property_new_url;
+       part_string_class->i_cal_set_func = i_cal_property_set_url;
+       part_string_class->i_cal_get_func = i_cal_property_get_url;
 
        part_class = E_COMP_EDITOR_PROPERTY_PART_CLASS (klass);
        part_class->create_widgets = ecepp_url_create_widgets;
@@ -920,10 +920,10 @@ e_comp_editor_property_part_dtstart_class_init (ECompEditorPropertyPartDtstartCl
        ECompEditorPropertyPartDatetimeClass *part_datetime_class;
 
        part_datetime_class = E_COMP_EDITOR_PROPERTY_PART_DATETIME_CLASS (klass);
-       part_datetime_class->ical_prop_kind = ICAL_DTSTART_PROPERTY;
-       part_datetime_class->ical_new_func = icalproperty_new_dtstart;
-       part_datetime_class->ical_set_func = icalproperty_set_dtstart;
-       part_datetime_class->ical_get_func = icalproperty_get_dtstart;
+       part_datetime_class->prop_kind = I_CAL_DTSTART_PROPERTY;
+       part_datetime_class->i_cal_new_func = i_cal_property_new_dtstart;
+       part_datetime_class->i_cal_set_func = i_cal_property_set_dtstart;
+       part_datetime_class->i_cal_get_func = i_cal_property_get_dtstart;
 }
 
 ECompEditorPropertyPart *
@@ -981,10 +981,10 @@ e_comp_editor_property_part_dtend_class_init (ECompEditorPropertyPartDtendClass
        ECompEditorPropertyPartDatetimeClass *part_datetime_class;
 
        part_datetime_class = E_COMP_EDITOR_PROPERTY_PART_DATETIME_CLASS (klass);
-       part_datetime_class->ical_prop_kind = ICAL_DTEND_PROPERTY;
-       part_datetime_class->ical_new_func = icalproperty_new_dtend;
-       part_datetime_class->ical_set_func = icalproperty_set_dtend;
-       part_datetime_class->ical_get_func = icalproperty_get_dtend;
+       part_datetime_class->prop_kind = I_CAL_DTEND_PROPERTY;
+       part_datetime_class->i_cal_new_func = i_cal_property_new_dtend;
+       part_datetime_class->i_cal_set_func = i_cal_property_set_dtend;
+       part_datetime_class->i_cal_get_func = i_cal_property_get_dtend;
 }
 
 ECompEditorPropertyPart *
@@ -1042,10 +1042,10 @@ e_comp_editor_property_part_due_class_init (ECompEditorPropertyPartDueClass *kla
        ECompEditorPropertyPartDatetimeClass *part_datetime_class;
 
        part_datetime_class = E_COMP_EDITOR_PROPERTY_PART_DATETIME_CLASS (klass);
-       part_datetime_class->ical_prop_kind = ICAL_DUE_PROPERTY;
-       part_datetime_class->ical_new_func = icalproperty_new_due;
-       part_datetime_class->ical_set_func = icalproperty_set_due;
-       part_datetime_class->ical_get_func = icalproperty_get_due;
+       part_datetime_class->prop_kind = I_CAL_DUE_PROPERTY;
+       part_datetime_class->i_cal_new_func = i_cal_property_new_due;
+       part_datetime_class->i_cal_set_func = i_cal_property_set_due;
+       part_datetime_class->i_cal_get_func = i_cal_property_get_due;
 }
 
 ECompEditorPropertyPart *
@@ -1092,39 +1092,37 @@ GType e_comp_editor_property_part_completed_get_type (void) G_GNUC_CONST;
 G_DEFINE_TYPE (ECompEditorPropertyPartCompleted, e_comp_editor_property_part_completed, 
E_TYPE_COMP_EDITOR_PROPERTY_PART_DATETIME_LABELED)
 
 static void
-e_comp_editor_property_part_completed_ensure_date_time (struct icaltimetype *pvalue)
+e_comp_editor_property_part_completed_ensure_date_time (ICalTime *pvalue)
 {
        if (!pvalue)
                return;
 
-       if (pvalue->is_date) {
-               pvalue->is_date = 0;
-               pvalue->hour = 0;
-               pvalue->minute = 0;
-               pvalue->second = 0;
-               pvalue->zone = icaltimezone_get_utc_timezone ();
-       } else if (!icaltime_is_utc (*pvalue)) {
+       if (i_cal_time_is_date (pvalue)) {
+               i_cal_time_set_is_date (pvalue, FALSE);
+               i_cal_time_set_time (pvalue, 0, 0, 0);
+               i_cal_time_set_timezone (pvalue, i_cal_timezone_get_utc_timezone ());
+       } else if (!i_cal_time_is_utc (pvalue)) {
                /* Make sure the time is in UTC */
-               icaltimezone_convert_time (pvalue, (icaltimezone *) pvalue->zone, 
icaltimezone_get_utc_timezone ());
-               pvalue->zone = icaltimezone_get_utc_timezone ();
+               i_cal_timezone_convert_time (pvalue, i_cal_time_get_timezone (pvalue), 
i_cal_timezone_get_utc_timezone ());
+               i_cal_time_set_timezone (pvalue, i_cal_timezone_get_utc_timezone ());
        }
 }
 
-static icalproperty *
-e_comp_editor_property_part_completed_new_func_wrapper (struct icaltimetype value)
+static ICalProperty *
+e_comp_editor_property_part_completed_new_func_wrapper (ICalTime *value)
 {
-       e_comp_editor_property_part_completed_ensure_date_time (&value);
+       e_comp_editor_property_part_completed_ensure_date_time (value);
 
-       return icalproperty_new_completed (value);
+       return i_cal_property_new_completed (value);
 }
 
 static void
-e_comp_editor_property_part_completed_set_func_wrapper (icalproperty *prop,
-                                                       struct icaltimetype value)
+e_comp_editor_property_part_completed_set_func_wrapper (ICalProperty *prop,
+                                                       ICalTime *value)
 {
-       e_comp_editor_property_part_completed_ensure_date_time (&value);
+       e_comp_editor_property_part_completed_ensure_date_time (value);
 
-       return icalproperty_set_completed (prop, value);
+       i_cal_property_set_completed (prop, value);
 }
 
 static void
@@ -1138,10 +1136,10 @@ e_comp_editor_property_part_completed_class_init (ECompEditorPropertyPartComplet
        ECompEditorPropertyPartDatetimeClass *part_datetime_class;
 
        part_datetime_class = E_COMP_EDITOR_PROPERTY_PART_DATETIME_CLASS (klass);
-       part_datetime_class->ical_prop_kind = ICAL_COMPLETED_PROPERTY;
-       part_datetime_class->ical_new_func = e_comp_editor_property_part_completed_new_func_wrapper;
-       part_datetime_class->ical_set_func = e_comp_editor_property_part_completed_set_func_wrapper;
-       part_datetime_class->ical_get_func = icalproperty_get_completed;
+       part_datetime_class->prop_kind = I_CAL_COMPLETED_PROPERTY;
+       part_datetime_class->i_cal_new_func = e_comp_editor_property_part_completed_new_func_wrapper;
+       part_datetime_class->i_cal_set_func = e_comp_editor_property_part_completed_set_func_wrapper;
+       part_datetime_class->i_cal_get_func = i_cal_property_get_completed;
 }
 
 ECompEditorPropertyPart *
@@ -1167,9 +1165,9 @@ ECompEditorPropertyPart *
 e_comp_editor_property_part_classification_new (void)
 {
        ECompEditorPropertyPartPickerMap map[] = {
-               { ICAL_CLASS_PUBLIC,       NC_("ECompEditor", "Public"),       FALSE, NULL },
-               { ICAL_CLASS_PRIVATE,      NC_("ECompEditor", "Private"),      FALSE, NULL },
-               { ICAL_CLASS_CONFIDENTIAL, NC_("ECompEditor", "Confidential"), FALSE, NULL }
+               { I_CAL_CLASS_PUBLIC,       NC_("ECompEditor", "Public"),       FALSE, NULL },
+               { I_CAL_CLASS_PRIVATE,      NC_("ECompEditor", "Private"),      FALSE, NULL },
+               { I_CAL_CLASS_CONFIDENTIAL, NC_("ECompEditor", "Confidential"), FALSE, NULL }
        };
        GSettings *settings;
        ECompEditorPropertyPart *part;
@@ -1186,10 +1184,10 @@ e_comp_editor_property_part_classification_new (void)
 
        part = e_comp_editor_property_part_picker_with_map_new (map, n_elems,
                C_("ECompEditor", "C_lassification:"),
-               ICAL_CLASS_PROPERTY,
-               (ECompEditorPropertyPartPickerMapICalNewFunc) icalproperty_new_class,
-               (ECompEditorPropertyPartPickerMapICalSetFunc) icalproperty_set_class,
-               (ECompEditorPropertyPartPickerMapICalGetFunc) icalproperty_get_class);
+               I_CAL_CLASS_PROPERTY,
+               (ECompEditorPropertyPartPickerMapICalNewFunc) i_cal_property_new_class,
+               (ECompEditorPropertyPartPickerMapICalSetFunc) i_cal_property_set_class,
+               (ECompEditorPropertyPartPickerMapICalGetFunc) i_cal_property_get_class);
 
        e_comp_editor_property_part_picker_with_map_set_selected (
                E_COMP_EDITOR_PROPERTY_PART_PICKER_WITH_MAP (part),
@@ -1204,10 +1202,10 @@ ECompEditorPropertyPart *
 e_comp_editor_property_part_status_new (void)
 {
        ECompEditorPropertyPartPickerMap map[] = {
-               { ICAL_STATUS_NONE,      NC_("ECompEditor", "Not Started"), TRUE,  NULL },
-               { ICAL_STATUS_INPROCESS, NC_("ECompEditor", "In Progress"), FALSE, NULL },
-               { ICAL_STATUS_COMPLETED, NC_("ECompEditor", "Completed"),   FALSE, NULL },
-               { ICAL_STATUS_CANCELLED, NC_("ECompEditor", "Cancelled"),    FALSE, NULL }
+               { I_CAL_STATUS_NONE,      NC_("ECompEditor", "Not Started"), TRUE,  NULL },
+               { I_CAL_STATUS_INPROCESS, NC_("ECompEditor", "In Progress"), FALSE, NULL },
+               { I_CAL_STATUS_COMPLETED, NC_("ECompEditor", "Completed"),   FALSE, NULL },
+               { I_CAL_STATUS_CANCELLED, NC_("ECompEditor", "Cancelled"),    FALSE, NULL }
        };
        gint ii, n_elems = G_N_ELEMENTS (map);
 
@@ -1217,10 +1215,10 @@ e_comp_editor_property_part_status_new (void)
 
        return e_comp_editor_property_part_picker_with_map_new (map, n_elems,
                C_("ECompEditor", "_Status:"),
-               ICAL_STATUS_PROPERTY,
-               (ECompEditorPropertyPartPickerMapICalNewFunc) icalproperty_new_status,
-               (ECompEditorPropertyPartPickerMapICalSetFunc) icalproperty_set_status,
-               (ECompEditorPropertyPartPickerMapICalGetFunc) icalproperty_get_status);
+               I_CAL_STATUS_PROPERTY,
+               (ECompEditorPropertyPartPickerMapICalNewFunc) i_cal_property_new_status,
+               (ECompEditorPropertyPartPickerMapICalSetFunc) i_cal_property_set_status,
+               (ECompEditorPropertyPartPickerMapICalGetFunc) i_cal_property_get_status);
 }
 
 /* ************************************************************************* */
@@ -1259,10 +1257,10 @@ e_comp_editor_property_part_priority_new (void)
 
        return e_comp_editor_property_part_picker_with_map_new (map, n_elems,
                C_("ECompEditor", "Priorit_y:"),
-               ICAL_PRIORITY_PROPERTY,
-               icalproperty_new_priority,
-               icalproperty_set_priority,
-               icalproperty_get_priority);
+               I_CAL_PRIORITY_PROPERTY,
+               i_cal_property_new_priority,
+               i_cal_property_set_priority,
+               i_cal_property_get_priority);
 }
 
 /* ************************************************************************* */
@@ -1337,10 +1335,10 @@ e_comp_editor_property_part_percentcomplete_class_init (ECompEditorPropertyPartP
        ECompEditorPropertyPartClass *part_class;
 
        part_spin_class = E_COMP_EDITOR_PROPERTY_PART_SPIN_CLASS (klass);
-       part_spin_class->ical_prop_kind = ICAL_PERCENTCOMPLETE_PROPERTY;
-       part_spin_class->ical_new_func = icalproperty_new_percentcomplete;
-       part_spin_class->ical_set_func = icalproperty_set_percentcomplete;
-       part_spin_class->ical_get_func = icalproperty_get_percentcomplete;
+       part_spin_class->prop_kind = I_CAL_PERCENTCOMPLETE_PROPERTY;
+       part_spin_class->i_cal_new_func = i_cal_property_new_percentcomplete;
+       part_spin_class->i_cal_set_func = i_cal_property_set_percentcomplete;
+       part_spin_class->i_cal_get_func = i_cal_property_get_percentcomplete;
 
        part_class = E_COMP_EDITOR_PROPERTY_PART_CLASS (klass);
        part_class->create_widgets = ecepp_percentcomplete_create_widgets;
@@ -1417,44 +1415,47 @@ ecepp_timezone_create_widgets (ECompEditorPropertyPart *property_part,
 
 static void
 ecepp_timezone_fill_widget (ECompEditorPropertyPart *property_part,
-                           icalcomponent *component)
+                           ICalComponent *component)
 {
-       struct icaltimetype (* get_func) (const icalproperty *prop);
-       icalproperty *prop;
+       ICalTime * (* get_func) (ICalProperty *prop);
+       ICalProperty *prop;
 
        g_return_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_TIMEZONE (property_part));
 
-       get_func = icalproperty_get_dtstart;
-       prop = icalcomponent_get_first_property (component, ICAL_DTSTART_PROPERTY);
+       get_func = i_cal_property_get_dtstart;
+       prop = i_cal_component_get_first_property (component, I_CAL_DTSTART_PROPERTY);
 
        if (!prop) {
-               get_func = icalproperty_get_dtend;
-               prop = icalcomponent_get_first_property (component, ICAL_DTEND_PROPERTY);
+               get_func = i_cal_property_get_dtend;
+               prop = i_cal_component_get_first_property (component, I_CAL_DTEND_PROPERTY);
        }
 
        if (!prop) {
-               get_func = icalproperty_get_due;
-               prop = icalcomponent_get_first_property (component, ICAL_DUE_PROPERTY);
+               get_func = i_cal_property_get_due;
+               prop = i_cal_component_get_first_property (component, I_CAL_DUE_PROPERTY);
        }
 
        if (prop) {
-               struct icaltimetype itt;
+               ICalTime *itt;
 
                itt = get_func (prop);
-               if (itt.zone) {
+               if (itt && i_cal_time_get_timezone (itt)) {
                        GtkWidget *edit_widget;
 
                        edit_widget = e_comp_editor_property_part_get_edit_widget (property_part);
                        g_return_if_fail (E_IS_TIMEZONE_ENTRY (edit_widget));
 
-                       e_timezone_entry_set_timezone (E_TIMEZONE_ENTRY (edit_widget), (icaltimezone *) 
itt.zone);
+                       e_timezone_entry_set_timezone (E_TIMEZONE_ENTRY (edit_widget), 
i_cal_time_get_timezone (itt));
                }
+
+               g_clear_object (&itt);
+               g_object_unref (prop);
        }
 }
 
 static void
 ecepp_timezone_fill_component (ECompEditorPropertyPart *property_part,
-                              icalcomponent *component)
+                              ICalComponent *component)
 {
        /* Nothing to do here, this is sort-of virtual property part */
 }
@@ -1535,20 +1536,22 @@ ecepp_transparency_create_widgets (ECompEditorPropertyPart *property_part,
 
 static void
 ecepp_transparency_fill_widget (ECompEditorPropertyPart *property_part,
-                               icalcomponent *component)
+                               ICalComponent *component)
 {
        GtkWidget *edit_widget;
-       icalproperty *prop;
+       ICalProperty *prop;
 
        g_return_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_TRANSPARENCY (property_part));
 
        edit_widget = e_comp_editor_property_part_get_edit_widget (property_part);
        g_return_if_fail (GTK_IS_CHECK_BUTTON (edit_widget));
 
-       prop = icalcomponent_get_first_property (component, ICAL_TRANSP_PROPERTY);
+       prop = i_cal_component_get_first_property (component, I_CAL_TRANSP_PROPERTY);
        if (prop) {
                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (edit_widget),
-                       icalproperty_get_transp (prop) == ICAL_TRANSP_OPAQUE);
+                       i_cal_property_get_transp (prop) == I_CAL_TRANSP_OPAQUE);
+
+               g_object_unref (prop);
        } else {
                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (edit_widget), TRUE);
        }
@@ -1556,26 +1559,28 @@ ecepp_transparency_fill_widget (ECompEditorPropertyPart *property_part,
 
 static void
 ecepp_transparency_fill_component (ECompEditorPropertyPart *property_part,
-                                  icalcomponent *component)
+                                  ICalComponent *component)
 {
        GtkWidget *edit_widget;
-       icalproperty *prop;
-       icalproperty_transp value;
+       ICalProperty *prop;
+       ICalPropertyTransp value;
 
        g_return_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_TRANSPARENCY (property_part));
 
        edit_widget = e_comp_editor_property_part_get_edit_widget (property_part);
        g_return_if_fail (GTK_IS_CHECK_BUTTON (edit_widget));
 
-       value = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (edit_widget)) ? ICAL_TRANSP_OPAQUE : 
ICAL_TRANSP_TRANSPARENT;
+       value = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (edit_widget)) ? I_CAL_TRANSP_OPAQUE : 
I_CAL_TRANSP_TRANSPARENT;
 
-       prop = icalcomponent_get_first_property (component, ICAL_TRANSP_PROPERTY);
+       prop = i_cal_component_get_first_property (component, I_CAL_TRANSP_PROPERTY);
        if (prop) {
-               icalproperty_set_transp (prop, value);
+               i_cal_property_set_transp (prop, value);
        } else {
-               prop = icalproperty_new_transp (value);
-               icalcomponent_add_property (component, prop);
+               prop = i_cal_property_new_transp (value);
+               i_cal_component_add_property (component, prop);
        }
+
+       g_clear_object (&prop);
 }
 
 static void
@@ -1662,10 +1667,10 @@ ecepp_color_create_widgets (ECompEditorPropertyPart *property_part,
 
 static void
 ecepp_color_fill_widget (ECompEditorPropertyPart *property_part,
-                        icalcomponent *component)
+                        ICalComponent *component)
 {
        GtkWidget *edit_widget;
-       icalproperty *prop;
+       ICalProperty *prop;
        gboolean color_set = FALSE;
 
        g_return_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_COLOR (property_part));
@@ -1673,15 +1678,17 @@ ecepp_color_fill_widget (ECompEditorPropertyPart *property_part,
        edit_widget = e_comp_editor_property_part_get_edit_widget (property_part);
        g_return_if_fail (E_IS_COLOR_COMBO (edit_widget));
 
-       prop = icalcomponent_get_first_property (component, ICAL_COLOR_PROPERTY);
+       prop = i_cal_component_get_first_property (component, I_CAL_COLOR_PROPERTY);
        if (prop) {
-               const gchar *color = icalproperty_get_color (prop);
+               const gchar *color = i_cal_property_get_color (prop);
                GdkRGBA rgba;
 
                if (color && gdk_rgba_parse (&rgba, color)) {
                        e_color_combo_set_current_color (E_COLOR_COMBO (edit_widget), &rgba);
                        color_set = TRUE;
                }
+
+               g_clear_object (&prop);
        }
 
        if (!color_set) {
@@ -1698,10 +1705,10 @@ ecepp_color_fill_widget (ECompEditorPropertyPart *property_part,
 
 static void
 ecepp_color_fill_component (ECompEditorPropertyPart *property_part,
-                           icalcomponent *component)
+                           ICalComponent *component)
 {
        GtkWidget *edit_widget;
-       icalproperty *prop;
+       ICalProperty *prop;
        GdkRGBA rgba;
 
        g_return_if_fail (E_IS_COMP_EDITOR_PROPERTY_PART_COLOR (property_part));
@@ -1716,23 +1723,21 @@ ecepp_color_fill_component (ECompEditorPropertyPart *property_part,
 
        e_color_combo_get_current_color (E_COLOR_COMBO (edit_widget), &rgba);
 
-       prop = icalcomponent_get_first_property (component, ICAL_COLOR_PROPERTY);
+       prop = i_cal_component_get_first_property (component, I_CAL_COLOR_PROPERTY);
 
        if (rgba.alpha <= 1.0 - 1e-9) {
-               if (prop) {
-                       icalcomponent_remove_property (component, prop);
-                       icalproperty_free (prop);
-               }
+               if (prop)
+                       i_cal_component_remove_property (component, prop);
        } else {
                gchar *str;
 
                str = gdk_rgba_to_string (&rgba);
                if (str) {
                        if (prop) {
-                               icalproperty_set_color (prop, str);
+                               i_cal_property_set_color (prop, str);
                        } else {
-                               prop = icalproperty_new_color (str);
-                               icalcomponent_add_property (component, prop);
+                               prop = i_cal_property_new_color (str);
+                               i_cal_component_add_property (component, prop);
                        }
 
                        g_free (str);
@@ -1740,6 +1745,8 @@ ecepp_color_fill_component (ECompEditorPropertyPart *property_part,
                        g_warning ("%s: Failed to convert RGBA (%f,%f,%f,%f) to string", G_STRFUNC, rgba.red, 
rgba.green, rgba.blue, rgba.alpha);
                }
        }
+
+       g_clear_object (&prop);
 }
 
 static void


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