year-view: implement GcalSubscriber extensions points
In GcalSubscriber container implementation is needed to find out if an event will expand more than on cell on a view and on which cell it belongs. GcalSubscriber provides two vfuncs for its descendants to implement.
This commit is contained in:
@@ -93,6 +93,13 @@ static gboolean gcal_year_view_button_release (GtkWidget
|
|||||||
|
|
||||||
static void gcal_year_view_direction_changed (GtkWidget *widget,
|
static void gcal_year_view_direction_changed (GtkWidget *widget,
|
||||||
GtkTextDirection previous_direction);
|
GtkTextDirection previous_direction);
|
||||||
|
|
||||||
|
static gboolean gcal_year_view_is_child_multimonth (GcalSubscriber *subscriber,
|
||||||
|
GcalEventWidget *child);
|
||||||
|
|
||||||
|
static guint gcal_year_view_get_child_cell (GcalSubscriber *subscriber,
|
||||||
|
GcalEventWidget *child);
|
||||||
|
|
||||||
static icaltimetype* gcal_year_view_get_initial_date (GcalView *view);
|
static icaltimetype* gcal_year_view_get_initial_date (GcalView *view);
|
||||||
|
|
||||||
static icaltimetype* gcal_year_view_get_final_date (GcalView *view);
|
static icaltimetype* gcal_year_view_get_final_date (GcalView *view);
|
||||||
@@ -126,9 +133,13 @@ event_opened (GcalEventWidget *event_widget,
|
|||||||
static void
|
static void
|
||||||
gcal_year_view_class_init (GcalYearViewClass *klass)
|
gcal_year_view_class_init (GcalYearViewClass *klass)
|
||||||
{
|
{
|
||||||
|
GcalSubscriberClass *subscriber_class;
|
||||||
GtkWidgetClass *widget_class;
|
GtkWidgetClass *widget_class;
|
||||||
GObjectClass *object_class;
|
GObjectClass *object_class;
|
||||||
|
|
||||||
|
subscriber_class = GCAL_SUBSCRIBER_CLASS (klass);
|
||||||
|
subscriber_class->is_child_multicell = gcal_year_view_is_child_multimonth;
|
||||||
|
subscriber_class->get_child_cell = gcal_year_view_get_child_cell;
|
||||||
|
|
||||||
widget_class = GTK_WIDGET_CLASS (klass);
|
widget_class = GTK_WIDGET_CLASS (klass);
|
||||||
widget_class->realize = gcal_year_view_realize;
|
widget_class->realize = gcal_year_view_realize;
|
||||||
@@ -617,6 +628,28 @@ gcal_year_view_direction_changed (GtkWidget *widget,
|
|||||||
priv->k = 1;
|
priv->k = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
gcal_year_view_is_child_multimonth (GcalSubscriber *subscriber,
|
||||||
|
GcalEventWidget *child)
|
||||||
|
{
|
||||||
|
const icaltimetype *dt_start, *dt_end;
|
||||||
|
|
||||||
|
dt_start = gcal_event_widget_peek_start_date (child);
|
||||||
|
dt_end = gcal_event_widget_peek_end_date (child);
|
||||||
|
if (dt_end == NULL)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
return dt_start->month != dt_end->month || dt_start->year != dt_end->year;
|
||||||
|
}
|
||||||
|
|
||||||
|
static guint
|
||||||
|
gcal_year_view_get_child_cell (GcalSubscriber *subscriber,
|
||||||
|
GcalEventWidget *child)
|
||||||
|
{
|
||||||
|
const icaltimetype *dt_start = gcal_event_widget_peek_start_date (child);
|
||||||
|
return dt_start->month;
|
||||||
|
}
|
||||||
|
|
||||||
/* GcalView Interface API */
|
/* GcalView Interface API */
|
||||||
/**
|
/**
|
||||||
* gcal_year_view_get_initial_date:
|
* gcal_year_view_get_initial_date:
|
||||||
|
|||||||
Reference in New Issue
Block a user