diff options
-rw-r--r-- | plugins/itip-formatter/ChangeLog | 5 | ||||
-rw-r--r-- | plugins/itip-formatter/itip-formatter.c | 90 |
2 files changed, 57 insertions, 38 deletions
diff --git a/plugins/itip-formatter/ChangeLog b/plugins/itip-formatter/ChangeLog index cb8ccb93b3..51fb4b80c3 100644 --- a/plugins/itip-formatter/ChangeLog +++ b/plugins/itip-formatter/ChangeLog @@ -1,3 +1,8 @@ +2006-06-16 Sankar P <psankar@novell.com> + + * itip-formatter.c: (view_response_cb): + Deletes a GroupWise appointment if accepted or deleted. + 2006-06-16 Chenthill Palanisamy <pchenthill@novell.com> Fixes #179774 (b.n.c) diff --git a/plugins/itip-formatter/itip-formatter.c b/plugins/itip-formatter/itip-formatter.c index 6d5f532206..b2fd0438b2 100644 --- a/plugins/itip-formatter/itip-formatter.c +++ b/plugins/itip-formatter/itip-formatter.c @@ -1407,7 +1407,7 @@ static void view_response_cb (GtkWidget *widget, ItipViewResponse response, gpointer data) { FormatItipPObject *pitip = data; - gboolean status = FALSE; + gboolean status = FALSE, delete_invitation_from_cache = FALSE; icalproperty *prop; ECalComponentTransparency trans; @@ -1429,53 +1429,67 @@ view_response_cb (GtkWidget *widget, ItipViewResponse response, gpointer data) } switch (response) { - case ITIP_VIEW_RESPONSE_ACCEPT: - status = change_status (pitip->ical_comp, pitip->my_address, + case ITIP_VIEW_RESPONSE_ACCEPT: + status = change_status (pitip->ical_comp, pitip->my_address, ICAL_PARTSTAT_ACCEPTED); - if (status) { - e_cal_component_rescan (pitip->comp); - update_item (pitip, response); - } - break; - case ITIP_VIEW_RESPONSE_TENTATIVE: - status = change_status (pitip->ical_comp, pitip->my_address, + if (status) { + e_cal_component_rescan (pitip->comp); + update_item (pitip, response); + if (e_cal_get_save_schedules (pitip->current_ecal)) + delete_invitation_from_cache = TRUE; + } + break; + case ITIP_VIEW_RESPONSE_TENTATIVE: + status = change_status (pitip->ical_comp, pitip->my_address, ICAL_PARTSTAT_TENTATIVE); - if (status) { - e_cal_component_rescan (pitip->comp); - update_item (pitip, response); - } - break; - case ITIP_VIEW_RESPONSE_DECLINE: - status = change_status (pitip->ical_comp, pitip->my_address, + if (status) { + e_cal_component_rescan (pitip->comp); + update_item (pitip, response); + if (e_cal_get_save_schedules (pitip->current_ecal)) + delete_invitation_from_cache = TRUE; + + } + break; + case ITIP_VIEW_RESPONSE_DECLINE: + status = change_status (pitip->ical_comp, pitip->my_address, ICAL_PARTSTAT_DECLINED); - if (status) { - e_cal_component_rescan (pitip->comp); + if (status) { + e_cal_component_rescan (pitip->comp); + update_item (pitip, response); + if (e_cal_get_save_schedules (pitip->current_ecal)) + delete_invitation_from_cache = TRUE; + } + break; + case ITIP_VIEW_RESPONSE_UPDATE: + update_attendee_status (pitip); + break; + case ITIP_VIEW_RESPONSE_CANCEL: update_item (pitip, response); - } - break; - case ITIP_VIEW_RESPONSE_UPDATE: - update_attendee_status (pitip); - break; - case ITIP_VIEW_RESPONSE_CANCEL: - update_item (pitip, response); - break; - case ITIP_VIEW_RESPONSE_REFRESH: - send_item (pitip); - break; - case ITIP_VIEW_RESPONSE_OPEN: - g_idle_add (idle_open_cb, pitip); - return; - default: - break; + break; + case ITIP_VIEW_RESPONSE_REFRESH: + send_item (pitip); + break; + case ITIP_VIEW_RESPONSE_OPEN: + g_idle_add (idle_open_cb, pitip); + return; + default: + break; + } + + if (delete_invitation_from_cache) { + CamelFolderChangeInfo *changes = NULL; + camel_folder_summary_remove_uid(((EMFormat *) pitip->pobject.format)->folder->summary, ((EMFormat *) pitip->pobject.format)->uid); + changes = camel_folder_change_info_new (); + camel_folder_change_info_remove_uid (changes, (char *)((EMFormat *) pitip->pobject.format)->uid); + camel_object_trigger_event (((EMFormat *) pitip->pobject.format)->folder, "folder_changed", changes); + camel_folder_change_info_free (changes); } - if (pitip->delete_message) { + if (!delete_invitation_from_cache && pitip->delete_message) { g_message ("Deleting!"); camel_folder_delete_message (((EMFormat *) pitip->pobject.format)->folder, ((EMFormat *) pitip->pobject.format)->uid); } - if (e_cal_get_save_schedules (pitip->current_ecal)) - return; if (itip_view_get_rsvp (ITIP_VIEW (pitip->view)) && status) { ECalComponent *comp = NULL; |