talons

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

commit f1f6d9d6a36d58991b77c939ff33a5ce4b0a98e2
parent 24a7d15ed475beb0483874974739f3b1163542cb
Author: wwp <subscript@free.fr>
Date:   Fri, 21 Mar 2025 11:32:10 +0100

RSSyl plugin: add a pref so that feeds programmed for manual updates only (refresh interval=0)
are not updated when refreshing all feeds at once (recursively by the context menu, timer or
at start-up, if enabled).

Diffstat:
Msrc/plugins/rssyl/rssyl_prefs.c | 14++++++++++++++
Msrc/plugins/rssyl/rssyl_prefs.h | 1+
Msrc/plugins/rssyl/rssyl_update_feed.c | 9+++++++--
3 files changed, 22 insertions(+), 2 deletions(-)

diff --git a/src/plugins/rssyl/rssyl_prefs.c b/src/plugins/rssyl/rssyl_prefs.c @@ -50,6 +50,8 @@ static PrefParam param[] = { P_BOOL, NULL, NULL, NULL }, { "refresh_enabled", "TRUE", &rssyl_prefs.refresh_enabled, P_BOOL, NULL, NULL, NULL }, + { "refresh_all_skips", "FALSE", &rssyl_prefs.refresh_all_skips, + P_BOOL, NULL, NULL, NULL }, { "cookies_path", "", &rssyl_prefs.cookies_path, P_STRING, NULL, NULL, NULL }, { "ssl_verify_peer", "TRUE", &rssyl_prefs.ssl_verify_peer, @@ -66,6 +68,7 @@ static struct _RPrefsPage { GtkWidget *refresh_enabled; GtkWidget *refresh; GtkWidget *refresh_on_startup; + GtkWidget *refresh_all_skips; GtkWidget *cookies_path; GtkWidget *ssl_verify_peer; GtkWidget *use_custom_user_agent; @@ -153,6 +156,7 @@ static void create_rssyl_prefs_page(PrefsPage *page, GtkWidget *refresh, *refresh_enabled, *refresh_hbox; GtkWidget *label; GtkWidget *refresh_on_startup; + GtkWidget *refresh_all_skips; GtkAdjustment *refresh_adj; GtkWidget *cookies_path, *cookies_btn, *cookies_hbox; GtkWidget *ssl_verify_peer; @@ -188,6 +192,13 @@ static void create_rssyl_prefs_page(PrefsPage *page, rssyl_prefs.refresh_on_startup); gtk_box_pack_start(GTK_BOX(vbox1), refresh_on_startup, FALSE, FALSE, 0); + /* Whether refresh-all will skip feeds that are not programmed to be periodically refreshed or not */ + refresh_all_skips = gtk_check_button_new_with_label( + _("Refresh all skips feeds programmed to be refreshed manually")); + gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(refresh_all_skips), + rssyl_prefs.refresh_all_skips); + gtk_box_pack_start(GTK_BOX(vbox1), refresh_all_skips, FALSE, FALSE, 0); + vbox2 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 6); /* Whether to verify SSL peer certificate */ @@ -261,6 +272,7 @@ static void create_rssyl_prefs_page(PrefsPage *page, prefs_page->refresh_enabled = refresh_enabled; prefs_page->refresh = refresh; prefs_page->refresh_on_startup = refresh_on_startup; + prefs_page->refresh_all_skips = refresh_all_skips; prefs_page->cookies_path = cookies_path; prefs_page->ssl_verify_peer = ssl_verify_peer; prefs_page->use_custom_user_agent = use_custom_user_agent; @@ -286,6 +298,8 @@ static void save_rssyl_prefs(PrefsPage *page) GTK_SPIN_BUTTON(prefs_page->refresh)); rssyl_prefs.refresh_on_startup = gtk_toggle_button_get_active( GTK_TOGGLE_BUTTON(prefs_page->refresh_on_startup)); + rssyl_prefs.refresh_all_skips = gtk_toggle_button_get_active( + GTK_TOGGLE_BUTTON(prefs_page->refresh_all_skips)); g_free(rssyl_prefs.cookies_path); rssyl_prefs.cookies_path = g_strdup(gtk_entry_get_text( GTK_ENTRY(prefs_page->cookies_path))); diff --git a/src/plugins/rssyl/rssyl_prefs.h b/src/plugins/rssyl/rssyl_prefs.h @@ -29,6 +29,7 @@ struct _RPrefs { gboolean refresh_enabled; gint refresh; gboolean refresh_on_startup; + gboolean refresh_all_skips; gchar *cookies_path; gboolean ssl_verify_peer; gboolean use_custom_user_agent; diff --git a/src/plugins/rssyl/rssyl_update_feed.c b/src/plugins/rssyl/rssyl_update_feed.c @@ -366,8 +366,13 @@ static gboolean rssyl_update_recursively_func(GNode *node, gpointer data) ritem = (RFolderItem *)item; if( ritem->url != NULL ) { - debug_print("RSSyl: Updating feed '%s'\n", item->name); - rssyl_update_feed(ritem, 0); + if(rssyl_prefs_get()->refresh_all_skips && + (ritem->default_refresh_interval == FALSE) && (ritem->refresh_interval == 0)) { + debug_print("RSSyl: Skipping feed '%s'\n", item->name); + } else { + debug_print("RSSyl: Updating feed '%s'\n", item->name); + rssyl_update_feed(ritem, 0); + } } else debug_print("RSSyl: Updating in folder '%s'\n", item->name);