diff options
author | Rodrigo Moya <rodrigo@ximian.com> | 2001-06-22 21:08:02 +0800 |
---|---|---|
committer | Rodrigo Moya <rodrigo@src.gnome.org> | 2001-06-22 21:08:02 +0800 |
commit | a7846c7d6d408bf9acdb04353f0b9097745eb277 (patch) | |
tree | 9d4d33aea6123e5e203eaa42b371e95312eae363 /calendar/cal-client | |
parent | 997e2b35630e4d290ce67b125cd94f118cc83892 (diff) | |
download | gsoc2013-evolution-a7846c7d6d408bf9acdb04353f0b9097745eb277.tar.gz gsoc2013-evolution-a7846c7d6d408bf9acdb04353f0b9097745eb277.tar.zst gsoc2013-evolution-a7846c7d6d408bf9acdb04353f0b9097745eb277.zip |
changed getFreeBusy method to return a CalObj instead of a sequence
2001-06-22 Rodrigo Moya <rodrigo@ximian.com>
* idl/evolution-calendar.idl: changed getFreeBusy method to return
a CalObj instead of a sequence
* cal-client/cal-client.[ch] (cal_client_get_free_busy): changed it to
work like the cal_client_get_object function, that is, it does not
return anymore a list of UIDs, but a CalClientGetStatus code, and
added a new parameter for the caller to get the component back when
this function returns
(cal_client_open): aggregate WombatClient interface to the CalListener
being used
* pcs/cal-backend-db.c, pcs/cal-backend-file.c (..get_free_busy): set
return value to "char *" as it will be returning a FreeBusy object,
and not a list of UIDs
* pcs/cal-backend.[ch] (cal_backend_get_free_busy): ditto
* pcs/cal.c (cal_construct): queryInterface on the listener to obtain
the WombatClient interface
svn path=/trunk/; revision=10393
Diffstat (limited to 'calendar/cal-client')
-rw-r--r-- | calendar/cal-client/cal-client.c | 51 | ||||
-rw-r--r-- | calendar/cal-client/cal-client.h | 3 |
2 files changed, 36 insertions, 18 deletions
diff --git a/calendar/cal-client/cal-client.c b/calendar/cal-client/cal-client.c index f9e7fa3512..9e5461ea8e 100644 --- a/calendar/cal-client/cal-client.c +++ b/calendar/cal-client/cal-client.c @@ -463,7 +463,7 @@ client_forget_password_cb (WombatClient *w_client, CalClient *client; client = CAL_CLIENT (user_data); - g_return_val_if_fail (IS_CAL_CLIENT (client), NULL); + g_return_if_fail (IS_CAL_CLIENT (client)); gtk_signal_emit (GTK_OBJECT (client), cal_client_signals [FORGET_PASSWORD], @@ -566,8 +566,8 @@ cal_client_new (void) void cal_client_set_auth_func (CalClient *client, CalClientAuthFunc func, gpointer data) { - g_return_val_if_fail (client != NULL, FALSE); - g_return_val_if_fail (IS_CAL_CLIENT (client), FALSE); + g_return_if_fail (client != NULL); + g_return_if_fail (IS_CAL_CLIENT (client)); client->priv->auth_func = func; client->priv->auth_user_data = data; @@ -613,6 +613,9 @@ cal_client_open_calendar (CalClient *client, const char *str_uri, gboolean only_ return FALSE; } + bonobo_object_add_interface (BONOBO_OBJECT (priv->listener), + BONOBO_OBJECT (priv->w_client)); + corba_listener = (GNOME_Evolution_Calendar_Listener) bonobo_object_corba_objref ( BONOBO_OBJECT (priv->listener)); @@ -1018,37 +1021,51 @@ cal_client_get_objects_in_range (CalClient *client, CalObjType type, time_t star * * Gets free/busy information from the calendar server */ -GList * -cal_client_get_free_busy (CalClient *client, time_t start, time_t end) +CalClientGetStatus +cal_client_get_free_busy (CalClient *client, time_t start, time_t end, CalComponent **comp) { CalClientPrivate *priv; CORBA_Environment ev; - GNOME_Evolution_Calendar_CalObjUIDSeq *seq; - GList *uids; + CORBA_char *calobj; + icalcomponent *icalcomp; - g_return_val_if_fail (client != NULL, NULL); - g_return_val_if_fail (IS_CAL_CLIENT (client), NULL); + g_return_val_if_fail (client != NULL, CAL_CLIENT_GET_NOT_FOUND); + g_return_val_if_fail (IS_CAL_CLIENT (client), CAL_CLIENT_GET_NOT_FOUND); priv = client->priv; - g_return_val_if_fail (priv->load_state == CAL_CLIENT_LOAD_LOADED, NULL); + g_return_val_if_fail (priv->load_state == CAL_CLIENT_LOAD_LOADED, CAL_CLIENT_GET_NOT_FOUND); - g_return_val_if_fail (start != -1 && end != -1, NULL); - g_return_val_if_fail (start <= end, NULL); + g_return_val_if_fail (start != -1 && end != -1, CAL_CLIENT_GET_NOT_FOUND); + g_return_val_if_fail (start <= end, CAL_CLIENT_GET_NOT_FOUND); + g_return_val_if_fail (comp != NULL, CAL_CLIENT_GET_NOT_FOUND); + + *comp = NULL; CORBA_exception_init (&ev); - seq = GNOME_Evolution_Calendar_Cal_getFreeBusy (priv->cal, start, end, &ev); + calobj = GNOME_Evolution_Calendar_Cal_getFreeBusy (priv->cal, start, end, &ev); if (ev._major != CORBA_NO_EXCEPTION) { g_message ("cal_client_get_free_busy(): could not get the objects"); CORBA_exception_free (&ev); - return NULL; + return CAL_CLIENT_GET_NOT_FOUND; } CORBA_exception_free (&ev); - uids = build_uid_list (seq); - CORBA_free (seq); + icalcomp = icalparser_parse_string (calobj); + CORBA_free (calobj); + if (!icalcomp) { + return CAL_CLIENT_GET_SYNTAX_ERROR; + } - return uids; + *comp = cal_component_new (); + if (!cal_component_set_icalcomponent (*comp, icalcomp)) { + icalcomponent_free (icalcomp); + gtk_object_unref (GTK_OBJECT (*comp)); + *comp = NULL; + return CAL_CLIENT_GET_SYNTAX_ERROR; + } + + return CAL_CLIENT_GET_SUCCESS; } /* Callback used when an object is updated and we must update the copy we have */ diff --git a/calendar/cal-client/cal-client.h b/calendar/cal-client/cal-client.h index 07acc0d232..de06b14eb9 100644 --- a/calendar/cal-client/cal-client.h +++ b/calendar/cal-client/cal-client.h @@ -116,7 +116,8 @@ GList *cal_client_get_changes (CalClient *client, CalObjType type, const char *c GList *cal_client_get_objects_in_range (CalClient *client, CalObjType type, time_t start, time_t end); -GList *cal_client_get_free_busy (CalClient *client, time_t start, time_t end); +CalClientGetStatus cal_client_get_free_busy (CalClient *client, time_t start, time_t end, + CalComponent **comp); void cal_client_generate_instances (CalClient *client, CalObjType type, time_t start, time_t end, |