## ECalBackend ECalBackend — Base class for calendar/tasks backend implementations. |

## Synopsis

    ESource *           e_cal_backend_get_source            (ECalBackend *backend);
    const gchar *       e_cal_backend_get_uri               (ECalBackend *backend);
    icalcomponent_kind  e_cal_backend_get_kind              (ECalBackend *backend);
    void                e_cal_backend_add_client            (ECalBackend *backend,
                                                             EDataCal *cal);
    void                e_cal_backend_remove_client         (ECalBackend *backend,
                                                             EDataCal *cal);
    void                e_cal_backend_add_query             (ECalBackend *backend,
                                                             EDataCalView *query);
    EList *             e_cal_backend_get_queries           (ECalBackend *backend);
    void                e_cal_backend_remove_query          (ECalBackend *backend,
                                                             EDataCalView *query);
    void                e_cal_backend_is_read_only          (ECalBackend *backend,
                                                             EDataCal *cal);
    void                e_cal_backend_get_cal_address       (ECalBackend *backend,
                                                             EDataCal *cal);
    void                e_cal_backend_get_alarm_email_address
                                                            (ECalBackend *backend,
                                                             EDataCal *cal);
    void                e_cal_backend_get_ldap_attribute    (ECalBackend *backend,
                                                             EDataCal *cal);
    void                e_cal_backend_get_static_capabilities
                                                            (ECalBackend *backend,
                                                             EDataCal *cal);
    void                e_cal_backend_open                  (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             gboolean only_if_exists,
                                                             const gchar *username,
                                                             const gchar *password);
    void                e_cal_backend_remove                (ECalBackend *backend,
                                                             EDataCal *cal);
    void                e_cal_backend_create_object         (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *calobj);
    void                e_cal_backend_modify_object         (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *calobj,
                                                             CalObjModType mod);
    void                e_cal_backend_remove_object         (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *uid,
                                                             const gchar *rid,
                                                             CalObjModType mod);
    void                e_cal_backend_discard_alarm         (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *uid,
                                                             const gchar *auid);
    void                e_cal_backend_receive_objects       (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *calobj);
    void                e_cal_backend_send_objects          (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *calobj);
    void                e_cal_backend_get_default_object    (ECalBackend *backend,
                                                             EDataCal *cal);
    void                e_cal_backend_get_object            (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *uid,
                                                             const gchar *rid);
    void                e_cal_backend_get_object_list       (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *sexp);
    void                e_cal_backend_get_attachment_list   (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *uid,
                                                             const gchar *rid);
    gboolean            e_cal_backend_is_loaded             (ECalBackend *backend);
    void                e_cal_backend_start_query           (ECalBackend *backend,
                                                             EDataCalView *query);
    CalMode             e_cal_backend_get_mode              (ECalBackend *backend);
    void                e_cal_backend_set_mode              (ECalBackend *backend,
                                                             CalMode mode);
    void                e_cal_backend_get_timezone          (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *tzid);
    void                e_cal_backend_add_timezone          (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *object);
    void                e_cal_backend_set_default_timezone  (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *tzid);
    void                e_cal_backend_set_default_zone      (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *tzobj);
    void                e_cal_backend_get_changes           (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *change_id);
    void                e_cal_backend_get_free_busy         (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             GList *users,
                                                             time_t start,
                                                             time_t end);
    icaltimezone*       e_cal_backend_internal_get_default_timezone
                                                            (ECalBackend *backend);
    icaltimezone*       e_cal_backend_internal_get_timezone (ECalBackend *backend,
                                                             const gchar *tzid);
    void                e_cal_backend_set_notification_proxy
                                                            (ECalBackend *backend,
                                                             ECalBackend *proxy);
    void                e_cal_backend_notify_object_created (ECalBackend *backend,
                                                             const gchar *calobj);
    void                e_cal_backend_notify_object_modified
                                                            (ECalBackend *backend,
                                                             const gchar *old_object,
                                                             const gchar *object);
    void                e_cal_backend_notify_object_removed (ECalBackend *backend,
                                                             const ECalComponentId *id,
                                                             const gchar *old_object,
                                                             const gchar *object);
    void                e_cal_backend_notify_mode           (ECalBackend *backend,
                                                             GNOME_Evolution_Calendar_CalListener_SetModeStatus status,
                                                             GNOME_Evolution_Calendar_CalMode mode);
    void                e_cal_backend_notify_auth_required  (ECalBackend *backend);
    void                e_cal_backend_notify_error          (ECalBackend *backend,
                                                             const gchar *message);
    void                e_cal_backend_notify_view_done      (ECalBackend *backend,
                                                             GNOME_Evolution_Calendar_CallStatus status);
    void                e_cal_backend_notify_view_progress_start
                                                            (ECalBackend *backend);
    void                e_cal_backend_notify_view_progress  (ECalBackend *backend,
                                                             const gchar *message,
                                                             gint percent);
    void                e_cal_backend_notify_readonly       (ECalBackend *backend,
                                                             gboolean read_only);
    void                e_cal_backend_notify_cal_address    (ECalBackend *backend,
                                                             gchar *address);
    void                e_cal_backend_notify_objects_added  (ECalBackend *backend,
                                                             EDataCalView *query,
                                                             const GList *objects);
    void                e_cal_backend_notify_objects_removed
                                                            (ECalBackend *backend,
                                                             EDataCalView *query,
                                                             const GList *ids);
    void                e_cal_backend_notify_objects_modified
                                                            (ECalBackend *backend,
                                                             EDataCalView *query,
                                                             const GList *objects);
    void                e_cal_backend_empty_cache           (ECalBackend *backend,
                                                             struct _ECalBackendCache *cache);

