From 907636d97b1893e9df4ef28489c92d32118c6fa2 Mon Sep 17 00:00:00 2001 From: Alan F Date: Mon, 24 Feb 2014 18:48:23 +0000 Subject: plug the RSS feeds into the preferences dialog and put ifdefs so it should compile without rss-glib --- src/Makefile.am | 2 +- src/trg-client.c | 6 +++++ src/trg-main-window.c | 18 ++++++++++---- src/trg-menu-bar.c | 14 +++++++++++ src/trg-persistent-tree-view.c | 25 +++++++++++++++---- src/trg-persistent-tree-view.h | 2 +- src/trg-preferences-dialog.c | 53 +++++++++++++++++++++++++++++++++++++---- src/trg-prefs.h | 3 +++ src/trg-rss-model.c | 54 +++++++++++++++++++++++++++++++++++++++++- src/trg-rss-model.h | 20 ++++++++++++++++ src/trg-rss-window.c | 40 +++++++++++++++++++++++++++++++ src/trg-rss-window.h | 7 ++++++ src/util.c | 2 +- 13 files changed, 230 insertions(+), 16 deletions(-) diff --git a/src/Makefile.am b/src/Makefile.am index bb11db2..fc4902e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -105,8 +105,8 @@ transmission_remote_gtk_SOURCES = \ trg-client.c \ trg-main-window.c \ main.c \ - trg-rss-window.c \ trg-rss-model.c \ + trg-rss-window.c \ upload.c \ $(NULL) diff --git a/src/trg-client.c b/src/trg-client.c index 8ab2afd..25a78dd 100644 --- a/src/trg-client.c +++ b/src/trg-client.c @@ -563,12 +563,18 @@ static CURL* get_curl(TrgClient *tc, guint http_class) priv->http_class = http_class; } + if (http_class == HTTP_CLASS_TRANSMISSION) + curl_easy_setopt(curl, CURLOPT_URL, trg_client_get_url(tc)); + curl_easy_setopt(curl, CURLOPT_TIMEOUT, (long) trg_prefs_get_int(prefs, TRG_PREFS_KEY_TIMEOUT, TRG_PREFS_CONNECTION)); g_mutex_unlock(priv->configMutex); + /* Headers are set on each use, then freed, so make sure invalid headers aren't still around. */ + curl_easy_setopt(curl, CURLOPT_HTTPHEADER, NULL); + return curl; } diff --git a/src/trg-main-window.c b/src/trg-main-window.c index 3066c4d..32212f6 100644 --- a/src/trg-main-window.c +++ b/src/trg-main-window.c @@ -17,9 +17,7 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifdef HAVE_CONFIG_H #include "config.h" -#endif #include #include @@ -73,7 +71,9 @@ #include "trg-menu-bar.h" #include "trg-status-bar.h" #include "trg-stats-dialog.h" +#ifdef HAVE_RSSGLIB #include "trg-rss-window.h" +#endif #include "trg-remote-prefs-dialog.h" #include "trg-preferences-dialog.h" #include "upload.h" @@ -930,6 +930,7 @@ static void view_stats_toggled_cb(GtkWidget * w, gpointer data) } } +#ifdef HAVE_RSSGLIB static void view_rss_toggled_cb(GtkWidget * w, gpointer data) { TrgMainWindow *win = TRG_MAIN_WINDOW(data); @@ -942,6 +943,7 @@ static void view_rss_toggled_cb(GtkWidget * w, gpointer data) gtk_widget_show_all(GTK_WIDGET(rss)); } } +#endif static void view_states_toggled_cb(GtkCheckMenuItem * w, TrgMainWindow * win) @@ -1756,12 +1758,15 @@ static TrgMenuBar *trg_main_window_menu_bar_new(TrgMainWindow * win) GObject *b_disconnect, *b_add, *b_resume, *b_pause, *b_verify, *b_remove, *b_delete, *b_props, *b_local_prefs, *b_remote_prefs, - *b_about, *b_view_states, *b_view_notebook, *b_view_stats, *b_view_rss, + *b_about, *b_view_states, *b_view_notebook, *b_view_stats, *b_add_url, *b_quit, *b_move, *b_reannounce, *b_pause_all, *b_resume_all, *b_dir_filters, *b_tracker_filters, *b_up_queue, *b_down_queue, *b_top_queue, *b_bottom_queue, #if TRG_WITH_GRAPH *b_show_graph, +#endif +#ifdef HAVE_RSSGLIB + *b_view_rss, #endif *b_start_now; @@ -1787,9 +1792,12 @@ static TrgMenuBar *trg_main_window_menu_bar_new(TrgMainWindow * win) "view-states-button", &b_view_states, "view-stats-button", &b_view_stats, "about-button", &b_about, "quit-button", &b_quit, "dir-filters", &b_dir_filters, "tracker-filters", - &b_tracker_filters, "view-rss-button", &b_view_rss, + &b_tracker_filters, #if TRG_WITH_GRAPH "show-graph", &b_show_graph, +#endif +#ifdef HAVE_RSSGLIB + "view-rss-button", &b_view_rss, #endif "up-queue", &b_up_queue, "down-queue", &b_down_queue, "top-queue", &b_top_queue, "bottom-queue", @@ -1835,8 +1843,10 @@ static TrgMenuBar *trg_main_window_menu_bar_new(TrgMainWindow * win) G_CALLBACK(view_states_toggled_cb), win); g_signal_connect(b_view_stats, "activate", G_CALLBACK(view_stats_toggled_cb), win); +#ifdef HAVE_RSSGLIB g_signal_connect(b_view_rss, "activate", G_CALLBACK(view_rss_toggled_cb), win); +#endif #if TRG_WITH_GRAPH g_signal_connect(b_show_graph, "toggled", G_CALLBACK(trg_main_window_toggle_graph_cb), win); diff --git a/src/trg-menu-bar.c b/src/trg-menu-bar.c index f6ca4c5..37c6c2c 100644 --- a/src/trg-menu-bar.c +++ b/src/trg-menu-bar.c @@ -17,6 +17,8 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include "config.h" + #include #include #include @@ -49,7 +51,9 @@ enum { PROP_LOCAL_PREFS_BUTTON, PROP_ABOUT_BUTTON, PROP_VIEW_STATS_BUTTON, +#ifdef HAVE_RSSGLIB PROP_VIEW_RSS_BUTTON, +#endif PROP_VIEW_STATES_BUTTON, PROP_VIEW_NOTEBOOK_BUTTON, PROP_QUIT, @@ -97,7 +101,9 @@ struct _TrgMenuBarPrivate { GtkWidget *mb_view_states; GtkWidget *mb_view_notebook; GtkWidget *mb_view_stats; +#ifdef HAVE_RSSGLIB GtkWidget *mb_view_rss; +#endif GtkWidget *mb_about; GtkWidget *mb_quit; GtkWidget *mb_directory_filters; @@ -142,7 +148,9 @@ void trg_menu_bar_connected_change(TrgMenuBar * mb, gboolean connected) gtk_widget_set_sensitive(priv->mb_disconnect, connected); gtk_widget_set_sensitive(priv->mb_remote_prefs, connected); gtk_widget_set_sensitive(priv->mb_view_stats, connected); +#ifdef HAVE_RSSGLIB gtk_widget_set_sensitive(priv->mb_view_rss, connected); +#endif gtk_widget_set_sensitive(priv->mb_resume_all, connected); gtk_widget_set_sensitive(priv->mb_pause_all, connected); } @@ -276,9 +284,11 @@ trg_menu_bar_get_property(GObject * object, guint property_id, case PROP_VIEW_STATS_BUTTON: g_value_set_object(value, priv->mb_view_stats); break; +#ifdef HAVE_RSSGLIB case PROP_VIEW_RSS_BUTTON: g_value_set_object(value, priv->mb_view_rss); break; +#endif case PROP_QUIT: g_value_set_object(value, priv->mb_quit); break; @@ -548,11 +558,13 @@ static GtkWidget *trg_menu_bar_view_menu_new(TrgMenuBar * mb) gtk_widget_set_sensitive(priv->mb_view_stats, FALSE); gtk_menu_shell_append(GTK_MENU_SHELL(viewMenu), priv->mb_view_stats); +#ifdef HAVE_RSSGLIB priv->mb_view_rss = gtk_menu_item_new_with_mnemonic(_("_RSS")); //trg_menu_bar_accel_add(mb, priv->mb_view_rss, GDK_F7, 0); gtk_widget_set_sensitive(priv->mb_view_rss, FALSE); gtk_menu_shell_append(GTK_MENU_SHELL(viewMenu), priv->mb_view_rss); +#endif return view; } @@ -882,9 +894,11 @@ static void trg_menu_bar_class_init(TrgMenuBarClass * klass) trg_menu_bar_install_widget_prop(object_class, PROP_VIEW_STATS_BUTTON, "view-stats-button", "View stats button"); +#ifdef HAVE_RSSGLIB trg_menu_bar_install_widget_prop(object_class, PROP_VIEW_RSS_BUTTON, "view-rss-button", "View rss button"); +#endif trg_menu_bar_install_widget_prop(object_class, PROP_VIEW_STATES_BUTTON, "view-states-button", "View states Button"); diff --git a/src/trg-persistent-tree-view.c b/src/trg-persistent-tree-view.c index e116fdf..c608acb 100644 --- a/src/trg-persistent-tree-view.c +++ b/src/trg-persistent-tree-view.c @@ -37,7 +37,7 @@ typedef struct _TrgPersistentTreeViewPrivate TrgPersistentTreeViewPrivate; enum { - PROP_0, PROP_PREFS, PROP_KEY, PROP_MODEL + PROP_0, PROP_PREFS, PROP_KEY, PROP_MODEL, PROP_CONF_FLAGS }; struct _TrgPersistentTreeViewPrivate { @@ -52,6 +52,7 @@ struct _TrgPersistentTreeViewPrivate { trg_pref_widget_desc *wd; GtkTreeModel *model; trg_persistent_tree_view_column *addSelect; + gint conf_flags; }; static void selection_changed(TrgPersistentTreeView * ptv, @@ -322,6 +323,9 @@ trg_persistent_tree_view_set_property(GObject * object, case PROP_MODEL: priv->model = g_value_get_object(value); break; + case PROP_CONF_FLAGS: + priv->conf_flags = g_value_get_int(value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec); break; @@ -411,7 +415,7 @@ static GObject *trg_persistent_tree_view_constructor(GType type, gtk_box_pack_start(GTK_BOX(object), hbox, FALSE, FALSE, 4); priv->wd = trg_pref_widget_desc_new(GTK_WIDGET(priv->tv), priv->key, - TRG_PREFS_PROFILE); + priv->conf_flags); priv->wd->widget = GTK_WIDGET(object); priv->wd->saveFunc = &trg_persistent_tree_view_save; priv->wd->refreshFunc = &trg_persistent_tree_view_refresh; @@ -461,6 +465,19 @@ trg_persistent_tree_view_class_init(TrgPersistentTreeViewClass * klass) | G_PARAM_STATIC_BLURB)); + g_object_class_install_property(object_class, + PROP_CONF_FLAGS, + g_param_spec_int("conf-flags", + "Conf Flags", + "Conf Flags", + INT_MIN, + INT_MAX, + TRG_PREFS_PROFILE, + G_PARAM_READWRITE | + G_PARAM_STATIC_NAME | + G_PARAM_STATIC_NICK | + G_PARAM_STATIC_BLURB)); + g_object_class_install_property(object_class, PROP_MODEL, g_param_spec_object("persistent-model", @@ -483,12 +500,12 @@ static void trg_persistent_tree_view_init(TrgPersistentTreeView * self) TrgPersistentTreeView *trg_persistent_tree_view_new(TrgPrefs * prefs, GtkListStore * model, - const gchar * key) + const gchar * key, gint conf_flags) { GObject *obj = g_object_new(TRG_TYPE_PERSISTENT_TREE_VIEW, "prefs", prefs, "conf-key", key, "persistent-model", - model, + model, "conf-flags", conf_flags, NULL); return TRG_PERSISTENT_TREE_VIEW(obj); diff --git a/src/trg-persistent-tree-view.h b/src/trg-persistent-tree-view.h index a5a7c8f..0d16fb6 100644 --- a/src/trg-persistent-tree-view.h +++ b/src/trg-persistent-tree-view.h @@ -57,7 +57,7 @@ typedef struct { TrgPersistentTreeView *trg_persistent_tree_view_new(TrgPrefs * prefs, GtkListStore * model, - const gchar * key); + const gchar * key, gint conf_flags); trg_pref_widget_desc * trg_persistent_tree_view_get_widget_desc(TrgPersistentTreeView * diff --git a/src/trg-preferences-dialog.c b/src/trg-preferences-dialog.c index b9327c6..e7434d3 100644 --- a/src/trg-preferences-dialog.c +++ b/src/trg-preferences-dialog.c @@ -17,9 +17,7 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ -#ifdef HAVE_CONFIG_H #include "config.h" -#endif #include #include @@ -601,7 +599,7 @@ static GtkWidget *trg_prefs_openExecPage(TrgPreferencesDialog * dlg) model = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); ptv = trg_persistent_tree_view_new(priv->prefs, model, - TRG_PREFS_KEY_EXEC_COMMANDS); + TRG_PREFS_KEY_EXEC_COMMANDS, TRG_PREFS_PROFILE); trg_persistent_tree_view_set_add_select(ptv, trg_persistent_tree_view_add_column (ptv, 0, @@ -621,6 +619,46 @@ static GtkWidget *trg_prefs_openExecPage(TrgPreferencesDialog * dlg) return t; } +#ifdef HAVE_RSSGLIB +static GtkWidget *trg_prefs_rss_page(TrgPreferencesDialog * dlg) { + TrgPreferencesDialogPrivate *priv = + TRG_PREFERENCES_DIALOG_GET_PRIVATE(dlg); + GtkWidget *t; + guint row = 0; + TrgPersistentTreeView *ptv; + trg_pref_widget_desc *wd; + GtkListStore *model; + + t = hig_workarea_create(); + + hig_workarea_add_section_title(t, &row, + _("RSS Feeds")); + + model = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); + + ptv = trg_persistent_tree_view_new(priv->prefs, model, + TRG_PREFS_KEY_RSS, TRG_PREFS_GLOBAL); + trg_persistent_tree_view_set_add_select(ptv, + trg_persistent_tree_view_add_column + (ptv, 0, + TRG_PREFS_RSS_SUBKEY_ID, + _("Name"))); + trg_persistent_tree_view_add_column(ptv, 1, + TRG_PREFS_RSS_SUBKEY_URL, + _("URL")); + + wd = trg_persistent_tree_view_get_widget_desc(ptv); + trg_pref_widget_refresh(dlg, wd); + priv->widgets = g_list_append(priv->widgets, wd); + + gtk_table_attach(GTK_TABLE(t), GTK_WIDGET(ptv), 1, 2, row, row + 1, + GTK_EXPAND | GTK_SHRINK | GTK_FILL, + GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0, 0); + + return t; +} +#endif + static GtkWidget *trg_prefs_dirsPage(TrgPreferencesDialog * dlg) { TrgPreferencesDialogPrivate *priv = @@ -639,7 +677,7 @@ static GtkWidget *trg_prefs_dirsPage(TrgPreferencesDialog * dlg) model = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); ptv = trg_persistent_tree_view_new(priv->prefs, model, - TRG_PREFS_KEY_DESTINATIONS); + TRG_PREFS_KEY_DESTINATIONS, TRG_PREFS_GLOBAL); trg_persistent_tree_view_set_add_select(ptv, trg_persistent_tree_view_add_column (ptv, 0, @@ -917,6 +955,13 @@ static GObject *trg_preferences_dialog_constructor(GType type, (object)), gtk_label_new(_("Directories"))); +#ifdef HAVE_RSSGLIB + gtk_notebook_append_page(GTK_NOTEBOOK(notebook), + trg_prefs_rss_page(TRG_PREFERENCES_DIALOG + (object)), + gtk_label_new(_("RSS Feeds"))); +#endif + gtk_container_set_border_width(GTK_CONTAINER(notebook), GUI_PAD); gtk_box_pack_start(GTK_BOX(contentvbox), notebook, TRUE, TRUE, 0); diff --git a/src/trg-prefs.h b/src/trg-prefs.h index d8afe8f..4245505 100644 --- a/src/trg-prefs.h +++ b/src/trg-prefs.h @@ -79,6 +79,9 @@ #define TRG_PREFS_KEY_EXEC_COMMANDS "exec-commands" #define TRG_PREFS_KEY_EXEC_COMMANDS_SUBKEY_CMD "cmd" #define TRG_PREFS_KEY_DESTINATIONS "destinations" +#define TRG_PREFS_KEY_RSS "rss" +#define TRG_PREFS_RSS_SUBKEY_ID "id" +#define TRG_PREFS_RSS_SUBKEY_URL "url" #define TRG_PREFS_KEY_LAST_MOVE_DESTINATION "last-move-destination" #define TRG_PREFS_KEY_LAST_ADD_DESTINATION "last-add-destination" #define TRG_PREFS_KEY_DESTINATIONS_SUBKEY_DIR "dir" diff --git a/src/trg-rss-model.c b/src/trg-rss-model.c index 12b2d2b..813652f 100644 --- a/src/trg-rss-model.c +++ b/src/trg-rss-model.c @@ -17,6 +17,10 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include "config.h" + +#ifdef HAVE_RSSGLIB + #include #include #include @@ -31,6 +35,12 @@ enum { PROP_0, PROP_CLIENT }; +enum { + SIGNAL_GET_ERROR, SIGNAL_PARSE_ERROR, SIGNAL_COUNT +}; + +static guint signals[SIGNAL_COUNT] = { 0 }; + G_DEFINE_TYPE(TrgRssModel, trg_rss_model, GTK_TYPE_LIST_STORE) #define TRG_RSS_MODEL_GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), TRG_TYPE_RSS_MODEL, TrgRssModelPrivate)) @@ -95,9 +105,23 @@ static gboolean on_rss_receive(gpointer data) { g_object_unref(doc); g_object_unref(parser); } else { + rss_parse_error perror; + perror.error = error; + perror.feed_id = update->feed_id; + + g_signal_emit(model, signals[SIGNAL_PARSE_ERROR], 0, + &perror); + + g_message("parse error: %s", error->message); g_error_free(error); - g_message("parse error?"); } + } else { + rss_get_error get_error; + get_error.error_code = response->status; + get_error.feed_id = update->feed_id; + + g_signal_emit(model, signals[SIGNAL_GET_ERROR], 0, + &get_error); } trg_response_free(response); @@ -185,6 +209,32 @@ static void trg_rss_model_class_init(TrgRssModelClass * klass) { G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB)); + + signals[SIGNAL_GET_ERROR] = g_signal_new("get-error", + G_TYPE_FROM_CLASS + (object_class), + G_SIGNAL_RUN_LAST | + G_SIGNAL_ACTION, + G_STRUCT_OFFSET + (TrgRssModelClass, + get_error), + NULL, NULL, + g_cclosure_marshal_VOID__POINTER, + G_TYPE_NONE, 1, + G_TYPE_POINTER); + + signals[SIGNAL_PARSE_ERROR] = g_signal_new("parse-error", + G_TYPE_FROM_CLASS + (object_class), + G_SIGNAL_RUN_LAST | + G_SIGNAL_ACTION, + G_STRUCT_OFFSET + (TrgRssModelClass, + parse_error), + NULL, NULL, + g_cclosure_marshal_VOID__POINTER, + G_TYPE_NONE, 1, + G_TYPE_POINTER); } static void trg_rss_model_init(TrgRssModel * self) { @@ -203,3 +253,5 @@ static void trg_rss_model_init(TrgRssModel * self) { TrgRssModel *trg_rss_model_new(TrgClient *client) { return g_object_new(TRG_TYPE_RSS_MODEL, "client", client, NULL); } + +#endif diff --git a/src/trg-rss-model.h b/src/trg-rss-model.h index 799629a..a931c37 100644 --- a/src/trg-rss-model.h +++ b/src/trg-rss-model.h @@ -20,6 +20,10 @@ #ifndef TRG_RSS_MODEL_H_ #define TRG_RSS_MODEL_H_ +#include "config.h" + +#ifdef HAVE_RSSGLIB + #include #include @@ -42,8 +46,22 @@ G_BEGIN_DECLS GtkListStore parent; } TrgRssModel; +typedef struct { + gchar *feed_id; + gint error_code; +} rss_get_error; + +typedef struct { + GError *error; + gchar *feed_id; +} rss_parse_error; + typedef struct { GtkListStoreClass parent_class; + void (*get_error) (TrgRssModel * model, + rss_get_error *error); + void (*parse_error) (TrgRssModel * model, + rss_parse_error *error); } TrgRssModelClass; GType trg_rss_model_get_type(void); @@ -62,4 +80,6 @@ enum { RSSCOL_COLUMNS }; +#endif + #endif /* TRG_RSS_MODEL_H_ */ diff --git a/src/trg-rss-window.c b/src/trg-rss-window.c index 942dddc..5caedf0 100644 --- a/src/trg-rss-window.c +++ b/src/trg-rss-window.c @@ -17,6 +17,10 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ +#include "config.h" + +#ifdef HAVE_RSSGLIB + #include #include #include @@ -141,6 +145,34 @@ rss_item_activated(GtkTreeView * treeview, g_free(link); } +static void *trg_rss_on_get_error(TrgRssModel *model, rss_get_error *error, gpointer data) { + GtkWindow *win = GTK_WINDOW(data); + gchar *msg = g_strdup_printf(_("Error while fetching RSS feed \"%s\": %s"), error->feed_id, curl_easy_strerror(error->error_code)); + GtkWidget *dialog = gtk_message_dialog_new(win, + GTK_DIALOG_MODAL, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK, + msg); + g_free(msg); + gtk_window_set_title(GTK_WINDOW(dialog), _("Error")); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); +} + +static void *trg_rss_on_parse_error(TrgRssModel *model, rss_parse_error *error, gpointer data) { + GtkWindow *win = GTK_WINDOW(data); + gchar *msg = g_strdup_printf(_("Error parsing RSS feed \"%s\": %s"), error->feed_id, error->error->message); + GtkWidget *dialog = gtk_message_dialog_new(win, + GTK_DIALOG_MODAL, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_OK, + msg); + g_free(msg); + gtk_window_set_title(GTK_WINDOW(dialog), _("Error")); + gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); +} + static GObject *trg_rss_window_constructor(GType type, guint n_construct_properties, @@ -161,6 +193,12 @@ static GObject *trg_rss_window_constructor(GType type, priv = TRG_RSS_WINDOW_GET_PRIVATE(object); model = trg_rss_model_new(priv->client); + + g_signal_connect(model, "get-error", + G_CALLBACK(trg_rss_on_get_error), NULL); + g_signal_connect(model, "parse-error", + G_CALLBACK(trg_rss_on_parse_error), NULL); + trg_rss_model_update(model); view = GTK_TREE_VIEW(gtk_tree_view_new()); @@ -260,3 +298,5 @@ TrgRssWindow *trg_rss_window_get_instance(TrgMainWindow *parent, TrgClient *clie return TRG_RSS_WINDOW(instance); } + +#endif diff --git a/src/trg-rss-window.h b/src/trg-rss-window.h index c628a6b..5ce8690 100644 --- a/src/trg-rss-window.h +++ b/src/trg-rss-window.h @@ -20,6 +20,10 @@ #ifndef TRG_RSS_WINDOW_H_ #define TRG_RSS_WINDOW_H_ +#include "config.h" + +#ifdef HAVE_RSSGLIB + #include #include @@ -50,4 +54,7 @@ GType trg_rss_window_get_type(void); TrgRssWindow *trg_rss_window_get_instance(TrgMainWindow *parent, TrgClient *client); G_END_DECLS + +#endif + #endif /* TRG_RSS_WINDOW_H_ */ diff --git a/src/util.c b/src/util.c index 5ef7768..8dcbb65 100644 --- a/src/util.c +++ b/src/util.c @@ -340,7 +340,7 @@ gchar *make_error_message(JsonObject * response, int status) { if (status == FAIL_JSON_DECODE) { return g_strdup(_("JSON decoding error.")); - } else if (status == FAIL_RESPONSE_UNSUCCESSFUL) { + } else if (response && status == FAIL_RESPONSE_UNSUCCESSFUL) { const gchar *resultStr = json_object_get_string_member(response, "result"); if (resultStr == NULL) -- cgit v1.2.3