Changeset 559

Show
Ignore:
Timestamp:
05/31/08 22:15:51 (7 months ago)
Author:
gbooker
Message:

Improved the browser's cache mechanism
Previews should now always match the file selected, even when looping around list.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/CoreData/SapphireCompatibilityClasses/SapphireMediaMenuController.m

    r503 r559  
    182182                        { 
    183183                                [self setSelection:itemCount-1]; 
     184                                [self updatePreviewController]; 
    184185                                return YES; 
    185186                        } 
     
    190191                        { 
    191192                                [self setSelection:0]; 
     193                                [self updatePreviewController]; 
    192194                                return YES; 
    193195                        } 
  • branches/CoreData/SapphireFrappliance/Browser/SapphireBrowser.h

    r541 r559  
    3131{ 
    3232        NSMutableArray                                  *_names;                        /*!< @brief Names in the menu display*/ 
    33         NSMutableArray                                *items;                         /*!< @brief Chached BRAdornedMenuItemLayer for menu items*/ 
     33        NSMutableDictionary                           *items;                         /*!< @brief Chached BRAdornedMenuItemLayer for menu items*/ 
    3434        id <SapphireDirectory>                  metaData;                       /*!< @brief The directory for the browser*/ 
    3535        NSPredicate                                             *predicate;                     /*!< @brief Predicate to determine which files are matched*/ 
     
    3737        int                                                             fileCount;                      /*!< @brief The number of files in this directory*/ 
    3838        BOOL                                                    cancelScan;                     /*!< @brief Cancel the background importer for this directory*/ 
     39        BOOL                                                    justReloaded;           /*!< @brief indicates that we just reloaded the display, so preview shouldn't delay its display*/ 
    3940} 
    4041 
  • branches/CoreData/SapphireFrappliance/Browser/SapphireBrowser.m

    r553 r559  
    8888                 
    8989        _names = [NSMutableArray new]; 
    90         items = [NSMutableArray new]; 
     90        items = [NSMutableDictionary new]; 
    9191        metaData = [meta retain]; 
    9292        predicate = [[SapphireApplianceController predicate] retain]; 
     
    135135                        [_names addObject:BRLocalizedString(@"     < Scan for new files >", @"Conduct a scan of the directory for new files")]; 
    136136        }                
    137         /*Init the cache*/ 
    138         int i=0, count=[_names count]; 
    139         for(i=0; i<count; i++) 
    140         { 
    141                 [items addObject:[NSNull null]]; 
    142         } 
    143  
    144137        /*Remove the dividers*/ 
    145138        BRListControl *list = [self list]; 
     
    162155                [SapphireFrontRowCompat addDividerAtIndex:dirCount + fileCount + indexOffset toList:list]; 
    163156        /*Draw*/ 
     157        justReloaded = YES; 
     158        [self updatePreviewController]; 
    164159        [SapphireFrontRowCompat renderScene:[self scene]]; 
    165160} 
     
    277272         
    278273        /*Check our cache*/ 
    279         id cached = [items objectAtIndex:row]; 
    280         if(cached != [NSNull null]) 
     274        NSString *name = [_names objectAtIndex:row]; 
     275        id cached = [items objectForKey:name]; 
     276        if(cached != nil) 
    281277                return cached; 
    282         NSString *name = [_names objectAtIndex:row]; 
    283278        // Pad filename to correcrtly display gem icons 
    284279        BRAdornedMenuItemLayer * result = nil; 
     
    383378        name=[@"  " stringByAppendingString: name] ; 
    384379        [SapphireFrontRowCompat setTitle:name forMenu:result]; 
    385         [items replaceObjectAtIndex:row withObject:result]; 
     380        [items setObject:result forKey:name]; 
    386381                                 
    387382        return ( result ) ; 
     
    654649                else 
    655650                        [preview setMetaData:[metaData metaDataForFile:name] inMetaData:metaData]; 
    656                 [preview setShowsMetadataImmediately:NO]; 
     651                [preview setShowsMetadataImmediately:justReloaded]; 
     652                justReloaded = NO; 
    657653                /*And go*/ 
    658654                return [preview autorelease]; 
     
    720716{ 
    721717        /*Get the file*/ 
    722         int index = [_names indexOfObject:file]; 
    723         if(index != NSNotFound) 
    724                 [items replaceObjectAtIndex:index withObject:[NSNull null]]; 
     718        [items removeObjectForKey:file]; 
    725719        /*Relead the list and render*/ 
    726720        BRListControl *list = [self list];