/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is * Sun Microsystems, Inc. * Portions created by the Initial Developer are Copyright (C) 2001 * the Initial Developer. All Rights Reserved. * * Contributor(s): * Created by: Paul Sandoz * Dan Mosedale * * Alternatively, the contents of this file may be used under the terms of * either of the GNU General Public License Version 2 or later (the "GPL"), * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include "nsISupports.idl" #include "nsISupportsArray.idl" #include "nsIAbBooleanExpression.idl" /** * 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(c2d83a31-eba6-4053-9273-c7a006a94311)] 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; /** * The list of properties which should * be returned if a match occurs on a card * */ void setReturnProperties (in unsigned long returnPropertiesSize, [array, size_is(returnPropertiesSize)] in string returnPropertiesArray); void getReturnProperties (out unsigned long returnPropertiesSize, [retval, array, size_is(returnPropertiesSize)] out string returnPropertiesArray); /** * A parameter which can be used to pass in data specific to a particular * type of addressbook. */ attribute nsISupports typeSpecificArg; }; [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(42E600BA-1DD2-11B2-BC39-C363AC0C93E3)] interface nsIAbDirectoryQueryResult : nsISupports { /** * The context ID of the query * */ readonly attribute long contextID; /** * The context of the query which * corresponds to the arguments that * define the query * */ readonly attribute nsIAbDirectoryQueryArguments contextArgs; /** * List of defined query results * */ const long queryResultMatch = 0; const long queryResultComplete = 1; const long queryResultStopped = 2; const long queryResultError = 3; /** * The type of result * * Identifies a query entry, the query has finished * or that an error has occured */ readonly attribute long type; /** * The result of a singular match for a card * * Only valid when the attribute type is * of 'query match' * * nsISupportsArray * Multiple entries corresponding to card * properties * nsISupportsArray * Only one entry makese sense * */ readonly attribute nsISupportsArray result; /** * result attribute defined explicitly as an * array of nsISupport interfaces * */ void agetResult (out unsigned long aResultSize, [retval, array, size_is(aResultSize)] out nsISupports aResultArray); }; [scriptable, uuid(4290E508-1DD2-11B2-AC3E-9597BBCB25D7)] interface nsIAbDirectoryQueryResultListener : nsISupports { /** * Called when a match is found. May be * called from a different thread to the * one that initiates the query * * @param result * A individual result associated returned * from a query */ void onQueryItem (in nsIAbDirectoryQueryResult result); }; [scriptable, uuid(4241C46E-1DD2-11B2-978D-A2FBD0A72AC2)] interface nsIAbDirectoryQuery : nsISupports { /** * Initiates a query on a directory and * sub-directories for properties on cards * * @param arguments * The properties and values to match * Value could of type nsIAbDirectoryQueryMatchItem * for matches other than ?contains? * @param listener * The listener which will obtain individual * query results * @param resultLimit * Limits the results returned to a specifed * maximum value * @return * Unique number representing the context ID of * the query * */ long doQuery (in nsIAbDirectoryQueryArguments arguments, in nsIAbDirectoryQueryResultListener listener, in long resultLimit, in long timeOut); /** * 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); };