[gnome-calendar] edit-dialog: handle timezone properly



commit cac370e6b7f72ec20e585f558c2311171dfc75f3
Author: Erick Pérez Castellanos <erick red gmail com>
Date:   Mon Mar 16 13:07:34 2015 -0400

    edit-dialog: handle timezone properly

 src/gcal-edit-dialog.c |   44 ++++++++++++++++++++++++++++++++++++++++----
 1 files changed, 40 insertions(+), 4 deletions(-)
---
diff --git a/src/gcal-edit-dialog.c b/src/gcal-edit-dialog.c
index c1a4a67..e46cf97 100644
--- a/src/gcal-edit-dialog.c
+++ b/src/gcal-edit-dialog.c
@@ -290,7 +290,18 @@ update_date (GtkEntry   *entry,
   e_cal_component_get_dtend (priv->component, &dtend);
 
   *(dtstart.value) = *start_date;
+  if (dtstart.tzid != NULL)
+    {
+      icaltimezone* zone = icaltimezone_get_builtin_timezone_from_tzid (dtstart.tzid);
+      *(dtstart.value) = icaltime_convert_to_zone (*start_date, zone);
+    }
+
   *(dtend.value) = *end_date;
+  if (dtend.tzid != NULL)
+    {
+      icaltimezone* zone = icaltimezone_get_builtin_timezone_from_tzid (dtend.tzid);
+      *(dtend.value) = icaltime_convert_to_zone (*end_date, zone);
+    }
 
   e_cal_component_set_dtstart (priv->component, &dtstart);
   e_cal_component_set_dtend (priv->component, &dtend);
@@ -436,7 +447,18 @@ update_time (GtkEntry   *entry,
   e_cal_component_get_dtend (priv->component, &dtend);
 
   *(dtstart.value) = *start_date;
+  if (dtstart.tzid != NULL)
+    {
+      icaltimezone* zone = icaltimezone_get_builtin_timezone_from_tzid (dtstart.tzid);
+      *(dtstart.value) = icaltime_convert_to_zone (*start_date, zone);
+    }
+
   *(dtend.value) = *end_date;
+  if (dtend.tzid != NULL)
+    {
+      icaltimezone* zone = icaltimezone_get_builtin_timezone_from_tzid (dtend.tzid);
+      *(dtend.value) = icaltime_convert_to_zone (*end_date, zone);
+    }
 
   e_cal_component_set_dtstart (priv->component, &dtstart);
   e_cal_component_set_dtend (priv->component, &dtend);
@@ -847,8 +869,15 @@ gcal_edit_dialog_set_event_data (GcalEditDialog *dialog,
   if (!all_day)
     {
       icaltimetype *date = gcal_dup_icaltime (dtstart.value);
-      *date = icaltime_convert_to_zone (*(dtstart.value), e_cal_util_get_system_timezone ());
-      gcal_time_selector_set_time (GCAL_TIME_SELECTOR (priv->start_time_selector), date->hour, date->minute);
+      if (dtstart.tzid != NULL)
+        {
+          dtstart.value->zone =
+            icaltimezone_get_builtin_timezone_from_tzid (dtstart.tzid);
+        }
+      *date = icaltime_convert_to_zone (*(dtstart.value),
+                                        e_cal_util_get_system_timezone ());
+      gcal_time_selector_set_time (GCAL_TIME_SELECTOR (priv->start_time_selector),
+                                   date->hour, date->minute);
       g_free (date);
     }
 
@@ -861,8 +890,15 @@ gcal_edit_dialog_set_event_data (GcalEditDialog *dialog,
       if (!all_day)
         {
           icaltimetype *date = gcal_dup_icaltime (dtend.value);
-          *date = icaltime_convert_to_zone (*(dtstart.value), e_cal_util_get_system_timezone ());
-          gcal_time_selector_set_time (GCAL_TIME_SELECTOR (priv->end_time_selector), date->hour, 
date->minute);
+          if (dtend.tzid != NULL)
+            {
+              dtend.value->zone =
+                icaltimezone_get_builtin_timezone_from_tzid (dtend.tzid);
+            }
+          *date = icaltime_convert_to_zone (*(dtend.value),
+                                            e_cal_util_get_system_timezone ());
+          gcal_time_selector_set_time (GCAL_TIME_SELECTOR (priv->end_time_selector),
+                                       date->hour, date->minute);
           g_free (date);
         }
     }


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