commit a0cd16371432539c4f9aba48516eda9ac5d385f0
parent ae3a830bd1919b1ab8de385c11d936e8853f35c8
Author: Andrej Kacian <ticho@claws-mail.org>
Date: Sat, 25 Feb 2017 11:43:26 +0100
Replace verbosity boolean flag with a bitfield of flags.
Currently, there are two - whether or not to show error dialogs
and whether or not to show a feed rename dialog after subscribing.
We use same enum typedef for subscribing and fetching/updating
for consistency, the second flag only has effect in rssyl_subscribe().
Diffstat:
10 files changed, 28 insertions(+), 19 deletions(-)
diff --git a/src/plugins/rssyl/opml_import.c b/src/plugins/rssyl/opml_import.c
@@ -102,7 +102,7 @@ void rssyl_opml_import_func(gchar *title, gchar *url, gint depth, gpointer data)
} else {
/* We have URL, try to add new feed... */
new_item = rssyl_subscribe((FolderItem *)ctx->current->data,
- url, TRUE);
+ url, RSSYL_SHOW_ERRORS);
/* ...and rename it if needed */
if (new_item != NULL && strcmp(title, new_item->name)) {
if (folder_item_rename(new_item, title) < 0) {
diff --git a/src/plugins/rssyl/rssyl.c b/src/plugins/rssyl/rssyl.c
@@ -866,7 +866,7 @@ static gboolean rssyl_subscribe_uri(Folder *folder, const gchar *uri)
{
if (folder->klass != rssyl_folder_get_class())
return FALSE;
- return (rssyl_subscribe(FOLDER_ITEM(folder->node->data), uri, FALSE) ?
+ return (rssyl_subscribe(FOLDER_ITEM(folder->node->data), uri, 0) ?
TRUE : FALSE);
}
diff --git a/src/plugins/rssyl/rssyl_cb_menu.c b/src/plugins/rssyl/rssyl_cb_menu.c
@@ -68,7 +68,7 @@ void rssyl_new_feed_cb(GtkAction *action,
if( url == NULL ) /* User cancelled */
return;
- rssyl_subscribe(item, url, TRUE);
+ rssyl_subscribe(item, url, RSSYL_SHOW_ERRORS | RSSYL_SHOW_RENAME_DIALOG);
g_free(url);
}
@@ -256,7 +256,7 @@ void rssyl_refresh_feed_cb(GtkAction *action,
}
/* Update feed, displaying errors if any. */
- rssyl_update_feed(ritem, TRUE);
+ rssyl_update_feed(ritem, RSSYL_SHOW_ERRORS);
}
void rssyl_prop_cb(GtkAction *action, gpointer data)
diff --git a/src/plugins/rssyl/rssyl_feed.c b/src/plugins/rssyl/rssyl_feed.c
@@ -85,7 +85,7 @@ gboolean rssyl_refresh_timeout_cb(gpointer data)
debug_print(" %s: refresh %s (%d)\n", tmpdate, ctx->ritem->url,
ctx->ritem->refresh_id);
g_free(tmpdate);
- rssyl_update_feed(ctx->ritem, FALSE);
+ rssyl_update_feed(ctx->ritem, 0);
return TRUE;
}
diff --git a/src/plugins/rssyl/rssyl_feed.h b/src/plugins/rssyl/rssyl_feed.h
@@ -16,6 +16,12 @@
#define RSSYL_LOG_ERROR_PROC _("RSSyl: Couldn't process feed at '%s'\n")
#define RSSYL_LOG_ABORTED_EXITING _("RSSyl: Application is exiting, couldn't finish updating feed at '%s'\n")
+typedef enum
+{
+ RSSYL_SHOW_ERRORS = 1 << 0,
+ RSSYL_SHOW_RENAME_DIALOG = 1 << 1
+} RSSylVerboseFlags;
+
MsgInfo *rssyl_feed_parse_item_to_msginfo(gchar *file, MsgFlags flags,
gboolean a, gboolean b, FolderItem *item);
diff --git a/src/plugins/rssyl/rssyl_subscribe.c b/src/plugins/rssyl/rssyl_subscribe.c
@@ -57,7 +57,7 @@ static void rssyl_subscribe_foreach_func(gpointer data, gpointer user_data)
}
FolderItem *rssyl_subscribe(FolderItem *parent, const gchar *url,
- gboolean verbose)
+ RSSylVerboseFlags verbose)
{
gchar *myurl = NULL, *tmpname = NULL, *tmpname2 = NULL;
RFetchCtx *ctx;
@@ -94,7 +94,7 @@ FolderItem *rssyl_subscribe(FolderItem *parent, const gchar *url,
return NULL;
}
- if (verbose) {
+ if (verbose & RSSYL_SHOW_RENAME_DIALOG) {
sctx = g_new0(RSubCtx, 1);
sctx->feed = ctx->feed;
sctx->edit_properties = FALSE;
@@ -154,7 +154,7 @@ FolderItem *rssyl_subscribe(FolderItem *parent, const gchar *url,
g_free(tmpname2);
if (!new_item) {
- if (verbose)
+ if (verbose & RSSYL_SHOW_ERRORS)
alertpanel_error(_("Couldn't create folder for new feed '%s'."),
myurl);
feed_free(ctx->feed);
diff --git a/src/plugins/rssyl/rssyl_subscribe.h b/src/plugins/rssyl/rssyl_subscribe.h
@@ -1,6 +1,9 @@
#ifndef __RSSYL_SUBSCRIBE_H
#define __RSSYL_SUBSCRIBE_H
-FolderItem *rssyl_subscribe(FolderItem *parent, const gchar *url, gboolean verbose);
+#include <rssyl_feed.h>
+
+FolderItem *rssyl_subscribe(FolderItem *parent, const gchar *url,
+ RSSylVerboseFlags verbose);
#endif /* __RSSYL_SUBSCRIBE_H */
diff --git a/src/plugins/rssyl/rssyl_update_comments.c b/src/plugins/rssyl/rssyl_update_comments.c
@@ -114,7 +114,7 @@ void rssyl_update_comments(RFolderItem *ritem)
if (fetchctx != NULL) {
feed_set_ssl_verify_peer(fetchctx->feed, ritem->ssl_verify_peer);
- rssyl_fetch_feed(fetchctx, FALSE);
+ rssyl_fetch_feed(fetchctx, 0);
if( fetchctx->success && feed_n_items(fetchctx->feed) > 0 ) {
g_free(fetchctx->feed->title);
diff --git a/src/plugins/rssyl/rssyl_update_feed.c b/src/plugins/rssyl/rssyl_update_feed.c
@@ -61,7 +61,7 @@ static void *rssyl_fetch_feed_thr(void *arg)
}
/* rssyl_fetch_feed() */
-void rssyl_fetch_feed(RFetchCtx *ctx, gboolean verbose)
+void rssyl_fetch_feed(RFetchCtx *ctx, RSSylVerboseFlags verbose)
{
#ifdef USE_PTHREAD
pthread_t pt;
@@ -116,12 +116,12 @@ void rssyl_fetch_feed(RFetchCtx *ctx, gboolean verbose)
}
}
- /* Here we handle "imperfect" conditions. If verbose is TRUE, we also
+ /* Here we handle "imperfect" conditions. If requested, we also
* display error dialogs for user. We always log the error. */
if( ctx->error != NULL ) {
/* libcurl wasn't happy */
debug_print("RSSyl: Error: %s\n", ctx->error);
- if( verbose ) {
+ if( verbose & RSSYL_SHOW_ERRORS) {
gchar *msg = g_markup_printf_escaped(
(const char *) C_("First parameter is URL, second is error text",
"Error fetching feed at\n<b>%s</b>:\n\n%s"),
@@ -135,7 +135,7 @@ void rssyl_fetch_feed(RFetchCtx *ctx, gboolean verbose)
ctx->success = FALSE;
} else {
if( ctx->feed == NULL ) {
- if( verbose ) {
+ if( verbose & RSSYL_SHOW_ERRORS) {
gchar *msg = g_markup_printf_escaped(
(const char *) _("No valid feed found at\n<b>%s</b>"),
feed_get_url(ctx->feed));
@@ -213,7 +213,7 @@ RFetchCtx *rssyl_prep_fetchctx_from_url(gchar *url)
/* rssyl_update_feed() */
-gboolean rssyl_update_feed(RFolderItem *ritem, gboolean verbose)
+gboolean rssyl_update_feed(RFolderItem *ritem, RSSylVerboseFlags verbose)
{
RFetchCtx *ctx = NULL;
MainWindow *mainwin = mainwindow_get_mainwindow();
@@ -253,7 +253,7 @@ gboolean rssyl_update_feed(RFolderItem *ritem, gboolean verbose)
if( ctx->success && !(ctx->success = rssyl_parse_feed(ritem, ctx->feed)) ) {
/* both libcurl and libfeed were happy, but we weren't */
debug_print("RSSyl: Error processing feed\n");
- if( verbose ) {
+ if( verbose & RSSYL_SHOW_ERRORS ) {
gchar *msg = g_markup_printf_escaped(
(const char *) _("Couldn't process feed at\n<b>%s</b>\n\n"
"Please contact developers, this should not happen."),
@@ -304,7 +304,7 @@ static gboolean rssyl_update_recursively_func(GNode *node, gpointer data)
if( ritem->url != NULL ) {
debug_print("RSSyl: Updating feed '%s'\n", item->name);
- rssyl_update_feed(ritem, FALSE);
+ rssyl_update_feed(ritem, 0);
} else
debug_print("RSSyl: Updating in folder '%s'\n", item->name);
diff --git a/src/plugins/rssyl/rssyl_update_feed.h b/src/plugins/rssyl/rssyl_update_feed.h
@@ -5,12 +5,12 @@
#include "rssyl.h"
-void rssyl_fetch_feed(RFetchCtx *ctx, gboolean verbose);
+void rssyl_fetch_feed(RFetchCtx *ctx, RSSylVerboseFlags verbose);
RFetchCtx *rssyl_prep_fetchctx_from_url(gchar *url);
RFetchCtx *rssyl_prep_fetchctx_from_item(RFolderItem *ritem);
-gboolean rssyl_update_feed(RFolderItem *ritem, gboolean verbose);
+gboolean rssyl_update_feed(RFolderItem *ritem, RSSylVerboseFlags verbose);
void rssyl_update_recursively(FolderItem *item);