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/pcs | |
parent | 7ed66fac42704097175f778660e391e86cc6d55d (diff) | |
download | gsoc2013-evolution-fc2c499f8bc737190309484a96e13dccd3cefbdf.tar gsoc2013-evolution-fc2c499f8bc737190309484a96e13dccd3cefbdf.tar.gz gsoc2013-evolution-fc2c499f8bc737190309484a96e13dccd3cefbdf.tar.bz2 gsoc2013-evolution-fc2c499f8bc737190309484a96e13dccd3cefbdf.tar.lz gsoc2013-evolution-fc2c499f8bc737190309484a96e13dccd3cefbdf.tar.xz 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/pcs')
-rw-r--r-- | calendar/pcs/cal-backend-file.c | 12 | ||||
-rw-r--r-- | calendar/pcs/cal-backend.c | 20 | ||||
-rw-r--r-- | calendar/pcs/cal-backend.h | 4 | ||||
-rw-r--r-- | calendar/pcs/cal.c | 25 |
4 files changed, 61 insertions, 0 deletions
diff --git a/calendar/pcs/cal-backend-file.c b/calendar/pcs/cal-backend-file.c index 0e3c71c548..70b56be130 100644 --- a/calendar/pcs/cal-backend-file.c +++ b/calendar/pcs/cal-backend-file.c @@ -91,6 +91,7 @@ static void cal_backend_file_init (CalBackendFile *cbfile); static void cal_backend_file_destroy (GtkObject *object); static const char *cal_backend_file_get_uri (CalBackend *backend); +static const char *cal_backend_file_get_email_address (CalBackend *backend); static CalBackendOpenStatus cal_backend_file_open (CalBackend *backend, const char *uristr, gboolean only_if_exists); @@ -187,6 +188,7 @@ cal_backend_file_class_init (CalBackendFileClass *class) object_class->destroy = cal_backend_file_destroy; backend_class->get_uri = cal_backend_file_get_uri; + backend_class->get_email_address = cal_backend_file_get_email_address; backend_class->open = cal_backend_file_open; backend_class->is_loaded = cal_backend_file_is_loaded; backend_class->get_query = cal_backend_file_get_query; @@ -449,6 +451,16 @@ cal_backend_file_get_uri (CalBackend *backend) return (const char *) priv->uri; } +/* Get_email_address handler for the file backend */ +static const char * +cal_backend_file_get_email_address (CalBackend *backend) +{ + /* A file backend has no particular email address associated + * with it (although that would be a useful feature some day). + */ + return NULL; +} + /* Used from g_hash_table_foreach(), adds a category name to the sequence */ static void add_category_cb (gpointer key, gpointer value, gpointer data) diff --git a/calendar/pcs/cal-backend.c b/calendar/pcs/cal-backend.c index 0954c53472..19f8261797 100644 --- a/calendar/pcs/cal-backend.c +++ b/calendar/pcs/cal-backend.c @@ -141,6 +141,7 @@ cal_backend_class_init (CalBackendClass *class) class->obj_removed = NULL; class->get_uri = NULL; + class->get_email_address = NULL; class->open = NULL; class->is_loaded = NULL; class->get_query = NULL; @@ -182,6 +183,25 @@ cal_backend_get_uri (CalBackend *backend) return (* CLASS (backend)->get_uri) (backend); } +/** + * cal_backend_get_email_address: + * @backend: A calendar backend. + * + * Queries the email address associated with a calendar backend, which + * must already have an open calendar. + * + * Return value: The email address associated with the calendar. + **/ +const char * +cal_backend_get_email_address (CalBackend *backend) +{ + g_return_val_if_fail (backend != NULL, NULL); + g_return_val_if_fail (IS_CAL_BACKEND (backend), NULL); + + g_assert (CLASS (backend)->get_email_address != NULL); + return (* CLASS (backend)->get_email_address) (backend); +} + /* Callback used when a Cal is destroyed */ static void cal_destroy_cb (GtkObject *object, gpointer data) diff --git a/calendar/pcs/cal-backend.h b/calendar/pcs/cal-backend.h index 737a1604e8..af11be14e8 100644 --- a/calendar/pcs/cal-backend.h +++ b/calendar/pcs/cal-backend.h @@ -93,6 +93,8 @@ struct _CalBackendClass { /* Virtual methods */ const char *(* get_uri) (CalBackend *backend); + const char *(* get_email_address) (CalBackend *backend); + CalBackendOpenStatus (* open) (CalBackend *backend, const char *uristr, gboolean only_if_exists); @@ -146,6 +148,8 @@ GtkType cal_backend_get_type (void); const char *cal_backend_get_uri (CalBackend *backend); +const char *cal_backend_get_email_address (CalBackend *backend); + void cal_backend_add_cal (CalBackend *backend, Cal *cal); CalBackendOpenStatus cal_backend_open (CalBackend *backend, const char *uristr, diff --git a/calendar/pcs/cal.c b/calendar/pcs/cal.c index a266977cbc..31580e62e4 100644 --- a/calendar/pcs/cal.c +++ b/calendar/pcs/cal.c @@ -64,6 +64,30 @@ impl_Cal_get_uri (PortableServer_Servant servant, return str_uri_copy; } +/* Cal::get_email_address method */ +static CORBA_char * +impl_Cal_get_email_address (PortableServer_Servant servant, + CORBA_Environment *ev) +{ + Cal *cal; + CalPrivate *priv; + const char *str_email_address; + CORBA_char *str_email_address_copy; + + cal = CAL (bonobo_object_from_servant (servant)); + priv = cal->priv; + + str_email_address = cal_backend_get_email_address (priv->backend); + if (str_email_address == NULL) { + bonobo_exception_set (ev, ex_GNOME_Evolution_Calendar_Cal_NotFound); + return CORBA_OBJECT_NIL; + } + + str_email_address_copy = CORBA_string_dup (str_email_address); + + return str_email_address_copy; +} + /* Converts a calendar object type from its CORBA representation to our own * representation. */ @@ -707,6 +731,7 @@ cal_class_init (CalClass *klass) /* Epv methods */ epv->_get_uri = impl_Cal_get_uri; + epv->getEmailAddress = impl_Cal_get_email_address; epv->setMode = impl_Cal_set_mode; epv->countObjects = impl_Cal_get_n_objects; epv->getObject = impl_Cal_get_object; |