Revision control

Copy as Markdown

Other Tools

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