[evolution-rss] hook feed delete in delete folder option
- From: Lucian Langa <lucilanga src gnome org>
- To: svn-commits-list gnome org
- Subject: [evolution-rss] hook feed delete in delete folder option
- Date: Thu, 21 May 2009 16:21:15 -0400 (EDT)
commit e6532340fe69d4fbb7cccceef9e154a3e413a34d
Author: Lucian Langa <lucilanga gnome org>
Date: Thu May 21 22:32:51 2009 +0300
hook feed delete in delete folder option
---
TODO | 7 ++-----
src/rss-config-factory.c | 2 +-
src/rss-config-factory.h | 3 +++
src/rss.c | 32 ++++++++++++++++++++++++++++++++
4 files changed, 38 insertions(+), 6 deletions(-)
diff --git a/TODO b/TODO
index 4ffead8..c58ea2c 100644
--- a/TODO
+++ b/TODO
@@ -11,9 +11,7 @@
* implement other engines besides soup
* implement USM (universal subscription mechanism)
* make auth dialog not intrusive (peek others)
- * fix ubuntu crashing when wrong entities (<0.0.6) and feed conf files stored in a file
* implement notify back of imported feed perhaps libnotify
- * prefetch html content for all webkits (perhaps temp file)
* offline storage for article's home page
* implement web controls for diferent redering <Webkits> or <Gecko>
* when adding a feed as opml file offer to import (file detection)
@@ -42,7 +40,6 @@
name=<value optimized out>, error=<value optimized out>,
emsg=<value optimized out>) at rss.c:273
* slow delete operation on large folders
- * check operation cancel button
* add icon to feed setup panel
* add handling parser error to setup_feed (check HIG for error msg)
* handle slash categories
@@ -51,13 +48,13 @@
* trigger resync after folder rename and initial folder creation
* check webbuttons for webkit
* cancel operation should cancel fetching feed components
- * perhaps make quoted text fancier
+ * perhaps make quoted text fancier
* if immage cannto be served from cache try to fetch it ( add 3 times retry for fetching an image)
* perform feeds images update weekly
* disable filters on setup_feed()
- * check s&r progress bar on Complete.
* store feed in an alternate file to serve images from
* migrate fetch_blocking -> fetch_unblocking
* grey stop button on complete load
* display links from content in status bar
* grey out disabled folders (feeds)
+ * runtime validation
diff --git a/src/rss-config-factory.c b/src/rss-config-factory.c
index 36ddea1..efb4923 100644
--- a/src/rss-config-factory.c
+++ b/src/rss-config-factory.c
@@ -679,7 +679,7 @@ rss_delete_rec (CamelStore *store, CamelFolderInfo *fi, CamelException *ex)
}
}
-static void
+void
rss_delete_folders (CamelStore *store, const char *full_name, CamelException *ex)
{
guint32 flags = CAMEL_STORE_FOLDER_INFO_RECURSIVE | CAMEL_STORE_FOLDER_INFO_FAST | CAMEL_STORE_FOLDER_INFO_SUBSCRIBED;
diff --git a/src/rss-config-factory.h b/src/rss-config-factory.h
index a2d0b39..30d3ba9 100644
--- a/src/rss-config-factory.h
+++ b/src/rss-config-factory.h
@@ -22,6 +22,9 @@
void store_redraw(GtkTreeView *data);
void import_dialog_response(GtkWidget *selector, guint response, gpointer user_data);
void del_days_cb (GtkWidget *widget, add_feed *data);
+void delete_feed_folder_alloc(gchar *old_name);
+void rss_delete_folders (CamelStore *store, const char *full_name, CamelException *ex);
+void remove_feed_hash(gpointer name);
#endif /*__RSS_CONFIG_FACTORY_H_*/
diff --git a/src/rss.c b/src/rss.c
index b958f25..b7cc262 100644
--- a/src/rss.c
+++ b/src/rss.c
@@ -3170,11 +3170,43 @@ check_feed_folder(gchar *folder_name)
}
+void
+rss_delete_feed(gchar *name)
+{
+ CamelException ex;
+ CamelStore *store = mail_component_peek_local_store(NULL);
+ gchar *full_path = g_strdup_printf("%s/%s",
+ lookup_main_folder(),
+ lookup_feed_folder(name));
+ delete_feed_folder_alloc(lookup_feed_folder(name));
+ camel_exception_init (&ex);
+ rss_delete_folders (store, full_path, &ex);
+ if (camel_exception_is_set (&ex)) {
+ e_error_run(NULL,
+ "mail:no-delete-folder", full_path, ex.desc, NULL);
+ camel_exception_clear (&ex);
+ }
+ g_free(full_path);
+ //also remove status file
+ gchar *url = g_hash_table_lookup(rf->hr,
+ g_hash_table_lookup(rf->hrname,
+ name));
+ gchar *buf = gen_md5(url);
+ gchar *feed_dir = rss_component_peek_base_directory(mail_component_peek());
+ gchar *feed_name = g_strdup_printf("%s/%s", feed_dir, buf);
+ g_free(feed_dir);
+ g_free(buf);
+ unlink(feed_name);
+ remove_feed_hash(name);
+ save_gconf_feed();
+}
+
static void
store_folder_deleted(CamelObject *o, void *event_data, void *data)
{
CamelFolderInfo *info = event_data;
printf("Folder deleted '%s'\n", info->name);
+ rss_delete_feed(info->name);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]