edit-dialog: handle timezone properly
This commit is contained in:
+40
-4
@@ -290,7 +290,18 @@ update_date (GtkEntry *entry,
|
|||||||
e_cal_component_get_dtend (priv->component, &dtend);
|
e_cal_component_get_dtend (priv->component, &dtend);
|
||||||
|
|
||||||
*(dtstart.value) = *start_date;
|
*(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;
|
*(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_dtstart (priv->component, &dtstart);
|
||||||
e_cal_component_set_dtend (priv->component, &dtend);
|
e_cal_component_set_dtend (priv->component, &dtend);
|
||||||
@@ -436,7 +447,18 @@ update_time (GtkEntry *entry,
|
|||||||
e_cal_component_get_dtend (priv->component, &dtend);
|
e_cal_component_get_dtend (priv->component, &dtend);
|
||||||
|
|
||||||
*(dtstart.value) = *start_date;
|
*(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;
|
*(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_dtstart (priv->component, &dtstart);
|
||||||
e_cal_component_set_dtend (priv->component, &dtend);
|
e_cal_component_set_dtend (priv->component, &dtend);
|
||||||
@@ -847,8 +869,15 @@ gcal_edit_dialog_set_event_data (GcalEditDialog *dialog,
|
|||||||
if (!all_day)
|
if (!all_day)
|
||||||
{
|
{
|
||||||
icaltimetype *date = gcal_dup_icaltime (dtstart.value);
|
icaltimetype *date = gcal_dup_icaltime (dtstart.value);
|
||||||
*date = icaltime_convert_to_zone (*(dtstart.value), e_cal_util_get_system_timezone ());
|
if (dtstart.tzid != NULL)
|
||||||
gcal_time_selector_set_time (GCAL_TIME_SELECTOR (priv->start_time_selector), date->hour, date->minute);
|
{
|
||||||
|
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);
|
g_free (date);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -861,8 +890,15 @@ gcal_edit_dialog_set_event_data (GcalEditDialog *dialog,
|
|||||||
if (!all_day)
|
if (!all_day)
|
||||||
{
|
{
|
||||||
icaltimetype *date = gcal_dup_icaltime (dtend.value);
|
icaltimetype *date = gcal_dup_icaltime (dtend.value);
|
||||||
*date = icaltime_convert_to_zone (*(dtstart.value), e_cal_util_get_system_timezone ());
|
if (dtend.tzid != NULL)
|
||||||
gcal_time_selector_set_time (GCAL_TIME_SELECTOR (priv->end_time_selector), date->hour, date->minute);
|
{
|
||||||
|
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);
|
g_free (date);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user