## Description

## Details

### e_cal_backend_get_source ()

    ESource *           e_cal_backend_get_source            (ECalBackend *backend);

Gets the ESource associated with the given backend.

`backend` : | An ECalBackend object.
Returns : | The ESource for the backend.

### e_cal_backend_get_uri ()

    const gchar *       e_cal_backend_get_uri               (ECalBackend *backend);

Queries the URI of a calendar backend, which must already have an open calendar.

`backend` : | A calendar backend.
Returns : | The URI where the calendar is stored.

### e_cal_backend_get_kind ()

    icalcomponent_kind  e_cal_backend_get_kind              (ECalBackend *backend);

Gets the kind of components the given backend stores.

`backend` : | An ECalBackend object.
Returns : | The kind of components for this backend.

### e_cal_backend_add_client ()

    void                e_cal_backend_add_client            (ECalBackend *backend,
                                                             EDataCal *cal);

Adds a new client to the given backend. For any event, the backend will notify all clients added via this function.

`backend` : | An ECalBackend object.
`cal` : | An EDataCal object.

### e_cal_backend_remove_client ()

    void                e_cal_backend_remove_client         (ECalBackend *backend,
                                                             EDataCal *cal);

Removes a client from the list of connected clients to the given backend.

`backend` : | An ECalBackend object.
`cal` : | An EDataCal object.

### e_cal_backend_add_query ()

    void                e_cal_backend_add_query             (ECalBackend *backend,
                                                             EDataCalView *query);

Adds a query to the list of live queries being run by the given backend. Doing so means that any listener on the query will get notified of any change that affect the live query.

`backend` : | An ECalBackend object.
`query` : | An EDataCalView object.

### e_cal_backend_get_queries ()

    EList *             e_cal_backend_get_queries           (ECalBackend *backend);

Gets the list of live queries being run on the given backend.

`backend` : | An ECalBackend object.
Returns : | The list of live queries.

### e_cal_backend_remove_query ()

    void                e_cal_backend_remove_query          (ECalBackend *backend,
                                                             EDataCalView *query);

Removes query from the list of live queries for the backend.

`backend` : | An ECalBackend object.
`query` : | An EDataCalView object, previously added with `ref` e_cal_backend_add_query.

### e_cal_backend_is_read_only ()

    void                e_cal_backend_is_read_only          (ECalBackend *backend,
                                                             EDataCal *cal);

Queries whether a calendar backend is read only or not.

`backend` : | A calendar backend.
`cal` : | An EDataCal object.

### e_cal_backend_get_cal_address ()

    void                e_cal_backend_get_cal_address       (ECalBackend *backend,
                                                             EDataCal *cal);

Queries the cal address associated with a calendar backend, which must already have an open calendar.

`backend` : | A calendar backend.
`cal` : |

### e_cal_backend_get_alarm_email_address ()

    void                e_cal_backend_get_alarm_email_address
                                                            (ECalBackend *backend,
                                                             EDataCal *cal);

Calls the get_static_capabilities method on the given backend.

`backend` : | An ECalBackend object.
`cal` : | An EDataCal object.

