summaryrefslogtreecommitdiff
path: root/src/trg-rss-window.c
diff options
context:
space:
mode:
authorGravatar Alan F <ajf@eth0.org.uk>2014-02-19 08:54:10 +0000
committerGravatar Alan F <ajf@eth0.org.uk>2014-02-19 08:54:10 +0000
commit1d6f77d4c4fafd0a9cafddd2797249557e601dba (patch)
tree33dee51882a0475aff63ec6c6d9095c92c9ac5d4 /src/trg-rss-window.c
parentadf06453574270bf467b5f37e632c04c153ee90a (diff)
refactor the torrent upload code (it's called from a few places so is probably worth it), and make it easier to use a HTTP response as the input.
Diffstat (limited to 'src/trg-rss-window.c')
-rw-r--r--src/trg-rss-window.c68
1 files changed, 59 insertions, 9 deletions
diff --git a/src/trg-rss-window.c b/src/trg-rss-window.c
index 52a096f..942dddc 100644
--- a/src/trg-rss-window.c
+++ b/src/trg-rss-window.c
@@ -23,7 +23,9 @@
#include "trg-rss-window.h"
#include "trg-rss-model.h"
+#include "trg-torrent-add-dialog.h"
#include "trg-client.h"
+#include "upload.h"
#include "util.h"
G_DEFINE_TYPE(TrgRssWindow, trg_rss_window,
@@ -84,15 +86,59 @@ trg_rss_window_set_property(GObject * object,
}
}
+static gboolean on_torrent_receive(gpointer data) {
+ trg_response *response = (trg_response *) data;
+ TrgRssWindow *win = TRG_RSS_WINDOW(response->cb_data);
+ TrgRssWindowPrivate *priv = TRG_RSS_WINDOW_GET_PRIVATE(response->cb_data);
+ TrgClient *client = priv->client;
+ TrgPrefs *prefs = trg_client_get_prefs(client);
+ TrgMainWindow *main_win = priv->parent;
+
+ if (response->status == CURLE_OK) {
+ if (trg_prefs_get_bool(prefs, TRG_PREFS_KEY_ADD_OPTIONS_DIALOG,
+ TRG_PREFS_GLOBAL)) {
+ /*TrgTorrentAddDialog *dialog =
+ trg_torrent_add_dialog_new_from_filenames(main_win, client,
+ filesList);
+ gtk_widget_show_all(GTK_WIDGET(dialog));*/
+ } else {
+ trg_upload *upload = g_new0(trg_upload, 1);
+
+ upload->upload_response = response;
+ upload->main_window = main_win;
+ upload->client = client;
+ upload->extra_args = FALSE;
+ upload->flags = trg_prefs_get_add_flags(prefs);
+
+ trg_do_upload(upload);
+ }
+ } else {
+ trg_error_dialog(GTK_WINDOW(win), response);
+ trg_response_free(response);
+ }
+
+ return FALSE;
+}
+
static void
-trg_rss_window_response_cb(GtkDialog * dlg, gint res_id,
- gpointer data G_GNUC_UNUSED)
+rss_item_activated(GtkTreeView * treeview,
+ GtkTreePath * path,
+ GtkTreeViewColumn *
+ col G_GNUC_UNUSED, gpointer userdata)
{
- TrgRssWindowPrivate *priv =
- TRG_RSS_WINDOW_GET_PRIVATE(dlg);
+ TrgRssWindow *win = TRG_RSS_WINDOW(userdata);
+ TrgRssWindowPrivate *priv = TRG_RSS_WINDOW_GET_PRIVATE(win);
+ GtkTreeModel *model = gtk_tree_view_get_model(treeview);
+ GtkTreeIter iter;
+ gchar *link;
+
+ gtk_tree_model_get_iter(model, &iter, path);
+
+ gtk_tree_model_get(model, &iter, RSSCOL_LINK, &link, -1);
+
+ async_http_request(priv->client, link, on_torrent_receive, userdata);
- gtk_widget_destroy(GTK_WIDGET(dlg));
- instance = NULL;
+ g_free(link);
}
static GObject *trg_rss_window_constructor(GType type,
@@ -105,7 +151,7 @@ static GObject *trg_rss_window_constructor(GType type,
TrgRssWindowPrivate *priv;
TrgRssModel *model;
GtkTreeView *view;
- GtkWidget *vbox, *toolbar, *contentbox;
+ GtkWidget *vbox, *toolbar;
GtkToolItem *item;
object = G_OBJECT_CLASS
@@ -120,10 +166,14 @@ static GObject *trg_rss_window_constructor(GType type,
view = GTK_TREE_VIEW(gtk_tree_view_new());
gtk_tree_view_set_model(view, GTK_TREE_MODEL(model));
gtk_tree_view_insert_column_with_attributes(view, -1, "Title", gtk_cell_renderer_text_new(), "text", RSSCOL_TITLE, NULL);
+ gtk_tree_view_insert_column_with_attributes(view, -1, "Feed", gtk_cell_renderer_text_new(), "text", RSSCOL_FEED, NULL);
+ gtk_tree_view_insert_column_with_attributes(view, -1, "Published", gtk_cell_renderer_text_new(), "text", RSSCOL_PUBDATE, NULL);
+ gtk_tree_view_insert_column_with_attributes(view, -1, "URL", gtk_cell_renderer_text_new(), "text", RSSCOL_LINK, NULL);
- gtk_window_set_title(GTK_WINDOW(object), _("RSS Viewer"));
+ g_signal_connect(view, "row-activated",
+ G_CALLBACK(rss_item_activated), object);
- //contentbox = gtk_dialog_get_content_area(GTK_DIALOG(object));
+ gtk_window_set_title(GTK_WINDOW(object), _("RSS Feeds"));
toolbar = gtk_toolbar_new();