From 86d5a23dddabffe86a82432d85ba371fc689cde9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erick=20P=C3=A9rez=20Castellanos?= Date: Wed, 28 Jan 2015 15:18:53 -0500 Subject: [PATCH] app: initial current date marking work --- src/gcal-window.c | 34 ++++++++++++++++++++++++++-------- src/gcal-year-view.c | 12 ++---------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/src/gcal-window.c b/src/gcal-window.c index 1f643f81..f688ecb8 100644 --- a/src/gcal-window.c +++ b/src/gcal-window.c @@ -91,6 +91,8 @@ typedef struct GcalWindowViewType active_view; icaltimetype *active_date; + icaltimetype *current_date; + /* states */ gboolean new_event_mode; gboolean search_mode; @@ -319,6 +321,25 @@ update_active_date (GcalWindow *window, priv->active_date = new_date; } +static gboolean +update_current_date (GcalWindow *window) +{ + GcalWindowPrivate *priv = gcal_window_get_instance_private (window); + guint seconds; + + if (priv->current_date == NULL) + priv->current_date = g_new0 (icaltimetype, 1); + + *(priv->current_date) = icaltime_current_time_with_zone (gcal_manager_get_system_timezone (priv->manager)); + *(priv->current_date) = icaltime_set_timezone (priv->current_date, gcal_manager_get_system_timezone (priv->manager)); + + gcal_year_view_set_current_date (GCAL_YEAR_VIEW (priv->year_view), priv->current_date); + + seconds = 24 * 60 * 60 - (icaltime_as_timet (*(priv->current_date)) % (24 * 60 * 60)); + g_timeout_add_seconds (seconds, (GSourceFunc) update_current_date, window); + return FALSE; +} + static void date_updated (GtkButton *button, gpointer user_data) @@ -1319,7 +1340,6 @@ gcal_window_constructed (GObject *object) gcal_month_view_set_first_weekday (GCAL_MONTH_VIEW (priv->views[GCAL_WINDOW_VIEW_MONTH]), get_first_weekday ()); gcal_month_view_set_use_24h_format (GCAL_MONTH_VIEW (priv->views[GCAL_WINDOW_VIEW_MONTH]), use_24h_format); - gcal_year_view_set_manager (GCAL_YEAR_VIEW (priv->views[GCAL_WINDOW_VIEW_YEAR]), priv->manager); gcal_year_view_set_first_weekday (GCAL_YEAR_VIEW (priv->views[GCAL_WINDOW_VIEW_YEAR]), get_first_weekday ()); gcal_year_view_set_use_24h_format (GCAL_YEAR_VIEW (priv->views[GCAL_WINDOW_VIEW_YEAR]), use_24h_format); @@ -1327,9 +1347,6 @@ gcal_window_constructed (GObject *object) gcal_search_view_connect (GCAL_SEARCH_VIEW (priv->search_view), priv->manager); gcal_search_view_set_time_format (GCAL_SEARCH_VIEW (priv->search_view), use_24h_format); - /* current date hook */ - gcal_year_view_set_current_date (GCAL_YEAR_VIEW (priv->views[GCAL_WINDOW_VIEW_YEAR]), NULL); - /* refresh timeout, first is fast */ priv->refresh_timeout_id = g_timeout_add (FAST_REFRESH_TIMEOUT, (GSourceFunc) refresh_sources, object); } @@ -1375,10 +1392,11 @@ gcal_window_set_property (GObject *object, return; case PROP_MANAGER: priv->manager = g_value_get_pointer (value); - g_signal_connect (priv->manager, "source-added", - G_CALLBACK (add_source), object); - g_signal_connect (priv->manager, "source-removed", - G_CALLBACK (remove_source), object); + g_signal_connect (priv->manager, "source-added", G_CALLBACK (add_source), object); + g_signal_connect (priv->manager, "source-removed", G_CALLBACK (remove_source), object); + + gcal_year_view_set_manager (GCAL_YEAR_VIEW (priv->year_view), priv->manager); + update_current_date (GCAL_WINDOW (object)); return; } diff --git a/src/gcal-year-view.c b/src/gcal-year-view.c index c3527523..f5f0aa7c 100644 --- a/src/gcal-year-view.c +++ b/src/gcal-year-view.c @@ -922,10 +922,6 @@ gcal_year_view_finalize (GObject *object) if (priv->date != NULL) g_free (priv->date); - /* FIXME: move into window */ - if (priv->current_date != NULL) - g_free (priv->current_date); - G_OBJECT_CLASS (gcal_year_view_parent_class)->finalize (object); } @@ -1267,13 +1263,9 @@ void gcal_year_view_set_current_date (GcalYearView *year_view, icaltimetype *current_date) { - /* FIXME: move into window */ - year_view->priv->current_date = g_new0 (icaltimetype, 1); - *(year_view->priv->current_date) = - icaltime_current_time_with_zone (gcal_manager_get_system_timezone (year_view->priv->manager)); - *(year_view->priv->current_date) = icaltime_set_timezone (year_view->priv->current_date, - gcal_manager_get_system_timezone (year_view->priv->manager)); + year_view->priv->current_date = current_date; /* Launches update */ + gtk_widget_queue_draw (GTK_WIDGET (year_view)); update_sidebar (year_view); }