/** * e_data_cal_view_get_text: * @query: A #EDataCalView object. * * Get the expression used for the given query. * * Returns: the query expression used to search. */ const gchar * e_data_cal_view_get_text (EDataCalView *query) { g_return_val_if_fail (IS_QUERY (query), NULL); return e_cal_backend_sexp_text (query->priv->sexp); }
static void e_cal_backend_http_start_view (ECalBackend *backend, EDataCalView *query) { ECalBackendHttp *cbhttp; ECalBackendHttpPrivate *priv; GSList *components, *l; GSList *objects = NULL; ECalBackendSExp *cbsexp; ETimezoneCache *timezone_cache; time_t occur_start = -1, occur_end = -1; gboolean prunning_by_time; cbhttp = E_CAL_BACKEND_HTTP (backend); priv = cbhttp->priv; timezone_cache = E_TIMEZONE_CACHE (backend); cbsexp = e_data_cal_view_get_sexp (query); d (g_message (G_STRLOC ": Starting query (%s)", e_cal_backend_sexp_text (cbsexp))); if (!priv->store) { GError *error = EDC_ERROR (NoSuchCal); e_data_cal_view_notify_complete (query, error); g_error_free (error); return; } /* process all components in the cache */ objects = NULL; prunning_by_time = e_cal_backend_sexp_evaluate_occur_times ( cbsexp, &occur_start, &occur_end); components = prunning_by_time ? e_cal_backend_store_get_components_occuring_in_range (priv->store, occur_start, occur_end) : e_cal_backend_store_get_components (priv->store); for (l = components; l != NULL; l = g_slist_next (l)) { ECalComponent *comp = l->data; if (e_cal_backend_sexp_match_comp (cbsexp, comp, timezone_cache)) { objects = g_slist_append (objects, comp); } } e_data_cal_view_notify_components_added (query, objects); g_slist_free_full (components, g_object_unref); g_slist_free (objects); e_data_cal_view_notify_complete (query, NULL /* Success */); }