## ECalBackendStore ECalBackendStore — A helper class for storing calendar components |

## Synopsis

    #include <libedata-cal/libedata-cal.h>

    struct              ECalBackendStore;
    struct              ECalBackendStoreClass;
    ECalBackendStore *  e_cal_backend_store_new             (const gchar *path,
                                                             ETimezoneCache *cache);
    const gchar *       e_cal_backend_store_get_path        (ECalBackendStore *store);
    ETimezoneCache *    e_cal_backend_store_ref_timezone_cache
                                                            (ECalBackendStore *store);
    gboolean            e_cal_backend_store_load            (ECalBackendStore *store);
    gboolean            e_cal_backend_store_is_loaded       (ECalBackendStore *store);
    gboolean            e_cal_backend_store_clean           (ECalBackendStore *store);
    ECalComponent *     e_cal_backend_store_get_component   (ECalBackendStore *store,
                                                             const gchar *uid,
                                                             const gchar *rid);
    gboolean            e_cal_backend_store_put_component_with_time_range
                                                            (ECalBackendStore *store,
                                                             ECalComponent *comp,
                                                             time_t occurence_start,
                                                             time_t occurence_end);
    gboolean            e_cal_backend_store_put_component   (ECalBackendStore *store,
                                                             ECalComponent *comp);
    gboolean            e_cal_backend_store_remove_component
                                                            (ECalBackendStore *store,
                                                             const gchar *uid,
                                                             const gchar *rid);
    gboolean            e_cal_backend_store_has_component   (ECalBackendStore *store,
                                                             const gchar *uid,
                                                             const gchar *rid);
    const icaltimezone * e_cal_backend_store_get_default_timezone
                                                            (ECalBackendStore *store);
    gboolean            e_cal_backend_store_set_default_timezone
                                                            (ECalBackendStore *store,
                                                             icaltimezone *zone);
    GSList *            e_cal_backend_store_get_components_by_uid
                                                            (ECalBackendStore *store,
                                                             const gchar *uid);
    gchar *             e_cal_backend_store_get_components_by_uid_as_ical_string
                                                            (ECalBackendStore *store,
                                                             const gchar *uid);
    GSList *            e_cal_backend_store_get_components  (ECalBackendStore *store);
    GSList *            e_cal_backend_store_get_components_occuring_in_range
                                                            (ECalBackendStore *store,
                                                             time_t start,
                                                             time_t end);
    GSList *            e_cal_backend_store_get_component_ids
                                                            (ECalBackendStore *store);
    const gchar *       e_cal_backend_store_get_key_value   (ECalBackendStore *store,
                                                             const gchar *key);
    gboolean            e_cal_backend_store_put_key_value   (ECalBackendStore *store,
                                                             const gchar *key,
                                                             const gchar *value);
    void                e_cal_backend_store_thaw_changes    (ECalBackendStore *store);
    void                e_cal_backend_store_freeze_changes  (ECalBackendStore *store);
    void                e_cal_backend_store_interval_tree_add_comp
                                                            (ECalBackendStore *store,
                                                             ECalComponent *comp,
                                                             time_t occurence_start,
                                                             time_t occurence_end);

## Description

This class can be used by backends to store calendar components.

## Details

### struct ECalBackendStore

    struct ECalBackendStore {
    };

Contains only private data that should be read and manipulated using the functions below.

Since 2.28

### struct ECalBackendStoreClass

    struct ECalBackendStoreClass {
    	/* virtual methods */
    	gboolean (*load)			(ECalBackendStore *store);
    	gboolean (*clean)		(ECalBackendStore *store);
    	ECalComponent * (*get_component) (ECalBackendStore *store,
    						 const gchar *uid,
    						 const gchar *rid);
    	gboolean (*put_component) (ECalBackendStore *store,
    						 ECalComponent *comp);
    	gboolean (*remove_component) (ECalBackendStore *store,
    						 const gchar *uid,
    						 const gchar *rid);
    	gboolean (*has_component) (ECalBackendStore *store,
    						 const gchar *uid,
    						 const gchar *rid);
    	GSList * (*get_components_by_uid)(ECalBackendStore *store,
    						 const gchar *uid);
    	GSList * (*get_components) (ECalBackendStore *store);

    	GSList * (*get_component_ids) (ECalBackendStore *store);
    	const icaltimezone *
    			(*get_default_timezone) (ECalBackendStore *store);
    	gboolean (*set_default_timezone) (ECalBackendStore *store,
    						 icaltimezone *zone);
    	void		(*thaw_changes)		(ECalBackendStore *store);
    	void		(*freeze_changes) (ECalBackendStore *store);
    	const gchar * (*get_key_value) (ECalBackendStore *store,
    						 const gchar *key);
    	gboolean (*put_key_value) (ECalBackendStore *store,
    						 const gchar *key,
    						 const gchar *value);
    };

