diff options
Diffstat (limited to 'calendar/gui/e-day-view-config.c')
-rw-r--r-- | calendar/gui/e-day-view-config.c | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/calendar/gui/e-day-view-config.c b/calendar/gui/e-day-view-config.c index 4e34370aff..a5fe7cc73b 100644 --- a/calendar/gui/e-day-view-config.c +++ b/calendar/gui/e-day-view-config.c @@ -105,7 +105,7 @@ e_day_view_config_finalize (GObject *object) } static void -e_day_view_config_class_init (ECalViewClass *klass) +e_day_view_config_class_init (EDayViewConfigClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); GParamSpec *spec; @@ -157,6 +157,33 @@ e_day_view_config_get_view (EDayViewConfig *view_config) } static void +set_timezone (EDayView *day_view) +{ + char *location; + icaltimezone *zone; + + location = calendar_config_get_timezone (); + zone = icaltimezone_get_builtin_timezone (location); + if (!zone) + zone = icaltimezone_get_utc_timezone (); + + e_cal_view_set_timezone (E_CAL_VIEW (day_view), zone); + + g_free (location); +} + +static void +timezone_changed_cb (GConfClient *client, guint id, GConfEntry *entry, gpointer data) +{ + EDayViewConfig *view_config = data; + EDayViewConfigPrivate *priv; + + priv = view_config->priv; + + set_timezone (priv->view); +} + +static void set_week_start (EDayView *day_view) { int week_start_day; @@ -385,7 +412,13 @@ e_day_view_config_set_view (EDayViewConfig *view_config, EDayView *day_view) return; priv->view = g_object_ref (day_view); + + /* Time zone */ + set_timezone (day_view); + not = calendar_config_add_notification_timezone (timezone_changed_cb, view_config); + priv->notifications = g_list_prepend (priv->notifications, GUINT_TO_POINTER (not)); + /* Week start */ set_week_start (day_view); @@ -440,4 +473,3 @@ e_day_view_config_set_view (EDayViewConfig *view_config, EDayView *day_view) not = calendar_config_add_notification_show_event_end (show_event_end_changed_cb, view_config); priv->notifications = g_list_prepend (priv->notifications, GUINT_TO_POINTER (not)); } - |