talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

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:
Msrc/plugins/rssyl/opml_import.c | 2+-
Msrc/plugins/rssyl/rssyl.c | 2+-
Msrc/plugins/rssyl/rssyl_cb_menu.c | 4++--
Msrc/plugins/rssyl/rssyl_feed.c | 2+-
Msrc/plugins/rssyl/rssyl_feed.h | 6++++++
Msrc/plugins/rssyl/rssyl_subscribe.c | 6+++---
Msrc/plugins/rssyl/rssyl_subscribe.h | 5++++-
Msrc/plugins/rssyl/rssyl_update_comments.c | 2+-
Msrc/plugins/rssyl/rssyl_update_feed.c | 14+++++++-------
Msrc/plugins/rssyl/rssyl_update_feed.h | 4++--
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);