diff options
author | JP Rosevear <jpr@ximian.com> | 2003-03-05 06:02:01 +0800 |
---|---|---|
committer | JP Rosevear <jpr@src.gnome.org> | 2003-03-05 06:02:01 +0800 |
commit | af8947c7c413379f6eca5fe81b930a5e0014bc8c (patch) | |
tree | 9a136a13172c2ac0d1e9ef8b18cd1e30cf95934d /calendar/cal-client/cal-client.c | |
parent | c1e2563e393921af0dea2d29eeb13d58e1bcd91b (diff) | |
download | gsoc2013-evolution-af8947c7c413379f6eca5fe81b930a5e0014bc8c.tar.gz gsoc2013-evolution-af8947c7c413379f6eca5fe81b930a5e0014bc8c.tar.zst gsoc2013-evolution-af8947c7c413379f6eca5fe81b930a5e0014bc8c.zip |
implement
2003-03-04 JP Rosevear <jpr@ximian.com>
* pcs/cal.c (impl_Cal_get_ldap_attribute): implement
* pcs/cal-backend.h: add virtual method
* pcs/cal-backend.c (cal_backend_get_ldap_attribute): call
get_ldap_attribute_method
* pcs/cal-backend-file.c (cal_backend_file_class_init): overrid
get_ldap_attribute method
* idl/evolution-calendar.idl: add getLdapAttribute method
* gui/e-meeting-model.c (process_section): take simple card list
as arg and try to use the ldap attribute (if any) as the attendee,
else use the email address
(select_names_ok_cb): get the simple card list
* cal-client/cal-client.h: add proto
* cal-client/cal-client.c (cal_client_init): init ldap_attribute
to NULL
(cal_client_destroy): free ldap_attribute
svn path=/trunk/; revision=20154
Diffstat (limited to 'calendar/cal-client/cal-client.c')
-rw-r--r-- | calendar/cal-client/cal-client.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/calendar/cal-client/cal-client.c b/calendar/cal-client/cal-client.c index 1f76b5e210..371e6c06e0 100644 --- a/calendar/cal-client/cal-client.c +++ b/calendar/cal-client/cal-client.c @@ -50,6 +50,7 @@ struct _CalClientPrivate { /* Email address associated with this calendar, or NULL */ char *cal_address; char *alarm_email_address; + char *ldap_attribute; /* Scheduling info */ char *capabilities; @@ -314,6 +315,7 @@ cal_client_init (CalClient *client, CalClientClass *klass) priv->uri = NULL; priv->cal_address = NULL; priv->alarm_email_address = NULL; + priv->ldap_attribute = NULL; priv->capabilities = FALSE; priv->factories = NULL; priv->timezones = g_hash_table_new (g_str_hash, g_str_equal); @@ -457,6 +459,10 @@ cal_client_finalize (GObject *object) g_free (priv->alarm_email_address); priv->alarm_email_address = NULL; } + if (priv->ldap_attribute) { + g_free (priv->ldap_attribute); + priv->ldap_attribute = NULL; + } if (priv->capabilities) { g_free (priv->capabilities); priv->capabilities = NULL; @@ -1219,6 +1225,33 @@ cal_client_get_alarm_email_address (CalClient *client) return priv->alarm_email_address; } +const char * +cal_client_get_ldap_attribute (CalClient *client) +{ + CalClientPrivate *priv; + + g_return_val_if_fail (client != NULL, NULL); + g_return_val_if_fail (IS_CAL_CLIENT (client), NULL); + + priv = client->priv; + g_return_val_if_fail (priv->load_state == CAL_CLIENT_LOAD_LOADED, NULL); + + if (priv->ldap_attribute == NULL) { + CORBA_Environment ev; + CORBA_char *ldap_attribute; + + CORBA_exception_init (&ev); + ldap_attribute = GNOME_Evolution_Calendar_Cal_getLdapAttribute (priv->cal, &ev); + if (!BONOBO_EX (&ev)) { + priv->ldap_attribute = g_strdup (ldap_attribute); + CORBA_free (ldap_attribute); + } + CORBA_exception_free (&ev); + } + + return priv->ldap_attribute; +} + static void load_static_capabilities (CalClient *client) { |