From 56a60210894a344d66ec3c77f807c2867491f45d Mon Sep 17 00:00:00 2001 From: Alan F Date: Sun, 9 Mar 2014 17:25:32 +0000 Subject: hacking to support the options dialog from rss feeds --- src/upload.c | 63 +++++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 52 insertions(+), 11 deletions(-) (limited to 'src/upload.c') diff --git a/src/upload.c b/src/upload.c index 5bac869..2f16c51 100644 --- a/src/upload.c +++ b/src/upload.c @@ -1,9 +1,10 @@ #include "protocol-constants.h" #include "requests.h" #include "trg-client.h" -#include "upload.h" #include "util.h" #include "trg-main-window.h" +#include "json.h" +#include "upload.h" static gboolean upload_complete_callback(gpointer data); static void next_upload(trg_upload *upload); @@ -19,20 +20,57 @@ add_set_common_args(JsonObject * args, gint priority, gchar * dir) void trg_upload_free(trg_upload *upload) { g_str_slist_free(upload->list); g_free(upload->dir); + g_free(upload->uid); + g_free(upload->file_wanted); + g_free(upload->file_priorities); trg_response_free(upload->upload_response); g_free(upload); } +static void add_priorities(JsonObject *args, gint* priorities, gint n_files) +{ + gint i; + for (i = 0; i < n_files; i++) { + gint priority = priorities[i]; + if (priority == TR_PRI_LOW) + add_file_id_to_array(args, FIELD_FILES_PRIORITY_LOW, i); + else if (priority == TR_PRI_HIGH) + add_file_id_to_array(args, FIELD_FILES_PRIORITY_HIGH, i); + else + add_file_id_to_array(args, FIELD_FILES_PRIORITY_NORMAL, i); + } +} + +static void add_wanteds(JsonObject *args, gint* wanteds, gint n_files) { + gint i; + for (i = 0; i < n_files; i++) { + if (wanteds[i]) + add_file_id_to_array(args, FIELD_FILES_WANTED, i); + else + add_file_id_to_array(args, FIELD_FILES_UNWANTED, i); + } +} + static void next_upload(trg_upload *upload) { - if (upload->upload_response && upload->progress_index < 1) { - JsonNode *req = torrent_add_from_response(upload->upload_response, 0); - /*JsonObject *args = + JsonNode *req = NULL; + + if (upload->upload_response && upload->progress_index < 1) + req = torrent_add_from_response(upload->upload_response, upload->flags); + else if (upload->list && upload->progress_index < g_slist_length(upload->list)) + req = torrent_add_from_file((gchar*)g_slist_nth_data(upload->list, upload->progress_index), upload->flags); + + if (req) { + JsonObject *args = node_get_arguments(req); + if (upload->extra_args) - add_set_common_args()*/ - upload->progress_index++; - dispatch_async(upload->client, req, upload_complete_callback, upload); - } else if (upload->list && upload->progress_index < g_slist_length(upload->list)) { - JsonNode *req = torrent_add_from_file((gchar*)g_slist_nth_data(upload->list, upload->progress_index), 0); + add_set_common_args(args, upload->priority, upload->dir); + + if (upload->file_wanted) + add_wanteds(args, upload->file_wanted, upload->n_files); + + if (upload->file_priorities) + add_priorities(args, upload->file_priorities, upload->n_files); + upload->progress_index++; dispatch_async(upload->client, req, upload_complete_callback, upload); } else { @@ -44,15 +82,18 @@ static gboolean upload_complete_callback(gpointer data) { trg_response *response = (trg_response*)data; trg_upload *upload = (trg_upload*)response->cb_data; - next_upload(upload); + if (upload->callback) + upload->callback(data); /* the callback we're delegating to will destroy the response */ if (upload->main_window) on_generic_interactive_action(upload->main_window, response); - else /* otherwise need to do it here */ + else trg_response_free(response); + next_upload(upload); + return FALSE; } -- cgit v1.2.3