diff options
author | Alan Fitton <ajf@eth0.org.uk> | 2011-04-08 14:24:25 +0000 |
---|---|---|
committer | Alan Fitton <ajf@eth0.org.uk> | 2011-04-08 14:24:25 +0000 |
commit | 070688006ac7cea1639f38c0bb270c191f7dc38f (patch) | |
tree | 258fbf88a6f28a86bef83553e2430e950d972793 /src/trg-main-window.c | |
parent | f74c398577f66488cf5c420f5df318ab801117cc (diff) |
a torrent add dialog based off Transmission GTK (different bencode+action implementation) which allows you to set file priorities, torrent priority, directory in advance. probably needs a little more work.
Diffstat (limited to 'src/trg-main-window.c')
-rw-r--r-- | src/trg-main-window.c | 107 |
1 files changed, 30 insertions, 77 deletions
diff --git a/src/trg-main-window.c b/src/trg-main-window.c index 4e21cf7..8080038 100644 --- a/src/trg-main-window.c +++ b/src/trg-main-window.c @@ -60,6 +60,7 @@ #include "trg-torrent-move-dialog.h" #include "trg-torrent-props-dialog.h" #include "trg-torrent-add-url-dialog.h" +#include "trg-torrent-add-dialog.h" #include "trg-toolbar.h" #include "trg-menu-bar.h" #include "trg-status-bar.h" @@ -84,7 +85,6 @@ static void torrent_tv_onRowActivated(GtkTreeView * treeview, GtkTreePath * path, GtkTreeViewColumn * col, gpointer userdata); -static gpointer add_files_threadfunc(gpointer data); static void add_url_cb(GtkWidget * w, gpointer data); static void add_cb(GtkWidget * w, gpointer data); static void disconnect_cb(GtkWidget * w, gpointer data); @@ -370,40 +370,6 @@ torrent_tv_onRowActivated(GtkTreeView * treeview, open_props_cb(GTK_WIDGET(treeview), userdata); } -/* Use synchronous dispatch() in our dedicated thread function. - * This means torrents are added in sequence, instead of dispatch_async() - * working concurrently for each upload. - */ - -struct add_torrent_threadfunc_args { - GSList *list; - trg_client *client; - gpointer cb_data; -}; - -static gpointer add_files_threadfunc(gpointer data) -{ - JsonObject *response; - JsonNode *request; - struct add_torrent_threadfunc_args *args; - gint status; - GSList *li; - - args = (struct add_torrent_threadfunc_args *) data; - - for (li = args->list; li != NULL; li = g_slist_next(li)) { - request = torrent_add((gchar *) li->data, FALSE); - g_free(li->data); - response = dispatch(args->client, request, &status); - on_generic_interactive_action(response, status, args->cb_data); - } - - g_slist_free(args->list); - g_free(args); - - return NULL; -} - static void add_url_cb(GtkWidget * w G_GNUC_UNUSED, gpointer data) { TrgMainWindow *win = TRG_MAIN_WINDOW(data); @@ -416,47 +382,33 @@ static void add_url_cb(GtkWidget * w G_GNUC_UNUSED, gpointer data) static void add_cb(GtkWidget * w G_GNUC_UNUSED, gpointer data) { - TrgMainWindowPrivate *priv; - GtkWidget *dialog; - GtkFileFilter *filter; + TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(data); + /*TrgTorrentAddDialog *dialog; + GtkFileFilter *filter; */ - priv = TRG_MAIN_WINDOW_GET_PRIVATE(data); + trg_torrent_add_dialog(TRG_MAIN_WINDOW(data), priv->client); - dialog = gtk_file_chooser_dialog_new("Open File", - GTK_WINDOW(data), - GTK_FILE_CHOOSER_ACTION_OPEN, - GTK_STOCK_CANCEL, - GTK_RESPONSE_CANCEL, - GTK_STOCK_OPEN, - GTK_RESPONSE_ACCEPT, NULL); - gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), TRUE); - - filter = gtk_file_filter_new(); - gtk_file_filter_add_pattern(filter, "*.torrent"); - gtk_file_filter_set_name(filter, _("BitTorrent Metadata")); - gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter); - - if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { - GThread *thread; - GError *error = NULL; - struct add_torrent_threadfunc_args *args; - - args = g_new(struct add_torrent_threadfunc_args, 1); - args->list = - gtk_file_chooser_get_filenames(GTK_FILE_CHOOSER(dialog)); - args->cb_data = data; - args->client = priv->client; - - thread = - g_thread_create(add_files_threadfunc, args, FALSE, &error); - if (error != NULL) { - g_printf("thread creation error: %s\n", error->message); - g_error_free(error); - g_free(args); - } - } + /*dialog = trg_torrent_add_dialog_new(TRG_MAIN_WINDOW(data), priv->client, NULL, TRUE); + gtk_dialog_run(GTK_DIALOG(dialog)); */ - gtk_widget_destroy(dialog); + /*dialog = gtk_file_chooser_dialog_new("Open File", + GTK_WINDOW(data), + GTK_FILE_CHOOSER_ACTION_OPEN, + GTK_STOCK_CANCEL, + GTK_RESPONSE_CANCEL, + GTK_STOCK_OPEN, + GTK_RESPONSE_ACCEPT, NULL); + gtk_file_chooser_set_select_multiple(GTK_FILE_CHOOSER(dialog), TRUE); + + filter = gtk_file_filter_new(); + gtk_file_filter_add_pattern(filter, "*.torrent"); + gtk_file_filter_set_name(filter, _("BitTorrent Metadata")); + gtk_file_chooser_add_filter(GTK_FILE_CHOOSER(dialog), filter); + + if (gtk_dialog_run(GTK_DIALOG(dialog)) == GTK_RESPONSE_ACCEPT) { + } + + gtk_widget_destroy(dialog); */ } static void pause_cb(GtkWidget * w G_GNUC_UNUSED, gpointer data) @@ -474,7 +426,7 @@ gboolean trg_add_from_filename(TrgMainWindow * win, gchar * fileName) TrgMainWindowPrivate *priv = TRG_MAIN_WINDOW_GET_PRIVATE(win); if (g_file_test(fileName, G_FILE_TEST_EXISTS) == TRUE) { - JsonNode *torrentAddReq = torrent_add(fileName, FALSE); + JsonNode *torrentAddReq = torrent_add(fileName, pref_get_start_paused(priv->client->gconf)); dispatch_async(priv->client, torrentAddReq, on_generic_interactive_action, win); return TRUE; @@ -1779,6 +1731,7 @@ static GObject *trg_main_window_constructor(GType type, gtk_icon_theme_load_icon(theme, PACKAGE_NAME, 48, GTK_ICON_LOOKUP_USE_BUILTIN, NULL); + notify_init(PACKAGE_NAME); if (priv->icon) gtk_window_set_default_icon(priv->icon); @@ -1874,9 +1827,9 @@ static GObject *trg_main_window_constructor(GType type, gtk_paned_pack1(GTK_PANED(priv->vpaned), priv->hpaned, TRUE, TRUE); priv->stateSelector = trg_state_selector_new(priv->client); - priv->stateSelectorScroller = my_scrolledwin_new(GTK_WIDGET(priv->stateSelector)); - gtk_paned_pack1(GTK_PANED(priv->hpaned), - priv->stateSelectorScroller, + priv->stateSelectorScroller = + my_scrolledwin_new(GTK_WIDGET(priv->stateSelector)); + gtk_paned_pack1(GTK_PANED(priv->hpaned), priv->stateSelectorScroller, FALSE, FALSE); gtk_paned_pack2(GTK_PANED(priv->hpaned), |