[evolution-patches] Fix for the bugs #329566, #329568, #329570 [calendar]
- From: chen <pchenthill novell com>
- To: patches <evolution-patches gnome org>
- Cc: Harish krishnaswamy <KHarish novell com>
- Subject: [evolution-patches] Fix for the bugs #329566, #329568, #329570 [calendar]
- Date: Thu, 02 Feb 2006 16:27:30 +0530
Hi,
Have attached the patches which fixes the mentioned bugs. Sets the
instance dates of the master object. Sets the exception dates properly
in the master object while deleting detached instances.
thanks, Chenthill.
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/ChangeLog,v
retrieving revision 1.557
diff -u -p -u -p -r1.557 ChangeLog
--- ChangeLog 23 Jan 2006 14:12:19 -0000 1.557
+++ ChangeLog 2 Feb 2006 10:41:42 -0000
@@ -1,3 +1,12 @@
+2006-02-02 Chenthill Palanisamy <pchenthill novell com>
+
+ Fixes #329566, #329568
+ * backends/file/e-cal-backend-file.c:
+ (e_cal_backend_file_modify_object): Reset the instance dates of the
+ master object if its a recurring event.
+ (remove_instance): Removed the return statement so that the exception is
+ set in the master object.
+
2006-01-23 Veerapuram Varadhan <vvaradhan novell com>
** Fixes #327427
Index: backends/file/e-cal-backend-file.c
===================================================================
RCS file: /cvs/gnome/evolution-data-server/calendar/backends/file/e-cal-backend-file.c,v
retrieving revision 1.70
diff -u -p -u -p -r1.70 e-cal-backend-file.c
--- backends/file/e-cal-backend-file.c 10 Jan 2006 07:55:33 -0000 1.70
+++ backends/file/e-cal-backend-file.c 2 Feb 2006 10:41:43 -0000
@@ -1959,6 +1959,29 @@ e_cal_backend_file_modify_object (ECalBa
case CALOBJ_MOD_ALL :
/* in this case, we blow away all recurrences, and start over
with a clean component */
+
+ if (e_cal_util_component_has_recurrences (icalcomp) && rid && *rid) {
+ icaltimetype start, recur = icaltime_from_string (rid);
+
+ start = icalcomponent_get_dtstart (icalcomp);
+
+ /* This means its a instance generated from master object. So replace
+ the dates stored dates from the master object */
+
+ if (icaltime_compare (start, recur)) {
+ ECalComponentDateTime m_sdate, m_endate;
+
+ e_cal_component_get_dtstart (obj_data->full_object, &m_sdate);
+ e_cal_component_get_dtend (obj_data->full_object, &m_endate);
+
+ e_cal_component_set_dtstart (comp, &m_sdate);
+ e_cal_component_set_dtend (comp, &m_endate);
+ e_cal_component_set_recurid (comp, NULL);
+ e_cal_component_commit_sequence (comp);
+ }
+ *new_object = e_cal_component_get_as_string (comp);
+ }
+
/* Remove the old version */
if (old_object)
*old_object = e_cal_component_get_as_string (obj_data->full_object);
@@ -1991,8 +2014,6 @@ remove_instance (ECalBackendFile *cbfile
cbfile->priv->comp = g_list_remove (cbfile->priv->comp, comp);
obj_data->recurrences_list = g_list_remove (obj_data->recurrences_list, comp);
g_hash_table_remove (obj_data->recurrences, rid);
-
- return;
}
/* remove the component from our data, temporarily */
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/calendar/ChangeLog,v
retrieving revision 1.2973
diff -u -p -u -p -r1.2973 ChangeLog
--- ChangeLog 31 Jan 2006 09:12:12 -0000 1.2973
+++ ChangeLog 2 Feb 2006 10:37:02 -0000
@@ -1,3 +1,10 @@
+2006-02-02 Chenthill Palanisamy <pchenthill novell com>
+
+ Fixes #329570
+ * gui/e-calendar-view.c: (on_unrecur_appointment):
+ Just remove the instances pass the rid. The exception
+ date will be set in the backend.
+
2006-01-31 Tor Lillqvist <tml novell com>
* gui/alarm-notify/alarm-queue.c (open_alarm_dialog,
Index: gui/e-calendar-view.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/e-calendar-view.c,v
retrieving revision 1.114
diff -u -p -u -p -r1.114 e-calendar-view.c
--- gui/e-calendar-view.c 23 Jan 2006 06:45:03 -0000 1.114
+++ gui/e-calendar-view.c 2 Feb 2006 10:37:03 -0000
@@ -1475,7 +1475,8 @@ on_unrecur_appointment (EPopup *ep, EPop
GList *selected;
ECal *client;
char *new_uid;
-
+ ECalComponentId *id = NULL;
+
selected = e_calendar_view_get_selected_events (cal_view);
if (!selected)
return;
@@ -1491,13 +1492,9 @@ on_unrecur_appointment (EPopup *ep, EPop
comp = e_cal_component_new ();
e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (event->comp_data->icalcomp));
-
- if (e_cal_component_has_recurrences (comp)) {
- e_cal_component_set_recurid (comp, NULL);
- cal_comp_util_add_exdate (comp, event->comp_data->instance_start, e_calendar_view_get_timezone (cal_view));
- e_cal_component_commit_sequence (comp);
- }
+ id = e_cal_component_get_id (comp);
+
/* For the unrecurred instance we duplicate the original object,
create a new uid for it, get rid of the recurrence rules, and set
the start & end times to the instances times. */
@@ -1527,17 +1524,12 @@ on_unrecur_appointment (EPopup *ep, EPop
/* Now update both ECalComponents. Note that we do this last since at
* present the updates happen synchronously so our event may disappear.
*/
- if (e_cal_component_has_recurrences (comp)) {
- if (!e_cal_modify_object (client, e_cal_component_get_icalcomponent (comp), CALOBJ_MOD_ALL, NULL))
- g_message ("on_unrecur_appointment(): Could not update the object!");
- } else {
- ECalComponentId *id = e_cal_component_get_id (comp);
- if (!e_cal_remove_object_with_mod (client, id->uid, id->rid, CALOBJ_MOD_THIS,
- NULL));
- g_message ("on_unrecur_appointment(): Could not remove the old object!");
- }
+ if (!e_cal_remove_object_with_mod (client, id->uid, id->rid, CALOBJ_MOD_THIS,
+ NULL))
+ g_message ("on_unrecur_appointment(): Could not remove the old object!");
+ e_cal_component_free_id (id);
g_object_unref (comp);
if (!e_cal_create_object (client, e_cal_component_get_icalcomponent (new_comp), &new_uid, NULL))
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]