static void decorator_query_remaining_items_cb (GObject *object, GAsyncResult *result, gpointer user_data) { TrackerDecorator *decorator = user_data; TrackerDecoratorPrivate *priv; TrackerSparqlCursor *cursor; GError *error = NULL; cursor = tracker_sparql_connection_query_finish (TRACKER_SPARQL_CONNECTION (object), result, &error); priv = decorator->priv; priv->querying = FALSE; if (error || !tracker_sparql_cursor_next (cursor, NULL, &error)) { decorator_notify_task_error (decorator, error); g_error_free (error); return; } priv->n_remaining_items = g_queue_get_length (&priv->item_cache) + tracker_sparql_cursor_get_integer (cursor, 0); g_object_unref (cursor); g_debug ("Found %ld items to extract", priv->n_remaining_items); if (priv->n_remaining_items > 0) decorator_cache_next_items (decorator); else decorator_finish (decorator); }
static TrackerDecoratorInfo * tracker_decorator_info_new (TrackerDecorator *decorator, TrackerSparqlCursor *cursor) { TrackerSparqlBuilder *sparql; TrackerDecoratorInfo *info; GCancellable *cancellable; info = g_slice_new0 (TrackerDecoratorInfo); info->urn = g_strdup (tracker_sparql_cursor_get_string (cursor, 0, NULL)); info->id = tracker_sparql_cursor_get_integer (cursor, 1); info->url = g_strdup (tracker_sparql_cursor_get_string (cursor, 2, NULL)); info->mimetype = g_strdup (tracker_sparql_cursor_get_string (cursor, 3, NULL)); info->ref_count = 1; cancellable = g_cancellable_new (); info->task = g_task_new (decorator, cancellable, decorator_task_done, info); g_object_unref (cancellable); sparql = tracker_sparql_builder_new_update (); g_task_set_task_data (info->task, sparql, (GDestroyNotify) g_object_unref); return info; }
static void load_integer_value_next_cb (TrackerSparqlCursor *const cursor, GAsyncResult *const result, GTask *const task) { g_autoptr(GError) error = NULL; gboolean const more = tracker_sparql_cursor_next_finish ( cursor, result, &error ); if (!more) { nul_warning ("no more rows to load"); g_task_return_int (task, -1); return; } gint64 const integer = tracker_sparql_cursor_get_integer (cursor, 0); g_task_return_int (task, integer); }
static void pass_channels (ReaderEngine *engine, TrackerSparqlCursor *cursor) { const gchar *subject; const gchar *title; const gchar *url; gint64 unread; GtkTreeModel *model; GtkTreeIter *iter; GtkTreeIter iter2; GtkTreeStore *items_model; GdkPixbuf *icon; ReaderEnginePrivate *priv; if (cursor != NULL) { priv = reader_engine_get_instance_private (engine); model = GTK_TREE_MODEL (priv->data); while (tracker_sparql_cursor_next (cursor, NULL, NULL)) { subject = tracker_sparql_cursor_get_string (cursor, 0, NULL); title = tracker_sparql_cursor_get_string (cursor, 1, NULL); unread = tracker_sparql_cursor_get_integer (cursor, 2); url = tracker_sparql_cursor_get_string (cursor, 4, NULL); if (find_in_model (model, GD_MAIN_COLUMN_ID, subject, &iter)) { gtk_list_store_set (GTK_LIST_STORE (model), iter, GD_MAIN_COLUMN_PRIMARY_TEXT, title, EXTRA_COLUMN_UNREADS, unread, -1); gtk_tree_iter_free (iter); } else { items_model = gtk_tree_store_new (ITEM_COLUMN_LAST, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_INT, G_TYPE_STRING); g_signal_connect (items_model, "row-changed", G_CALLBACK (model_item_changed), engine); icon = get_icon_for_channel (tracker_sparql_cursor_get_string (cursor, 3, NULL)); gtk_list_store_append (GTK_LIST_STORE (model), &iter2); gtk_list_store_set (GTK_LIST_STORE (model), &iter2, GD_MAIN_COLUMN_ID, subject, GD_MAIN_COLUMN_PRIMARY_TEXT, title, GD_MAIN_COLUMN_ICON, icon, EXTRA_COLUMN_UNREADS, unread, EXTRA_COLUMN_URL, url, EXTRA_COLUMN_FEEDS_MODEL, items_model, -1); } collect_items (engine, subject, NULL); } g_object_unref (cursor); } }
static inline void insert_integer_value (TrackerSparqlCursor *const cursor, GVariantDict *const dict, gchar const *const key, gint const column) { GVariant *const value = g_variant_new_int64 ( tracker_sparql_cursor_get_integer (cursor, column) ); g_variant_dict_insert_value (dict, key, value); }
static void photos_offset_controller_cursor_next (GObject *source_object, GAsyncResult *res, gpointer user_data) { PhotosOffsetController *self = PHOTOS_OFFSET_CONTROLLER (user_data); PhotosOffsetControllerPrivate *priv = self->priv; TrackerSparqlCursor *cursor = TRACKER_SPARQL_CURSOR (source_object); gboolean valid; valid = tracker_sparql_cursor_next_finish (cursor, res, NULL); if (valid) { priv->count = (gint) tracker_sparql_cursor_get_integer (cursor, 0); g_signal_emit (self, signals[COUNT_CHANGED], 0, priv->count); } tracker_sparql_cursor_close (cursor); g_object_unref (self); }
static void photos_base_item_populate_from_cursor (PhotosBaseItem *self, TrackerSparqlCursor *cursor) { PhotosBaseItemPrivate *priv = self->priv; GTimeVal timeval; const gchar *date_created; const gchar *equipment; const gchar *flash; const gchar *mtime; const gchar *title; const gchar *uri; uri = tracker_sparql_cursor_get_string (cursor, PHOTOS_QUERY_COLUMNS_URI, NULL); priv->uri = g_strdup ((uri == NULL) ? "" : uri); priv->id = g_strdup (tracker_sparql_cursor_get_string (cursor, PHOTOS_QUERY_COLUMNS_URN, NULL)); priv->identifier = g_strdup (tracker_sparql_cursor_get_string (cursor, PHOTOS_QUERY_COLUMNS_IDENTIFIER, NULL)); priv->author = g_strdup (tracker_sparql_cursor_get_string (cursor, PHOTOS_QUERY_COLUMNS_AUTHOR, NULL)); priv->resource_urn = g_strdup (tracker_sparql_cursor_get_string (cursor, PHOTOS_QUERY_COLUMNS_RESOURCE_URN, NULL)); priv->favorite = tracker_sparql_cursor_get_boolean (cursor, PHOTOS_QUERY_COLUMNS_RESOURCE_FAVORITE); mtime = tracker_sparql_cursor_get_string (cursor, PHOTOS_QUERY_COLUMNS_MTIME, NULL); if (mtime != NULL) { g_time_val_from_iso8601 (mtime, &timeval); priv->mtime = (gint64) timeval.tv_sec; } else priv->mtime = g_get_real_time () / 1000000; priv->mime_type = g_strdup (tracker_sparql_cursor_get_string (cursor, PHOTOS_QUERY_COLUMNS_MIME_TYPE, NULL)); priv->rdf_type = g_strdup (tracker_sparql_cursor_get_string (cursor, PHOTOS_QUERY_COLUMNS_RDF_TYPE, NULL)); photos_base_item_update_info_from_type (self); date_created = tracker_sparql_cursor_get_string (cursor, PHOTOS_QUERY_COLUMNS_DATE_CREATED, NULL); if (date_created != NULL) { g_time_val_from_iso8601 (date_created, &timeval); priv->date_created = (gint64) timeval.tv_sec; } else priv->date_created = -1; if (g_strcmp0 (priv->id, PHOTOS_COLLECTION_SCREENSHOT) == 0) title = _("Screenshots"); else title = tracker_sparql_cursor_get_string (cursor, PHOTOS_QUERY_COLUMNS_TITLE, NULL); if (title == NULL) title = ""; priv->name = g_strdup (title); priv->filename = g_strdup (tracker_sparql_cursor_get_string (cursor, PHOTOS_QUERY_COLUMNS_FILENAME, NULL)); priv->width = tracker_sparql_cursor_get_integer (cursor, PHOTOS_QUERY_COLUMNS_WIDTH); priv->height = tracker_sparql_cursor_get_integer (cursor, PHOTOS_QUERY_COLUMNS_HEIGHT); equipment = tracker_sparql_cursor_get_string (cursor, PHOTOS_QUERY_COLUMNS_EQUIPMENT, NULL); priv->equipment = g_quark_from_string (equipment); priv->exposure_time = tracker_sparql_cursor_get_double (cursor, PHOTOS_QUERY_COLUMNS_EXPOSURE_TIME); priv->fnumber = tracker_sparql_cursor_get_double (cursor, PHOTOS_QUERY_COLUMNS_FNUMBER); priv->focal_length = tracker_sparql_cursor_get_double (cursor, PHOTOS_QUERY_COLUMNS_FOCAL_LENGTH); priv->iso_speed = tracker_sparql_cursor_get_double (cursor, PHOTOS_QUERY_COLUMNS_ISO_SPEED); flash = tracker_sparql_cursor_get_string (cursor, PHOTOS_QUERY_COLUMNS_FLASH, NULL); priv->flash = g_quark_from_string (flash); priv->name_fallback = PHOTOS_BASE_ITEM_GET_CLASS (self)->create_name_fallback (self); photos_base_item_refresh_icon (self); }
static int get_file_and_folder_count (int *files, int *folders) { TrackerSparqlConnection *connection; TrackerSparqlCursor *cursor; GError *error = NULL; connection = tracker_sparql_connection_get (NULL, &error); if (files) { *files = 0; } if (folders) { *folders = 0; } if (!connection) { g_printerr ("%s: %s\n", _("Could not establish a connection to Tracker"), error ? error->message : _("No error given")); g_clear_error (&error); return EXIT_FAILURE; } if (files) { const gchar query[] = "\nSELECT COUNT(?file) " "\nWHERE { " "\n ?file a nfo:FileDataObject ;" "\n tracker:available true ." "\n FILTER (?file != nfo:Folder) " "\n}"; cursor = tracker_sparql_connection_query (connection, query, NULL, &error); if (error || !tracker_sparql_cursor_next (cursor, NULL, NULL)) { g_printerr ("%s, %s\n", _("Could not get basic status for Tracker"), error->message); g_error_free (error); return EXIT_FAILURE; } *files = tracker_sparql_cursor_get_integer (cursor, 0); g_object_unref (cursor); } if (folders) { const gchar query[] = "\nSELECT COUNT(?folders)" "\nWHERE { " "\n ?folders a nfo:Folder ;" "\n tracker:available true ." "\n}"; cursor = tracker_sparql_connection_query (connection, query, NULL, &error); if (error || !tracker_sparql_cursor_next (cursor, NULL, NULL)) { g_printerr ("%s, %s\n", _("Could not get basic status for Tracker"), error->message); g_error_free (error); return EXIT_FAILURE; } *folders = tracker_sparql_cursor_get_integer (cursor, 0); g_object_unref (cursor); } g_object_unref (connection); return EXIT_SUCCESS; }
static void tracker_evt_update_orphan_item_cb (GObject *object, GAsyncResult *result, tracker_evt_update_t *evt) { guint id; const gchar *type, *datasource; GrlTrackerSource *source = NULL; GError *error = NULL; GRL_DEBUG ("%s: evt=%p", __FUNCTION__, evt); if (!tracker_sparql_cursor_next_finish (evt->cursor, result, &error)) { if (error != NULL) { GRL_DEBUG ("\terror in parsing : %s", error->message); g_error_free (error); } else { GRL_DEBUG ("\tend of parsing..."); } g_clear_object (&evt->cursor); if (grl_tracker_per_device_source) { /* Once all items have been processed, add new sources and we're done. */ tracker_evt_postupdate_sources (evt); } else { tracker_evt_update_free (evt); } return; } type = tracker_sparql_cursor_get_string (evt->cursor, 0, NULL); id = tracker_sparql_cursor_get_integer (evt->cursor, 1); datasource = tracker_sparql_cursor_get_string (evt->cursor, 2, NULL); GRL_DEBUG ("\tOrphan item: id=%u datasource=%s", id, datasource); if (!grl_tracker_per_device_source) source = grl_tracker_source_find (""); if (!source && datasource) source = grl_tracker_source_find (datasource); if (source && GRL_IS_TRACKER_SOURCE (source)) { GrlMedia *media; GRL_DEBUG (" \tAdding to cache id=%u", id); grl_tracker_source_cache_add_item (grl_tracker_item_cache, id, source); if (grl_tracker_source_can_notify (source)) { media = grl_tracker_build_grilo_media (type); if (media) { gchar *str_id = g_strdup_printf ("%i", id); gint change_type = GPOINTER_TO_INT (g_hash_table_lookup (evt->orphan_items, GSIZE_TO_POINTER (id))); grl_media_set_id (media, str_id); g_free (str_id); GRL_DEBUG ("\tNotify id=%u source=%s p=%p", id, grl_source_get_name (GRL_SOURCE (source)), source); grl_source_notify_change (GRL_SOURCE (source), media, change_type, FALSE); g_object_unref (media); } } } tracker_sparql_cursor_next_async (evt->cursor, NULL, (GAsyncReadyCallback) tracker_evt_update_orphan_item_cb, (gpointer) evt); }