diff options
Diffstat (limited to 'calendar/cal-client')
-rw-r--r-- | calendar/cal-client/.cvsignore | 6 | ||||
-rw-r--r-- | calendar/cal-client/Makefile.am | 2 | ||||
-rw-r--r-- | calendar/cal-client/cal-client-types.c | 52 | ||||
-rw-r--r-- | calendar/cal-client/cal-client-types.h | 50 | ||||
-rw-r--r-- | calendar/cal-client/cal-client.c | 43 | ||||
-rw-r--r-- | calendar/cal-client/cal-client.h | 2 |
6 files changed, 129 insertions, 26 deletions
diff --git a/calendar/cal-client/.cvsignore b/calendar/cal-client/.cvsignore index e74f322903..1537e6e01d 100644 --- a/calendar/cal-client/.cvsignore +++ b/calendar/cal-client/.cvsignore @@ -10,8 +10,6 @@ evolution-calendar.h evolution-calendar-common.lo evolution-calendar-skels.lo evolution-calendar-stubs.lo -cal-client.lo -cal-listener.lo -libcal-client.la +*.lo +*.la client-test -libcal-client-static.la diff --git a/calendar/cal-client/Makefile.am b/calendar/cal-client/Makefile.am index dd5f3e60d2..6663baeecd 100644 --- a/calendar/cal-client/Makefile.am +++ b/calendar/cal-client/Makefile.am @@ -34,11 +34,13 @@ libcal_clientincludedir = $(includedir)/evolution/cal-client libcal_client_la_SOURCES = \ $(CORBA_GENERATED) \ + cal-client-types.c \ cal-client.c \ cal-listener.c \ cal-listener.h libcal_clientinclude_HEADERS = \ + cal-client-types.h \ cal-client.h diff --git a/calendar/cal-client/cal-client-types.c b/calendar/cal-client/cal-client-types.c new file mode 100644 index 0000000000..98da8b8a6f --- /dev/null +++ b/calendar/cal-client/cal-client-types.c @@ -0,0 +1,52 @@ +/* Evolution calendar utilities and types + * + * Copyright (C) 2000 Helix Code, Inc. + * + * Authors: Federico Mena-Quintero <federico@helixcode.com> + * JP Rosevear <jpr@helixcode.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + +#include <config.h> +#include <stdlib.h> +#include "cal-client-types.h" + + + +/** + * cal_client_change_list_free: + * @list: List of #CalClientChange structures. + * + * Frees a list of #CalClientChange structures. + **/ +void +cal_client_change_list_free (GList *list) +{ + CalClientChange *c; + GList *l; + + for (l = list; l; l = l->next) { + c = l->data; + + g_assert (c != NULL); + g_assert (c->comp != NULL); + + gtk_object_unref (GTK_OBJECT (c->comp)); + g_free (c); + } + + g_list_free (list); +} diff --git a/calendar/cal-client/cal-client-types.h b/calendar/cal-client/cal-client-types.h new file mode 100644 index 0000000000..5c017458ad --- /dev/null +++ b/calendar/cal-client/cal-client-types.h @@ -0,0 +1,50 @@ +/* Evolution calendar utilities and types + * + * Copyright (C) 2000 Helix Code, Inc. + * + * Authors: Federico Mena-Quintero <federico@helixcode.com> + * JP Rosevear <jpr@helixcode.com> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + */ + +#ifndef CAL_CLIENT_TYPES_H +#define CAL_CLIENT_TYPES_H + +#include <libgnome/gnome-defs.h> +#include <cal-util/cal-component.h> + +BEGIN_GNOME_DECLS + + + +typedef enum { + CAL_CLIENT_CHANGE_ADDED = 1 << 0, + CAL_CLIENT_CHANGE_MODIFIED = 1 << 1, + CAL_CLIENT_CHANGE_DELETED = 1 << 2 +} CalClientChangeType; + +typedef struct +{ + CalComponent *comp; + CalClientChangeType type; +} CalClientChange; + +void cal_client_change_list_free (GList *list); + +END_GNOME_DECLS + +#endif + diff --git a/calendar/cal-client/cal-client.c b/calendar/cal-client/cal-client.c index 1eca55a2d3..99dd96710b 100644 --- a/calendar/cal-client/cal-client.c +++ b/calendar/cal-client/cal-client.c @@ -25,6 +25,7 @@ #include <gtk/gtksignal.h> #include <liboaf/liboaf.h> +#include "cal-client-types.h" #include "cal-client.h" #include "cal-listener.h" @@ -733,44 +734,44 @@ cal_client_get_uids (CalClient *client, CalObjType type) return uids; } -/* Builds a GList of CalObjChange structures from the CORBA sequence */ +/* Builds a GList of CalClientChange structures from the CORBA sequence */ static GList * build_change_list (GNOME_Evolution_Calendar_CalObjChangeSeq *seq) { - GList *list; + GList *list = NULL; + icalcomponent *icalcomp; int i; /* Create the list in reverse order */ - list = NULL; for (i = 0; i < seq->_length; i++) { GNOME_Evolution_Calendar_CalObjChange *corba_coc; - CalObjChange *coc; + CalClientChange *ccc; corba_coc = &seq->_buffer[i]; - coc = g_new (CalObjChange, 1); + ccc = g_new (CalClientChange, 1); + + icalcomp = icalparser_parse_string (corba_coc->calobj); + if (!icalcomp) + continue; - coc->uid = g_strdup (corba_coc->uid); - coc->type = corba_coc->type; + ccc->comp = cal_component_new (); + if (!cal_component_set_icalcomponent (ccc->comp, icalcomp)) { + icalcomponent_free (icalcomp); + gtk_object_unref (GTK_OBJECT (ccc->comp)); + continue; + } + ccc->type = corba_coc->type; - list = g_list_prepend (list, coc); + list = g_list_prepend (list, ccc); } list = g_list_reverse (list); + return list; } -/** - * cal_client_get_changed_uids: - * @client: A calendar client. - * @type: Bitmask with types of objects to return. - * - * Queries a calendar for a list of unique identifiers corresponding to calendar - * objects whose type matches one of the types specified in the @type flags. - * - * Return value: A list of strings that are the sought UIDs. - **/ GList * -cal_client_get_changed_uids (CalClient *client, CalObjType type, time_t since) +cal_client_get_changes (CalClient *client, CalObjType type, const char *change_id) { CalClientPrivate *priv; CORBA_Environment ev; @@ -787,9 +788,9 @@ cal_client_get_changed_uids (CalClient *client, CalObjType type, time_t since) t = corba_obj_type (type); CORBA_exception_init (&ev); - seq = GNOME_Evolution_Calendar_Cal_getChangedUIds (priv->cal, t, since, &ev); + seq = GNOME_Evolution_Calendar_Cal_getChanges (priv->cal, t, change_id, &ev); if (ev._major != CORBA_NO_EXCEPTION) { - g_message ("cal_client_get_changed_uids(): could not get the list of changes"); + g_message ("cal_client_get_changes(): could not get the list of changes"); CORBA_exception_free (&ev); return NULL; } diff --git a/calendar/cal-client/cal-client.h b/calendar/cal-client/cal-client.h index fd40c424d9..b30c0a7d32 100644 --- a/calendar/cal-client/cal-client.h +++ b/calendar/cal-client/cal-client.h @@ -93,7 +93,7 @@ CalClientGetStatus cal_client_get_object (CalClient *client, CalComponent **comp); GList *cal_client_get_uids (CalClient *client, CalObjType type); -GList *cal_client_get_changed_uids (CalClient *client, CalObjType type, time_t since); +GList *cal_client_get_changes (CalClient *client, CalObjType type, const char *change_id); GList *cal_client_get_objects_in_range (CalClient *client, CalObjType type, time_t start, time_t end); |