diff options
author | Dan Winship <danw@src.gnome.org> | 2002-09-28 04:23:20 +0800 |
---|---|---|
committer | Dan Winship <danw@src.gnome.org> | 2002-09-28 04:23:20 +0800 |
commit | fc2c499f8bc737190309484a96e13dccd3cefbdf (patch) | |
tree | 00a346afe0e783978d6c684ebabc7de25eff9fe8 /calendar/gui/itip-utils.c | |
parent | 7ed66fac42704097175f778660e391e86cc6d55d (diff) | |
download | gsoc2013-evolution-fc2c499f8bc737190309484a96e13dccd3cefbdf.tar.gz gsoc2013-evolution-fc2c499f8bc737190309484a96e13dccd3cefbdf.tar.zst gsoc2013-evolution-fc2c499f8bc737190309484a96e13dccd3cefbdf.zip |
Non-Connector part of #29334 (meeting created by a delegate in the
delegator's calendar should have the delegator as Organizer).
* idl/evolution-calendar.idl: add Cal_getEmailAddress, to return
the email address associated with a backend (if any).
* pcs/cal-backend.c (cal_backend_get_email_address): New.
* pcs/cal-backend-file.c (cal_backend_file_get_email_address):
Return NULL (for now).
* pcs/cal.c (impl_Cal_get_email_address): Implement this by
calling cal_backend_get_email_address and returning a NotFound
exception if it returns NULL.
* cal-client/cal-client.c (cal_client_get_email_address): New.
(cal_client_init, cal_client_destroy, etc): initialize/free
email_address
* gui/dialogs/event-editor.c (event_editor_construct): Split this
out of event_editor_init. Take and set a CalClient.
(event_editor_new): Take a CalClient.
* gui/dialogs/task-editor.c (task_editor_construct,
task_editor_new): Likewise.
* gui/dialogs/meeting-page.c (meeting_page_new,
meeting_page_construct): Take a CalClient and call
cal_client_get_email_address to find the default organizer
address. (Also fix a bug if the default account's name has
non-ASCII characters.)
* gui/itip-utils.c (comp_from): New. When sending a REQUEST or
CANCEL, use the Organizer as the From address.
(itip_send_comp): Call comp_from and pass the result to
Composer_setHeaders.
* gui/comp-editor-factory.c (edit_existing, edit_new): Pass the
CalClient to event_editor_new/task_editor_new
* gui/e-calendar-table.c (open_task): Likewise.
* gui/e-tasks.c (e_tasks_new_task): Likewise.
* gui/gnome-cal.c (gnome_calendar_edit_object,
gnome_calendar_new_task): Likewise.
svn path=/trunk/; revision=18253
Diffstat (limited to 'calendar/gui/itip-utils.c')
-rw-r--r-- | calendar/gui/itip-utils.c | 31 |
1 files changed, 29 insertions, 2 deletions
diff --git a/calendar/gui/itip-utils.c b/calendar/gui/itip-utils.c index 65634d9759..224d8b9d52 100644 --- a/calendar/gui/itip-utils.c +++ b/calendar/gui/itip-utils.c @@ -352,6 +352,28 @@ users_has_attendee (GList *users, const char *address) return FALSE; } +static CORBA_char * +comp_from (CalComponentItipMethod method, CalComponent *comp) +{ + CalComponentOrganizer organizer; + + switch (method) { + case CAL_COMPONENT_METHOD_REQUEST: + case CAL_COMPONENT_METHOD_CANCEL: + cal_component_get_organizer (comp, &organizer); + if (organizer.value == NULL) { + e_notice (NULL, GNOME_MESSAGE_BOX_ERROR, + _("An organizer must be set.")); + return NULL; + } + + return CORBA_string_dup (itip_strip_mailto (organizer.value)); + + default: + return CORBA_string_dup (""); + } +} + static GNOME_Evolution_Composer_RecipientList * comp_to_list (CalComponentItipMethod method, CalComponent *comp, GList *users) { @@ -862,7 +884,7 @@ itip_send_comp (CalComponentItipMethod method, CalComponent *send_comp, GNOME_Evolution_Composer_RecipientList *cc_list = NULL; GNOME_Evolution_Composer_RecipientList *bcc_list = NULL; CORBA_char *subject = NULL, *body = NULL, *content_type = NULL; - CORBA_char *filename = NULL, *description = NULL; + CORBA_char *from = NULL, *filename = NULL, *description = NULL; GNOME_Evolution_Composer_AttachmentData *attach_data = NULL; char *ical_string; CORBA_Environment ev; @@ -904,8 +926,11 @@ itip_send_comp (CalComponentItipMethod method, CalComponent *send_comp, /* Subject information */ subject = comp_subject (method, comp); + /* From address */ + from = comp_from (method, comp); + /* Set recipients, subject */ - GNOME_Evolution_Composer_setHeaders (composer_server, to_list, cc_list, bcc_list, subject, &ev); + GNOME_Evolution_Composer_setHeaders (composer_server, from, to_list, cc_list, bcc_list, subject, &ev); if (BONOBO_EX (&ev)) { g_warning ("Unable to set composer headers while sending iTip message"); goto cleanup; @@ -982,6 +1007,8 @@ itip_send_comp (CalComponentItipMethod method, CalComponent *send_comp, if (bcc_list != NULL) CORBA_free (bcc_list); + if (from != NULL) + CORBA_free (from); if (subject != NULL) CORBA_free (subject); if (body != NULL) |