Replace verbosity boolean flag with a bitfield of flags.
authorAndrej Kacian <ticho@claws-mail.org>
Sat, 25 Feb 2017 10:43:26 +0000 (11:43 +0100)
committerAndrej Kacian <ticho@claws-mail.org>
Sat, 25 Feb 2017 10:43:26 +0000 (11:43 +0100)
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().

src/plugins/rssyl/opml_import.c
src/plugins/rssyl/rssyl.c
src/plugins/rssyl/rssyl_cb_menu.c
src/plugins/rssyl/rssyl_feed.c
src/plugins/rssyl/rssyl_feed.h
src/plugins/rssyl/rssyl_subscribe.c
src/plugins/rssyl/rssyl_subscribe.h
src/plugins/rssyl/rssyl_update_comments.c
src/plugins/rssyl/rssyl_update_feed.c
src/plugins/rssyl/rssyl_update_feed.h

index 8af7675..1c37909 100644 (file)
@@ -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) {
index af71ae4..ea70028 100644 (file)
@@ -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);
 }
 
index 826e171..3237e97 100644 (file)
@@ -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)
index c5f3e6c..dde0a20 100644 (file)
@@ -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;
 }
index 4e098a2..00f0792 100644 (file)
 #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);
 
index b5da74c..41747e6 100644 (file)
@@ -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);
index 37139b5..56e9094 100644 (file)
@@ -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 */
index 581d379..ae831ed 100644 (file)
@@ -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);
index 1cf651b..a9d1129 100644 (file)
@@ -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);
 
index f72d04a..8172234 100644 (file)
@@ -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);