From c22792e65e70091a0d894e7b1e68e239facb6efb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Erick=20P=C3=A9rez=20Castellanos?= Date: Thu, 6 Jun 2013 11:51:10 -0400 Subject: [PATCH] gcal-view: reworked a little more the API Added API to get the headers for update GcalNavBar Updated GcalMonthView, GcalWeekView and GcalYearView implementations Updated calls in GcalWindow --- src/gcal-month-view.c | 14 ++--- src/gcal-view.c | 134 +++++++++++++++++++++++++++++------------- src/gcal-view.h | 46 +++++++-------- src/gcal-week-view.c | 12 ++-- src/gcal-window.c | 4 +- src/gcal-year-view.c | 14 ++--- 6 files changed, 136 insertions(+), 88 deletions(-) diff --git a/src/gcal-month-view.c b/src/gcal-month-view.c index a7aa8780..bdee2110 100644 --- a/src/gcal-month-view.c +++ b/src/gcal-month-view.c @@ -117,7 +117,7 @@ static icaltimetype* gcal_month_view_get_initial_date (GcalView *vie static icaltimetype* gcal_month_view_get_final_date (GcalView *view); -static gboolean gcal_month_view_contains (GcalView *view, +static gboolean gcal_month_view_contains_date (GcalView *view, icaltimetype *date); static void gcal_month_view_remove_by_uuid (GcalView *view, @@ -209,7 +209,7 @@ gcal_view_interface_init (GcalViewIface *iface) iface->get_initial_date = gcal_month_view_get_initial_date; iface->get_final_date = gcal_month_view_get_final_date; - iface->contains = gcal_month_view_contains; + iface->contains_date = gcal_month_view_contains_date; iface->remove_by_uuid = gcal_month_view_remove_by_uuid; iface->get_by_uuid = gcal_month_view_get_by_uuid; iface->reposition_child = gcal_month_view_reposition_child; @@ -1092,7 +1092,7 @@ gcal_month_view_set_date (GcalMonthView *view, will_resize = FALSE; /* if span_updated: queue_resize */ - will_resize = ! gcal_view_contains (GCAL_VIEW (view), date); + will_resize = ! gcal_month_view_contains_date (GCAL_VIEW (view), date); if (priv->date != NULL) g_free (priv->date); @@ -1118,7 +1118,7 @@ gcal_month_view_set_date (GcalMonthView *view, child = (GcalViewChild*) l->data; child_date = gcal_event_widget_get_date (GCAL_EVENT_WIDGET (child->widget)); - if (! gcal_view_contains (GCAL_VIEW (view), child_date)) + if (! gcal_month_view_contains_date (GCAL_VIEW (view), child_date)) to_remove = g_list_append (to_remove, child->widget); } } @@ -1206,8 +1206,8 @@ gcal_month_view_get_final_date (GcalView *view) } static gboolean -gcal_month_view_contains (GcalView *view, - icaltimetype *date) +gcal_month_view_contains_date (GcalView *view, + icaltimetype *date) { GcalMonthViewPrivate *priv; @@ -1304,7 +1304,7 @@ gcal_month_view_reposition_child (GcalView *view, date = gcal_event_widget_get_date (GCAL_EVENT_WIDGET (child->widget)); - if (gcal_month_view_contains (view, date)) + if (gcal_month_view_contains_date (view, date)) { if (date->day - 1 == i) { diff --git a/src/gcal-view.c b/src/gcal-view.c index 58855aa4..20f760af 100644 --- a/src/gcal-view.c +++ b/src/gcal-view.c @@ -115,34 +115,6 @@ gcal_view_get_date (GcalView *view) return date; } -icaltimetype* -gcal_view_get_initial_date (GcalView *view) -{ - g_return_val_if_fail (GCAL_IS_VIEW (view), NULL); - g_return_if_fail (GCAL_VIEW_GET_INTERFACE (view)->get_initial_date); - - return GCAL_VIEW_GET_INTERFACE (view)->get_initial_date (view); -} - -icaltimetype* -gcal_view_get_final_date (GcalView *view) -{ - g_return_val_if_fail (GCAL_IS_VIEW (view), NULL); - g_return_if_fail (GCAL_VIEW_GET_INTERFACE (view)->get_final_date); - - return GCAL_VIEW_GET_INTERFACE (view)->get_final_date (view); -} - -gboolean -gcal_view_contains (GcalView *view, - icaltimetype *date) -{ - g_return_val_if_fail (GCAL_IS_VIEW (view), FALSE); - g_return_if_fail (GCAL_VIEW_GET_INTERFACE (view)->contains); - - return GCAL_VIEW_GET_INTERFACE (view)->contains (view, date); -} - void gcal_view_remove_by_uuid (GcalView *view, const gchar *uuid) @@ -191,6 +163,66 @@ gcal_view_create_event_on_current_unit (GcalView *view) GCAL_VIEW_GET_INTERFACE (view)->create_event_on_current_unit (view); } +/* New API */ +/** + * gcal_view_get_initial_date: + * @view: a #GcalView + * + * Return the initial date represented by the view. + * + * Returns: (transfer full): An #icaltimetype object + **/ +icaltimetype* +gcal_view_get_initial_date (GcalView *view) +{ + g_return_val_if_fail (GCAL_IS_VIEW (view), NULL); + g_return_if_fail (GCAL_VIEW_GET_INTERFACE (view)->get_initial_date); + + return GCAL_VIEW_GET_INTERFACE (view)->get_initial_date (view); +} + +/** + * gcal_view_get_final_date: + * @view: a #GcalView + * + * Return the final date represented by the view. + * + * Returns: (transfer full): An #icaltimetype object + **/ +icaltimetype* +gcal_view_get_final_date (GcalView *view) +{ + g_return_val_if_fail (GCAL_IS_VIEW (view), NULL); + g_return_if_fail (GCAL_VIEW_GET_INTERFACE (view)->get_final_date); + + return GCAL_VIEW_GET_INTERFACE (view)->get_final_date (view); +} + +/** + * gcal_view_contains_date: + * @view: a #GcalView + * @date: an #icaltimetype object + * + * Whether @date is contained in the time-range represented by @view + * + * Returns: %TRUE if it is, %FALSE otherwise + **/ +gboolean +gcal_view_contains_date (GcalView *view, + icaltimetype *date) +{ + g_return_val_if_fail (GCAL_IS_VIEW (view), FALSE); + g_return_if_fail (GCAL_VIEW_GET_INTERFACE (view)->contains_date); + + return GCAL_VIEW_GET_INTERFACE (view)->contains_date (view, date); +} + +/** + * gcal_view_mark_current_unit: + * @view: a #GcalView + * + * Mark the current unit in the view as marked for event creation + **/ void gcal_view_mark_current_unit (GcalView *view) { @@ -200,6 +232,12 @@ gcal_view_mark_current_unit (GcalView *view) GCAL_VIEW_GET_INTERFACE (view)->mark_current_unit (view); } +/** + * gcal_view_clear_mark: + * @view: a #GcalView + * + * Clear any marking the view had drawn + **/ void gcal_view_clear_mark (GcalView *view) { @@ -209,22 +247,38 @@ gcal_view_clear_mark (GcalView *view) GCAL_VIEW_GET_INTERFACE (view)->clear_mark (view); } -void -gcal_view_move_back (GcalView *view, - gint steps) +/** + * gcal_view_get_left_header: + * @view: a #GcalView + * + * Returns the string representing for the left header of the unit. + * e.g.: for #GcalMonthView returns the month name + * + * Returns: (transfer full): a string. + **/ +gchar* +gcal_view_get_left_header (GcalView *view) { - g_return_if_fail (GCAL_IS_VIEW (view)); - g_return_if_fail (GCAL_VIEW_GET_INTERFACE (view)->move_back); + g_return_val_if_fail (GCAL_IS_VIEW (view), NULL); + g_return_val_if_fail (GCAL_VIEW_GET_INTERFACE (view)->get_left_header, NULL); - GCAL_VIEW_GET_INTERFACE (view)->move_back (view, steps); + return GCAL_VIEW_GET_INTERFACE (view)->get_left_header (view); } -void -gcal_view_move_forward (GcalView *view, - gint steps) +/** + * gcal_view_get_right_header: + * @view: a #GcalView + * + * Returns the string representing for the right header of the unit. + * e.g.: for #GcalMonthView returns the year + * + * Returns: (transfer full): a string. + **/ +gchar* +gcal_view_get_right_header (GcalView *view) { - g_return_if_fail (GCAL_IS_VIEW (view)); - g_return_if_fail (GCAL_VIEW_GET_INTERFACE (view)->move_forward); + g_return_val_if_fail (GCAL_IS_VIEW (view), NULL); + g_return_val_if_fail (GCAL_VIEW_GET_INTERFACE (view)->get_right_header, NULL); - GCAL_VIEW_GET_INTERFACE (view)->move_forward (view, steps); + return GCAL_VIEW_GET_INTERFACE (view)->get_right_header (view); } diff --git a/src/gcal-view.h b/src/gcal-view.h index b88c9699..871522ba 100644 --- a/src/gcal-view.h +++ b/src/gcal-view.h @@ -51,11 +51,7 @@ struct _GcalViewIface void (*create_event) (GcalView *view, icaltimetype *start_span, icaltimetype *end_span, gdouble x, gdouble y); void (*updated) (GcalView *view, icaltimetype *date); - /* pure virtual methods */ - icaltimetype* (*get_initial_date) (GcalView *view); - icaltimetype* (*get_final_date) (GcalView *view); - - gboolean (*contains) (GcalView *view, icaltimetype *date); + /* Container functions related API */ void (*remove_by_uuid) (GcalView *view, const gchar *uuid); GtkWidget* (*get_by_uuid) (GcalView *view, const gchar *uuid); void (*reposition_child) (GcalView *view, const gchar *uuid); @@ -66,17 +62,19 @@ struct _GcalViewIface /* FIXME remove me in favor of the one below */ void (*create_event_on_current_unit) (GcalView *view); -/* New API */ + /* New API */ + /* Time handling related API */ + icaltimetype* (*get_initial_date) (GcalView *view); + icaltimetype* (*get_final_date) (GcalView *view); + gboolean (*contains_date) (GcalView *view, icaltimetype *date); + /* Marks related API */ - void (*mark_current_unit) (GcalView *view); - void (*clear_mark) (GcalView *view); - - /* Navigation related API */ - void (*move_back) (GcalView *view, - gint steps); - void (*move_forward) (GcalView *view, - gint steps); + void (*mark_current_unit) (GcalView *view); + void (*clear_mark) (GcalView *view); + /* Update NavBar headings */ + gchar* (*get_left_header) (GcalView *view); + gchar* (*get_right_header) (GcalView *view); }; GType gcal_view_get_type (void); @@ -87,13 +85,6 @@ void gcal_view_set_date (GcalView *view, icaltimetype* gcal_view_get_date (GcalView *view); -icaltimetype* gcal_view_get_initial_date (GcalView *view); - -icaltimetype* gcal_view_get_final_date (GcalView *view); - -gboolean gcal_view_contains (GcalView *view, - icaltimetype *date); - void gcal_view_remove_by_uuid (GcalView *view, const gchar *uuid); @@ -110,15 +101,20 @@ void gcal_view_clear_selection (GcalView *view); void gcal_view_create_event_on_current_unit (GcalView *view); /* New API */ +icaltimetype* gcal_view_get_initial_date (GcalView *view); + +icaltimetype* gcal_view_get_final_date (GcalView *view); + +gboolean gcal_view_contains_date (GcalView *view, + icaltimetype *date); + void gcal_view_mark_current_unit (GcalView *view); void gcal_view_clear_mark (GcalView *view); -void gcal_view_move_back (GcalView *view, - gint steps); +gchar* gcal_view_get_left_header (GcalView *view); -void gcal_view_move_forward (GcalView *view, - gint steps); +gchar* gcal_view_get_right_header (GcalView *view); G_END_DECLS diff --git a/src/gcal-week-view.c b/src/gcal-week-view.c index 075200a1..e388bc60 100644 --- a/src/gcal-week-view.c +++ b/src/gcal-week-view.c @@ -149,7 +149,7 @@ static icaltimetype* gcal_week_view_get_initial_date (GcalView *view static icaltimetype* gcal_week_view_get_final_date (GcalView *view); -static gboolean gcal_week_view_contains (GcalView *view, +static gboolean gcal_week_view_contains_date (GcalView *view, icaltimetype *date); static void gcal_week_view_remove_by_uuid (GcalView *view, @@ -237,7 +237,7 @@ gcal_view_interface_init (GcalViewIface *iface) iface->get_initial_date = gcal_week_view_get_initial_date; iface->get_final_date = gcal_week_view_get_final_date; - iface->contains = gcal_week_view_contains; + iface->contains_date = gcal_week_view_contains_date; iface->remove_by_uuid = gcal_week_view_remove_by_uuid; iface->get_by_uuid = gcal_week_view_get_by_uuid; } @@ -979,7 +979,7 @@ gcal_week_view_set_date (GcalWeekView *view, will_resize = FALSE; /* if span_updated: queue_resize */ - will_resize = ! gcal_view_contains (GCAL_VIEW (view), date); + will_resize = ! gcal_week_view_contains_date (GCAL_VIEW (view), date); if (priv->date != NULL) g_free (priv->date); @@ -999,7 +999,7 @@ gcal_week_view_set_date (GcalWeekView *view, child = (GcalWeekViewChild*) l->data; child_date = gcal_event_widget_get_date (GCAL_EVENT_WIDGET (child->widget)); - if (! gcal_view_contains (GCAL_VIEW (view), child_date)) + if (! gcal_week_view_contains_date (GCAL_VIEW (view), child_date)) to_remove = g_list_append (to_remove, child->widget); } } @@ -1502,8 +1502,8 @@ gcal_week_view_get_final_date (GcalView *view) } static gboolean -gcal_week_view_contains (GcalView *view, - icaltimetype *date) +gcal_week_view_contains_date (GcalView *view, + icaltimetype *date) { GcalWeekViewPrivate *priv; diff --git a/src/gcal-window.c b/src/gcal-window.c index 21ced28a..e0ade5c6 100644 --- a/src/gcal-window.c +++ b/src/gcal-window.c @@ -626,8 +626,6 @@ gcal_window_set_active_view (GcalWindow *window, g_object_notify (G_OBJECT (window), "active-view"); - update_range = ! gcal_view_contains (GCAL_VIEW (priv->views[priv->active_view]), - priv->active_date); gcal_view_set_date (GCAL_VIEW (priv->views[priv->active_view]), priv->active_date); @@ -799,7 +797,7 @@ gcal_window_events_added (GcalManager *manager, starting_date = gcal_manager_get_event_start_date (manager, source_uid, event_uid); - if (gcal_view_contains ( + if (gcal_view_contains_date ( GCAL_VIEW (priv->views[priv->active_view]), starting_date) && gcal_view_get_by_uuid ( diff --git a/src/gcal-year-view.c b/src/gcal-year-view.c index 323e2c58..93af5453 100644 --- a/src/gcal-year-view.c +++ b/src/gcal-year-view.c @@ -115,7 +115,7 @@ static icaltimetype* gcal_year_view_get_initial_date (GcalView static icaltimetype* gcal_year_view_get_final_date (GcalView *view); -static gboolean gcal_year_view_contains (GcalView *view, +static gboolean gcal_year_view_contains_date (GcalView *view, icaltimetype *date); static void gcal_year_view_remove_by_uuid (GcalView *view, @@ -207,7 +207,7 @@ gcal_view_interface_init (GcalViewIface *iface) iface->get_initial_date = gcal_year_view_get_initial_date; iface->get_final_date = gcal_year_view_get_final_date; - iface->contains = gcal_year_view_contains; + iface->contains_date = gcal_year_view_contains_date; iface->remove_by_uuid = gcal_year_view_remove_by_uuid; iface->get_by_uuid = gcal_year_view_get_by_uuid; iface->reposition_child = gcal_year_view_reposition_child; @@ -754,7 +754,7 @@ gcal_year_view_set_date (GcalYearView *view, will_resize = FALSE; /* if span_updated: queue_resize */ - will_resize = ! gcal_view_contains (GCAL_VIEW (view), date); + will_resize = ! gcal_year_view_contains_date (GCAL_VIEW (view), date); if (priv->date != NULL) g_free (priv->date); @@ -775,7 +775,7 @@ gcal_year_view_set_date (GcalYearView *view, child = (GcalViewChild*) l->data; child_date = gcal_event_widget_get_date (GCAL_EVENT_WIDGET (child->widget)); - if (! gcal_view_contains (GCAL_VIEW (view), child_date)) + if (! gcal_year_view_contains_date (GCAL_VIEW (view), child_date)) to_remove = g_list_append (to_remove, child->widget); } } @@ -1019,8 +1019,8 @@ gcal_year_view_get_final_date (GcalView *view) } static gboolean -gcal_year_view_contains (GcalView *view, - icaltimetype *date) +gcal_year_view_contains_date (GcalView *view, + icaltimetype *date) { GcalYearViewPrivate *priv; @@ -1116,7 +1116,7 @@ gcal_year_view_reposition_child (GcalView *view, date = gcal_event_widget_get_date (GCAL_EVENT_WIDGET (child->widget)); - if (gcal_year_view_contains (view, date)) + if (gcal_year_view_contains_date (view, date)) { if (date->month - 1 == i) {