[evolution-rss] hook feed delete in delete folder option



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]