static gboolean query_completed_cb (GcalShellSearchProvider *search_provider, GcalManager *manager) { GcalShellSearchProviderPrivate *priv = search_provider->priv; GList *events, *l; GVariantBuilder builder; GcalEventData *data; gchar *uuid; time_t current_time_t; g_hash_table_remove_all (priv->events); events = gcal_manager_get_shell_search_events (priv->manager); if (events == NULL) { g_dbus_method_invocation_return_value (priv->pending_search->invocation, g_variant_new ("(as)", NULL)); goto out; } g_variant_builder_init (&builder, G_VARIANT_TYPE ("as")); current_time_t = time (NULL); events = g_list_sort_with_data (events, sort_event_data, ¤t_time_t); for (l = events; l != NULL; l = g_list_next (l)) { data = l->data; uuid = get_uuid_from_component (data->source, data->event_component); g_variant_builder_add (&builder, "s", uuid); g_hash_table_insert (priv->events, uuid, data); } g_list_free (events); g_dbus_method_invocation_return_value (priv->pending_search->invocation, g_variant_new ("(as)", &builder)); out: g_object_unref (priv->pending_search->invocation); g_strfreev (priv->pending_search->terms); g_clear_pointer (&(priv->pending_search), g_free); g_application_release (g_application_get_default ()); return FALSE; }
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_week_view_component_modified (ECalDataModelSubscriber *subscriber, ECalClient *client, ECalComponent *comp) { GcalWeekView *self = GCAL_WEEK_VIEW (subscriber); GcalWeekHeader *header; gchar *uuid; GCAL_ENTRY; header = GCAL_WEEK_HEADER (self->header); uuid = get_uuid_from_component (e_client_get_source (E_CLIENT (client)), comp); gcal_week_header_remove_event (header, uuid); gcal_week_grid_remove_event (GCAL_WEEK_GRID (self->week_grid), uuid); gcal_week_view_component_added (subscriber, client, comp); g_free (uuid); GCAL_EXIT; }