More brain dumping so this is all out in the open.

Since I've been blathering on about this new ESource API and these
"extension" things but haven't actually posted the API, I thought I
should do so.

Also attached are my notes for the GSettings schemas for these various
ESourceExtension subclasses.  Each subclass is really nothing more than
a thin wrapper for GSettings keys from a particular schema.  More detail
about these later -- I'm still tweaking them.


ESource
=======

Properties:     "backend"       : gchararray    (read/write)
                "file"          : GFile *       (construct-only)
                "name"          : gchararray    (read/write)
                "settings"      : GSettings *   (read-only)
                "uid"           : gchararray    (read-only)

Signals:        void (*changed) (ESource *source);

Functions:

GType           e_source_get_type               (void) G_GNUC_CONST;
ESource *       e_source_new                    (GFile *file,
                                                 GError **error);
guint           e_source_hash                   (ESource *source);
gboolean        e_source_equal                  (ESource *source1,
                                                 ESource *source2);
void            e_source_changed                (ESource *source);
const gchar *   e_source_get_uid                (ESource *source);
GFile *         e_source_get_file               (ESource *source);
GNode *         e_source_get_node               (ESource *source);
const gchar *   e_source_get_name               (ESource *source);
void            e_source_set_name               (ESource *source,
                                                 const gchar *name);
const gchar *   e_source_get_backend            (ESource *source);
void            e_source_set_backend            (ESource *source,
                                                 const gchar *backend);
GSettings *     e_source_get_settings           (ESource *source);
gpointer        e_source_get_extension          (ESource *source,
                                                 const gchar *name);
gboolean        e_source_has_extension          (ESource *source,
                                                 const gchar *name);
gint            e_source_compare_by_name        (ESource *source_a,
                                                 ESource *source_b);


ESourceExtension
================

Properties:     "settings"      : GSettings *   (read-only)
                "source"        : ESource *     (construct-only)

Signals:        (none)

Class Data:     const gchar *name;      /* extension name */
                const gchar *schema;    /* GSettings schema */

Functions:

GType           e_source_extension_get_type     (void) G_GNUC_CONST;
ESource *       e_source_extension_get_source   (ESourceExtension *extension);
GSettings *     e_source_extension_get_settings (ESourceExtension *extension);


ESourceRegistry
===============

Properties:     (none)

Signals:        void    (*load_error)           (ESourceRegistry *registry,
                                                 GFile *file,
                                                 GQuark error_domain,
                                                 gint error_code,
                                                 const gchar *error_message);
                void    (*source_added)         (ESourceRegistry *registry,
                                                 ESource *source);
                void    (*source_changed)       (ESourceRegistry *registry,
                                                 ESource *source);
                void    (*source_removed)       (ESourceRegistry *registry,
                                                 ESource *source);

Functions:

GType           e_source_registry_get_type      (void) G_GNUC_CONST;
ESourceRegistry *
                e_source_registry_new           (void);
ESourceRegistry *
                e_source_registry_get_default   (void);
void            e_source_registry_add_source    (ESourceRegistry *registry);
void            e_source_registry_remove_source (ESourceRegistry *registry);
gboolean        e_source_registry_load_sources  (ESourceRegistry *registry,
                                                 GError **error);
gboolean        e_source_registry_load_directory
                                                (ESourceRegistry *registry,
                                                 const gchar *path,
                                                 GError **error);
ESource *       e_source_registry_load_file     (ESourceRegistry *registry,
                                                 GFile *file,
                                                 GError **error);
ESource *       e_source_registry_lookup_by_file
                                                (ESourceRegistry *registry,
                                                 GFile *file);
ESource *       e_source_registry_lookup_by_uid (ESourceRegistry *registry,
                                                 const gchar *uid);
GList *         e_source_registry_list_sources  (ESourceRegistry *registry,
                                                 const gchar *extension_name);
GNode *         e_source_registry_build_display_tree
                                                (ESourceRegistry *registry,
                                                 const gchar *extension_name);

ESource and Extension Schemas
=============================


==============================================================================
=== General-Purpose Schemas (public, defined in libedataserver)            ===
==============================================================================


Schema: org.gnome.Evolution.Source
------------------------------------------------------------------------------
[source]
------------------------------------------------------------------------------
name                    : 's'
parent                  : 's'
backend                 : 's'


