week-view: implement get_left/right_header methods

Add macro to include private instance data into GcalWeekView objects
This commit is contained in:
Erick Pérez Castellanos
2014-12-04 17:10:35 -05:00
parent 50cd68273d
commit 7cc4ab07b1
+58 -1
View File
@@ -149,6 +149,10 @@ static icaltimetype* gcal_week_view_get_initial_date (GcalView *view
static icaltimetype* gcal_week_view_get_final_date (GcalView *view);
static gchar* gcal_week_view_get_left_header (GcalView *view);
static gchar* gcal_week_view_get_right_header (GcalView *view);
static gboolean gcal_week_view_draw_event (GcalView *view,
icaltimetype *start_date,
icaltimetype *end_date);
@@ -159,6 +163,7 @@ static GtkWidget* gcal_week_view_get_by_uuid (GcalView *view
G_DEFINE_TYPE_WITH_CODE (GcalWeekView,
gcal_week_view,
GTK_TYPE_CONTAINER,
G_ADD_PRIVATE (GcalWeekView)
G_IMPLEMENT_INTERFACE (GCAL_TYPE_VIEW,
gcal_view_interface_init));
@@ -235,9 +240,15 @@ 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->draw_event = gcal_week_view_draw_event;
/* iface->mark_current_unit = gcal_week_view_mark_current_unit; */
/* iface->clear_marks = gcal_week_view_clear_marks; */
iface->get_left_header = gcal_week_view_get_left_header;
iface->get_right_header = gcal_week_view_get_right_header;
iface->draw_event = gcal_week_view_draw_event;
iface->get_by_uuid = gcal_week_view_get_by_uuid;
/* iface->clear = gcal_week_view_clear; */
}
static void
@@ -1499,6 +1510,52 @@ gcal_week_view_get_final_date (GcalView *view)
return new_date;
}
static gchar*
gcal_week_view_get_left_header (GcalView *view)
{
icaltimetype *start_of_week;
icaltimetype *end_of_week;
gchar start_date[64];
gchar end_date[64];
struct tm tm_date;
gchar *header;
start_of_week = gcal_week_view_get_initial_date (view);
tm_date = icaltimetype_to_tm (start_of_week);
e_utf8_strftime_fix_am_pm (start_date, 64, "%b %d", &tm_date);
end_of_week = gcal_week_view_get_final_date (view);
tm_date = icaltimetype_to_tm (end_of_week);
e_utf8_strftime_fix_am_pm (end_date, 64, "%b %d", &tm_date);
header = g_strdup_printf ("%s - %s", start_date, end_date);
g_free (start_of_week);
g_free (end_of_week);
return header;
}
static gchar*
gcal_week_view_get_right_header (GcalView *view)
{
GcalWeekViewPrivate *priv;
icaltimetype *start_of_week;
gchar *header;
priv = gcal_week_view_get_instance_private (GCAL_WEEK_VIEW (view));
start_of_week = gcal_week_view_get_initial_date (view);
header = g_strdup_printf ("%s %d, %d",
_("Week"),
icaltime_week_number (*start_of_week) + 1,
priv->date->year);
g_free (start_of_week);
return header;
}
static gboolean
gcal_week_view_draw_event (GcalView *view,
icaltimetype *start_date,