### e_cal_backend_get_ldap_attribute ()

    void                e_cal_backend_get_ldap_attribute    (ECalBackend *backend,
                                                             EDataCal *cal);

`backend` : |
`cal` : |

### e_cal_backend_get_static_capabilities ()

    void                e_cal_backend_get_static_capabilities
                                                            (ECalBackend *backend,
                                                             EDataCal *cal);

`backend` : |
`cal` : |

### e_cal_backend_open ()

    void                e_cal_backend_open                  (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             gboolean only_if_exists,
                                                             const gchar *username,
                                                             const gchar *password);

Opens a calendar backend with data from a calendar stored at the specified URI.

`backend` : | A calendar backend.
`cal` : | An EDataCal object.
`only_if_exists` : | Whether the calendar should be opened only if it already exists. If FALSE, a new calendar will be created when the specified `uri` does not exist.
`username` : | User name to use for authentication (if needed).
`password` : | Password for `username`.

### e_cal_backend_remove ()

    void                e_cal_backend_remove                (ECalBackend *backend,
                                                             EDataCal *cal);

Removes the calendar being accessed by the given backend.

`backend` : | A calendar backend.
`cal` : | An EDataCal object.

### e_cal_backend_create_object ()

    void                e_cal_backend_create_object         (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *calobj);

Calls the create_object method on the given backend.

`backend` : | A calendar backend.
`cal` : | An EDataCal object.
`calobj` : | The object to create.

### e_cal_backend_modify_object ()

    void                e_cal_backend_modify_object         (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *calobj,
                                                             CalObjModType mod);

Calls the modify_object method on the given backend.

`backend` : | A calendar backend.
`cal` : | An EDataCal object.
`calobj` : | Object to be modified.
`mod` : | Type of modification.

### e_cal_backend_remove_object ()

    void                e_cal_backend_remove_object         (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *uid,
                                                             const gchar *rid,
                                                             CalObjModType mod);

Removes an object in a calendar backend. The backend will notify all of its clients about the change.

`backend` : | A calendar backend.
`cal` : | An EDataCal object.
`uid` : | Unique identifier of the object to remove.
`rid` : | A recurrence ID.
`mod` : | Type of removal.

### e_cal_backend_discard_alarm ()

    void                e_cal_backend_discard_alarm         (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *uid,
                                                             const gchar *auid);

Discards an alarm from the given component. This allows the specific backend to do whatever is needed to really discard the alarm.

`backend` : | A calendar backend.
`cal` : | An EDataCal object.
`uid` : | UID of the component to discard the alarm from.
`auid` : | Alarm ID.

### e_cal_backend_receive_objects ()

    void                e_cal_backend_receive_objects       (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *calobj);

Calls the receive_objects method on the given backend.

`backend` : | A calendar backend.
`cal` : | An EDataCal object.
`calobj` : | iCalendar object.

### e_cal_backend_send_objects ()

    void                e_cal_backend_send_objects          (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *calobj);

Calls the send_objects method on the given backend.

`backend` : | A calendar backend.
`cal` : | An EDataCal object.
`calobj` : | iCalendar object to be sent.

### e_cal_backend_get_default_object ()

    void                e_cal_backend_get_default_object    (ECalBackend *backend,
                                                             EDataCal *cal);

Calls the get_default_object method on the given backend.

`backend` : | A calendar backend.
`cal` : | An EDataCal object.

### e_cal_backend_get_object ()

    void                e_cal_backend_get_object            (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *uid,
                                                             const gchar *rid);

Queries a calendar backend for a calendar object based on its unique identifier and its recurrence ID (if a recurrent appointment).

`backend` : | A calendar backend.
`cal` : | An EDataCal object.
`uid` : | Unique identifier for a calendar object.
`rid` : | ID for the object's recurrence to get.

### e_cal_backend_get_object_list ()

    void                e_cal_backend_get_object_list       (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *sexp);

Calls the get_object_list method on the given backend.

`backend` : | A calendar backend.
`cal` : | An EDataCal object.
`sexp` : | Expression to search for.

### e_cal_backend_get_attachment_list ()

    void                e_cal_backend_get_attachment_list   (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *uid,
                                                             const gchar *rid);

Queries a calendar backend for attachments present in a calendar object based on its unique identifier and its recurrence ID (if a recurrent appointment).

