Changeset 204
- Timestamp:
- 09/06/07 20:25:54 (1 year ago)
- Files:
-
- trunk/SapphireApplianceController.m (modified) (3 diffs)
- trunk/SapphireBrowser.m (modified) (2 diffs)
- trunk/SapphireMediaPreview.m (modified) (1 diff)
- trunk/SapphireMetaData.h (modified) (1 diff)
- trunk/SapphireMetaData.m (modified) (3 diffs)
- trunk/SapphireTVDirectory.m (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/SapphireApplianceController.m
r201 r204 14 14 #import "SapphireSettings.h" 15 15 #import "SapphireTheme.h" 16 #import "SapphireTVDirectory.h" 16 17 17 18 #import "SapphireImporterDataMenu.h" … … 126 127 NSMutableArray *mutableMasterNames = [[NSMutableArray alloc] init]; 127 128 NSMutableArray *mutableMasterControllers = [[NSMutableArray alloc] init]; 129 BRTexture *predicateGem = [SapphireApplianceController gemForPredicate:[SapphireApplianceController predicate]]; 130 131 SapphireTVDirectory *tvDir = [[SapphireTVDirectory alloc] init]; 132 SapphireBrowser *tvBrowser = [[SapphireBrowser alloc] initWithScene:[self scene] metaData:tvDir]; 133 [tvBrowser setListTitle:BRLocalizedString(@"TV Shows", nil)]; 134 [tvBrowser setListIcon:predicateGem]; 135 [mutableMasterNames addObject:BRLocalizedString(@" TV Shows", nil)]; 136 [mutableMasterControllers addObject:tvBrowser]; 137 [tvBrowser release]; 138 139 128 140 129 141 NSEnumerator *browserPointsEnum = [[metaCollection collectionDirectories] objectEnumerator]; … … 131 143 while((browserPoint = [browserPointsEnum nextObject]) != nil) 132 144 { 145 if(![metaCollection skipCollection:browserPoint]) 146 [[metaCollection directoryForPath:browserPoint] loadMetaData]; 133 147 if([metaCollection hideCollection:browserPoint]) 134 148 continue; 135 149 SapphireBrowser *browser = [[SapphireBrowser alloc] initWithScene:[self scene] metaData:[metaCollection directoryForPath:browserPoint]]; 136 150 [browser setListTitle:[browserPoint lastPathComponent]]; 137 [browser setListIcon: [SapphireApplianceController gemForPredicate:[SapphireApplianceController predicate]]];151 [browser setListIcon:predicateGem]; 138 152 [mutableMasterNames addObject:[NSString stringWithFormat:@" %@", browserPoint]]; 139 153 [mutableMasterControllers addObject:browser]; trunk/SapphireBrowser.m
r203 r204 385 385 currentPlayFile = nil; 386 386 /*Reload our display*/ 387 [self reloadDirectoryContents];387 [self setNewPredicate:[SapphireApplianceController predicate]]; 388 388 // always call super 389 389 [super willBeExhumed]; … … 656 656 NSString *name = [_names objectAtIndex:row]; 657 657 NSString *dir = [metaData path]; 658 659 /*Check mode for mark*660 if([self selectedMode] == 1)661 {662 id meta = nil;663 /*Get metadata*664 if(row < dirCount)665 meta = [metaData metaDataForDirectory:name];666 else if (row < dirCount + fileCount)667 meta = [metaData metaDataForFile:name];668 else669 return;670 /*Do mark menu*671 id controller = [[SapphireMarkMenu alloc] initWithScene:[self scene] metaData:meta];672 [(SapphireMarkMenu *)controller setPredicate:predicate];673 [[self stack] pushController:controller];674 [controller release];675 return;676 }677 else if([self selectedMode] == 2)678 {679 [self setNewPredicate:[SapphireApplianceController nextPredicate:predicate]];680 return;681 }682 658 683 659 /*Check for dir*/ trunk/SapphireMediaPreview.m
r201 r204 60 60 { 61 61 [meta release]; 62 NSString *path = [newMeta path]; 63 if(path == nil) 64 { 65 meta = nil; 66 return; 67 } 62 68 meta = [newMeta retain]; 63 69 /*Now that we know the file, set the asset*/ trunk/SapphireMetaData.h
r203 r204 137 137 - (void)getSubFileMetasWithDelegate:(id <SapphireMetaDataScannerDelegate>)subDelegate skipDirectories:(NSMutableSet *)skip; 138 138 - (void)scanForNewFilesWithDelegate:(id <SapphireMetaDataScannerDelegate>)subDelegate skipDirectories:(NSMutableSet *)skip; 139 - (void)loadMetaData; 139 140 140 141 - (BOOL)watchedForPredicate:(SapphirePredicate *)predicate; trunk/SapphireMetaData.m
r203 r204 482 482 @implementation SapphireDirectoryMetaData 483 483 484 //Just to shut up the compiler since it doesn't think to look at the super class to see if a method is implemented or not485 - (NSString *)path486 {487 return [super path];488 }489 - (void)setDelegate:(id <SapphireMetaDataDelegate>)newDelegate490 {491 [super setDelegate:newDelegate];492 }493 494 484 /*! 495 485 * @brief Creates a new meta data object … … 523 513 [metaData setObject:metaDirs forKey:DIRS_KEY]; 524 514 [metaDirs release]; 515 516 directories = [[NSMutableArray alloc] init]; 517 files = [[NSMutableArray alloc] init]; 525 518 526 519 /*Setup the cache*/ … … 1028 1021 [scanner setGivesResults:NO]; 1029 1022 [scanner release]; 1023 } 1024 1025 /*! 1026 * @brief Load all the cached meta data so that dynamic directories can build 1027 */ 1028 - (void)loadMetaData 1029 { 1030 NSEnumerator *dirEnum = [metaDirs keyEnumerator]; 1031 NSString *dir = nil; 1032 while((dir = [dirEnum nextObject]) != nil) 1033 { 1034 [[self metaDataForDirectory:dir] loadMetaData]; 1035 } 1036 NSEnumerator *fileEnum = [metaFiles keyEnumerator]; 1037 NSString *file = nil; 1038 while((file = [fileEnum nextObject]) != nil) 1039 { 1040 [self metaDataForFile:file]; 1041 } 1030 1042 } 1031 1043 trunk/SapphireTVDirectory.m
r203 r204 10 10 #import "SapphireMetaData.h" 11 11 12 @interface SapphireDirectoryMetaData (privateFunctions) 13 - (id)initWithDictionary:(NSDictionary *)dict parent:(SapphireMetaData *)myParent path:(NSString *)myPath; 14 @end 15 12 16 @implementation SapphireTVBaseDirectory 13 - (id)init 17 - (id)initWithParent:(SapphireTVBaseDirectory *)myParent path:(NSString *)myPath 14 18 { 15 self = [super init ];19 self = [super initWithDictionary:nil parent:myParent path:myPath]; 16 20 if(self == nil) 17 21 return nil; … … 19 23 directory = [[NSMutableDictionary alloc] init]; 20 24 reloadTimer = nil; 25 scannedDirectory = YES; 21 26 22 27 return self; 28 } 29 30 - (id)init 31 { 32 return [self initWithParent:nil path:@"@TV"]; 23 33 } 24 34 … … 32 42 - (void)reloadDirectoryContents 33 43 { 44 [files removeAllObjects]; 45 [directories removeAllObjects]; 46 [metaFiles removeAllObjects]; 47 [metaDirs removeAllObjects]; 48 [cachedMetaFiles removeAllObjects]; 49 [cachedMetaDirs removeAllObjects]; 34 50 [reloadTimer invalidate]; 35 51 reloadTimer = nil; … … 48 64 49 65 @implementation SapphireTVDirectory 50 - (id)init 66 - (id)initWithParent:(SapphireTVBaseDirectory *)myParent path:(NSString *)myPath 51 67 { 52 self = [super init ];68 self = [super initWithParent:myParent path:myPath]; 53 69 if(self == nil) 54 70 return nil; … … 67 83 - (void)reloadDirectoryContents 68 84 { 69 [files removeAllObjects]; 70 [directories removeAllObjects]; 85 [super reloadDirectoryContents]; 71 86 [directories addObjectsFromArray:[directory allKeys]]; 72 87 [directories sortUsingSelector:@selector(directoryNameCompare:)]; 73 [super reloadDirectoryContents]; 88 [cachedMetaDirs addEntriesFromDictionary:directory]; 89 [metaDirs addEntriesFromDictionary:directory]; 74 90 } 75 91 … … 77 93 { 78 94 NSString *show = [file showName]; 95 if(show == nil) 96 return; 79 97 SapphireShowDirectory *showInfo = [directory objectForKey:show]; 80 98 if(showInfo == nil) 81 99 { 82 showInfo = [[SapphireShowDirectory alloc] init ];100 showInfo = [[SapphireShowDirectory alloc] initWithParent:self path:[[self path] stringByAppendingPathComponent:show]]; 83 101 [directory setObject:showInfo forKey:show]; 84 102 [showInfo release]; … … 92 110 - (void)reloadDirectoryContents 93 111 { 94 [files removeAllObjects]; 95 [directories removeAllObjects]; 112 [super reloadDirectoryContents]; 96 113 [directories addObjectsFromArray:[directory allKeys]]; 97 114 [directories sortUsingSelector:@selector(directoryNameCompare:)]; 98 [super reloadDirectoryContents]; 115 [cachedMetaDirs addEntriesFromDictionary:directory]; 116 [metaDirs addEntriesFromDictionary:directory]; 99 117 } 100 118 101 119 - (void)processFile:(SapphireFileMetaData *)file 102 120 { 103 NSNumber *season = [NSNumber numberWithInt:[file seasonNumber]]; 121 int seasonNum = [file seasonNumber]; 122 if(seasonNum == 0) 123 return; 124 NSString *season = [NSString stringWithFormat:BRLocalizedString(@"Season %d", @"Season name"), seasonNum]; 104 125 SapphireSeasonDirectory *seasonInfo = [directory objectForKey:season]; 105 126 if(seasonInfo == nil) 106 127 { 107 seasonInfo = [[SapphireS howDirectory alloc] init];128 seasonInfo = [[SapphireSeasonDirectory alloc] initWithParent:self path:[[self path] stringByAppendingPathComponent:season]]; 108 129 [directory setObject:seasonInfo forKey:season]; 109 130 [seasonInfo release]; … … 117 138 - (void)reloadDirectoryContents 118 139 { 119 [files removeAllObjects];120 [directories removeAllObjects];121 122 NSMutableArray *fileMetas = [NSMutableArray array];123 [fileMetas addObjectsFromArray:[directory allValues]];124 [fileMetas sortUsingSelector:@selector(episodeCompare:)];125 126 NSEnumerator *fileEnum = [fileMetas objectEnumerator];127 SapphireFileMetaData *fileMeta = nil;128 while((fileMeta = [fileEnum nextObject]) != nil)129 [files addObject:[[fileMeta path] lastPathComponent]];130 140 [super reloadDirectoryContents]; 141 [files addObjectsFromArray:[directory allKeys]]; 142 [files sortUsingSelector:@selector(directoryNameCompare:)]; 143 [cachedMetaFiles addEntriesFromDictionary:directory]; 144 [metaFiles addEntriesFromDictionary:directory]; 131 145 } 132 146 133 147 - (void)processFile:(SapphireFileMetaData *)file 134 148 { 135 NSNumber *ep = [NSNumber numberWithInt:[file episodeNumber]]; 149 int epNum = [file episodeNumber]; 150 if(epNum == 0) 151 return; 152 NSString *ep = [NSString stringWithFormat:BRLocalizedString(@"Episode %d", @"Episode name"), epNum]; 136 153 [directory setObject:file forKey:ep]; 137 154 [self setReloadTimer];
