Changeset 72

Show
Ignore:
Timestamp:
06/28/07 17:46:12 (2 years ago)
Author:
gbooker
Message:

Some cache of items. Should speed up scrolling.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/SapphireBrowser.h

    r58 r72  
    1919{ 
    2020        NSMutableArray                          * _names ; 
     21        NSMutableArray                          * items ; 
    2122        SapphireDirectoryMetaData       *metaData; 
    2223        SapphirePredicate                       *predicate; 
  • trunk/SapphireBrowser.m

    r69 r72  
    9898                 
    9999        _names = [NSMutableArray new]; 
     100        items = [NSMutableArray new]; 
    100101        metaData = [meta retain]; 
    101102        [metaData setDelegate:self]; 
     
    139140        [metaData reloadDirectoryContents]; 
    140141        [_names removeAllObjects]; 
     142        [items removeAllObjects]; 
    141143        if(predicate == NULL) 
    142144        { 
     
    150152                divider = [_names count]; 
    151153                [_names addObjectsFromArray:[metaData predicatedFiles:predicate]]; 
     154        } 
     155        int i=0, count=[_names count]; 
     156        for(i=0; i<count; i++) 
     157        { 
     158                [items addObject:[NSNull null]]; 
    152159        } 
    153160 
     
    163170    // always remember to deallocate your resources 
    164171        [_names release]; 
     172        [items release]; 
    165173        [metaData release]; 
    166174        [predicate release]; 
     
    287295        if( row >= [_names count] ) return ( nil ) ; 
    288296         
     297        id cached = [items objectAtIndex:row]; 
     298        if(cached != [NSNull null]) 
     299                return cached; 
    289300        NSString *name = [_names objectAtIndex:row]; 
    290301        // Pad filename to correcrtly display gem icons 
     
    292303        BOOL watched = NO; 
    293304        BOOL favorite = NO ; 
    294         if([[metaData directories] containsObject:name]) 
     305        if(row < [[metaData directories] count]) 
    295306        { 
    296307                result = [BRAdornedMenuItemLayer adornedFolderMenuItemWithScene: [self scene]] ; 
     
    318329        name=[@"   " stringByAppendingString: name] ; 
    319330        [[result textItem] setTitle: name] ; 
     331        [items replaceObjectAtIndex:row withObject:result]; 
    320332                                 
    321333        return ( result ) ;