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)); }
static GList* gcal_year_view_get_children_by_uuid (GcalView *view, const gchar *uuid) { GcalYearViewPrivate *priv = GCAL_YEAR_VIEW (view)->priv; GList *children, *l, *result = NULL; children = gtk_container_get_children (GTK_CONTAINER (priv->events_sidebar)); for (l = children; l != NULL; l = g_list_next (l)) { GcalEventWidget *child_widget = GCAL_EVENT_WIDGET (gtk_bin_get_child (GTK_BIN (l->data))); if (child_widget != NULL && g_strcmp0 (uuid, gcal_event_widget_peek_uuid (child_widget)) == 0) result = g_list_append (result, child_widget); } g_list_free (children); return result; }
static void gcal_month_view_remove_by_uuid (GcalView *view, const gchar *uuid) { GcalMonthViewPrivate *priv; gint i; GList *l; g_return_if_fail (GCAL_IS_MONTH_VIEW (view)); priv = GCAL_MONTH_VIEW (view)->priv; for (i = 0; i < 35; i++) { for (l = priv->days[i]; l != NULL; l = l->next) { const gchar* widget_uuid = gcal_event_widget_peek_uuid (GCAL_EVENT_WIDGET (l->data)); if (g_strcmp0 (uuid, widget_uuid) == 0) gtk_widget_destroy (GTK_WIDGET (l->data)); } } }
static void gcal_year_view_component_changed (ECalDataModelSubscriber *subscriber, ECalClient *client, ECalComponent *comp) { GcalYearViewPrivate *priv = GCAL_YEAR_VIEW (subscriber)->priv; GList *children, *l; gchar *uuid; uuid = get_uuid_from_component (e_client_get_source (E_CLIENT (client)), comp); children = gtk_container_get_children (GTK_CONTAINER (priv->events_sidebar)); for (l = children; l != NULL; l = g_list_next (l)) { GcalEventWidget *child_widget = GCAL_EVENT_WIDGET (gtk_bin_get_child (GTK_BIN (l->data))); if (child_widget != NULL && g_strcmp0 (uuid, gcal_event_widget_peek_uuid (child_widget)) == 0) gtk_widget_destroy (GTK_WIDGET (l->data)); } g_list_free (children); g_free (uuid); gcal_year_view_component_added (subscriber, client, comp); }
static void gcal_year_view_component_removed (ECalDataModelSubscriber *subscriber, ECalClient *client, const gchar *uid, const gchar *rid) { GcalYearViewPrivate *priv = GCAL_YEAR_VIEW (subscriber)->priv; GList *children, *l; ESource *source; gchar *uuid; gboolean update_sidebar_needed = FALSE; source = e_client_get_source (E_CLIENT (client)); if (rid != NULL) uuid = g_strdup_printf ("%s:%s:%s", e_source_get_uid (source), uid, rid); else uuid = g_strdup_printf ("%s:%s", e_source_get_uid (source), uid); children = gtk_container_get_children (GTK_CONTAINER (priv->events_sidebar)); for (l = children; l != NULL; l = g_list_next (l)) { GcalEventWidget *child_widget = GCAL_EVENT_WIDGET (gtk_bin_get_child (GTK_BIN (l->data))); if (child_widget != NULL && g_strcmp0 (uuid, gcal_event_widget_peek_uuid (child_widget)) == 0) { if (g_list_length (children) == 1) update_sidebar_needed = TRUE; gtk_widget_destroy (GTK_WIDGET (l->data)); } } g_list_free (children); g_free (uuid); if (update_sidebar_needed) { update_no_events_page (GCAL_YEAR_VIEW (subscriber)); gtk_stack_set_visible_child_name (GTK_STACK (priv->navigator_stack), "no-events"); } }