static void photos_organize_collection_view_create_collection_executed (GObject *source_object, GAsyncResult *res, gpointer user_data) { PhotosOrganizeCollectionView *self; PhotosCreateCollectionJob *col_job = PHOTOS_CREATE_COLLECTION_JOB (source_object); PhotosSetCollectionJob *set_job = NULL; GApplication *app; GError *error; GList *urns; GtkTreeIter iter; GtkTreePath *path = NULL; PhotosSearchContextState *state; gchar *created_urn = NULL; error = NULL; created_urn = photos_create_collection_job_finish (col_job, res, &error); if (error != NULL) { if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_CANCELLED)) { g_error_free (error); goto out; } else { g_warning ("Unable to create collection: %s", error->message); g_error_free (error); } } self = PHOTOS_ORGANIZE_COLLECTION_VIEW (user_data); if (created_urn == NULL) { photos_organize_collection_model_remove_placeholder (PHOTOS_ORGANIZE_COLLECTION_MODEL (self->model)); goto out; } path = photos_organize_collection_model_get_placeholder (PHOTOS_ORGANIZE_COLLECTION_MODEL (self->model), TRUE); if (path == NULL) goto out; app = g_application_get_default (); state = photos_search_context_get_state (PHOTOS_SEARCH_CONTEXT (app)); gtk_tree_model_get_iter (GTK_TREE_MODEL (self->model), &iter, path); gtk_list_store_set (self->model, &iter, PHOTOS_ORGANIZE_MODEL_ID, created_urn, -1); set_job = photos_set_collection_job_new (created_urn, TRUE); urns = photos_selection_controller_get_selection (self->sel_cntrlr); photos_set_collection_job_run (set_job, state, urns, NULL, NULL, NULL); out: g_clear_object (&set_job); g_free (created_urn); gtk_tree_path_free (path); }
static void photos_create_collection_job_dispose (GObject *object) { PhotosCreateCollectionJob *self = PHOTOS_CREATE_COLLECTION_JOB (object); g_clear_object (&self->queue); G_OBJECT_CLASS (photos_create_collection_job_parent_class)->dispose (object); }
static void photos_create_collection_job_finalize (GObject *object) { PhotosCreateCollectionJob *self = PHOTOS_CREATE_COLLECTION_JOB (object); g_free (self->name); G_OBJECT_CLASS (photos_create_collection_job_parent_class)->finalize (object); }
static void photos_create_collection_job_query_executed (GObject *source_object, GAsyncResult *res, gpointer user_data) { PhotosCreateCollectionJob *self = PHOTOS_CREATE_COLLECTION_JOB (user_data); TrackerSparqlConnection *connection = TRACKER_SPARQL_CONNECTION (source_object); GError *error; GVariant *variant; GVariant *child; gchar *key = NULL; gchar *val = NULL; error = NULL; variant = tracker_sparql_connection_update_blank_finish (connection, res, &error); if (error != NULL) { g_warning ("Unable to create collection: %s", error->message); g_error_free (error); goto out; } child = g_variant_get_child_value (variant, 0); /* variant is now aa{ss} */ g_variant_unref (variant); variant = child; child = g_variant_get_child_value (variant, 0); /* variant is now s{ss} */ g_variant_unref (variant); variant = child; child = g_variant_get_child_value (variant, 0); /* variant is now {ss} */ g_variant_unref (variant); variant = child; child = g_variant_get_child_value (variant, 0); key = g_variant_dup_string (child, NULL); g_variant_unref (child); child = g_variant_get_child_value (variant, 1); val = g_variant_dup_string (child, NULL); g_variant_unref (child); g_variant_unref (variant); if (g_strcmp0 (key, "res") == 0) self->created_urn = val; out: if (self->callback != NULL) (*self->callback) (self->created_urn, self->user_data); self->created_urn = NULL; g_free (val); g_free (key); }
static void photos_create_collection_job_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { PhotosCreateCollectionJob *self = PHOTOS_CREATE_COLLECTION_JOB (object); switch (prop_id) { case PROP_NAME: self->name = g_value_dup_string (value); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }