static void photoset_list_ready_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { DialogData *data = user_data; GError *error = NULL; GList *scan; _g_object_list_unref (data->photosets); data->photosets = flickr_service_list_photosets_finish (FLICKR_SERVICE (source_object), res, &error); if (error != NULL) { if (data->service != NULL) gth_task_dialog (GTH_TASK (data->service), TRUE, NULL); _gtk_error_dialog_from_gerror_run (GTK_WINDOW (data->browser), _("Could not connect to the server"), error); g_clear_error (&error); gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT); return; } gtk_list_store_clear (GTK_LIST_STORE (GET_WIDGET ("photoset_liststore"))); for (scan = data->photosets; scan; scan = scan->next) { FlickrPhotoset *photoset = scan->data; char *n_photos; GtkTreeIter iter; n_photos = g_strdup_printf ("(%d)", photoset->n_photos); gtk_list_store_append (GTK_LIST_STORE (GET_WIDGET ("photoset_liststore")), &iter); gtk_list_store_set (GTK_LIST_STORE (GET_WIDGET ("photoset_liststore")), &iter, PHOTOSET_DATA_COLUMN, photoset, PHOTOSET_ICON_COLUMN, "file-catalog-symbolic", PHOTOSET_TITLE_COLUMN, photoset->title, PHOTOSET_N_PHOTOS_COLUMN, n_photos, -1); g_free (n_photos); } gtk_dialog_set_response_sensitive (GTK_DIALOG (data->dialog), GTK_RESPONSE_OK, TRUE); gth_task_dialog (GTH_TASK (data->service), TRUE, NULL); gtk_window_set_transient_for (GTK_WINDOW (data->dialog), GTK_WINDOW (data->browser)); gtk_window_set_modal (GTK_WINDOW (data->dialog), FALSE); gtk_window_present (GTK_WINDOW (data->dialog)); }
static void add_photos_to_photoset_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { DialogData *data = user_data; GError *error = NULL; if (! flickr_service_add_photos_to_set_finish (FLICKR_SERVICE (source_object), result, &error)) { _gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not create the album"), error); g_clear_error (&error); gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT); return; } export_completed_with_success (data); }
static char * flickr_get_authorization_url (OAuthService *self) { FlickrServer *server; char *escaped_token; char *uri; server = flickr_service_get_server (FLICKR_SERVICE (self)); escaped_token = soup_uri_encode (oauth_service_get_token (self), NULL); uri = g_strconcat (server->authorization_url, "?oauth_token=", escaped_token, "&perms=write", NULL); g_free (escaped_token); return uri; }
static void post_photos_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { DialogData *data = user_data; GError *error = NULL; data->photos_ids = flickr_service_post_photos_finish (FLICKR_SERVICE (source_object), result, &error); if (error != NULL) { _gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not upload the files"), error); g_clear_error (&error); gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT); return; } if (data->photoset == NULL) { export_completed_with_success (data); return; } /* create the photoset if it doesn't exists */ if (data->photoset->id == NULL) { char *first_id; first_id = data->photos_ids->data; flickr_photoset_set_primary (data->photoset, first_id); flickr_service_create_photoset (data->service, data->photoset, data->cancellable, create_photoset_ready_cb, data); } else add_photos_to_photoset (data); }
static void create_photoset_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { DialogData *data = user_data; GError *error = NULL; char *primary; primary = g_strdup (data->photoset->primary); g_object_unref (data->photoset); data->photoset = flickr_service_create_photoset_finish (FLICKR_SERVICE (source_object), result, &error); if (error != NULL) { _gtk_error_dialog_from_gerror_show (GTK_WINDOW (data->browser), _("Could not create the album"), error); g_clear_error (&error); gtk_dialog_response (GTK_DIALOG (data->dialog), GTK_RESPONSE_DELETE_EVENT); } else { flickr_photoset_set_primary (data->photoset, primary); add_photos_to_photoset (data); } g_free (primary); }