ESourceCamel

ESourceCamel — ESource extension for CamelSettings

Synopsis

#include <libedataserver/libedataserver.h>

struct              ESourceCamel;
void                e_source_camel_register_types       (void);
GType               e_source_camel_generate_subtype     (const gchar *protocol,
                                                         GType settings_type);
CamelSettings *     e_source_camel_get_settings         (ESourceCamel *extension);
const gchar *       e_source_camel_get_type_name        (const gchar *protocol);
const gchar *       e_source_camel_get_extension_name   (const gchar *protocol);
void                e_source_camel_configure_service    (ESource *source,
                                                         CamelService *service);

Object Hierarchy

  GObject
   +----ESourceExtension
         +----ESourceCamel

Properties

  "settings"                 CamelSettings*        : Read

Description

ESourceCamel itself is abstract. Its sole function is to bridge GObject properties from the CamelSettings framework to the ESource framework. It does this by procedurally registering an ESourceCamel subtype for each available CamelService subtype, and then registering GObject properties to proxy the properties in the corresponding CamelSettings subtype. The ESourceCamel owns an instance of the appropriate CamelSettings subtype, and redirects all get/set operations on its own GObject properties to its CamelSettings instance. The CamelSettings instance, now fully initialized from a key file, can then be inserted into a new CamelService instance using camel_service_set_settings().

Ultimately, this is all just implementation detail for glueing two unrelated class hierarchies together. If you need to access provider specific settings, use the CamelSettings API, not this.

Details

struct ESourceCamel

struct ESourceCamel;

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

Since 3.6


e_source_camel_register_types ()

void                e_source_camel_register_types       (void);

Creates and registers subclasses of ESourceCamel for each available CamelProvider. This function should be called once during application or library initialization.

Since 3.6


e_source_camel_generate_subtype ()

GType               e_source_camel_generate_subtype     (const gchar *protocol,
                                                         GType settings_type);

Generates a custom ESourceCamel subtype for protocol. Instances of the new subtype will contain a CamelSettings instance of type settings_type.

This function is called as part of e_source_camel_register_types() and should not be called explicitly, except by some groupware packages that need to share package-specific settings across their mail, calendar and address book components. In that case the groupware package may choose to subclass CamelSettings rather than ESourceExtension since libcamel is the lowest common denominator across all components. This function provides a way for the calendar and address book components of such a package to generate an ESourceCamel subtype for its CamelSettings subtype without having to load all available CamelProvider modules.

protocol :

a CamelProvider protocol

settings_type :

a subtype of CamelSettings

Returns :

the GType of the generated ESourceCamel subtype

Since 3.6


e_source_camel_get_settings ()

CamelSettings *     e_source_camel_get_settings         (ESourceCamel *extension);

Returns extension's "settings" instance, pre-configured from the ESource to which extension belongs. Changes to the ESource will automatically propagate to the "settings" instance and vice versa.

This is essentially the glue that binds ESource to CamelService. See e_source_camel_configure_service().

extension :

an ESourceCamel

Returns :

a configured CamelSettings instance

Since 3.6


e_source_camel_get_type_name ()

const gchar *       e_source_camel_get_type_name        (const gchar *protocol);

Returns the GType name of the registered ESourceCamel subtype for protocol.

For example, given a protocol named "imap" the function would return "ESourceCamelImap".

protocol :

a CamelProvider protocol

Returns :

the ESourceCamel type name for protocol

Since 3.6


e_source_camel_get_extension_name ()

const gchar *       e_source_camel_get_extension_name   (const gchar *protocol);

Returns the extension name for the ESourceCamel subtype for protocol. The extension name can then be passed to e_source_get_extension() to obtain an instance of the ESourceCamel subtype.

For example, given a protocol named "imap" the function would return "Imap Backend".

protocol :

a CamelProvider protocol

Returns :

the ESourceCamel extension name for protocol

Since 3.6


e_source_camel_configure_service ()

void                e_source_camel_configure_service    (ESource *source,
                                                         CamelService *service);

This function essentially glues together source and serivce so their configuration settings stay synchronized. The glue itself is a shared CamelSettings instance.

Call this function immediately after creating a new CamelService with camel_session_add_service().

source :

an ESource

service :

a CamelService

Since 3.6

Property Details

The "settings" property

  "settings"                 CamelSettings*        : Read

The CamelSettings instance being proxied.