Example #1
0
static void fill_model_with_channels (GObject *source_object, GAsyncResult *res, gpointer user_data)
{
	int i;
	GtkWidget *dialog;
	GtkListStore *list;
	TrackerSparqlCursor *cursor;
	GError *error;

	error = NULL;
	cursor = tracker_sparql_connection_query_finish (TRACKER_SPARQL_CONNECTION (source_object), res, &error);

	if (error != NULL) {
		dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "Unable to fetch data about current feeds:\n%s", error->message);
		gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), "Is Tracker running?");
		gtk_dialog_run (GTK_DIALOG (dialog));
		gtk_widget_destroy (dialog);
		g_error_free (error);
		return;
	}

	list = user_data;

	while (tracker_sparql_cursor_next (cursor, NULL, NULL)) {
		gtk_list_store_insert_with_values (list, NULL, G_MAXINT,
						   PREDICATE_SUBJECT, tracker_sparql_cursor_get_string (cursor, 0, NULL),
						   PREDICATE_NAME, tracker_sparql_cursor_get_string (cursor, 1, NULL),
						   PREDICATE_DOWNLOAD, tracker_sparql_cursor_get_boolean (cursor, 2),
						   PREDICATE_DOWNPATH, tracker_sparql_cursor_get_string (cursor, 3, NULL),
						   PREDICATE_MAXSIZE, tracker_sparql_cursor_get_double (cursor, 4),
						   PREDICATE_EXPIRY, tracker_sparql_cursor_get_double (cursor, 5),
						   6, FALSE, -1);
	}
}
Example #2
0
static void find_channel_and_update (GObject *source_object, GAsyncResult *res, gpointer user_data)
{
	gchar **values;
	GtkTreeModel *model;
	GtkTreeIter iter;
	TrackerSparqlCursor *cursor;
	GError *error;

	error = NULL;
	cursor = tracker_sparql_connection_query_finish (TRACKER_SPARQL_CONNECTION (source_object), res, &error);

	if (error != NULL) {
		g_warning ("Unable to update channel: %s", error->message);
		g_error_free (error);
		return;
	}

	model = user_data;

	while (tracker_sparql_cursor_next (cursor, NULL, NULL)) {
		if (retrive_row_by_id (model, tracker_sparql_cursor_get_string (cursor, 0, NULL), &iter) == TRUE) {
			gtk_list_store_set (GTK_LIST_STORE (model), &iter,
					    PREDICATE_NAME, tracker_sparql_cursor_get_string (cursor, 1, NULL),
					    PREDICATE_DOWNLOAD, tracker_sparql_cursor_get_boolean (cursor, 2),
					    PREDICATE_DOWNPATH, tracker_sparql_cursor_get_string (cursor, 3, NULL),
					    PREDICATE_MAXSIZE, tracker_sparql_cursor_get_double (cursor, 4),
					    PREDICATE_EXPIRY, tracker_sparql_cursor_get_double (cursor, 5),
					    6, FALSE, -1);
		}
	}
}
Example #3
0
static void
pass_items (ReaderEngine *engine,
            TrackerSparqlCursor *cursor)
{
	gboolean blocked;
	const gchar *channel_id;
	const gchar *item_id;
	GtkTreeIter iter;
	GtkTreeModel *model;
	GDateTime *date;

	if (cursor != NULL) {
		while (tracker_sparql_cursor_next (cursor, NULL, NULL)) {
			channel_id = tracker_sparql_cursor_get_string (cursor, 0, NULL);
			model = reader_engine_get_items_model (engine, channel_id);
			if (model == NULL)
				continue;

			item_id = tracker_sparql_cursor_get_string (cursor, 1, NULL);
			date = item_cursor_to_time (cursor);

			if (dispose_item_in_model (model, item_id, date, &iter) == FALSE) {
				g_signal_handlers_block_by_func (model, G_CALLBACK (model_item_changed), engine);
				blocked = TRUE;
			}
			else {
				blocked = FALSE;
			}

			gtk_tree_store_set (GTK_TREE_STORE (model), &iter,
			                    ITEM_COLUMN_ID, item_id,
			                    ITEM_COLUMN_TITLE, tracker_sparql_cursor_get_string (cursor, 2, NULL),
			                    ITEM_COLUMN_URL, tracker_sparql_cursor_get_string (cursor, 3, NULL),
			                    ITEM_COLUMN_TIME, date,
			                    ITEM_COLUMN_CONTENTS, tracker_sparql_cursor_get_string (cursor, 5, NULL),
			                    ITEM_COLUMN_READ, tracker_sparql_cursor_get_boolean (cursor, 4) ? READ_FONT_WEIGHT : UNREAD_FONT_WEIGHT, -1);

			if (blocked == TRUE)
				g_signal_handlers_unblock_by_func (model, G_CALLBACK (model_item_changed), engine);
		}

		g_object_unref (cursor);
	}
}
bool QTrackerDirectSyncResult::next()
{
    if (!cursor) {
        // The cursor may have been unreferenced because the connection was deleted
        // and now the user is calling next(), so set the row here
        updatePos(QSparql::AfterLastRow);
        return false;
    }

    GError * error = 0;
    const gboolean active = tracker_sparql_cursor_next(cursor, 0, &error);

    // if this is an ask query, get the result
    if (isBool() && active && tracker_sparql_cursor_get_value_type(cursor, 0) == TRACKER_SPARQL_VALUE_TYPE_BOOLEAN) {
        const gboolean value = tracker_sparql_cursor_get_boolean(cursor, 0);
        setBoolValue(value != FALSE);
    }

    if (error) {
        setLastError(QSparqlError(QString::fromUtf8(error->message),
                       errorCodeToType(error->code),
                       error->code));
        g_error_free(error);
        qWarning() << "QTrackerDirectSyncResult:" << lastError() << query();
        g_object_unref(cursor);
        cursor = 0;
        return false;
    }

    if (!active) {
        g_object_unref(cursor);
        cursor = 0;
        updatePos(QSparql::AfterLastRow);
        return false;
    }
    const int oldPos = pos();
    if (oldPos == QSparql::BeforeFirstRow)
        updatePos(0);
    else
        updatePos(oldPos + 1);
    return true;
}
Example #5
0
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 void
tracker_evt_preupdate_sources_item_cb (GObject              *object,
                                       GAsyncResult         *result,
                                       tracker_evt_update_t *evt)
{
  const gchar *type, *datasource, *uri, *datasource_name;
  gboolean source_available = FALSE;
  GrlTrackerSource *source;
  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... start notifying sources");
    }

    g_clear_object (&evt->cursor);

    /* Once all sources have been preupdated, start items
       updates. */
    tracker_evt_update_items (evt);
    tracker_evt_update_orphans (evt);

    return;
  }

  type = tracker_sparql_cursor_get_string (evt->cursor, 0, NULL);
  datasource = tracker_sparql_cursor_get_string (evt->cursor, 1, NULL);
  datasource_name = tracker_sparql_cursor_get_string (evt->cursor, 2, NULL);
  uri = tracker_sparql_cursor_get_string (evt->cursor, 3, NULL);
  if (tracker_sparql_cursor_is_bound (evt->cursor, 4))
    source_available = tracker_sparql_cursor_get_boolean (evt->cursor, 4);

  source = grl_tracker_source_find (datasource);

  GRL_DEBUG ("\tdatasource=%s uri=%s available=%i source=%p",
             datasource, uri, source_available, source);

  if (source_available) {
    if (source == NULL) {
      gchar *source_name = grl_tracker_get_source_name (type, uri, datasource,
                                                        datasource_name);
      /* Defer source creation until we have processed all sources */
      if (source_name) {
        tracker_evt_update_source_add (evt, datasource, source_name);
        g_free (source_name);
      }
    } else {
      GRL_DEBUG ("\tChanges on source %p / %s", source, datasource);
    }
  } else if (!source_available && source != NULL) {
    tracker_evt_update_source_del (evt, GRL_TRACKER_SOURCE (source));
  }

  tracker_sparql_cursor_next_async (evt->cursor, NULL,
                                    (GAsyncReadyCallback) tracker_evt_preupdate_sources_item_cb,
                                    (gpointer) evt);
}