Schema: org.gnome.Evolution.Source.Alarm
------------------------------------------------------------------------------
[extensions/alarm]
------------------------------------------------------------------------------
last-notified           : 's'   (iso8601 timestamp)


Schema: org.gnome.Evolution.Source.Authentication
------------------------------------------------------------------------------
[extensions/authentication]
------------------------------------------------------------------------------
domain                  : 's'   (do we still need this?)
method                  : 's'   ('none' means auth not required)
remember-password       : 'b'
user                    : 's'


Schema: org.gnome.Evolution.Source.Autocomplete
------------------------------------------------------------------------------
[extensions/autocomplete]
------------------------------------------------------------------------------
include-me              : 'b'


Schema: org.gnome.Evolution.Source.Offline
------------------------------------------------------------------------------
[extensions/offline]
------------------------------------------------------------------------------
stay-synchronized       : 'b'   (default=false)


Schema: org.gnome.Evolution.Source.Refresh
------------------------------------------------------------------------------
[extensions/refresh]
------------------------------------------------------------------------------
interval                : 'u'   (units vary by backend, normalize?)


Schema: org.gnome.Evolution.Source.Security
------------------------------------------------------------------------------
[extensions/security]
------------------------------------------------------------------------------
method                  : 's'   ('none', 'tunnel', 'starttls', etc.)


Schema: org.gnome.Evolution.Source.Selectable
------------------------------------------------------------------------------
[extensions/address-book]       [extensions/calendar]
[extensions/memo-list]          [extensions/task-list]
------------------------------------------------------------------------------
color                   : 's'
enabled                 : 'b'
writable                : 'b'


==============================================================================
=== Backend-Specific Schemas (private, defined within backend modules)     ===
==============================================================================


Schema: org.gnome.Evolution.Source.Backend.CalDAV
------------------------------------------------------------------------------
[extensions/caldav-backend]
------------------------------------------------------------------------------
uri                     : 's'


Schema: org.gnome.Evolution.Source.Backend.Contacts
------------------------------------------------------------------------------
[extensions/contacts-backend]
------------------------------------------------------------------------------
include-me              : 'b'


Schema: org.gnome.Evolution.Source.Backend.Local
------------------------------------------------------------------------------
[extensions/local-backend]
------------------------------------------------------------------------------
custom-file             : 's'
custom-file-writable    : 'b'
refresh-type            : {'interval', 'monitor'}


Schema: org.gnome.Evolution.Source.Backend.GroupWise
------------------------------------------------------------------------------
[extensions/groupwise-backend]
------------------------------------------------------------------------------
book-name               : 's'   (book)
delay-delivery          : 's'   (cal)
expiration              : 's'   (cal)
host                    : 's'   (book, cal)
parent-id-name          : 's'   (cal)
port                    : 'q'   (book, cal)
priority                : 's'   (cal)
reply-requested         : 's'   (cal)
return-accepted         : 's'   (cal)
return-completed        : 's'   (cal)
return-declined         : 's'   (cal)
return-opened           : 's'   (cal)
status-tracking         : 's'   (cal)


Schema: org.gnome.Evolution.Source.Backend.LDAP
------------------------------------------------------------------------------
[extensions/ldap-backend]
------------------------------------------------------------------------------
can-browse              : 'b'
host                    : 's'
limit                   : 'u'
port                    : 'q'
root-dn                 : 's'
scope                   : 's'
timeout                 : 'u'


Schema: org.gnome.Evolution.Source.Backend.Weather
------------------------------------------------------------------------------
[extensions/weather-backend]
------------------------------------------------------------------------------
location                : 's'
units                   : 's'


Schema: org.gnome.Evolution.Source.Backend.Webcal
------------------------------------------------------------------------------
[extensions/webcal-backend]
------------------------------------------------------------------------------
uri                     : 's'


Schema: org.gnome.Evolution.Source.Backend.WebDAV
------------------------------------------------------------------------------
[extensions/webdav-backend]
------------------------------------------------------------------------------
avoid-ifmatch           : 'b'
host                    : 's'
path                    : 's'
port                    : 'q'


Schema: org.gnome.Evolution.Source.Backend.VCF
------------------------------------------------------------------------------
[extensions/vcf-backend]
------------------------------------------------------------------------------
path                    : 's'

_______________________________________________
evolution-hackers mailing list
evolution-hackers@gnome.org
To change your list options or unsubscribe, visit ...
http://mail.gnome.org/mailman/listinfo/evolution-hackers

Reply via email to