1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /* Evolution calendar - generic backend class
4 * Copyright (C) 2000 Ximian, Inc.
5 * Copyright (C) 2000 Ximian, Inc.
7 * Authors: Federico Mena-Quintero <federico@ximian.com>
8 * Rodrigo Moya <rodrigo@ximian.com>
10 * This program is free software; you can redistribute it and/or
11 * modify it under the terms of version 2 of the GNU Lesser General Public
12 * License as published by the Free Software Foundation.
14 * This program is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU Lesser General Public License for more details.
19 * You should have received a copy of the GNU Lesser General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
24 #ifndef E_CAL_BACKEND_H
25 #define E_CAL_BACKEND_H
27 #include "libedataserver/e-list.h"
28 #include "libedataserver/e-source.h"
29 #include <libecal/e-cal-util.h>
30 #include <libecal/e-cal-component.h>
31 #include <libedata-cal/Evolution-DataServer-Calendar.h>
32 #include <libedata-cal/e-data-cal-common.h>
33 #include <libedata-cal/e-data-cal.h>
34 #include <libedata-cal/e-data-cal-view.h>
40 #define E_TYPE_CAL_BACKEND (e_cal_backend_get_type ())
41 #define E_CAL_BACKEND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), E_TYPE_CAL_BACKEND, ECalBackend))
42 #define E_CAL_BACKEND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), E_TYPE_CAL_BACKEND, \
44 #define E_IS_CAL_BACKEND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), E_TYPE_CAL_BACKEND))
45 #define E_IS_CAL_BACKEND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), E_TYPE_CAL_BACKEND))
47 typedef struct _ECalBackendPrivate ECalBackendPrivate;
52 ECalBackendPrivate *priv;
55 struct _ECalBackendClass {
56 GObjectClass parent_class;
58 /* Notification signals */
59 void (* last_client_gone) (ECalBackend *backend);
60 void (* cal_added) (ECalBackend *backend, EDataCal *cal);
62 gboolean (* is_loaded) (ECalBackend *backend);
64 /* FIXME What to pass back here */
65 void (* opened) (ECalBackend *backend, int status);
66 void (* removed) (ECalBackend *backend, int status);
67 void (* obj_updated) (ECalBackend *backend, const char *uid);
70 void (* is_read_only) (ECalBackend *backend, EDataCal *cal);
71 void (* get_cal_address) (ECalBackend *backend, EDataCal *cal);
72 void (* get_alarm_email_address) (ECalBackend *backend, EDataCal *cal);
73 void (* get_ldap_attribute) (ECalBackend *backend, EDataCal *cal);
74 void (* get_static_capabilities) (ECalBackend *backend, EDataCal *cal);
76 void (* open) (ECalBackend *backend, EDataCal *cal, gboolean only_if_exists, const char *username, const char *password);
77 void (* remove) (ECalBackend *backend, EDataCal *cal);
79 /* Object related virtual methods */
80 void (* create_object) (ECalBackend *backend, EDataCal *cal, const char *calobj);
81 void (* modify_object) (ECalBackend *backend, EDataCal *cal, const char *calobj, CalObjModType mod);
82 void (* remove_object) (ECalBackend *backend, EDataCal *cal, const char *uid, const char *rid, CalObjModType mod);
84 void (* discard_alarm) (ECalBackend *backend, EDataCal *cal, const char *uid, const char *auid);
86 void (* receive_objects) (ECalBackend *backend, EDataCal *cal, const char *calobj);
87 void (* send_objects) (ECalBackend *backend, EDataCal *cal, const char *calobj);
89 void (* get_default_object) (ECalBackend *backend, EDataCal *cal);
90 void (* get_object) (ECalBackend *backend, EDataCal *cal, const char *uid, const char *rid);
91 void (* get_object_list) (ECalBackend *backend, EDataCal *cal, const char *sexp);
93 void (* get_attachment_list) (ECalBackend *backend, EDataCal *cal, const char *uid, const char *rid);
95 /* Timezone related virtual methods */
96 void (* get_timezone) (ECalBackend *backend, EDataCal *cal, const char *tzid);
97 void (* add_timezone) (ECalBackend *backend, EDataCal *cal, const char *object);
98 void (* set_default_zone) (ECalBackend *backend, EDataCal *cal, const char *tzobj);
99 void (* set_default_timezone) (ECalBackend *backend, EDataCal *cal, const char *tzid);
101 void (* start_query) (ECalBackend *backend, EDataCalView *query);
103 /* Mode relate virtual methods */
104 CalMode (* get_mode) (ECalBackend *backend);
105 void (* set_mode) (ECalBackend *backend, CalMode mode);
107 void (* get_free_busy) (ECalBackend *backend, EDataCal *cal, GList *users, time_t start, time_t end);
108 void (* get_changes) (ECalBackend *backend, EDataCal *cal, const char *change_id);
110 /* Internal methods for use only in the pcs */
111 icaltimezone *(* internal_get_default_timezone) (ECalBackend *backend);
112 icaltimezone *(* internal_get_timezone) (ECalBackend *backend, const char *tzid);
115 GType e_cal_backend_get_type (void);
117 ESource *e_cal_backend_get_source (ECalBackend *backend);
118 const char *e_cal_backend_get_uri (ECalBackend *backend);
119 icalcomponent_kind e_cal_backend_get_kind (ECalBackend *backend);
121 void e_cal_backend_add_client (ECalBackend *backend, EDataCal *cal);
122 void e_cal_backend_remove_client (ECalBackend *backend, EDataCal *cal);
124 void e_cal_backend_add_query (ECalBackend *backend, EDataCalView *query);
125 EList *e_cal_backend_get_queries (ECalBackend *backend);
127 void e_cal_backend_is_read_only (ECalBackend *backend, EDataCal *cal);
128 void e_cal_backend_get_cal_address (ECalBackend *backend, EDataCal *cal);
129 void e_cal_backend_get_alarm_email_address (ECalBackend *backend, EDataCal *cal);
130 void e_cal_backend_get_ldap_attribute (ECalBackend *backend, EDataCal *cal);
131 void e_cal_backend_get_static_capabilities (ECalBackend *backend, EDataCal *cal);
133 void e_cal_backend_open (ECalBackend *backend, EDataCal *cal, gboolean only_if_exists, const char *username, const char *password);
134 void e_cal_backend_remove (ECalBackend *backend, EDataCal *cal);
136 void e_cal_backend_create_object (ECalBackend *backend, EDataCal *cal, const char *calobj);
137 void e_cal_backend_modify_object (ECalBackend *backend, EDataCal *cal, const char *calobj, CalObjModType mod);
138 void e_cal_backend_remove_object (ECalBackend *backend, EDataCal *cal, const char *uid, const char *rid, CalObjModType mod);
140 void e_cal_backend_discard_alarm (ECalBackend *backend, EDataCal *cal, const char *uid, const char *auid);
142 void e_cal_backend_receive_objects (ECalBackend *backend, EDataCal *cal, const char *calobj);
143 void e_cal_backend_send_objects (ECalBackend *backend, EDataCal *cal, const char *calobj);
145 void e_cal_backend_get_default_object (ECalBackend *backend, EDataCal *cal);
146 void e_cal_backend_get_object (ECalBackend *backend, EDataCal *cal, const char *uid, const char *rid);
147 void e_cal_backend_get_object_list (ECalBackend *backend, EDataCal *cal, const char *sexp);
149 void e_cal_backend_get_attachment_list (ECalBackend *backend, EDataCal *cal, const char *uid, const char *rid);
151 gboolean e_cal_backend_is_loaded (ECalBackend *backend);
153 void e_cal_backend_start_query (ECalBackend *backend, EDataCalView *query);
155 CalMode e_cal_backend_get_mode (ECalBackend *backend);
156 void e_cal_backend_set_mode (ECalBackend *backend, CalMode mode);
158 void e_cal_backend_get_timezone (ECalBackend *backend, EDataCal *cal, const char *tzid);
159 void e_cal_backend_add_timezone (ECalBackend *backend, EDataCal *cal, const char *object);
160 void e_cal_backend_set_default_timezone (ECalBackend *backend, EDataCal *cal, const char *tzid);
161 void e_cal_backend_set_default_zone (ECalBackend *backend, EDataCal *cal, const char *tzobj);
163 void e_cal_backend_get_changes (ECalBackend *backend, EDataCal *cal, const char *change_id);
164 void e_cal_backend_get_free_busy (ECalBackend *backend, EDataCal *cal, GList *users, time_t start, time_t end);
166 icaltimezone* e_cal_backend_internal_get_default_timezone (ECalBackend *backend);
167 icaltimezone* e_cal_backend_internal_get_timezone (ECalBackend *backend, const char *tzid);
169 void e_cal_backend_last_client_gone (ECalBackend *backend);
171 void e_cal_backend_set_notification_proxy (ECalBackend *backend, ECalBackend *proxy);
172 void e_cal_backend_notify_object_created (ECalBackend *backend, const char *calobj);
173 void e_cal_backend_notify_object_modified (ECalBackend *backend, const char *old_object, const char *object);
174 void e_cal_backend_notify_object_removed (ECalBackend *backend, const ECalComponentId *id, const char *old_object, const char *object);
176 void e_cal_backend_notify_mode (ECalBackend *backend,
177 GNOME_Evolution_Calendar_CalListener_SetModeStatus status,
178 GNOME_Evolution_Calendar_CalMode mode);
179 void e_cal_backend_notify_auth_required (ECalBackend *backend);
180 void e_cal_backend_notify_error (ECalBackend *backend, const char *message);
182 void e_cal_backend_notify_view_done (ECalBackend *backend, GNOME_Evolution_Calendar_CallStatus status);
183 void e_cal_backend_notify_view_progress (ECalBackend *backend, const char *message, int percent);
184 void e_cal_backend_notify_readonly (ECalBackend *backend, gboolean read_only);
185 void e_cal_backend_notify_cal_address (ECalBackend *backend, char *address);