[evolution-patches] [calendar-alarms] fix for bug #269685



hi,

    after choosing to snooze the alarm 
   doesn't display the latest summary 
   (if a modification is made to it in the meanwhile)
   this is because the cal component that 
   CompQueuedAlarms structure stores is not
   updated when it is modified. The attached patch
   does this and fixes the problem. (bug # 269685)

  regards.
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/calendar/ChangeLog,v
retrieving revision 1.2802
diff -u -p -w -r1.2802 ChangeLog
--- ChangeLog	25 Aug 2005 10:26:27 -0000	1.2802
+++ ChangeLog	27 Aug 2005 11:07:42 -0000
@@ -1,3 +1,13 @@
+2005-08-27  P. S. Chakravarthi <pchakravarthi novell com>
+
+	Fixes #269685
+	* gui/alarm-notify/alarm-queue.c: 
+	(query_objects_changed_cb): update the CompQueuedAlarms
+	structure with the modified component whenever there is 
+	a modification in the component.
+	(set_comp_queued_alarms): added this function to facilitate
+	above change.
+
 2005-08-24  Chenthill Palanisamy  <pchenthill novell com>
 
 	Fixes #313705
Index: gui/alarm-notify/alarm-queue.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/alarm-notify/alarm-queue.c,v
retrieving revision 1.87
diff -u -p -w -r1.87 alarm-queue.c
--- gui/alarm-notify/alarm-queue.c	16 May 2005 06:12:59 -0000	1.87
+++ gui/alarm-notify/alarm-queue.c	27 Aug 2005 11:07:43 -0000
@@ -488,6 +488,14 @@ lookup_comp_queued_alarms (ClientAlarms 
 	return g_hash_table_lookup (ca->uid_alarms_hash, uid);
 }
 
+/* Sets a component's queued alarm structure by its uid in a client alarms structure */
+static void
+set_comp_queued_alarms (ClientAlarms *ca, const char *uid, CompQueuedAlarms *cqa)
+{
+	g_hash_table_insert (ca->uid_alarms_hash, uid, cqa);
+	return;
+}
+
 static void
 remove_alarms (CompQueuedAlarms *cqa, gboolean free_object)
 {
@@ -544,7 +552,7 @@ query_objects_changed_cb (ECal *client, 
 	ECalComponentAlarms *alarms;
 	gboolean found;
 	icaltimezone *zone;
-	CompQueuedAlarms *cqa;
+	CompQueuedAlarms *cqa = NULL;
 	GList *l;
 
 	ca = data;
@@ -562,7 +570,9 @@ query_objects_changed_cb (ECal *client, 
 	for (l = objects; l != NULL; l = l->next) {
 		const char *uid;
 		GSList *sl;
+		ECalComponent *comp = e_cal_component_new ();
 
+		e_cal_component_set_icalcomponent (comp, l->data);
 		uid = icalcomponent_get_uid (l->data);
 		found = e_cal_get_alarms_for_object (ca->client, uid, from, day_end, &alarms);
 
@@ -584,6 +594,11 @@ query_objects_changed_cb (ECal *client, 
 		if (alarms == NULL || alarms->alarms == NULL) {
 			if (alarms)
 				e_cal_component_alarms_free (alarms);
+			if (cqa && cqa->alarms) {
+				/* Update the comp with alarm and the cqa structure with the comp*/
+				cqa->alarms->comp = e_cal_component_clone (comp);
+				set_comp_queued_alarms (ca, uid, cqa);
+			}
 			continue;
 		}
 


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