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/

Reply via email to