On 18 Jan 2008, at 9:09 PM, Adam R. Maxwell wrote: > > On Friday, January 18, 2008, at 11:53AM, "Christiaan Hofman" > <[EMAIL PROTECTED]> wrote: >> >> On 18 Jan 2008, at 8:16 PM, Adam R. Maxwell wrote: >> >>> >>> On Friday, January 18, 2008, at 10:45AM, "Christiaan Hofman" >>> <[EMAIL PROTECTED]> wrote: >>>> >>>> >>>> On 18 Jan 2008, at 7:39 PM, Adam R. Maxwell wrote: >>>> >>>>> Another question: why not create a BDSKFileSearchResult per >>>>> identifier instead of passing the set to a BDSKFileSearchResult? >>>>> Or are the search result objects no longer used for display? >>>>> >>>> >>>> The search looks into and returns file URLs rather than >>>> identifierURLs. And there is no 1-to-1 correspondence. Any file URL >>>> (and therefore search result) can correspond to multiple pubs, >>>> and a >>>> pub can appear for multiple file URLs (results). >>> >>> Right, but I'm still confused. How are they displayed? There used >>> to be a 1:1 correspondence between rows in the table and >>> BDSKSearchResult instances. How are the multiple pubs displayed in >>> the table? >>> >> >> There still is a 1:1 correspondence between BDSKSearchResults and >> table rows. So rows correspond to file URLs rather than pubs (it >> always has). Each row can correspond to multiple pubs and each pub >> can correspond to multiple rows (the latter was already true, the >> first is new). In the past only an arbitrary pub was used. Now we use >> an arbitrary pub for the title, but e.g. editing will open all >> relevant pubs. >> >>> In BDSKFileSearch there is this: >>> >>> NSURL *theURL = (NSURL *)SKDocumentCopyURL(skDocument); >>> NSSet *identifierURLs = [searchIndex >>> allIdentifierURLsForURL:theURL]; >>> NSString *title = nil; >>> NSEnumerator *idURLEnum = [identifierURLs >>> objectEnumerator]; >>> NSURL *idURL; >>> while (title == nil && (idURL = [idURLEnum nextObject])) >>> title = [[self delegate] search:self >>> titleForIdentifierURL:idURL]; >>> >>> searchResult = [[BDSKFileSearchResult alloc] >>> initWithURL:theURL identifierURLs:identifierURLs title:(NSString *) >>> title score:score]; >>> [searchResults addObject:searchResult]; >>> [searchResult release]; >>> [theURL release]; >>> >>> Based on previous recollection of the architecture it would make >>> sense to do >>> >>> for (identifier in identifierURLs) { >>> searchResult = [[BDSKFileSearchResult alloc] initWithURL:theURL >>> identifierURL:identifierURL title:(NSString *)title score:score]; >>> [searchResults addObject:searchResult]; >>> [searchResult release]; >>> } >>> >>> I haven't followed all the changes in enough detail, so maybe this >>> isn't possible. >>> >> >> That's not logically possible. What is identifierURLs/theURL here? >> Also there can be several matched files for a single pub, so what URL >> and score to use? > > Use the same URL and score. I left out getting the title for each > identifier URL; it should have been > > for (identifierURL in identifierURLs) { > title = [[self delegate] search:self > titleForIdentifierURL:identifierURL]; > searchResult = // create result with this file, identifier, title > } > > so you'd have the same file/score appearing multiple times in the > results, once for each pub it was associated with.
OK, that makes sense. We could do that. Christiaan ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Bibdesk-develop mailing list Bibdesk-develop@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bibdesk-develop