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
