[evolution/wip/mcrha/eds-libical-glib] Changes/fixes around src/calendar/gui/e-cal-model*
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/wip/mcrha/eds-libical-glib] Changes/fixes around src/calendar/gui/e-cal-model*
- Date: Wed, 20 Mar 2019 14:17:24 +0000 (UTC)
commit 5ee2cef61474d685a0de6b598e39ea80d7bc1c79
Author: Milan Crha <mcrha redhat com>
Date: Wed Mar 20 15:18:19 2019 +0100
Changes/fixes around src/calendar/gui/e-cal-model*
src/calendar/gui/comp-util.c | 20 +++-----
src/calendar/gui/comp-util.h | 6 +--
src/calendar/gui/e-cal-data-model.c | 87 ++++++++++++++++++++------------
src/calendar/gui/e-cal-model-calendar.c | 2 +-
src/calendar/gui/e-cal-model-tasks.c | 7 ++-
src/calendar/gui/e-cal-model.c | 65 +++++++++++++++---------
src/calendar/gui/e-cell-date-edit-text.c | 7 +--
src/calendar/gui/e-cell-date-edit-text.h | 2 +-
src/calendar/gui/ea-cal-view-event.c | 2 +-
src/calendar/gui/tag-calendar.c | 16 ++++--
10 files changed, 128 insertions(+), 86 deletions(-)
---
diff --git a/src/calendar/gui/comp-util.c b/src/calendar/gui/comp-util.c
index 09487e5b60..fd82663867 100644
--- a/src/calendar/gui/comp-util.c
+++ b/src/calendar/gui/comp-util.c
@@ -853,10 +853,8 @@ void
cal_comp_get_instance_times (ECalClient *client,
ICalComponent *icomp,
const ICalTimezone *default_zone,
- time_t *instance_start,
- gboolean *start_is_date,
- time_t *instance_end,
- gboolean *end_is_date,
+ ICalTimetype **out_instance_start,
+ ICalTimetype **out_instance_end,
GCancellable *cancellable)
{
ICalTimetype *start_time, *end_time;
@@ -864,8 +862,8 @@ cal_comp_get_instance_times (ECalClient *client,
g_return_if_fail (E_IS_CAL_CLIENT (client));
g_return_if_fail (icomp != NULL);
- g_return_if_fail (instance_start != NULL);
- g_return_if_fail (instance_end != NULL);
+ g_return_if_fail (out_instance_start != NULL);
+ g_return_if_fail (out_instance_end != NULL);
start_time = i_cal_component_get_dtstart (icomp);
end_time = i_cal_component_get_dtend (icomp);
@@ -904,9 +902,8 @@ cal_comp_get_instance_times (ECalClient *client,
}
}
- *instance_start = i_cal_time_as_timet_with_zone (start_time, (ICalTimezone *) zone);
- if (start_is_date)
- *start_is_date = i_cal_time_is_date (start_time);
+ *out_instance_start = i_cal_timetype_new_clone (start_time);
+ i_cal_timetype_set_zone (*out_instance_start, zone);
if (i_cal_timetype_get_zone (end_time)) {
zone = i_cal_timetype_get_zone (end_time);
@@ -938,9 +935,8 @@ cal_comp_get_instance_times (ECalClient *client,
}
}
- *instance_end = i_cal_time_as_timet_with_zone (end_time, (ICalTimezone *) zone);
- if (end_is_date)
- *end_is_date = i_cal_time_is_date (end_time);
+ *out_instance_end = i_cal_timetype_new_clone (end_time);
+ i_cal_timetype_set_zone (*out_instance_end, zone);
g_clear_object (&start_time);
g_clear_object (&end_time);
diff --git a/src/calendar/gui/comp-util.h b/src/calendar/gui/comp-util.h
index 107a1a1f32..1236afde04 100644
--- a/src/calendar/gui/comp-util.h
+++ b/src/calendar/gui/comp-util.h
@@ -113,10 +113,8 @@ gchar * comp_util_suggest_filename (ICalComponent *icomp,
void cal_comp_get_instance_times (ECalClient *client,
ICalComponent *icomp,
const ICalTimezone *default_zone,
- time_t *instance_start,
- gboolean *start_is_date,
- time_t *instance_end,
- gboolean *end_is_date,
+ ICalTimetype **out_instance_start,
+ ICalTimetype **out_instance_end,
GCancellable *cancellable);
time_t cal_comp_gdate_to_timet (const GDate *date,
const ICalTimezone *with_zone);
diff --git a/src/calendar/gui/e-cal-data-model.c b/src/calendar/gui/e-cal-data-model.c
index 2e2aab826e..d66ef47c00 100644
--- a/src/calendar/gui/e-cal-data-model.c
+++ b/src/calendar/gui/e-cal-data-model.c
@@ -1077,51 +1077,69 @@ typedef struct
} GenerateInstancesData;
static gboolean
-cal_data_model_instance_generated (ECalComponent *comp,
- time_t instance_start,
- time_t instance_end,
- gpointer data)
+cal_data_model_instance_generated (ICalComponent *icomp,
+ ICalTimetype *instance_start,
+ ICalTimetype *instance_end,
+ gpointer user_data,
+ GCancellable *cancellable,
+ GError **error)
{
- GenerateInstancesData *gid = data;
+ GenerateInstancesData *gid = user_data;
ComponentData *comp_data;
ECalComponent *comp_copy;
- icalproperty_status status = ICAL_STATUS_NONE;
- icaltimetype tt, tt2;
+ ICalTimetype *tt, *tt2;
+ time_t start_tt, end_tt;
g_return_val_if_fail (gid != NULL, FALSE);
- e_cal_component_get_status (comp, &status);
- if (gid->skip_cancelled && status == ICAL_STATUS_CANCELLED)
- return TRUE;
+ if (gid->skip_cancelled) {
+ ICalProperty *prop;
+
+ prop = i_cal_component_get_first_property (icomp, I_CAL_STATUS_PROPERTY);
+ if (prop && i_cal_property_get_status (prop) == I_CAL_STATUS_CANCELLED) {
+ g_object_unref (prop);
+ return TRUE;
+ }
+
+ g_clear_object (&prop);
+ }
- comp_copy = e_cal_component_clone (comp);
+ comp_copy = e_cal_component_new_from_icalcomponent (i_cal_component_new_clone (icomp));
g_return_val_if_fail (comp_copy != NULL, FALSE);
- tt = icalcomponent_get_dtstart (e_cal_component_get_icalcomponent (comp_copy));
- tt2 = icaltime_from_timet_with_zone (instance_start, tt.is_date, gid->zone);
- if (tt.is_date || !tt.zone || tt.zone == icaltimezone_get_utc_timezone ())
- tt2.zone = NULL;
+ tt = i_cal_component_get_dtstart (e_cal_component_get_icalcomponent (comp_copy));
+ tt2 = i_cal_time_convert_to_zone (instance_start, gid->zone);
+ if (i_cal_time_is_date (tt) || !i_cal_time_get_timezone (tt) || i_cal_time_is_utc (tt))
+ i_cal_time_set_timezone (tt2, NULL);
else
- tt2.zone = gid->zone;
- icalcomponent_set_dtstart (e_cal_component_get_icalcomponent (comp_copy), tt2);
-
- tt = icalcomponent_get_dtend (e_cal_component_get_icalcomponent (comp_copy));
- tt2 = icaltime_from_timet_with_zone (instance_end, tt.is_date, gid->zone);
- if (tt.is_date || !tt.zone || tt.zone == icaltimezone_get_utc_timezone ())
- tt2.zone = NULL;
+ i_cal_time_set_timezone (tt2, gid->zone);
+ i_cal_component_set_dtstart (e_cal_component_get_icalcomponent (comp_copy), tt2);
+ g_clear_object (&tt);
+ g_clear_object (&tt2);
+
+ tt = i_cal_component_get_dtend (e_cal_component_get_icalcomponent (comp_copy));
+ tt2 = i_cal_time_convert_to_zone (instance_end, gid->zone);
+ if (i_cal_time_is_date (tt) || !i_cal_time_get_timezone (tt) || i_cal_time_is_utc (tt))
+ i_cal_time_set_timezone (tt2, NULL);
else
- tt2.zone = gid->zone;
- icalcomponent_set_dtend (e_cal_component_get_icalcomponent (comp_copy), tt2);
-
- e_cal_component_rescan (comp_copy);
+ i_cal_time_set_timezone (tt2, gid->zone);
+ i_cal_component_set_dtend (e_cal_component_get_icalcomponent (comp_copy), tt2);
+ g_clear_object (&tt);
+ g_clear_object (&tt2);
cal_comp_get_instance_times (gid->client, e_cal_component_get_icalcomponent (comp_copy),
- gid->zone, &instance_start, NULL, &instance_end, NULL, NULL);
+ gid->zone, &tt, &tt2, cancellable);
+
+ start_tt = i_cal_time_as_timet (tt);
+ end_tt = i_cal_time_as_timet (tt2);
- if (instance_end > instance_start)
- instance_end--;
+ g_clear_object (&tt);
+ g_clear_object (&tt2);
- comp_data = component_data_new (comp_copy, instance_start, instance_end, FALSE);
+ if (end_tt > start_tt)
+ end_tt--;
+
+ comp_data = component_data_new (comp_copy, start_tt, end_tt, FALSE);
*gid->pexpanded_recurrences = g_slist_prepend (*gid->pexpanded_recurrences, comp_data);
g_object_unref (comp_copy);
@@ -1275,6 +1293,7 @@ cal_data_model_process_modified_or_added_objects (ECalClientView *view,
/* Single or detached instance, the simple case */
ECalComponent *comp;
ComponentData *comp_data;
+ ICalTimetype *start_tt = NULL, *end_tt = NULL;
time_t instance_start, instance_end;
if (data_model->priv->skip_cancelled &&
@@ -1285,7 +1304,13 @@ cal_data_model_process_modified_or_added_objects (ECalClientView *view,
if (!comp)
continue;
- cal_comp_get_instance_times (client, icomp, data_model->priv->zone,
&instance_start, NULL, &instance_end, NULL, NULL);
+ cal_comp_get_instance_times (client, icomp, data_model->priv->zone,
&start_tt, &end_tt, NULL);
+
+ instance_start = i_cal_time_as_timet (start_tt);
+ instance_end = i_cal_time_as_timet (end_tt);
+
+ g_clear_object (&start_tt);
+ g_clear_object (&end_tt);
if (instance_end > instance_start)
instance_end--;
diff --git a/src/calendar/gui/e-cal-model-calendar.c b/src/calendar/gui/e-cal-model-calendar.c
index 2fef77526a..0fbb100ed3 100644
--- a/src/calendar/gui/e-cal-model-calendar.c
+++ b/src/calendar/gui/e-cal-model-calendar.c
@@ -161,7 +161,7 @@ get_transparency (ECalModelComponent *comp_data)
g_clear_object (&prop);
- return res;
+ return (gpointer) res;
}
return NULL;
diff --git a/src/calendar/gui/e-cal-model-tasks.c b/src/calendar/gui/e-cal-model-tasks.c
index ec468e5662..7e3a522e3e 100644
--- a/src/calendar/gui/e-cal-model-tasks.c
+++ b/src/calendar/gui/e-cal-model-tasks.c
@@ -318,7 +318,7 @@ static gpointer
get_location (ECalModelComponent *comp_data)
{
ICalProperty *prop;
- const gchar *localtion;
+ const gchar *location;
prop = i_cal_component_get_first_property (comp_data->icalcomp, I_CAL_LOCATION_PROPERTY);
if (prop) {
@@ -485,7 +485,7 @@ set_completed (ECalModelTasks *model,
} else {
/* we assume that COMPLETED is entered in the current timezone,
* even though it gets stored in UTC */
- t = i_cal_time_as_timet_with_zone (tt, dv->zone);
+ t = i_cal_time_as_timet_with_zone (tt, e_cell_date_edit_value_get_zone (dv));
}
ensure_task_complete (comp_data, t);
@@ -647,7 +647,7 @@ set_percent (ECalModelComponent *comp_data,
} else {
if (prop) {
i_cal_property_set_percentcomplete (prop, percent);
- g_object_urnef (prop);
+ g_object_unref (prop);
} else {
prop = i_cal_property_new_percentcomplete (percent);
i_cal_component_take_property (comp_data->icalcomp, prop);
@@ -666,7 +666,6 @@ set_percent (ECalModelComponent *comp_data,
set_status (comp_data, _("In Progress"));
}
}
-
}
static void
diff --git a/src/calendar/gui/e-cal-model.c b/src/calendar/gui/e-cal-model.c
index c482c3ae62..f394ba6aca 100644
--- a/src/calendar/gui/e-cal-model.c
+++ b/src/calendar/gui/e-cal-model.c
@@ -267,7 +267,7 @@ get_categories (ECalModelComponent *comp_data)
for (prop = i_cal_component_get_first_property (comp_data->icalcomp,
I_CAL_CATEGORIES_PROPERTY);
prop;
- g_object_urnef (prop), prop = i_cal_component_get_next_property (comp_data->icalcomp,
I_CAL_CATEGORIES_PROPERTY)) {
+ g_object_unref (prop), prop = i_cal_component_get_next_property (comp_data->icalcomp,
I_CAL_CATEGORIES_PROPERTY)) {
const gchar *categories = i_cal_property_get_categories (prop);
if (!categories)
continue;
@@ -285,7 +285,7 @@ static gchar *
get_classification (ECalModelComponent *comp_data)
{
ICalProperty *prop;
- ICalPropertyClass class_prop;
+ ICalProperty_Class class_prop;
prop = i_cal_component_get_first_property (comp_data->icalcomp, I_CAL_CLASS_PROPERTY);
@@ -296,7 +296,7 @@ get_classification (ECalModelComponent *comp_data)
g_clear_object (&prop);
- switch (class) {
+ switch (class_prop) {
case I_CAL_CLASS_PUBLIC:
return _("Public");
case I_CAL_CLASS_PRIVATE:
@@ -362,10 +362,10 @@ get_dtstart (ECalModel *model,
gboolean is_date = i_cal_time_is_date (tt_start);
if (got_zone) {
- g_clear_obejct (&tt_start);
+ g_clear_object (&tt_start);
tt_start = i_cal_time_from_timet_with_zone (comp_data->instance_start,
is_date, zone);
} else if (priv->zone) {
- g_clear_obejct (&tt_start);
+ g_clear_object (&tt_start);
tt_start = i_cal_time_from_timet_with_zone (comp_data->instance_start,
is_date, priv->zone);
}
}
@@ -387,7 +387,7 @@ static ECellDateEditValue *
get_datetime_from_utc (ECalModel *model,
ECalModelComponent *comp_data,
ICalPropertyKind propkind,
- ICalTimetype (*get_value) (const ICalProperty *prop),
+ ICalTimetype * (*get_value) (ICalProperty *prop),
ECellDateEditValue **buffer)
{
g_return_val_if_fail (buffer != NULL, NULL);
@@ -406,7 +406,7 @@ get_datetime_from_utc (ECalModel *model,
tt_value = get_value (prop);
/* these are always in UTC, thus convert to default zone, if any and done */
- if (priv->zone) {
+ if (priv->zone)
i_cal_timezone_convert_time (tt_value, i_cal_timezone_get_utc_timezone (),
priv->zone);
g_object_unref (prop);
@@ -491,7 +491,7 @@ set_classification (ECalModelComponent *comp_data,
g_clear_object (&prop);
}
} else {
- ICalPropertyClass ical_class;
+ ICalProperty_Class ical_class;
if (!g_ascii_strcasecmp (value, "PUBLIC"))
ical_class = I_CAL_CLASS_PUBLIC;
@@ -1463,7 +1463,7 @@ cal_model_create_component_from_values_thread (EAlertSinkThreadJobData *job_data
prop = i_cal_component_get_first_property (comp_data->icalcomp, I_CAL_CLASS_PROPERTY);
if (!prop || i_cal_property_get_class (prop) == I_CAL_CLASS_NONE) {
- ICalPropertyClass ical_class = I_CAL_CLASS_PUBLIC;
+ ICalProperty_Class ical_class = I_CAL_CLASS_PUBLIC;
GSettings *settings;
settings = e_util_ref_settings ("org.gnome.evolution.calendar");
@@ -1482,7 +1482,7 @@ cal_model_create_component_from_values_thread (EAlertSinkThreadJobData *job_data
g_clear_object (&prop);
}
- ccd->success = e_cal_client_create_object_sync (comp_data->client, comp_data->icalcomp, &uid,
cancellable, error);
+ ccd->success = e_cal_client_create_object_sync (comp_data->client, comp_data->icalcomp,
E_CAL_OPERATION_FLAG_NONE, &uid, cancellable, error);
g_free (uid);
}
@@ -1922,7 +1922,7 @@ e_cal_model_get_component_index (ECalModel *model,
const gchar *uid;
gchar *rid = NULL;
ICalTimetype *iclrid;
- gboolean has_rid = (id->rid && *id->rid);
+ gboolean has_rid = e_cal_component_id_get_rid (id) != NULL;
uid = i_cal_component_get_uid (comp_data->icalcomp);
iclrid = i_cal_component_get_recurrenceid (comp_data->icalcomp);
@@ -1931,9 +1931,9 @@ e_cal_model_get_component_index (ECalModel *model,
g_clear_object (&iclrid);
if (uid && *uid) {
- if ((!client || comp_data->client == client) && strcmp (id->uid, uid) == 0) {
+ if ((!client || comp_data->client == client) && strcmp
(e_cal_component_id_get_uid (id), uid) == 0) {
if (has_rid) {
- if (!(rid && *rid && strcmp (rid, id->rid) == 0)) {
+ if (!(rid && *rid && strcmp (rid, e_cal_component_id_get_rid
(id)) == 0)) {
g_free (rid);
continue;
}
@@ -1969,7 +1969,7 @@ cal_model_data_subscriber_component_added_or_modified (ECalDataModelSubscriber *
index = e_cal_model_get_component_index (model, client, id);
- e_cal_component_free_id (id);
+ e_cal_component_id_free (id);
if (index < 0 && !is_added)
return;
@@ -4016,20 +4016,29 @@ typedef struct _GenerateInstacesData {
} GenerateInstancesData;
static gboolean
-ecm_generate_instances_cb (ECalComponent *comp,
- time_t instance_start,
- time_t instance_end,
- gpointer user_data)
+ecm_generate_instances_cb (ICalComponent *comp,
+ ICalTimetype *instance_start,
+ ICalTimetype *instance_end,
+ gpointer user_data,
+ GCancellable *cancellable,
+ GError **error)
{
GenerateInstancesData *gid = user_data;
+ ICalTimetype *changed_instance_start = NULL, *changed_instance_end = NULL;
+ gboolean res;
g_return_val_if_fail (gid != NULL, FALSE);
g_return_val_if_fail (gid->mdata.comp_data != NULL, FALSE);
- cal_comp_get_instance_times (gid->mdata.comp_data->client, e_cal_component_get_icalcomponent (comp),
- gid->zone, &instance_start, NULL, &instance_end, NULL, NULL);
+ cal_comp_get_instance_times (gid->mdata.comp_data->client, comp,
+ gid->zone, &changed_instance_start, &changed_instance_end, cancellable);
+
+ res = gid->cb (comp, changed_instance_start, changed_instance_end, &gid->mdata, cancellable, error);
- return gid->cb (comp, instance_start, instance_end, &gid->mdata);
+ g_clear_object (&changed_instance_start);
+ g_clear_object (&changed_instance_end);
+
+ return res;
}
/**
@@ -4083,6 +4092,8 @@ void
e_cal_model_set_instance_times (ECalModelComponent *comp_data,
const ICalTimezone *zone)
{
+ ICalTimetype *instance_start = NULL, *instance_end = NULL;
+
if (i_cal_component_isa (comp_data->icalcomp) == I_CAL_VEVENT_COMPONENT) {
ICalTimetype *start_time, *end_time;
@@ -4094,7 +4105,7 @@ e_cal_model_set_instance_times (ECalModelComponent *comp_data,
* just make start_time = end_time so that end_time
* will be a valid date
*/
- end_time = i_cal_time_new_clone (start_time);
+ end_time = i_cal_timetype_new_clone (start_time);
i_cal_time_adjust (end_time, 1, 0, 0, 0);
i_cal_component_set_dtend (comp_data->icalcomp, end_time);
} else if (i_cal_time_is_date (start_time) && i_cal_time_is_date (end_time) &&
@@ -4103,7 +4114,7 @@ e_cal_model_set_instance_times (ECalModelComponent *comp_data,
* same day, we add 1 day to DTEND. This means that most
* events created with the old Evolution behavior will still
* work OK. */
- i_cal_time_adjust (&end_time, 1, 0, 0, 0);
+ i_cal_time_adjust (end_time, 1, 0, 0, 0);
i_cal_component_set_dtend (comp_data->icalcomp, end_time);
}
@@ -4112,7 +4123,13 @@ e_cal_model_set_instance_times (ECalModelComponent *comp_data,
}
cal_comp_get_instance_times (comp_data->client, comp_data->icalcomp, zone,
- &comp_data->instance_start, NULL, &comp_data->instance_end, NULL, NULL);
+ &instance_start, &instance_end, NULL);
+
+ comp_data->instance_start = instance_start ? i_cal_time_as_timet (instance_start) :
comp_data->instance_start;
+ comp_data->instance_end = instance_end ? i_cal_time_as_timet (instance_end) : comp_data->instance_end;
+
+ g_clear_object (&instance_start);
+ g_clear_object (&instance_end);
}
/**
diff --git a/src/calendar/gui/e-cell-date-edit-text.c b/src/calendar/gui/e-cell-date-edit-text.c
index afa5c47b3a..98b7ff8dd0 100644
--- a/src/calendar/gui/e-cell-date-edit-text.c
+++ b/src/calendar/gui/e-cell-date-edit-text.c
@@ -106,7 +106,7 @@ cell_date_edit_text_get_property (GObject *object,
static void
cell_date_edit_text_finalize (GObject *object)
{
- ECellDateEditText *ecd = E_CELL_DATE_EDIT_TEXT (cell);
+ ECellDateEditText *ecd = E_CELL_DATE_EDIT_TEXT (object);
g_clear_object (&ecd->priv->timezone);
@@ -329,7 +329,7 @@ e_cell_date_edit_text_set_timezone (ECellDateEditText *ecd,
if (ecd->priv->timezone == timezone)
return;
- g_clear_objct (&ecd->priv->timezone);
+ g_clear_object (&ecd->priv->timezone);
ecd->priv->timezone = timezone ? e_cal_util_copy_timezone (timezone) : NULL;
g_object_notify (G_OBJECT (ecd), "timezone");
@@ -378,7 +378,8 @@ e_cell_date_edit_compare_cb (gconstpointer a,
}
/* Copy the 2nd value and convert it to the same timezone as the first. */
- tt = i_cal_timezone_convert_time (e_cell_date_edit_value_get_time (dv2),
e_cell_date_edit_value_get_zone (dv2), e_cell_date_edit_value_get_zone (dv1));
+ tt = i_cal_timetype_new_clone (e_cell_date_edit_value_get_time (dv2));
+ i_cal_timezone_convert_time (tt, e_cell_date_edit_value_get_zone (dv2),
e_cell_date_edit_value_get_zone (dv1));
/* Now we can compare them. */
res = i_cal_time_compare (e_cell_date_edit_value_get_time (dv1), tt);
diff --git a/src/calendar/gui/e-cell-date-edit-text.h b/src/calendar/gui/e-cell-date-edit-text.h
index cb1d68704d..5c13f0a7b5 100644
--- a/src/calendar/gui/e-cell-date-edit-text.h
+++ b/src/calendar/gui/e-cell-date-edit-text.h
@@ -89,7 +89,7 @@ ICalTimezone * e_cell_date_edit_text_get_timezone
(ECellDateEditText *ecd);
void e_cell_date_edit_text_set_timezone
(ECellDateEditText *ecd,
- ICalTimezone *timezone);
+ const ICalTimezone *timezone);
gboolean e_cell_date_edit_text_get_use_24_hour_format
(ECellDateEditText *ecd);
void e_cell_date_edit_text_set_use_24_hour_format
diff --git a/src/calendar/gui/ea-cal-view-event.c b/src/calendar/gui/ea-cal-view-event.c
index 70fc590544..29529b949e 100644
--- a/src/calendar/gui/ea-cal-view-event.c
+++ b/src/calendar/gui/ea-cal-view-event.c
@@ -237,7 +237,7 @@ ea_cal_view_event_get_name (AtkObject *accessible)
if (e_cal_util_component_has_organizer (event->comp_data->icalcomp))
meeting_string = _("It is a meeting.");
- summary = icalcomponent_get_summary (event->comp_data->icalcomp);
+ summary = i_cal_component_get_summary (event->comp_data->icalcomp);
if (summary)
summary_string = g_strdup_printf (_("Calendar Event: Summary is %s."), summary);
}
diff --git a/src/calendar/gui/tag-calendar.c b/src/calendar/gui/tag-calendar.c
index bd8d1a2411..309d899e86 100644
--- a/src/calendar/gui/tag-calendar.c
+++ b/src/calendar/gui/tag-calendar.c
@@ -385,9 +385,9 @@ get_component_julian_range (ECalClient *client,
guint32 *start_julian,
guint32 *end_julian)
{
- time_t instance_start = 0, instance_end = 0;
- gboolean start_is_date = FALSE, end_is_date = FALSE;
- const icaltimezone *zone;
+ ICalTimetype *instance_start = NULL, *instance_end = NULL;
+ time_t start_tt, end_tt;
+ const ICalTimezone *zone;
g_return_if_fail (client != NULL);
g_return_if_fail (comp != NULL);
@@ -397,8 +397,14 @@ get_component_julian_range (ECalClient *client,
cal_comp_get_instance_times (client, e_cal_component_get_icalcomponent (comp),
zone, &instance_start, &start_is_date, &instance_end, &end_is_date, NULL);
- *start_julian = encode_timet_to_julian (instance_start, start_is_date, zone);
- *end_julian = encode_timet_to_julian (instance_end - (instance_end == instance_start ? 0 : 1),
end_is_date, zone);
+ start_tt = i_cal_time_as_timet (instance_start);
+ end_tt = i_cal_time_as_timet (instance_end);
+
+ *start_julian = encode_timet_to_julian (start_tt, i_cal_time_is_date (instance_start), zone);
+ *end_julian = encode_timet_to_julian (end_tt - (end_tt == start_tt ? 0 : 1), i_cal_time_is_date
(instance_end), zone);
+
+ g_clear_object (&instance_start);
+ g_clear_object (&instance_end);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]