/* -*- 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(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 nsIAbDirSearchListener 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); };