Class structure for the ECalBackendStore class.

`load` () | FIXME: Doxument me
`clean` () | FIXME: Doxument me
`get_component` () | FIXME: Doxument me
`put_component` () | FIXME: Doxument me
`remove_component` () | FIXME: Doxument me
`has_component` () | FIXME: Doxument me
`get_components_by_uid` () | FIXME: Doxument me
`get_components` () | FIXME: Doxument me
`get_component_ids` () | FIXME: Doxument me
`get_default_timezone` () | FIXME: Doxument me
`set_default_timezone` () | FIXME: Doxument me
`thaw_changes` () | FIXME: Doxument me
`freeze_changes` () | FIXME: Doxument me
`get_key_value` () | FIXME: Doxument me
`put_key_value` () | FIXME: Doxument me

Since 2.28

### e_cal_backend_store_new ()

    ECalBackendStore *  e_cal_backend_store_new             (const gchar *path,
                                                             ETimezoneCache *cache);

Creates a new ECalBackendStore from `path` and `cache`.

`path` : | the directory for the store file
`cache` : | an ETimezoneCache
Returns : | a new ECalBackendStore

Since 3.8

### e_cal_backend_store_get_path ()

    const gchar *       e_cal_backend_store_get_path        (ECalBackendStore *store);

`store` : | an ECalBackendStore

Since 2.28

### e_cal_backend_store_ref_timezone_cache ()

    ETimezoneCache *    e_cal_backend_store_ref_timezone_cache
                                                            (ECalBackendStore *store);

Returns the ETimezoneCache passed to `e_cal_backend_store_new()`.

The returned ETimezoneCache is referenced for thread-safety and must be unreferenced with `g_object_unref()` when finished with it.

`store` : | an ECalBackendStore
Returns : | an ETimezoneCache

Since 3.8

### e_cal_backend_store_load ()

    gboolean            e_cal_backend_store_load            (ECalBackendStore *store);

`store` : | an ECalBackendStore

Since 2.28

### e_cal_backend_store_is_loaded ()

    gboolean            e_cal_backend_store_is_loaded       (ECalBackendStore *store);

### e_cal_backend_store_clean ()

    gboolean            e_cal_backend_store_clean           (ECalBackendStore *store);

`store` : | an ECalBackendStore

Since 2.28

### e_cal_backend_store_get_component ()

    ECalComponent *     e_cal_backend_store_get_component   (ECalBackendStore *store,
                                                             const gchar *uid,
                                                             const gchar *rid);

Fetches a component by `uid` and `rid`

`store` : | an ECalBackendStore
`uid` : | the uid of the component to fetch
`rid` : | the recurrence id of the component to fetch
Returns : | An ECalComponent

Since 2.28

### e_cal_backend_store_put_component_with_time_range ()

    gboolean            e_cal_backend_store_put_component_with_time_range
                                                            (ECalBackendStore *store,
                                                             ECalComponent *comp,
                                                             time_t occurence_start,
                                                             time_t occurence_end);

`store` : | an ECalBackendStore
`comp` : | the ECalComonent to add
`occurence_start` : | start time of this component
`occurence_end` : | end time of this component
Returns : | whether `comp` was successfully added

Since 2.32

### e_cal_backend_store_put_component ()

    gboolean            e_cal_backend_store_put_component   (ECalBackendStore *store,
                                                             ECalComponent *comp);

`store` : | an ECalBackendStore
`comp` : | the ECalComonent to add
Returns : | whether `comp` was successfully added

Since 2.28

### e_cal_backend_store_remove_component ()

    gboolean            e_cal_backend_store_remove_component
                                                            (ECalBackendStore *store,
                                                             const gchar *uid,
                                                             const gchar *rid);

`store` : | an ECalBackendStore
`uid` : | the uid of the component to remove
`rid` : | the recurrence id of the component to remove
Returns : | whether the component was successfully removed

