/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ #include "nsISupports.idl" interface nsIAbCard; interface nsIAbDirectory; interface nsIArray; /// Define a class using this interface to listen to updates from nsIAbView. [scriptable, uuid(79ad5d6e-1dd2-11b2-addd-f547dab50d75)] interface nsIAbViewListener : nsISupports { /// Called when the selection is changed in the tree void onSelectionChanged(); /// Called when the total count of cards is changed. void onCountChanged(in long total); }; /** * This interface and its associated nsAbView object provides an interface * to allow a tree to be associated with an address book, and the results * to be displayed in that tree. * * If you wish for the tree to display the results of a different address * book, then call setView again. There is no need to delete and recreate the * nsAbView object. If you wish to clear the view, then just call clearView. */ [scriptable, uuid(45e2fa9f-0b59-4090-a2fa-fb7042cf64a2)] interface nsIAbView : nsISupports { /** * Sets up the nsIAbView to look at the specified directory. This may be * called multiple times. * * @param aDirectory The directory to search, this may be a directory * with a query string. * @param aViewListener An optional listener. * @param aSortColumn The column to sort by. See the xul element with * id abResultsTreeCols for possible values. * @param aSortDirection The sort direction to use ("ascending"/"descending") * @return The actual sortColumn (various switching of apps * could cause the persisted sortColumn to be bogus). */ AString setView(in nsIAbDirectory aAddressBook, in nsIAbViewListener aAbViewListener, in AString aSortColumn, in AString aSortDirection); /** * Clears the view and releases any locally held copies of the address book * directory. This should be called when the view is no longer required, e.g. * on unload. */ void clearView(); /** * Sorts the tree by the specified parameters. * * @param aSortColumn The column to sort by. See the xul element with * id abResultsTreeCols for possible values. * @param aSortDirection The sort direction to use ("ascending"/"descending") * @param aResort The function DOES optimize for the case when sortColumn * and sortDirection is identical since the last call. * If an unconditional resort is needed, set this to true. */ void sortBy(in wstring aSortColumn, in wstring aSortDirection, [optional] in boolean aResort); /// Returns the current sort column readonly attribute AString sortColumn; /// Returns the current sort direction readonly attribute AString sortDirection; /** * Returns the current directory that this view is hooked up to. May be * null if no directory has been set. */ readonly attribute nsIAbDirectory directory; /** * Returns the card associated with the given row. * * @param aRow The row from which to return the card. * @return A card associated with the row, or null if row is not valid. */ nsIAbCard getCardFromRow(in long aRow); /// Selects all rows in the view. void selectAll(); /// Deletes all the selected cards (no prompts are given). void deleteSelectedCards(); /** * Swaps the first and last name order, and updates the appropriate * preference. */ void swapFirstNameLastName(); /** * Returns an array of the currently selected addresses. */ readonly attribute nsIArray selectedAddresses; };