Hi,
My name is Martin Maher and I work for Sun Microsystems in Dublin,
Ireland. I am part of group which is very interested in working with
Mozilla to enchance Mozilla's address book in the corporate/enterprise
arena.
Primarily we want to ensure that the Mozilla address
book can integrate with Star Portal and OpenOffice.
We have a identified a number of requirements:
o Ensure Mozilla can access multiple dynamic
address book data sources.
o LDAP access is an address data source.
o OpenOffice/Mozilla may access system address
books; Outlook and Evolution (Gnome) data sources.
o Mozilla may access address books of StarPortal
users via LDAP protocol using iPlanet and
OpenLDAP servers.
o Server based queries for searching and
auto-completion. Caching of queries should
be possible.
The existing address book infrastructure does not appear
to be flexible enough to support the above. Thus we
would like to change/enhance it. However, we do not
have that much experience with the Mozilla code so any
input in these matters would be great.
We have designed a rough 'naive' interface which attempts
to abstract address data sources (with query) but realise
it has a long way to go to meet existing functionality.
Looking forward to a good discussion of this subject...
Regards,
Martin
/*
* This a basic idl describing the mozilla interface to the
* Evolution/Outlook/OpenOffice/StarOffice/Kitchen Sink
*
*
* Contributors : Martin Maher, Paul Sandoz
* Last modified : 04/12/00
*/
#include "nsISupports.idl"
#include "nsIEnumerator.idl"
// Each Card is made up of a series of vcard entries
// e.g. name -> Work Telephone
// descriptor -> TEL;WORK;MSG
interface nsICardProperty
{
attribute string name;
attribute string descriptors;
};
// Don't foget the value e.g. (01) 123-4567
interface nsICardValue : nsICardProperty
{
attribute string value;
};
interface nsICardValueSet
{
readonly attribute long CardID;
attribute nsISimpleEnumerator cards; // contains vCardValue
interfaces
};
interface nsICardResultSet
{
readonly attribute long AddrBookID;
attribute nsISimpleEnumerator cardResults; // contains
vCardResultSet interafaces
};
interface nsIAddrBookQueryable
{
// properties contains vCarProperty interfaces
// valuesScope contains vCardValue interfaces
// resultSet contains vCardResultSet or AddrBookResultSet
boolean nsIQueryAddrBook( in nsISimpleEnumerator
properties,
in nsISimpleEnumerator valuesScope,
in long MaxCardsFound,
out nsISimpleEnumerator resultSet);
};
interface nsICard
{
readonly attribute long CardID;
boolean AddProperty(in nsICardValue value);
boolean RemoveProperty(in nsICardProperty property);
void GetProperty (in nsICardProperty property, out nsICardValue
value);
void GetProperties ( in nsISimpleEnumerator properties,
out nsISimpleEnumerator values);
nsISimpleEnumerator GetPropertyEnumeration ();
};
interface nsIAddrBook : nsIAddrBookQueryable
{
readonly attribute long AddrBookID;
void GetCard (in long CardID, out nsICard card);
boolean DeleteCard (in nsICard card);
boolean AddCard (in nsICard newcard);
nsISimpleEnumerator GetCardEnumeration ();
};
interface nsIAddrDataSource : nsIAddrBookQueryable
{
void GetAddrBook (in long AddrBookID, out nsIAddrBook abook);
boolean DeleteAddrBook (in nsIAddrBook abook);
boolean CreateAddrBook (in string addrBookName, out nsIAddrBook
newbook);
nsISimpleEnumerator GetAddrBookEnumeration ();
};
interface nsIAddrBookListener
{
// Return a reference to the address book that was changed and the vcard
id where
// the changes were made.
void OnAddrBookChanged( in nsIAddrBook AddrBookChanged,
in nsICard ModifiedCard);
};
interface nsIAddrBookListenable
{
void AddListener(in nsIAddrBookListener aListener);
void RemoveListener(in nsIAddrBookListener aListener);
};
interface nsIAddrDataSourceDriver : nsIAddrBookListenable
{
string getURI ();
nsIAddrDataSource ConnectAddrBook(in string username, in string
passwd);
};
interface nsQueryManager
{
boolean CreateQuery( in nsISimpleEnumerator ListofAddrBooks,
out nsISimpleEnumerator ResultSetList);
};
interface nsIAddrBookManager
{
boolean OpenAddrBook(out nsIAddrDataSourceDriver NewAddrBook);
boolean CloseAddrBook(in nsIAddrDataSourceDriver CloseAddrBook);
};
Sent via Deja.com
http://www.deja.com/