gavr wrote:
>  I am building an ext for tb addressbook. I need to query the local
> address book directory for particular kind of cards.  Contact
> searching  is currently being done in tb using nsIAbView interface
> which is promarily used for geting the xul tree view of the search
> results. I can not use it as my query results are not viewed as a
> tree.
>    So i tried using nsIDirectoryQuery interface. Found no help on the
> web abt its usage - looks like none on the planet tried it ;)
>     The problem is, i get a SegFault in
> nsAbDirectoryQueryProxy::DoQuery()   ....  libmail.so
> 
>   Here is the JS code.
> 
>    var qs = Cc["@mozilla.org/boolean-expression/condition-string;1"]
>                            .createInstance(Ci.nsIAbBooleanConditionString);
>    qs.name = "firstName";  // XXX: no idea what this should be.
> guessing
>    qs.value = "xyz";
>    qs.condition = Ci.nsIAbBooleanConditionTypes.IsNot;
> 
>    var qe = Cc["@mozilla.org/boolean-expression/n-peer;1"]
>                              .createInstance(Ci.nsIAbBooleanExpression);
>    var exprArr = Components.classes["@mozilla.org/supports-array;1"]
>                              
> .createInstance(Components.interfaces.nsISupportsArray);
>    exprArr.AppendElement(qs);
>    // qe.asetExpressions(1,exprArr);  //not implemented.. setting
> directly
>    qe.expressions = exprArr;
>    //qe.operation = Ci.nsIAbBooleanOperationTypes.OR;  //not
> accessible. setting it manually
>    qe.operation = 0;
> 
>   var queryArgs = Cc["@mozilla.org/addressbook/directory/query-
> arguments;1"]
>                                          
> .createInstance(Ci.nsIAbDirectoryQueryArguments);
>   queryArgs.querySubDirectories = true;
>   queryArgs.setReturnProperties(1, ["card:nsIAbCard"] );  // XXX: no
> sure if this is the correct 2nd arg. found it in comp source.
>   queryArgs.expression = qe;
> 
>   var dirQProxy = Cc["@mozilla.org/addressbook/directory-query/proxy;
> 1"]
>                                         
> .createInstance(Ci.nsIAbDirectoryQueryProxy);  //
> Is this connected to DirQuer??
>    var directory = rdf.GetResource(GetSelectedDirectory())
>                                          
> .QueryInterface(Components.interfaces.nsIAbDirectory);
>    dirQProxy.initiate(directory);
> 
>   var dirQuery = Cc["@mozilla.org/addressbook/directory-query/proxy;
> 1"]
>                                         
> .createInstance(Ci.nsIAbDirectoryQuery);
>   dirQuery.doQuery( queryArgs, dirQueryResListener, 10, 100);
> 

Umm, you're calling doQuery on an uninitialized object.  This probably 
shouldn't crash, but you shouldn't do it.

I think you meant to write "dirQProxy.doQuery"?

-Eli
_______________________________________________
dev-tech-xpcom mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-xpcom

Reply via email to