[evolution] Fixes bug 499107 (bnc) - delete all the recurring instances from the folder.



commit 66687b22ec92a829f752c39fa9418be33b16c0bd
Author: Chenthill Palanisamy <pchenthill novell com>
Date:   Thu May 21 14:06:28 2009 +0530

    Fixes bug 499107 (bnc) - delete all the recurring instances from the folder.
    
    Reset the index properly so that all the recurring instances are deleted
    once the mail is processed.
---
 plugins/itip-formatter/itip-formatter.c |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/plugins/itip-formatter/itip-formatter.c b/plugins/itip-formatter/itip-formatter.c
index 6eebfde..c2f64a1 100644
--- a/plugins/itip-formatter/itip-formatter.c
+++ b/plugins/itip-formatter/itip-formatter.c
@@ -38,6 +38,7 @@
 #include <camel/camel-multipart.h>
 #include <camel/camel-service.h>
 #include <camel/camel-store.h>
+#include <camel/camel-db.h>
 #include <libecal/e-cal.h>
 #include <libecal/e-cal-time-util.h>
 #include <libedataserverui/e-source-selector.h>
@@ -1876,6 +1877,7 @@ view_response_cb (GtkWidget *widget, ItipViewResponse response, gpointer data)
 				camel_message_info_free (mi);
 				if (tag) {
 					int i = 0, count;
+					GSList *list = NULL;
 
 					count = camel_folder_summary_count (pitip->folder->summary);
 					for (i = 0; i < count; i++) {
@@ -1884,12 +1886,18 @@ view_response_cb (GtkWidget *widget, ItipViewResponse response, gpointer data)
 							continue;
 						camel_message_info_ref (mi);
 						if ( camel_message_info_user_tag (mi, "recurrence-key") && g_str_equal (camel_message_info_user_tag (mi, "recurrence-key"), tag)) {
+							camel_folder_summary_remove_uid_fast (pitip->folder->summary, (char *)(mi->uid));
+							camel_folder_change_info_remove_uid (changes, (char *) mi->uid);
+							list = g_slist_prepend (list, (gpointer) mi->uid);
 
-							camel_folder_summary_remove_uid(pitip->folder->summary, (char *)(mi->uid));
-							camel_folder_change_info_remove_uid (changes, (char *)(mi->uid));
+							/* step back once to have the right index */
+							count--;
+							i--;
 						}
 						camel_message_info_free (mi);
 					}
+					camel_db_delete_uids (pitip->folder->parent_store->cdb_w, pitip->folder->full_name, list, NULL);
+					g_slist_free (list);
 				}
 			} else {
 				/* Either not a recurring appointment or "apply-to-all" is not selected. So just delete this instance alone */



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]