Since 2.28

### e_cal_backend_store_has_component ()

    gboolean            e_cal_backend_store_has_component   (ECalBackendStore *store,
                                                             const gchar *uid,
                                                             const gchar *rid);

`store` : | an ECalBackendStore
`uid` : | the uid of the component to check
`rid` : | the recurrence id of the component to check
Returns : | Whether there was a component for `uid` and `rid`

Since 2.28

### e_cal_backend_store_get_default_timezone ()

    const icaltimezone * e_cal_backend_store_get_default_timezone
                                                            (ECalBackendStore *store);

Fetch the default timezone

`store` : | an ECalBackendStore
Returns : | The default timezone. [transfer none]

Since 2.28

### e_cal_backend_store_set_default_timezone ()

    gboolean            e_cal_backend_store_set_default_timezone
                                                            (ECalBackendStore *store,
                                                             icaltimezone *zone);

`store` : | an ECalBackendStore
`zone` : | the timezone to set
Returns : | whether the timezone was successfully set

Since 2.28

### e_cal_backend_store_get_components_by_uid ()

    GSList *            e_cal_backend_store_get_components_by_uid
                                                            (ECalBackendStore *store,
                                                             const gchar *uid);

`store` : | an ECalBackendStore
`uid` : | the `uid` of the components to fetch
Returns : | a list of components matching `uid`

Since 2.28

### e_cal_backend_store_get_components_by_uid_as_ical_string ()

    gchar *             e_cal_backend_store_get_components_by_uid_as_ical_string
                                                            (ECalBackendStore *store,
                                                             const gchar *uid);

`store` : | an ECalBackendStore
`uid` : | a component UID
Returns : | Newly allocated ical string containing all instances with given `uid`. Free returned pointer with `g_free()`, when no longer needed.

Since 3.10

### e_cal_backend_store_get_components ()

    GSList *            e_cal_backend_store_get_components  (ECalBackendStore *store);

`store` : | an ECalBackendStore
Returns : | the list of components in `store`

Since 2.28

### e_cal_backend_store_get_components_occuring_in_range ()

    GSList *            e_cal_backend_store_get_components_occuring_in_range
                                                            (ECalBackendStore *store,
                                                             time_t start,
                                                             time_t end);

Retrieves a list of components stored in the store, that are occuring in time range [start, end].

`store` : | An ECalBackendStore object.
`start` : | Start time
`end` : | End time
Returns : | A list of the components. Each item in the list is an ECalComponent, which should be freed when no longer needed. [transfer full]

Since 2.32

### e_cal_backend_store_get_component_ids ()

    GSList *            e_cal_backend_store_get_component_ids
                                                            (ECalBackendStore *store);

`store` : | an ECalBackendStore

Since 2.28

### e_cal_backend_store_get_key_value ()

    const gchar *       e_cal_backend_store_get_key_value   (ECalBackendStore *store,
                                                             const gchar *key);

`store` : | an ECalBackendStore
`key` : | the key for the value to fetch
Returns : | The value matching `key`. [transfer none]

Since 2.28

### e_cal_backend_store_put_key_value ()

    gboolean            e_cal_backend_store_put_key_value   (ECalBackendStore *store,
                                                             const gchar *key,
                                                             const gchar *value);

`store` : | an ECalBackendStore
`key` : | the key for the value to set
`value` : | the value to set for `key`
Returns : | whether `value` was successfully set for `key`

Since 2.28

### e_cal_backend_store_thaw_changes ()

    void                e_cal_backend_store_thaw_changes    (ECalBackendStore *store);

`store` : | an ECalBackendStore

Since 2.28

### e_cal_backend_store_freeze_changes ()

    void                e_cal_backend_store_freeze_changes  (ECalBackendStore *store);

`store` : | an ECalBackendStore

Since 2.28

### e_cal_backend_store_interval_tree_add_comp ()

    void                e_cal_backend_store_interval_tree_add_comp
                                                            (ECalBackendStore *store,
                                                             ECalComponent *comp,
                                                             time_t occurence_start,
                                                             time_t occurence_end);

`store` : | an ECalBackendStore
`comp` : | the ECalComponent to add
`occurence_start` : | start time for `comp`
`occurence_end` : | end time for `comp`

Since 2.32