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