[gnome-calendar] search-view: fix timezone handling
- From: Erick Pérez Castellanos <erickpc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-calendar] search-view: fix timezone handling
- Date: Mon, 16 Mar 2015 17:10:24 +0000 (UTC)
commit f7e897fefe29c3ce9691924c68cf1d01151ad748
Author: Erick Pérez Castellanos <erick red gmail com>
Date: Mon Mar 16 12:15:22 2015 -0400
search-view: fix timezone handling
src/gcal-search-view.c | 30 ++++++++++++++++++++----------
1 files changed, 20 insertions(+), 10 deletions(-)
---
diff --git a/src/gcal-search-view.c b/src/gcal-search-view.c
index 0122e57..065acbb 100644
--- a/src/gcal-search-view.c
+++ b/src/gcal-search-view.c
@@ -231,6 +231,10 @@ sort_by_event (GtkListBoxRow *row1,
e_cal_component_get_dtstart (ev1->event_component, &date1);
e_cal_component_get_dtstart (ev2->event_component, &date2);
+ if (date1.tzid != NULL)
+ date1.value->zone = icaltimezone_get_builtin_timezone_from_tzid (date1.tzid);
+ if (date2.tzid != NULL)
+ date2.value->zone = icaltimezone_get_builtin_timezone_from_tzid (date2.tzid);
result = icaltime_compare_with_current (date1.value, date2.value, &(priv->current_utc_date));
e_cal_component_free_datetime (&date1);
@@ -300,7 +304,9 @@ make_row_for_event_data (GcalSearchView *view,
{
GcalSearchViewPrivate *priv;
- GDateTime *datetime;
+ g_autoptr(GTimeZone) tz;
+ g_autoptr (GDateTime) datetime;
+ g_autoptr (GDateTime) local_datetime;
ECalComponentDateTime comp_dt;
ECalComponentText summary;
GdkRGBA color;
@@ -351,9 +357,18 @@ make_row_for_event_data (GcalSearchView *view,
gtk_widget_set_hexpand (name_box, TRUE);
/* start date & time */
- datetime = g_date_time_new_local (comp_dt.value->year, comp_dt.value->month, comp_dt.value->day,
comp_dt.value->hour,
- comp_dt.value->minute, comp_dt.value->second);
- text = g_date_time_format (datetime, "%x");
+ if (comp_dt.tzid != NULL)
+ tz = g_time_zone_new (comp_dt.tzid);
+ else if (comp_dt.value->zone != NULL)
+ tz = g_time_zone_new (icaltimezone_get_tzid ((icaltimezone*) comp_dt.value->zone));
+ else
+ tz = g_time_zone_new_local ();
+
+ datetime = g_date_time_new (tz,
+ comp_dt.value->year, comp_dt.value->month, comp_dt.value->day,
+ comp_dt.value->hour, comp_dt.value->minute, comp_dt.value->second);
+ local_datetime = g_date_time_to_local (datetime);
+ text = g_date_time_format (local_datetime, "%x");
date_label = gtk_label_new (text);
gtk_label_set_width_chars (GTK_LABEL (date_label), 11);
g_free (text);
@@ -361,11 +376,7 @@ make_row_for_event_data (GcalSearchView *view,
/* show 'all day' instead of 00:00 */
if (comp_dt.value->is_date == 0)
{
- if (priv->format_24h)
- text = g_strdup_printf ("%.2d:%.2d", comp_dt.value->hour, comp_dt.value->minute);
- else
- text = g_strdup_printf (_("%.2d:%.2d %s"), comp_dt.value->hour % 12, comp_dt.value->minute,
- comp_dt.value->hour < 12 ? _("AM") : _("PM"));
+ text = g_date_time_format (local_datetime, priv->format_24h ? "%R" : "%r");
time_label = gtk_label_new (text);
g_free (text);
}
@@ -412,7 +423,6 @@ make_row_for_event_data (GcalSearchView *view,
gtk_widget_show_all (row);
- g_date_time_unref (datetime);
e_cal_component_free_datetime (&comp_dt);
g_object_unref (pixbuf);
return row;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]