Changeset 452
- Timestamp:
- 01/12/08 16:50:09 (1 year ago)
- Files:
-
- trunk/SapphireAllImporter.m (modified) (1 diff)
- trunk/SapphireFileDataImporter.m (modified) (3 diffs)
- trunk/SapphireImportHelper.m (modified) (1 diff)
- trunk/SapphireImporterDataMenu.h (modified) (3 diffs)
- trunk/SapphireImporterDataMenu.m (modified) (3 diffs)
- trunk/SapphireMovieImporter.m (modified) (10 diffs)
- trunk/SapphireMultipleImporter.h (modified) (1 diff)
- trunk/SapphireMultipleImporter.m (modified) (2 diffs)
- trunk/SapphireTVShowImporter.m (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/SapphireAllImporter.m
r409 r452 24 24 @implementation SapphireAllImporter 25 25 26 - ( BOOL)importMetaData:(id <SapphireFileMetaDataProtocol>)metaData26 - (ImportState)importMetaData:(id <SapphireFileMetaDataProtocol>)metaData 27 27 { 28 28 return [super importMetaData:metaData]; trunk/SapphireFileDataImporter.m
r419 r452 96 96 } 97 97 98 - ( BOOL) importMetaData:(id <SapphireFileMetaDataProtocol>)metaData98 - (ImportState) importMetaData:(id <SapphireFileMetaDataProtocol>)metaData 99 99 { 100 100 /*Initialization*/ 101 BOOLret = NO;101 ImportState ret = NO; 102 102 NSFileManager *fm = [NSFileManager defaultManager]; 103 103 /*Get the file*/ … … 119 119 [self importXMLFile:xmlFilePath forMeta:metaData] ; 120 120 xmlFileCount++ ; 121 ret = YES;121 ret = IMPORT_STATE_UPDATED; 122 122 } 123 123 } … … 126 126 { 127 127 [[SapphireImportHelper sharedHelper] importFileData:metaData inform:dataMenu]; 128 [dataMenu itemImportBackgrounded];128 ret = IMPORT_STATE_BACKGROUND; 129 129 } 130 130 /*Return whether we imported or not*/ trunk/SapphireImportHelper.m
r433 r452 157 157 ret = updateMetaData([file file]); 158 158 else 159 ret = [allImporter importMetaData:[file file]];159 ret = ([allImporter importMetaData:[file file]] == IMPORT_STATE_UPDATED); 160 160 [server importComplete:ret]; 161 161 } trunk/SapphireImporterDataMenu.h
r436 r452 26 26 27 27 /*! 28 * @brief Status of an import 29 */ 30 typedef enum{ 31 IMPORT_STATE_NOT_UPDATED, /*!< @brief The data was not updated*/ 32 IMPORT_STATE_UPDATED, /*!< @brief The data was updated*/ 33 IMPORT_STATE_NEEDS_SUSPEND, /*!< @brief The data update has been suspended; run it again later*/ 34 IMPORT_STATE_BACKGROUND, /*!< @brief The data was backgrounded*/ 35 } ImportState; 36 37 /*! 28 38 * @brief The importer protocol 29 39 * … … 36 46 * 37 47 * @param metaData The file to import 38 * @return YES if imported, NO otherwise48 * @return The state of the import 39 49 */ 40 - ( BOOL)importMetaData:(id <SapphireFileMetaDataProtocol>)metaData;50 - (ImportState)importMetaData:(id <SapphireFileMetaDataProtocol>)metaData; 41 51 42 52 /*! … … 140 150 141 151 /*! 142 * @brief Pause the import process143 */144 - (void)pause;145 146 /*!147 152 * @brief Resume the import process 148 153 */ 149 154 - (void)resume; 150 151 /*!152 * @brief Say that the file's import is backgrounded153 */154 - (void)itemImportBackgrounded;155 155 156 156 /*! trunk/SapphireImporterDataMenu.m
r445 r452 29 29 - (void)setFileProgress:(NSString *)updateFileProgress; 30 30 - (void)resetUIElements; 31 - (void)pause; 32 - (void)itemImportBackgrounded; 31 33 @end 32 34 … … 244 246 BOOL ret = NO; 245 247 @try { 246 ret = [importer importMetaData:[importItems objectAtIndex:0]]; 248 ImportState result = [importer importMetaData:[importItems objectAtIndex:0]]; 249 switch(result) 250 { 251 case IMPORT_STATE_UPDATED: 252 ret = YES; 253 break; 254 case IMPORT_STATE_NEEDS_SUSPEND: 255 [self pause]; 256 ret = NO; 257 break; 258 case IMPORT_STATE_BACKGROUND: 259 [self itemImportBackgrounded]; 260 ret = NO; 261 break; 262 } 247 263 } 248 264 @catch (NSException * e) { … … 356 372 - (void)itemImportBackgrounded 357 373 { 358 if([importItems count] )374 if([importItems count] && !suspended) 359 375 [importItems removeObjectAtIndex:0]; 360 376 backgrounded = YES; trunk/SapphireMovieImporter.m
r436 r452 643 643 } 644 644 645 /* - (BOOL) importMetaData:(id <SapphireFileMetaDataProtocol>)metaData */ 646 - (BOOL) importMetaData:(id <SapphireFileMetaDataProtocol>)metaData 645 - (ImportState) importMetaData:(id <SapphireFileMetaDataProtocol>)metaData 647 646 { 648 647 currentData = metaData; 649 648 /*Check to see if it is already imported*/ 650 649 if([metaData importedTimeFromSource:META_IMDB_IMPORT_KEY]) 651 return NO;650 return IMPORT_STATE_NOT_UPDATED; 652 651 id controller = [[dataMenu stack] peekController]; 653 652 /* Check to see if we are waiting on the user to select a show title */ … … 655 654 { 656 655 /* Another chooser is on the screen - delay further processing */ 657 return NO;656 return IMPORT_STATE_NOT_UPDATED; 658 657 } 659 658 /*Get path*/ 660 659 NSString *path = [metaData path]; 661 660 if(![self isMovieCandidate:[path pathExtension]]) 662 return NO;661 return IMPORT_STATE_NOT_UPDATED; 663 662 /*Get fineName*/ 664 663 NSString *fileName = [path lastPathComponent]; 665 664 if([metaData fileClass]==FILE_CLASS_TV_SHOW) /* File is a TV Show - skip it */ 666 return NO;665 return IMPORT_STATE_NOT_UPDATED; 667 666 668 667 /*Get the movie title*/ … … 674 673 if(dataMenu == nil) 675 674 /*There is no data menu, background import. So we can't ask user, skip*/ 676 return NO;675 return IMPORT_STATE_NOT_UPDATED; 677 676 /*Ask the user what movie this is*/ 678 677 NSArray *movies = [self searchResultsForMovie:fileName]; … … 683 682 [metaData importInfo:[NSMutableDictionary dictionary] fromSource:META_IMDB_IMPORT_KEY withTime:[[NSDate date] timeIntervalSince1970]]; 684 683 [metaData setFileClass:FILE_CLASS_OTHER]; 685 return YES; 686 } 687 /*Pause for the user's input*/ 688 [dataMenu pause]; 684 return IMPORT_STATE_UPDATED; 685 } 689 686 /*Bring up the prompt*/ 690 687 SapphireMovieChooser *chooser = [[SapphireMovieChooser alloc] initWithScene:[dataMenu scene]]; … … 695 692 [[dataMenu stack] pushController:chooser]; 696 693 [chooser release]; 697 return NO;694 return IMPORT_STATE_NEEDS_SUSPEND; 698 695 //Data will be ready for access on the next call 699 696 } … … 707 704 if(dataMenu == nil) 708 705 /*There is no data menu, background import. So we can't ask user, skip*/ 709 return NO;706 return IMPORT_STATE_NOT_UPDATED; 710 707 /* Posters will be downloaded, let the user choose one */ 711 708 [SapphireFrontRowCompat renderScene:[dataMenu scene]]; … … 733 730 if([posters count]) 734 731 { 735 [dataMenu pause];736 732 posterChooser=[[SapphirePosterChooser alloc] initWithScene:[dataMenu scene]]; 737 733 if(![posterChooser okayToDisplay]) … … 754 750 [[dataMenu stack] pushController:posterChooser]; 755 751 [posterChooser release]; 756 return NO;752 return IMPORT_STATE_NEEDS_SUSPEND; 757 753 } 758 754 [dataMenu resume]; … … 798 794 [myDelegate autorelease]; 799 795 } 800 // return NO;801 796 } 802 797 else if(autoSelectPoster) … … 820 815 infoIMDB = [self getMetaForMovie:movieDataLink withPath:path]; 821 816 if(!infoIMDB) 822 return NO;817 return IMPORT_STATE_NOT_UPDATED; 823 818 [infoIMDB removeObjectForKey:IMDB_LINK_KEY]; 824 819 [metaData importInfo:infoIMDB fromSource:META_IMDB_IMPORT_KEY withTime:[[NSDate date] timeIntervalSince1970]]; 825 820 [metaData setFileClass:FILE_CLASS_MOVIE]; 826 821 /*We imported something*/ 827 return YES;822 return IMPORT_STATE_UPDATED; 828 823 } 829 824 trunk/SapphireMultipleImporter.h
r407 r452 28 28 @interface SapphireMultipleImporter : NSObject <SapphireImporter>{ 29 29 NSArray *importers; /*!< @brief The list of importers to use, in order*/ 30 int importIndex; /*!< @brief The index of the next importer to run*/ 31 ImportState resumedState; /*!< @brief The state to use when we finally resume */ 30 32 } 31 33 trunk/SapphireMultipleImporter.m
r409 r452 31 31 32 32 importers = [importerList retain]; 33 importIndex = 0; 33 34 34 35 return self; … … 41 42 } 42 43 43 - ( BOOL)importMetaData:(id <SapphireFileMetaDataProtocol>)metaData44 - (ImportState)importMetaData:(id <SapphireFileMetaDataProtocol>)metaData 44 45 { 45 BOOL ret = NO; 46 NSEnumerator *importEnum = [importers objectEnumerator]; 47 id <SapphireImporter> importer = nil; 48 while((importer = [importEnum nextObject]) != nil) 49 ret |= [importer importMetaData:metaData]; 46 ImportState ret = resumedState; 47 int count = [importers count]; 48 for(;importIndex < count; importIndex++) 49 { 50 id <SapphireImporter> importer = [importers objectAtIndex:importIndex]; 51 ImportState result = [importer importMetaData:metaData]; 52 switch(result) 53 { 54 case IMPORT_STATE_NEEDS_SUSPEND: 55 resumedState = ret; 56 return result; 57 case IMPORT_STATE_BACKGROUND: 58 ret = result; 59 break; 60 case IMPORT_STATE_UPDATED: 61 if(ret != IMPORT_STATE_BACKGROUND) 62 ret = result; 63 break; 64 } 65 } 50 66 67 importIndex = 0; 68 resumedState = IMPORT_STATE_NOT_UPDATED; 51 69 return ret; 52 70 } trunk/SapphireTVShowImporter.m
r451 r452 478 478 } 479 479 480 - ( BOOL) importMetaData:(id <SapphireFileMetaDataProtocol>)metaData480 - (ImportState) importMetaData:(id <SapphireFileMetaDataProtocol>)metaData 481 481 { 482 482 currentData = metaData; 483 483 /*Check to see if it is already imported*/ 484 484 if([metaData importedTimeFromSource:META_TVRAGE_IMPORT_KEY]) 485 return NO;485 return IMPORT_STATE_NOT_UPDATED; 486 486 id controller = [[dataMenu stack] peekController]; 487 487 /* Check to see if we are waiting on the user to select a movie title */ … … 489 489 { 490 490 /* Another chooser is on the screen - delay further processing */ 491 return NO;491 return IMPORT_STATE_NOT_UPDATED; 492 492 } 493 493 /*Get path*/ … … 528 528 /*See if we found a match*/ 529 529 if(index == NSNotFound) 530 return NO;530 return IMPORT_STATE_NOT_UPDATED; 531 531 532 532 /*Get the show title*/ … … 538 538 if(dataMenu == nil) 539 539 /*There is no data menu, background import. So we can't ask user, skip*/ 540 return NO;540 return IMPORT_STATE_NOT_UPDATED; 541 541 /*Ask the user what show this is*/ 542 542 NSArray *shows = [self searchResultsForSeries:searchStr]; 543 /*Pause for the user's input*/544 [dataMenu pause];545 543 /*Bring up the prompt*/ 546 544 SapphireShowChooser *chooser = [[SapphireShowChooser alloc] initWithScene:[dataMenu scene]]; … … 552 550 [[dataMenu stack] pushController:chooser]; 553 551 [chooser release]; 554 return NO;552 return IMPORT_STATE_NEEDS_SUSPEND; 555 553 } 556 554 … … 571 569 /*No season, no info*/ 572 570 if(season == 0) 573 return NO;571 return IMPORT_STATE_NOT_UPDATED; 574 572 575 573 int otherEp = 0; … … 600 598 /*No info, well, no info*/ 601 599 if(!info) 602 return NO;600 return IMPORT_STATE_NOT_UPDATED; 603 601 604 602 /* Lets process the cover art directory structure */ … … 637 635 638 636 /*We imported something*/ 639 return YES;637 return IMPORT_STATE_UPDATED; 640 638 } 641 639
