[evolution-rss] add folder refresh option
- From: Lucian Langa <lucilanga src gnome org>
- To: svn-commits-list gnome org
- Subject: [evolution-rss] add folder refresh option
- Date: Sun, 31 May 2009 14:56:05 -0400 (EDT)
commit f48f5259e33bcbcb2b4ec2a70296b7b1ad242d75
Author: Lucian Langa <lucilanga gnome org>
Date: Sun May 31 21:55:55 2009 +0300
add folder refresh option
---
src/rss-config-factory.c | 2 +-
src/rss.c | 36 ++++++++++++++++++++++++++++++------
2 files changed, 31 insertions(+), 7 deletions(-)
diff --git a/src/rss-config-factory.c b/src/rss-config-factory.c
index 5ff826c..7592bdb 100644
--- a/src/rss-config-factory.c
+++ b/src/rss-config-factory.c
@@ -782,7 +782,7 @@ delete_feed_folder_alloc(gchar *old_name)
g_free(feed_dir);
f = fopen(feed_file, "wb");
if (!f)
- return;
+ return;
gchar *orig_name = g_hash_table_lookup(rf->feed_folders, old_name);
if (orig_name)
diff --git a/src/rss.c b/src/rss.c
index f797a97..677f148 100644
--- a/src/rss.c
+++ b/src/rss.c
@@ -185,6 +185,7 @@ extern EProxy *proxy;
SoupSession *webkit_session = NULL;
SoupCookieJar *rss_soup_jar;
extern guint rsserror;
+gboolean single_pending = FALSE;
rssfeed *rf = NULL;
guint upgrade = 0; // set to 2 when initailization successfull
@@ -225,6 +226,7 @@ finish_create_image (SoupMessage *msg, gchar *user_data);
finish_create_image (SoupSession *soup_sess, SoupMessage *msg, gchar *user_data);
#endif
gchar *get_main_folder(void);
+void fetch_feed(gpointer key, gpointer value, gpointer user_data);
void fetch_comments(gchar *url, EMFormatHTML *stream);
static void
@@ -398,9 +400,14 @@ taskbar_op_finish(gpointer key)
}
void
-taskbar_op_message(void)
+taskbar_op_message(gchar *msg)
{
- gchar *tmsg = g_strdup_printf(_("Fetching Feeds (%d enabled)"), g_hash_table_size(rf->hrname));
+ gchar *tmsg;
+ if (!msg)
+ tmsg = g_strdup_printf(_("Fetching Feeds (%d enabled)"), g_hash_table_size(rf->hrname));
+ else
+ tmsg = g_strdup(msg);
+
#if (EVOLUTION_VERSION >= 22200)
guint activity_id = taskbar_op_new(tmsg, "main");
#else
@@ -2074,7 +2081,24 @@ fmerror:
void org_gnome_cooly_folder_refresh(void *ep, EMEventTargetFolder *t)
{
- g_print("refrish %s\n", t->uri);
+ gchar *rss_folder = extract_main_folder(t->uri);
+ gchar *ofolder = g_hash_table_lookup(rf->feed_folders, rss_folder);
+ gchar *folder = ofolder ? ofolder : rss_folder;
+ gchar *key = g_hash_table_lookup(rf->hrname, folder);
+ gchar *name = g_strdup_printf("%s: %s", _("Fetching feed"), (gchar *)g_hash_table_lookup(rf->hrname_r, key));
+
+ if (g_hash_table_lookup(rf->hre, key)
+ && !rf->pending && !rf->feed_queue
+ && !single_pending && rf->online) {
+ single_pending = TRUE;
+ check_folders();
+ rf->err = NULL;
+ taskbar_op_message(name);
+ network_timeout();
+ fetch_feed(folder, key, statuscb);
+ single_pending = FALSE;
+ }
+ g_free(name);
}
#if (EVOLUTION_VERSION >= 22306)
@@ -2900,7 +2924,7 @@ update_articles(gboolean disabler)
rf->pending = TRUE;
check_folders();
rf->err = NULL;
- taskbar_op_message();
+ taskbar_op_message(NULL);
network_timeout();
g_hash_table_foreach(rf->hrname, fetch_feed, statuscb);
rf->pending = FALSE;
@@ -3717,7 +3741,7 @@ org_gnome_cooly_rss_refresh(void *ep, EMPopupTargetSelect *t)
rf->err = NULL;
force_update = 1;
- taskbar_op_message();
+ taskbar_op_message(NULL);
network_timeout();
g_hash_table_foreach(rf->hrname, fetch_feed, statuscb);
// reset cancelation signal
@@ -3905,7 +3929,7 @@ org_gnome_cooly_rss(void *ep, EMPopupTargetSelect *t)
rf->err = NULL;
force_update = 1;
- taskbar_op_message();
+ taskbar_op_message(NULL);
network_timeout();
g_hash_table_foreach(rf->hrname, fetch_feed, statuscb);
// reset cancelation signal
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]