[gnome-calendar] event: correctly store timezones
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar] event: correctly store timezones
- Date: Mon, 29 Feb 2016 18:50:13 +0000 (UTC)
commit ce2c9552693bf549a232a9681692b5fbd2cd3560
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date: Mon Feb 29 15:49:22 2016 -0300
event: correctly store timezones
src/gcal-event.c | 35 ++++++++++++++++++++++-------------
1 files changed, 22 insertions(+), 13 deletions(-)
---
diff --git a/src/gcal-event.c b/src/gcal-event.c
index 64d821c..16c3d7a 100644
--- a/src/gcal-event.c
+++ b/src/gcal-event.c
@@ -112,11 +112,11 @@ get_timezone_from_ical (ECalComponentDateTime *comp)
}
static ECalComponentDateTime*
-build_component_from_datetime (GcalEvent *self,
- GDateTime *dt)
+build_component_from_datetime (GcalEvent *self,
+ icaltimezone *current_tz,
+ GDateTime *dt)
{
ECalComponentDateTime *comp_dt;
- gchar *tzid;
if (!dt)
return NULL;
@@ -125,15 +125,12 @@ build_component_from_datetime (GcalEvent *self,
comp_dt->value = NULL;
comp_dt->tzid = NULL;
- tzid = g_date_time_format (dt, "%Z");
-
comp_dt->value = datetime_to_icaltime (dt);
- comp_dt->value->zone = icaltimezone_get_builtin_timezone_from_tzid (tzid);
+ comp_dt->value->zone = self->all_day ? icaltimezone_get_utc_timezone () : current_tz;
comp_dt->value->is_date = self->all_day;
- /* All day events have no timezone */
- if (!self->all_day)
- comp_dt->tzid = tzid;
+ /* All day events have UTC timezone */
+ comp_dt->tzid = g_strdup (self->all_day ? "UTC" : icaltimezone_get_tzid (current_tz));
return comp_dt;
}
@@ -689,13 +686,18 @@ gcal_event_set_date_end (GcalEvent *self,
(!self->dt_end || !dt ||
(self->dt_end && dt && !g_date_time_equal (self->dt_end, dt))))
{
- ECalComponentDateTime *component_dt;
+ ECalComponentDateTime *component_dt, current;
g_clear_pointer (&self->dt_end, g_date_time_unref);
self->dt_end = g_date_time_ref (dt);
+ /* Retrieve the current timezone */
+ e_cal_component_get_dtstart (self->component, ¤t);
+
/* Setup the ECalComponent's datetime value */
- component_dt = build_component_from_datetime (self, dt);
+ component_dt = build_component_from_datetime (self,
+ icaltimezone_get_builtin_timezone_from_tzid
(current.tzid),
+ dt);
e_cal_component_set_dtend (self->component, component_dt);
e_cal_component_commit_sequence (self->component);
@@ -739,13 +741,20 @@ gcal_event_set_date_start (GcalEvent *self,
(!self->dt_start || !dt ||
(self->dt_start && dt && !g_date_time_equal (self->dt_start, dt))))
{
- ECalComponentDateTime *component_dt;
+ ECalComponentDateTime *component_dt, current;
g_clear_pointer (&self->dt_start, g_date_time_unref);
self->dt_start = g_date_time_ref (dt);
+ /* Retrieve the current timezone */
+ e_cal_component_get_dtstart (self->component, ¤t);
+
+ g_message ("start tzid is %s", current.tzid);
+
/* Setup the ECalComponent's datetime value */
- component_dt = build_component_from_datetime (self, dt);
+ component_dt = build_component_from_datetime (self,
+ icaltimezone_get_builtin_timezone_from_tzid
(current.tzid),
+ dt);
e_cal_component_set_dtstart (self->component, component_dt);
e_cal_component_commit_sequence (self->component);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]