Re: [Evolution-hackers] Rethinking account management



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'



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]