static void gcal_month_view_add (GtkContainer *container, GtkWidget *widget) { GcalMonthViewPrivate *priv; GList *l; gint day; icaltimetype *date; g_return_if_fail (GCAL_IS_MONTH_VIEW (container)); g_return_if_fail (GCAL_IS_EVENT_WIDGET (widget)); g_return_if_fail (gtk_widget_get_parent (widget) == NULL); priv = GCAL_MONTH_VIEW (container)->priv; /* Check if it's already added for date */ date = gcal_event_widget_get_date (GCAL_EVENT_WIDGET (widget)); day = date->day + ( - priv->days_delay); g_free (date); for (l = priv->days[day]; l != NULL; l = l->next) { if (g_strcmp0 ( gcal_event_widget_peek_uuid (GCAL_EVENT_WIDGET (widget)), gcal_event_widget_peek_uuid (GCAL_EVENT_WIDGET (l->data))) == 0) { g_warning ("Trying to add an event with the same uuid to the view"); return; } } priv->days[day] = g_list_append (priv->days[day], widget); gtk_widget_set_parent (widget, GTK_WIDGET (container)); }
/** * gcal_event_widget_get_event: * @self: a #GcalEventWidget * * Retrieves the @GcalEvent this widget represents. * * Returns: (transfer none): a #GcalEvent */ GcalEvent* gcal_event_widget_get_event (GcalEventWidget *self) { g_return_val_if_fail (GCAL_IS_EVENT_WIDGET (self), NULL); return self->event; }
/** * gcal_event_widget_get_date_start: * @self: a #GcalEventWidget * * Retrieves the visible start date of this widget. This * may differ from the event's start date. * * Returns: (transfer none): a #GDateTime */ GDateTime* gcal_event_widget_get_date_start (GcalEventWidget *self) { g_return_val_if_fail (GCAL_IS_EVENT_WIDGET (self), NULL); return self->dt_start; }
void gcal_event_widget_set_read_only (GcalEventWidget *event, gboolean read_only) { g_return_if_fail (GCAL_IS_EVENT_WIDGET (event)); set_drag_source_enabled (event, !read_only); event->read_only = read_only; }
/** * gcal_event_widget_set_date_start: * @self: a #GcalEventWidget * @date_end: the start date of this widget * * Sets the visible start date of this widget. This * may differ from the event's start date, but cannot * be before it. */ void gcal_event_widget_set_date_start (GcalEventWidget *self, GDateTime *date_start) { g_return_if_fail (GCAL_IS_EVENT_WIDGET (self)); if (self->dt_start != date_start && (!self->dt_start || !date_start || (self->dt_start && date_start && !g_date_time_equal (self->dt_start, date_start)))) { /* The start date should never be before the event's start date */ if (date_start && g_date_time_compare (date_start, gcal_event_get_date_start (self->event)) < 0) return; g_clear_pointer (&self->dt_start, g_date_time_unref); self->dt_start = g_date_time_ref (date_start); gcal_event_widget_update_style (self); g_object_notify (G_OBJECT (self), "date-start"); } }
/** * gcal_event_widget_set_date_end: * @self: a #GcalEventWidget * @date_end: the end date of this widget * * Sets the visible end date of this widget. This * may differ from the event's end date, but cannot * be after it. */ void gcal_event_widget_set_date_end (GcalEventWidget *self, GDateTime *date_end) { g_return_if_fail (GCAL_IS_EVENT_WIDGET (self)); if (self->dt_end != date_end && (!self->dt_end || !date_end || (self->dt_end && date_end && !g_date_time_equal (self->dt_end, date_end)))) { /* The end date should never be after the event's end date */ if (date_end && g_date_time_compare (date_end, gcal_event_get_date_end (self->event)) > 0) return; g_clear_pointer (&self->dt_end, g_date_time_unref); self->dt_end = g_date_time_ref (date_end); gcal_event_widget_update_style (self); g_object_notify (G_OBJECT (self), "date-end"); } }