Changeset 222

Show
Ignore:
Timestamp:
09/12/07 10:57:22 (1 year ago)
Author:
gbooker
Message:

No more setImporting stuff, use timers to aggregate the writes.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/SapphireImporterDataMenu.m

    r201 r222  
    185185        canceled = NO; 
    186186        suspended = NO; 
    187         [metaCollection setImporting:YES]; 
    188187        collectionIndex = 0; 
    189188        [self getItems]; 
     
    283282                [importTimer invalidate]; 
    284283                importTimer = nil; 
    285                 [metaCollection setImporting:NO]; 
    286284                [metaCollection writeMetaData]; 
    287285                /*Update display*/ 
     
    307305        /*Reset the display and write data*/ 
    308306        [self resetUIElements]; 
    309         [metaCollection setImporting:NO]; 
    310307        [metaCollection writeMetaData]; 
    311308} 
  • trunk/SapphireMetaData.h

    r220 r222  
    9191        NSMutableDictionary                     *hideCollection; 
    9292        NSString                                        *dictionaryPath; 
    93         BOOL                                           importing
     93        NSTimer                                                *writeTimer
    9494} 
    9595- (id)initWithFile:(NSString *)dictionary; 
     
    9898- (SapphireMetaData *)dataForPath:(NSString *)path withData:(NSDictionary *)data; 
    9999- (NSArray *)collectionDirectories; 
    100 - (void)setImporting:(BOOL)isImporting; 
    101100- (BOOL)hideCollection:(NSString *)collection; 
    102101- (void)setHide:(BOOL)hide forCollection:(NSString *)collection; 
  • trunk/SapphireMetaData.m

    r220 r222  
    218218- (SapphireMetaData *)dataForSubPath:(NSString *)absPath inDirectory:(SapphireDirectoryMetaData *)directory; 
    219219- (void)linkCollections; 
     220- (void)realWriteMetaData; 
    220221@end 
    221222 
     
    358359        [hideCollection release]; 
    359360        [dictionaryPath release]; 
     361        if(writeTimer != nil) 
     362        { 
     363                [writeTimer invalidate]; 
     364                [self realWriteMetaData]; 
     365        } 
    360366        [super dealloc]; 
    361367} 
     
    461467- (void)writeMetaData 
    462468{ 
    463         if(importing) 
    464                 return; 
     469        [writeTimer invalidate]; 
     470        writeTimer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(realWriteMetaData) userInfo:nil repeats:NO]; 
     471
     472 
     473- (void)realWriteMetaData 
     474
     475        [writeTimer invalidate]; 
     476        writeTimer = nil; 
    465477        makeParentDir([NSFileManager defaultManager], [dictionaryPath stringByDeletingLastPathComponent]); 
    466478        [metaData writeToFile:dictionaryPath atomically:YES]; 
     
    470482{ 
    471483        return self; 
    472 } 
    473  
    474 /*! 
    475  * @brief Set whether or not we are currently importing.  If YES, this defers writes of the metadata until later 
    476  * 
    477  * @param isImporting YES if importing, NO otherwise 
    478  */ 
    479 - (void)setImporting:(BOOL)isImporting 
    480 { 
    481         importing = isImporting; 
    482484} 
    483485 
     
    12431245- (void)setWatched:(BOOL)watched forPredicate:(SapphirePredicate *)predicate 
    12441246{ 
    1245         [[self collection] setImporting:YES]; 
    12461247        SEL select = @selector(setWatched:); 
    12471248        NSInvocation *fileInv = [NSInvocation invocationWithMethodSignature:[[SapphireFileMetaData class] instanceMethodSignatureForSelector:select]]; 
     
    12491250        [fileInv setArgument:&watched atIndex:2]; 
    12501251        [self invokeRecursivelyOnFiles:fileInv withPredicate:predicate]; 
    1251         [[self collection] setImporting:NO]; 
    12521252        [self writeMetaData]; 
    12531253} 
     
    12751275- (void)setFavorite:(BOOL)favorite forPredicate:(SapphirePredicate *)predicate 
    12761276{ 
    1277         [[self collection] setImporting:YES]; 
    12781277        SEL select = @selector(setFavorite:); 
    12791278        NSInvocation *fileInv = [NSInvocation invocationWithMethodSignature:[[SapphireFileMetaData class] instanceMethodSignatureForSelector:select]]; 
     
    12811280        [fileInv setArgument:&favorite atIndex:2]; 
    12821281        [self invokeRecursivelyOnFiles:fileInv withPredicate:predicate]; 
    1283         [[self collection] setImporting:NO]; 
    12841282        [self writeMetaData]; 
    12851283} 
     
    12931291- (void)setToImportFromSource:(NSString *)source forPredicate:(SapphirePredicate *)predicate 
    12941292{ 
    1295         [[self collection] setImporting:YES]; 
    12961293        SEL select = @selector(setToImportFromSource:); 
    12971294        NSInvocation *fileInv = [NSInvocation invocationWithMethodSignature:[[SapphireFileMetaData class] instanceMethodSignatureForSelector:select]]; 
     
    12991296        [fileInv setArgument:&source atIndex:2]; 
    13001297        [self invokeRecursivelyOnFiles:fileInv withPredicate:predicate]; 
    1301         [[self collection] setImporting:NO]; 
    13021298        [self writeMetaData]; 
    13031299} 
     
    13111307- (void)setFileClass:(FileClass)fileClass forPredicate:(SapphirePredicate *)predicate 
    13121308{ 
    1313         [[self collection] setImporting:YES]; 
    13141309        SEL select = @selector(setFileClass:); 
    13151310        NSInvocation *fileInv = [NSInvocation invocationWithMethodSignature:[[SapphireFileMetaData class] instanceMethodSignatureForSelector:select]]; 
     
    13171312        [fileInv setArgument:&fileClass atIndex:2]; 
    13181313        [self invokeRecursivelyOnFiles:fileInv withPredicate:predicate]; 
    1319         [[self collection] setImporting:NO]; 
    13201314        [self writeMetaData]; 
    13211315}