1 /* 2 * e-cal-client.h 3 * 4 * Copyright (C) 2011 Red Hat, Inc. (www.redhat.com) 5 * 6 * This library is free software: you can redistribute it and/or modify it 7 * under the terms of the GNU Lesser General Public License as published by 8 * the Free Software Foundation. 9 * 10 * This library is distributed in the hope that it will be useful, but 11 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License 13 * for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public License 16 * along with this library. If not, see <http://www.gnu.org/licenses/>. 17 * 18 */ 19 20 #if !defined (__LIBECAL_H_INSIDE__) && !defined (LIBECAL_COMPILATION) 21 #error "Only <libecal/libecal.h> should be included directly." 22 #endif 23 24 #ifndef E_CAL_CLIENT_H 25 #define E_CAL_CLIENT_H 26 27 #include <libedataserver/libedataserver.h> 28 29 #include <libecal/e-cal-client-view.h> 30 #include <libecal/e-cal-enums.h> 31 #include <libecal/e-cal-recur.h> 32 #include <libecal/e-cal-util.h> 33 34 /* Standard GObject macros */ 35 #define E_TYPE_CAL_CLIENT \ 36 (e_cal_client_get_type ()) 37 #define E_CAL_CLIENT(obj) \ 38 (G_TYPE_CHECK_INSTANCE_CAST \ 39 ((obj), E_TYPE_CAL_CLIENT, ECalClient)) 40 #define E_CAL_CLIENT_CLASS(cls) \ 41 (G_TYPE_CHECK_CLASS_CAST \ 42 ((cls), E_TYPE_CAL_CLIENT, ECalClientClass)) 43 #define E_IS_CAL_CLIENT(obj) \ 44 (G_TYPE_CHECK_INSTANCE_TYPE \ 45 ((obj), E_TYPE_CAL_CLIENT)) 46 #define E_IS_CAL_CLIENT_CLASS(cls) \ 47 (G_TYPE_CHECK_CLASS_TYPE \ 48 ((cls), E_TYPE_CAL_CLIENT)) 49 #define E_CAL_CLIENT_GET_CLASS(obj) \ 50 (G_TYPE_INSTANCE_GET_CLASS \ 51 ((obj), E_TYPE_CAL_CLIENT, ECalClientClass)) 52 53 /** 54 * E_CAL_BACKEND_PROPERTY_CAL_EMAIL_ADDRESS: 55 * 56 * An email address associated with the calendar. 57 * 58 * Since: 3.2 59 **/ 60 #define E_CAL_BACKEND_PROPERTY_CAL_EMAIL_ADDRESS "cal-email-address" 61 62 /** 63 * E_CAL_BACKEND_PROPERTY_ALARM_EMAIL_ADDRESS: 64 * 65 * An email address preferred for e-mail reminders by the calendar. 66 * 67 * Since: 3.2 68 **/ 69 #define E_CAL_BACKEND_PROPERTY_ALARM_EMAIL_ADDRESS "alarm-email-address" 70 71 /** 72 * E_CAL_BACKEND_PROPERTY_DEFAULT_OBJECT: 73 * 74 * A default object for the calendar. Calendars use VEVENT, memo lists VJOURNAL 75 * and task lists VTODO, which can have prefilled values by the backend. 76 * 77 * Since: 3.2 78 **/ 79 #define E_CAL_BACKEND_PROPERTY_DEFAULT_OBJECT "default-object" 80 81 /** 82 * E_CAL_BACKEND_PROPERTY_REVISION: 83 * 84 * The current overall revision string, this can be used as 85 * a quick check to see if data has changed at all since the 86 * last time the calendar revision was observed. 87 * 88 * Since: 3.4 89 **/ 90 #define E_CAL_BACKEND_PROPERTY_REVISION "revision" 91 92 /** 93 * E_CAL_CLIENT_ERROR: 94 * 95 * An error domain associated with #ECalClient. The error codes 96 * are from #ECalClientError. 97 * 98 * Since: 3.2 99 **/ 100 #define E_CAL_CLIENT_ERROR e_cal_client_error_quark () 101 102 G_BEGIN_DECLS 103 104 /** 105 * ECalClientError: 106 * @E_CAL_CLIENT_ERROR_NO_SUCH_CALENDAR: No such calendar 107 * @E_CAL_CLIENT_ERROR_OBJECT_NOT_FOUND: Object not found 108 * @E_CAL_CLIENT_ERROR_INVALID_OBJECT: Invalid object 109 * @E_CAL_CLIENT_ERROR_UNKNOWN_USER: Unknown user 110 * @E_CAL_CLIENT_ERROR_OBJECT_ID_ALREADY_EXISTS: Object ID already exists 111 * @E_CAL_CLIENT_ERROR_INVALID_RANGE: Invalid range 112 * 113 * Since: 3.2 114 **/ 115 typedef enum { 116 E_CAL_CLIENT_ERROR_NO_SUCH_CALENDAR, 117 E_CAL_CLIENT_ERROR_OBJECT_NOT_FOUND, 118 E_CAL_CLIENT_ERROR_INVALID_OBJECT, 119 E_CAL_CLIENT_ERROR_UNKNOWN_USER, 120 E_CAL_CLIENT_ERROR_OBJECT_ID_ALREADY_EXISTS, 121 E_CAL_CLIENT_ERROR_INVALID_RANGE 122 } ECalClientError; 123 124 GQuark e_cal_client_error_quark (void) G_GNUC_CONST; 125 const gchar * e_cal_client_error_to_string (ECalClientError code); 126 GError * e_cal_client_error_create (ECalClientError code, 127 const gchar *custom_msg); 128 GError * e_cal_client_error_create_fmt (ECalClientError code, 129 const gchar *format, 130 ...) G_GNUC_PRINTF (2, 3); 131 132 typedef struct _ECalClient ECalClient; 133 typedef struct _ECalClientClass ECalClientClass; 134 typedef struct _ECalClientPrivate ECalClientPrivate; 135 136 /** 137 * ECalClient: 138 * 139 * Contains only private data that should be read and manipulated using the 140 * functions below. 141 * 142 * Since: 3.2 143 **/ 144 struct _ECalClient { 145 /*< private >*/ 146 EClient parent; 147 148 ECalClientPrivate *priv; 149 }; 150 151 /** 152 * ECalClientClass: 153 * @free_busy_data: signal used to notify about free/busy data 154 * 155 * Base class structure for the #ECalClient class 156 **/ 157 struct _ECalClientClass { 158 /*< private >*/ 159 EClientClass parent; 160 161 /*< public >*/ 162 /* Signals */ 163 void (*free_busy_data) (ECalClient *client, 164 const GSList *free_busy_ecalcomps); /* ECalComponent * */ 165 }; 166 167 GType e_cal_client_get_type (void) G_GNUC_CONST; 168 EClient * e_cal_client_connect_sync (ESource *source, 169 ECalClientSourceType source_type, 170 guint32 wait_for_connected_seconds, 171 GCancellable *cancellable, 172 GError **error); 173 void e_cal_client_connect (ESource *source, 174 ECalClientSourceType source_type, 175 guint32 wait_for_connected_seconds, 176 GCancellable *cancellable, 177 GAsyncReadyCallback callback, 178 gpointer user_data); 179 EClient * e_cal_client_connect_finish (GAsyncResult *result, 180 GError **error); 181 ECalClientSourceType 182 e_cal_client_get_source_type (ECalClient *client); 183 const gchar * e_cal_client_get_local_attachment_store 184 (ECalClient *client); 185 void e_cal_client_set_default_timezone 186 (ECalClient *client, 187 ICalTimezone *zone); 188 ICalTimezone * e_cal_client_get_default_timezone 189 (ECalClient *client); 190 gboolean e_cal_client_check_one_alarm_only 191 (ECalClient *client); 192 gboolean e_cal_client_check_save_schedules 193 (ECalClient *client); 194 gboolean e_cal_client_check_organizer_must_attend 195 (ECalClient *client); 196 gboolean e_cal_client_check_organizer_must_accept 197 (ECalClient *client); 198 gboolean e_cal_client_check_recurrences_no_master 199 (ECalClient *client); 200 201 void e_cal_client_generate_instances (ECalClient *client, 202 time_t start, 203 time_t end, 204 GCancellable *cancellable, 205 ECalRecurInstanceCb cb, 206 gpointer cb_data, 207 GDestroyNotify destroy_cb_data); 208 void e_cal_client_generate_instances_sync 209 (ECalClient *client, 210 time_t start, 211 time_t end, 212 GCancellable *cancellable, 213 ECalRecurInstanceCb cb, 214 gpointer cb_data); 215 void e_cal_client_generate_instances_for_object 216 (ECalClient *client, 217 ICalComponent *icalcomp, 218 time_t start, 219 time_t end, 220 GCancellable *cancellable, 221 ECalRecurInstanceCb cb, 222 gpointer cb_data, 223 GDestroyNotify destroy_cb_data); 224 void e_cal_client_generate_instances_for_object_sync 225 (ECalClient *client, 226 ICalComponent *icalcomp, 227 time_t start, 228 time_t end, 229 GCancellable *cancellable, 230 ECalRecurInstanceCb cb, 231 gpointer cb_data); 232 gchar * e_cal_client_get_component_as_string 233 (ECalClient *client, 234 ICalComponent *icalcomp); 235 void e_cal_client_get_default_object (ECalClient *client, 236 GCancellable *cancellable, 237 GAsyncReadyCallback callback, 238 gpointer user_data); 239 gboolean e_cal_client_get_default_object_finish 240 (ECalClient *client, 241 GAsyncResult *result, 242 ICalComponent **out_icalcomp, 243 GError **error); 244 gboolean e_cal_client_get_default_object_sync 245 (ECalClient *client, 246 ICalComponent **out_icalcomp, 247 GCancellable *cancellable, 248 GError **error); 249 void e_cal_client_get_object (ECalClient *client, 250 const gchar *uid, 251 const gchar *rid, 252 GCancellable *cancellable, 253 GAsyncReadyCallback callback, 254 gpointer user_data); 255 gboolean e_cal_client_get_object_finish (ECalClient *client, 256 GAsyncResult *result, 257 ICalComponent **out_icalcomp, 258 GError **error); 259 gboolean e_cal_client_get_object_sync (ECalClient *client, 260 const gchar *uid, 261 const gchar *rid, 262 ICalComponent **out_icalcomp, 263 GCancellable *cancellable, 264 GError **error); 265 void e_cal_client_get_objects_for_uid 266 (ECalClient *client, 267 const gchar *uid, 268 GCancellable *cancellable, 269 GAsyncReadyCallback callback, 270 gpointer user_data); 271 gboolean e_cal_client_get_objects_for_uid_finish 272 (ECalClient *client, 273 GAsyncResult *result, 274 GSList **out_ecalcomps, /* ECalComponent * */ 275 GError **error); 276 gboolean e_cal_client_get_objects_for_uid_sync 277 (ECalClient *client, 278 const gchar *uid, 279 GSList **out_ecalcomps, /* ECalComponent * */ 280 GCancellable *cancellable, 281 GError **error); 282 void e_cal_client_get_object_list (ECalClient *client, 283 const gchar *sexp, 284 GCancellable *cancellable, 285 GAsyncReadyCallback callback, 286 gpointer user_data); 287 gboolean e_cal_client_get_object_list_finish 288 (ECalClient *client, 289 GAsyncResult *result, 290 GSList **out_icalcomps, /* ICalComponent * */ 291 GError **error); 292 gboolean e_cal_client_get_object_list_sync 293 (ECalClient *client, 294 const gchar *sexp, 295 GSList **out_icalcomps, /* ICalComponent * */ 296 GCancellable *cancellable, 297 GError **error); 298 void e_cal_client_get_object_list_as_comps 299 (ECalClient *client, 300 const gchar *sexp, 301 GCancellable *cancellable, 302 GAsyncReadyCallback callback, 303 gpointer user_data); 304 gboolean e_cal_client_get_object_list_as_comps_finish 305 (ECalClient *client, 306 GAsyncResult *result, 307 GSList **out_ecalcomps, /* ECalComponent * */ 308 GError **error); 309 gboolean e_cal_client_get_object_list_as_comps_sync 310 (ECalClient *client, 311 const gchar *sexp, 312 GSList **out_ecalcomps, /* ECalComponent * */ 313 GCancellable *cancellable, 314 GError **error); 315 void e_cal_client_get_free_busy (ECalClient *client, 316 time_t start, 317 time_t end, 318 const GSList *users, /* gchar * */ 319 GCancellable *cancellable, 320 GAsyncReadyCallback callback, 321 gpointer user_data); 322 gboolean e_cal_client_get_free_busy_finish 323 (ECalClient *client, 324 GAsyncResult *result, 325 GSList **out_freebusy, /* ECalComponent * */ 326 GError **error); 327 gboolean e_cal_client_get_free_busy_sync (ECalClient *client, 328 time_t start, 329 time_t end, 330 const GSList *users, /* gchar * */ 331 GSList **out_freebusy, /* ECalComponent * */ 332 GCancellable *cancellable, 333 GError **error); 334 void e_cal_client_create_object (ECalClient *client, 335 ICalComponent *icalcomp, 336 ECalOperationFlags opflags, 337 GCancellable *cancellable, 338 GAsyncReadyCallback callback, 339 gpointer user_data); 340 gboolean e_cal_client_create_object_finish 341 (ECalClient *client, 342 GAsyncResult *result, 343 gchar **out_uid, 344 GError **error); 345 gboolean e_cal_client_create_object_sync (ECalClient *client, 346 ICalComponent *icalcomp, 347 ECalOperationFlags opflags, 348 gchar **out_uid, 349 GCancellable *cancellable, 350 GError **error); 351 void e_cal_client_create_objects (ECalClient *client, 352 GSList *icalcomps, /* ICalComponent * */ 353 ECalOperationFlags opflags, 354 GCancellable *cancellable, 355 GAsyncReadyCallback callback, 356 gpointer user_data); 357 gboolean e_cal_client_create_objects_finish 358 (ECalClient *client, 359 GAsyncResult *result, 360 GSList **out_uids, /* gchar * */ 361 GError **error); 362 gboolean e_cal_client_create_objects_sync 363 (ECalClient *client, 364 GSList *icalcomps, /* ICalComponent * */ 365 ECalOperationFlags opflags, 366 GSList **out_uids, /* gchar * */ 367 GCancellable *cancellable, 368 GError **error); 369 void e_cal_client_modify_object (ECalClient *client, 370 ICalComponent *icalcomp, 371 ECalObjModType mod, 372 ECalOperationFlags opflags, 373 GCancellable *cancellable, 374 GAsyncReadyCallback callback, 375 gpointer user_data); 376 gboolean e_cal_client_modify_object_finish 377 (ECalClient *client, 378 GAsyncResult *result, 379 GError **error); 380 gboolean e_cal_client_modify_object_sync (ECalClient *client, 381 ICalComponent *icalcomp, 382 ECalObjModType mod, 383 ECalOperationFlags opflags, 384 GCancellable *cancellable, 385 GError **error); 386 void e_cal_client_modify_objects (ECalClient *client, 387 GSList *icalcomps, /* ICalComponent * */ 388 ECalObjModType mod, 389 ECalOperationFlags opflags, 390 GCancellable *cancellable, 391 GAsyncReadyCallback callback, 392 gpointer user_data); 393 gboolean e_cal_client_modify_objects_finish 394 (ECalClient *client, 395 GAsyncResult *result, 396 GError **error); 397 gboolean e_cal_client_modify_objects_sync 398 (ECalClient *client, 399 GSList *icalcomps, /* ICalComponent * */ 400 ECalObjModType mod, 401 ECalOperationFlags opflags, 402 GCancellable *cancellable, 403 GError **error); 404 void e_cal_client_remove_object (ECalClient *client, 405 const gchar *uid, 406 const gchar *rid, 407 ECalObjModType mod, 408 ECalOperationFlags opflags, 409 GCancellable *cancellable, 410 GAsyncReadyCallback callback, 411 gpointer user_data); 412 gboolean e_cal_client_remove_object_finish 413 (ECalClient *client, 414 GAsyncResult *result, 415 GError **error); 416 gboolean e_cal_client_remove_object_sync (ECalClient *client, 417 const gchar *uid, 418 const gchar *rid, 419 ECalObjModType mod, 420 ECalOperationFlags opflags, 421 GCancellable *cancellable, 422 GError **error); 423 void e_cal_client_remove_objects (ECalClient *client, 424 const GSList *ids, /* ECalComponentId * */ 425 ECalObjModType mod, 426 ECalOperationFlags opflags, 427 GCancellable *cancellable, 428 GAsyncReadyCallback callback, 429 gpointer user_data); 430 gboolean e_cal_client_remove_objects_finish 431 (ECalClient *client, 432 GAsyncResult *result, 433 GError **error); 434 gboolean e_cal_client_remove_objects_sync 435 (ECalClient *client, 436 const GSList *ids, /* ECalComponentId * */ 437 ECalObjModType mod, 438 ECalOperationFlags opflags, 439 GCancellable *cancellable, 440 GError **error); 441 void e_cal_client_receive_objects (ECalClient *client, 442 ICalComponent *icalcomp, 443 ECalOperationFlags opflags, 444 GCancellable *cancellable, 445 GAsyncReadyCallback callback, 446 gpointer user_data); 447 gboolean e_cal_client_receive_objects_finish 448 (ECalClient *client, 449 GAsyncResult *result, 450 GError **error); 451 gboolean e_cal_client_receive_objects_sync 452 (ECalClient *client, 453 ICalComponent *icalcomp, 454 ECalOperationFlags opflags, 455 GCancellable *cancellable, 456 GError **error); 457 void e_cal_client_send_objects (ECalClient *client, 458 ICalComponent *icalcomp, 459 ECalOperationFlags opflags, 460 GCancellable *cancellable, 461 GAsyncReadyCallback callback, 462 gpointer user_data); 463 gboolean e_cal_client_send_objects_finish 464 (ECalClient *client, 465 GAsyncResult *result, 466 GSList **out_users, /* gchar * */ 467 ICalComponent **out_modified_icalcomp, 468 GError **error); 469 gboolean e_cal_client_send_objects_sync (ECalClient *client, 470 ICalComponent *icalcomp, 471 ECalOperationFlags opflags, 472 GSList **out_users, /* gchar * */ 473 ICalComponent **out_modified_icalcomp, 474 GCancellable *cancellable, 475 GError **error); 476 void e_cal_client_get_attachment_uris 477 (ECalClient *client, 478 const gchar *uid, 479 const gchar *rid, 480 GCancellable *cancellable, 481 GAsyncReadyCallback callback, 482 gpointer user_data); 483 gboolean e_cal_client_get_attachment_uris_finish 484 (ECalClient *client, 485 GAsyncResult *result, 486 GSList **out_attachment_uris, /* gchar * */ 487 GError **error); 488 gboolean e_cal_client_get_attachment_uris_sync 489 (ECalClient *client, 490 const gchar *uid, 491 const gchar *rid, 492 GSList **out_attachment_uris, /* gchar * */ 493 GCancellable *cancellable, 494 GError **error); 495 void e_cal_client_discard_alarm (ECalClient *client, 496 const gchar *uid, 497 const gchar *rid, 498 const gchar *auid, 499 ECalOperationFlags opflags, 500 GCancellable *cancellable, 501 GAsyncReadyCallback callback, 502 gpointer user_data); 503 gboolean e_cal_client_discard_alarm_finish 504 (ECalClient *client, 505 GAsyncResult *result, 506 GError **error); 507 gboolean e_cal_client_discard_alarm_sync (ECalClient *client, 508 const gchar *uid, 509 const gchar *rid, 510 const gchar *auid, 511 ECalOperationFlags opflags, 512 GCancellable *cancellable, 513 GError **error); 514 void e_cal_client_get_view (ECalClient *client, 515 const gchar *sexp, 516 GCancellable *cancellable, 517 GAsyncReadyCallback callback, 518 gpointer user_data); 519 gboolean e_cal_client_get_view_finish (ECalClient *client, 520 GAsyncResult *result, 521 ECalClientView **out_view, 522 GError **error); 523 gboolean e_cal_client_get_view_sync (ECalClient *client, 524 const gchar *sexp, 525 ECalClientView **out_view, 526 GCancellable *cancellable, 527 GError **error); 528 void e_cal_client_get_timezone (ECalClient *client, 529 const gchar *tzid, 530 GCancellable *cancellable, 531 GAsyncReadyCallback callback, 532 gpointer user_data); 533 gboolean e_cal_client_get_timezone_finish 534 (ECalClient *client, 535 GAsyncResult *result, 536 ICalTimezone **out_zone, 537 GError **error); 538 gboolean e_cal_client_get_timezone_sync (ECalClient *client, 539 const gchar *tzid, 540 ICalTimezone **out_zone, 541 GCancellable *cancellable, 542 GError **error); 543 void e_cal_client_add_timezone (ECalClient *client, 544 ICalTimezone *zone, 545 GCancellable *cancellable, 546 GAsyncReadyCallback callback, 547 gpointer user_data); 548 gboolean e_cal_client_add_timezone_finish 549 (ECalClient *client, 550 GAsyncResult *result, 551 GError **error); 552 gboolean e_cal_client_add_timezone_sync (ECalClient *client, 553 ICalTimezone *zone, 554 GCancellable *cancellable, 555 GError **error); 556 557 G_END_DECLS 558 559 #endif /* E_CAL_CLIENT_H */ 560