Fix FSF address (Tobias Mueller, #470445)
[platform/upstream/evolution-data-server.git] / calendar / libedata-cal / e-cal-backend.h
1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
2 /* Evolution calendar - generic backend class
3  *
4  * Copyright (C) 2000 Ximian, Inc.
5  * Copyright (C) 2000 Ximian, Inc.
6  *
7  * Authors: Federico Mena-Quintero <federico@ximian.com>
8  *          Rodrigo Moya <rodrigo@ximian.com>
9  *
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.
13  *
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.
18  *
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.
22  */
23
24 #ifndef E_CAL_BACKEND_H
25 #define E_CAL_BACKEND_H
26
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>
35
36 G_BEGIN_DECLS
37
38 \f
39
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,            \
43                                      ECalBackendClass))
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))
46
47 typedef struct _ECalBackendPrivate ECalBackendPrivate;
48
49 struct _ECalBackend {
50         GObject object;
51
52         ECalBackendPrivate *priv;
53 };
54
55 struct _ECalBackendClass {
56         GObjectClass parent_class;
57
58         /* Notification signals */
59         void (* last_client_gone) (ECalBackend *backend);
60         void (* cal_added) (ECalBackend *backend, EDataCal *cal);
61
62         gboolean (* is_loaded) (ECalBackend *backend);
63
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);
68
69         /* Virtual methods */
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);
75         
76         void (* open) (ECalBackend *backend, EDataCal *cal, gboolean only_if_exists, const char *username, const char *password);
77         void (* remove) (ECalBackend *backend, EDataCal *cal);
78
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);
83
84         void (* discard_alarm) (ECalBackend *backend, EDataCal *cal, const char *uid, const char *auid);
85
86         void (* receive_objects) (ECalBackend *backend, EDataCal *cal, const char *calobj);
87         void (* send_objects) (ECalBackend *backend, EDataCal *cal, const char *calobj);
88
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);
92
93         void (* get_attachment_list) (ECalBackend *backend, EDataCal *cal, const char *uid, const char *rid);   
94         
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);
100
101         void (* start_query) (ECalBackend *backend, EDataCalView *query);
102
103         /* Mode relate virtual methods */
104         CalMode (* get_mode) (ECalBackend *backend);
105         void    (* set_mode) (ECalBackend *backend, CalMode mode);
106
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);
109
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);
113 };
114
115 GType e_cal_backend_get_type (void);
116
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);
120
121 void e_cal_backend_add_client (ECalBackend *backend, EDataCal *cal);
122 void e_cal_backend_remove_client (ECalBackend *backend, EDataCal *cal);
123
124 void e_cal_backend_add_query (ECalBackend *backend, EDataCalView *query);
125 EList *e_cal_backend_get_queries (ECalBackend *backend);
126
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);
132
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);
135
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);
139
140 void e_cal_backend_discard_alarm (ECalBackend *backend, EDataCal *cal, const char *uid, const char *auid);
141
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);
144
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);
148
149 void e_cal_backend_get_attachment_list (ECalBackend *backend, EDataCal *cal, const char *uid, const char *rid);
150
151 gboolean e_cal_backend_is_loaded (ECalBackend *backend);
152
153 void e_cal_backend_start_query (ECalBackend *backend, EDataCalView *query);
154
155 CalMode e_cal_backend_get_mode (ECalBackend *backend);
156 void e_cal_backend_set_mode (ECalBackend *backend, CalMode mode);
157
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);
162
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);
165
166 icaltimezone* e_cal_backend_internal_get_default_timezone (ECalBackend *backend);
167 icaltimezone* e_cal_backend_internal_get_timezone (ECalBackend *backend, const char *tzid);
168
169 void e_cal_backend_last_client_gone (ECalBackend *backend);
170
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);
175
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);
181
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);
186
187 \f
188
189 G_END_DECLS
190
191 #endif