ETimezoneCache

ETimezoneCache — An interface for caching time zone data

Synopsis

#include <libecal/libecal.h>

                    ETimezoneCache;
struct              ETimezoneCacheInterface;
void                e_timezone_cache_add_timezone       (ETimezoneCache *cache,
                                                         icaltimezone *zone);
icaltimezone *      e_timezone_cache_get_timezone       (ETimezoneCache *cache,
                                                         const gchar *tzid);
GList *             e_timezone_cache_list_timezones     (ETimezoneCache *cache);

Object Hierarchy

  GInterface
   +----ETimezoneCache

Prerequisites

ETimezoneCache requires GObject.

Known Implementations

ETimezoneCache is implemented by ECalClient.

Signals

  "timezone-added"                                 : Run First

Description

Several classes (both client-side and server-side) cache icaltimezone instances internally, indexed by their TZID strings. Classes which do this should implement ETimezoneCacheInterface to provide a consistent API for accessing time zone data.

Details

ETimezoneCache

typedef struct _ETimezoneCache ETimezoneCache;

Since 3.8


struct ETimezoneCacheInterface

struct ETimezoneCacheInterface {
	GTypeInterface parent_interface;

	/* Methods */
	void		(*add_timezone)		(ETimezoneCache *cache,
						 icaltimezone *zone);
	icaltimezone * (*get_timezone)		(ETimezoneCache *cache,
						 const gchar *tzid);
	GList *		(*list_timezones) (ETimezoneCache *cache);

	/* Signals */
	void		(*timezone_added) (ETimezoneCache *cache,
						 icaltimezone *zone);
};

Since 3.8


e_timezone_cache_add_timezone ()

void                e_timezone_cache_add_timezone       (ETimezoneCache *cache,
                                                         icaltimezone *zone);

Adds a copy of zone to cache and emits a "timezone-added" signal. The cache will use the TZID string returned by icaltimezone_get_tzid() as the lookup key, which can be passed to e_timezone_cache_get_timezone() to obtain zone again.

If the cache already has an icaltimezone with the same TZID string as zone, the cache will remain unchanged to avoid invalidating any icaltimezone pointers which may have already been returned through e_timezone_cache_get_timezone().

cache :

an ETimezoneCache

zone :

an icaltimezone

Since 3.8


e_timezone_cache_get_timezone ()

icaltimezone *      e_timezone_cache_get_timezone       (ETimezoneCache *cache,
                                                         const gchar *tzid);

Obtains an icaltimezone by its TZID string. If no match is found, the function returns NULL. The returned icaltimezone is owned by the cache and should not be modified or freed.

cache :

an ETimezoneCache

tzid :

the TZID of a timezone

Returns :

an icaltimezone, or NULL

Since 3.8


e_timezone_cache_list_timezones ()

GList *             e_timezone_cache_list_timezones     (ETimezoneCache *cache);

Returns a list of icaltimezone instances that were explicitly added to the cache through e_timezone_cache_add_timezone(). In particular, any built-in time zone data that e_timezone_cache_get_timezone() may use to match a TZID string is excluded from the returned list.

Free the returned list with g_list_free(). The list elements are owned by the cache and should not be modified or freed.

cache :

an ETimezoneCache

Returns :

a GList of icaltimezone instances. [transfer container][element-type icaltimezone]

Since 3.8

Signal Details

The "timezone-added" signal

void                user_function                      (ETimezoneCache *cache,
                                                        gpointer        zone,
                                                        gpointer        user_data)      : Run First

Emitted when a new icaltimezone is added to cache.

cache :

the ETimezoneCache which emitted the signal

zone :

the newly-added icaltimezone

user_data :

user data set when the signal handler was connected.