/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* 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 nsIAbDirSearchListener; interface nsIAbCard; interface nsIAbDirectory; /** * The arguments for a query. * * Contains an expression for perform matches * and an array of properties which should be * returned if a match is found from the expression * */ [scriptable, uuid(03af3018-2590-4f4c-a88c-1fff6595ef05)] interface nsIAbDirectoryQueryArguments : nsISupports { /** * Defines the boolean expression for * the matching of cards * */ attribute nsISupports expression; /** * Defines if sub directories should be * queried * */ attribute boolean querySubDirectories; /** * A parameter which can be used to pass in data specific to a particular * type of addressbook. */ attribute nsISupports typeSpecificArg; /** * A custom search filter which user wants to use in LDAP query. */ attribute AUTF8String filter; }; [scriptable, uuid(3A6E0C0C-1DD2-11B2-B23D-EA3A8CCB333C)] interface nsIAbDirectoryQueryPropertyValue : nsISupports { /** * The property which should be matched * * For example 'primaryEmail' or 'homePhone' * for card properties. * * Two further properties are defined that * do not exist as properties on a card. * * 'card:nsIAbCard' which represents the interface * of a card component * */ readonly attribute string name; /** * The value of the property * */ readonly attribute wstring value; /** * The value of the property * as an interface * * Only valid if the corresponding * property name is related to an * interface instead of a wstring * */ readonly attribute nsISupports valueISupports; }; [scriptable, uuid(516e7ffa-69bc-41db-a493-dfb4895832f3)] interface nsIAbDirectoryQueryResultListener : nsISupports { /** * Called when a match is found. May be called from a different thread to * the one that initiates the query. * * @param aCard An individual result associated returned from a query */ void onQueryFoundCard(in nsIAbCard aCard); /** * List of defined query results * */ const long queryResultMatch = 0; const long queryResultComplete = 1; const long queryResultStopped = 2; const long queryResultError = 3; /** * Called when a query has finished. May be called from a different thread * to the one that initiates the query. * * @param aResult A result code from the list above. * * @param aErrorCode An error code specific to the type of query. */ void onQueryResult(in long aResult, in long aErrorCode); }; [scriptable, uuid(60b5961c-ce61-47b3-aa99-6d865f734dee)] interface nsIAbDirectoryQuery : nsISupports { /** * Initiates a query on a directory and sub-directories for properties * on cards * * @param aDirectory A directory that the query may get extra details * from. * * @param aArguments The properties and values to match value could of * type nsIAbDirectoryQueryMatchItem for matches other * than ?contains? * * @param aListener The listener which will obtain individual query * results. * * @param aResultLimit Limits the number of results returned to a maximum * value. * * @param aTimeOut The maximum length of time for the query * * @return A context id for the query */ long doQuery(in nsIAbDirectory aDirectory, in nsIAbDirectoryQueryArguments aArguments, in nsIAbDirSearchListener aListener, in long aResultLimit, in long aTimeOut); /** * Stops an existing query operation if * query operation is asynchronous * * The nsIAbDirectoryQueryResultListener will * be notified when query has stopped * * It is implementation specific if notification * synchronous or asynchronous * * @param contextID * The unique number returned from * the doQuery methods * */ void stopQuery (in long contextID); };