`backend` : | A calendar backend.
`cal` : | An EDataCal object.
`uid` : | Unique identifier for a calendar object.
`rid` : | ID for the object's recurrence to get.

### e_cal_backend_is_loaded ()

    gboolean            e_cal_backend_is_loaded             (ECalBackend *backend);

Queries whether a calendar backend has been loaded yet.

`backend` : | A calendar backend.
Returns : | TRUE if the backend has been loaded with data, FALSE otherwise.

### e_cal_backend_start_query ()

    void                e_cal_backend_start_query           (ECalBackend *backend,
                                                             EDataCalView *query);

Starts a new live query on the given backend.

`backend` : | A calendar backend.
`query` : | The query to be started.

### e_cal_backend_get_mode ()

    CalMode             e_cal_backend_get_mode              (ECalBackend *backend);

Queries whether a calendar backend is connected remotely.

`backend` : | A calendar backend.
Returns : | The current mode the calendar is in

### e_cal_backend_set_mode ()

    void                e_cal_backend_set_mode              (ECalBackend *backend,
                                                             CalMode mode);

Sets the mode of the calendar

`backend` : | A calendar backend
`mode` : | Mode to change to

### e_cal_backend_get_timezone ()

    void                e_cal_backend_get_timezone          (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *tzid);

`backend` : | A calendar backend.
`cal` : | An EDataCal object.
`tzid` : | Unique identifier of a VTIMEZONE object. Note that this must not be NULL.

### e_cal_backend_add_timezone ()

    void                e_cal_backend_add_timezone          (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *object);

Add a timezone object to the given backend.

`backend` : | A calendar backend.
`cal` : | An EDataCal object.
`object` : |

### e_cal_backend_set_default_timezone ()

    void                e_cal_backend_set_default_timezone  (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *tzid);

`backend` : |
`cal` : |
`tzid` : |

### e_cal_backend_set_default_zone ()

    void                e_cal_backend_set_default_zone      (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *tzobj);

Sets the default timezone for the calendar, which is used to resolve DATE and floating DATE-TIME values.

`backend` : | A calendar backend.
`cal` : | An EDataCal object.
`tzobj` : | The timezone object, in a string.

### e_cal_backend_get_changes ()

    void                e_cal_backend_get_changes           (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             const gchar *change_id);

Builds a sequence of objects and the type of change that occurred on them since the last time the give change_id was seen

`backend` : | A calendar backend.
`cal` : | An EDataCal object.
`change_id` : | A unique uid for the callers change list

### e_cal_backend_get_free_busy ()

    void                e_cal_backend_get_free_busy         (ECalBackend *backend,
                                                             EDataCal *cal,
                                                             GList *users,
                                                             time_t start,
                                                             time_t end);

Gets a free/busy object for the given time interval

`backend` : | A calendar backend.
`cal` : | An EDataCal object.
`users` : | List of users to get free/busy information for.
`start` : | Start time for query.
`end` : | End time for query.

### e_cal_backend_internal_get_default_timezone ()

    icaltimezone*       e_cal_backend_internal_get_default_timezone
                                                            (ECalBackend *backend);

Calls the internal_get_default_timezone method on the given backend.

`backend` : | A calendar backend.
Returns : |

### e_cal_backend_internal_get_timezone ()

    icaltimezone*       e_cal_backend_internal_get_timezone (ECalBackend *backend,
                                                             const gchar *tzid);

Calls the internal_get_timezone method on the given backend.

`backend` : | A calendar backend.
`tzid` : | ID of the timezone to get.
Returns : |

### e_cal_backend_set_notification_proxy ()

    void                e_cal_backend_set_notification_proxy
                                                            (ECalBackend *backend,
                                                             ECalBackend *proxy);

Sets the backend that will act as notification proxy for the given backend.

`backend` : | A calendar backend.
`proxy` : | The calendar backend to act as notification proxy.

### e_cal_backend_notify_object_created ()

    void                e_cal_backend_notify_object_created (ECalBackend *backend,
                                                             const gchar *calobj);

Notifies each of the backend's listeners about a new object.

#`e_data_cal_notify_object_created()` calls this for you. You only need to call `e_cal_backend_notify_object_created()` yourself to report objects created by non-EDS clients.

`backend` : | A calendar backend.
`calobj` : | iCalendar representation of new object

### e_cal_backend_notify_object_modified ()

    void                e_cal_backend_notify_object_modified
                                                            (ECalBackend *backend,
                                                             const gchar *old_object,
                                                             const gchar *object);

