This content covers features introduced in Thunderbird 3
This page contains a list of the interfaces that you'll will most likely hit when writing patches for the Address Book or writing extensions. The complete list of interfaces for the address book can be found here. Address Book examples show how to perform various tasks and provide code snippets.
nsIAbManager is an interface to the main address book manager. It is used to create/delete address book instances and provides other utility functions such as the ability to export address books and add listeners to be notified about updates to address books.
In Thunderbird 2.x/SeaMonkey 1.1 the RDF service was used to get the list of all address books. For Thunderbird 3/SeaMonkey 2, using the RDF interfaces should be considered obsolete, except for using as datasources for tree elements. Instead use
nsIAbManager.directories, although these interfaces aren't finalized, they are more convenient and will be heading towards the Address Book interfaces of the future.
nsIAbItem is the base class for all items that can be in address books. The only exception to this rule is that
nsIAbDirectory items cannot currently be nested.
nsIAbItem contains functions that are generic to all items, at the moment this is one function,
generateName that returns the name of an item suitable for display.
nsIAbCard interface is generally used to represent and manipulate cards in the address book. The User Interfaces calls these cards "Contacts".
nsIAbCard can also represent mailing lists. If this is the case then its
isMailList attribute will be true.
nsIAbCard is typically used in this form when displaying lists of contacts from the address book (e.g. after quick search or in contacts sidebar).
nsIAbCardinto its own interface. That may or may not happen before TB 3, the interested can follow along on bug 464833.
nsIAbCollection represents collections of
nsIAbItem. It contains information on the type of collection (remote, read-only, etc) and provides search functions.
nsIAbCollection, it is intended that there will be another class (probably called
nsIAbGroup) that will hold mailing lists and specific groups of email addresses.
nsIAbDirectory are instances of
nsIAbCollection that are saved in some form, this could be a file on the local disk, within another application or remotely over a network. On the user interface, each
nsIAbDirectory is represented as an "Address Book".
The class contains methods for setting up the address book and for adding, modifying and removing
nsIAbDirectory and Mailing Lists
nsIAbDirectory is also used to represent mailing lists. This is the case if the
isMailList attribute is true. See the examples page for how this operates.
nsIAbDirectoryinto its own interface. That may or may not happen before TB 3, the interested can follow along on bug 464833.
Address Book/Directory interfaces specific to types of Address Books
These interfaces should only be used where necessary for setting up address books of the appropriate type or accessing type specific functions. Keeping to non-type-specific interfaces (where possible) will mean that functions will work across different types of address book and help to provide a better user experience.
The interface provides functions specific to setting up mork address books.
nsIAbLDAPDirectory object is also an
nsIAbDirectory and represents a remote LDAP address book.