Notifies each of the backend's listeners about a modified object.

#`e_data_cal_notify_object_modified()` calls this for you. You only need to call `e_cal_backend_notify_object_modified()` yourself to report objects modified by non-EDS clients.

`backend` : | A calendar backend.
`old_object` : | iCalendar representation of the original form of the object
`object` : | iCalendar representation of the new form of the object

### e_cal_backend_notify_object_removed ()

    void                e_cal_backend_notify_object_removed (ECalBackend *backend,
                                                             const ECalComponentId *id,
                                                             const gchar *old_object,
                                                             const gchar *object);

Notifies each of the backend's listeners about a removed object.

`e_data_cal_notify_object_removed()` calls this for you. You only need to call `e_cal_backend_notify_object_removed()` yourself to report objects removed by non-EDS clients.

`backend` : | A calendar backend.
`id` : | the Id of the removed object
`old_object` : | iCalendar representation of the removed object
`object` : |

### e_cal_backend_notify_mode ()

    void                e_cal_backend_notify_mode           (ECalBackend *backend,
                                                             GNOME_Evolution_Calendar_CalListener_SetModeStatus status,
                                                             GNOME_Evolution_Calendar_CalMode mode);

Notifies each of the backend's listeners about the results of a setMode call.

`backend` : | A calendar backend.
`status` : | Status of the mode set
`mode` : | the current mode

### e_cal_backend_notify_auth_required ()

    void                e_cal_backend_notify_auth_required  (ECalBackend *backend);

Notifies each of the backend's listeners that authentication is required to open the calendar.

`backend` : | A calendar backend.

### e_cal_backend_notify_error ()

    void                e_cal_backend_notify_error          (ECalBackend *backend,
                                                             const gchar *message);

Notifies each of the backend's listeners about an error

`backend` : | A calendar backend.
`message` : | Error message

### e_cal_backend_notify_view_done ()

    void                e_cal_backend_notify_view_done      (ECalBackend *backend,
                                                             GNOME_Evolution_Calendar_CallStatus status);

Notifies each of the backend's listeners about the view_done in downloading the items.

`backend` : | A calendar backend.
`status` : | returns the status once the view is fully populated.

### e_cal_backend_notify_view_progress_start ()

    void                e_cal_backend_notify_view_progress_start
                                                            (ECalBackend *backend);

This methods has to be used before e_cal_backend_notify_view_progress. Sets last notified percent value to 0.

`backend` : | A calendar backend.

### e_cal_backend_notify_view_progress ()

    void                e_cal_backend_notify_view_progress  (ECalBackend *backend,
                                                             const gchar *message,
                                                             gint percent);

Notifies each of the backend's listeners about the view_progress in downloading the items.

`backend` : | A calendar backend.
`message` : | the UID of the removed object
`percent` : | percentage of the objects loaded in the view

### e_cal_backend_notify_readonly ()

    void                e_cal_backend_notify_readonly       (ECalBackend *backend,
                                                             gboolean read_only);

`backend` : |
`read_only` : |

### e_cal_backend_notify_cal_address ()

    void                e_cal_backend_notify_cal_address    (ECalBackend *backend,
                                                             gchar *address);

`backend` : |
`address` : |

### e_cal_backend_notify_objects_added ()

    void                e_cal_backend_notify_objects_added  (ECalBackend *backend,
                                                             EDataCalView *query,
                                                             const GList *objects);

`backend` : |
`query` : |
`objects` : |

### e_cal_backend_notify_objects_removed ()

    void                e_cal_backend_notify_objects_removed
                                                            (ECalBackend *backend,
                                                             EDataCalView *query,
                                                             const GList *ids);

`backend` : |
`query` : |
`ids` : |

### e_cal_backend_notify_objects_modified ()

    void                e_cal_backend_notify_objects_modified
                                                            (ECalBackend *backend,
                                                             EDataCalView *query,
                                                             const GList *objects);

`backend` : |
`query` : |
`objects` : |

### e_cal_backend_empty_cache ()

    void                e_cal_backend_empty_cache           (ECalBackend *backend,
                                                             struct _ECalBackendCache *cache);

Empties backend's cache with all notifications and so on, thus all listening will know there is nothing in this backend.

`backend` : | A calendar backend.
`cache` : | Backend's cache to empty.