Changeset 204

Show
Ignore:
Timestamp:
09/06/07 20:25:54 (1 year ago)
Author:
gbooker
Message:

Activate the tv directory. Seems to work now. Only issue, how to deal with non-existant files which still show up in the meta data?
A bug fix or two

Files:

Legend:

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

    r201 r204  
    1414#import "SapphireSettings.h" 
    1515#import "SapphireTheme.h" 
     16#import "SapphireTVDirectory.h" 
    1617 
    1718#import "SapphireImporterDataMenu.h" 
     
    126127        NSMutableArray *mutableMasterNames = [[NSMutableArray alloc] init]; 
    127128        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         
    128140 
    129141        NSEnumerator *browserPointsEnum = [[metaCollection collectionDirectories] objectEnumerator]; 
     
    131143        while((browserPoint = [browserPointsEnum nextObject]) != nil) 
    132144        { 
     145                if(![metaCollection skipCollection:browserPoint]) 
     146                        [[metaCollection directoryForPath:browserPoint] loadMetaData]; 
    133147                if([metaCollection hideCollection:browserPoint]) 
    134148                        continue; 
    135149                SapphireBrowser *browser = [[SapphireBrowser alloc] initWithScene:[self scene] metaData:[metaCollection directoryForPath:browserPoint]]; 
    136150                [browser setListTitle:[browserPoint lastPathComponent]]; 
    137                 [browser setListIcon:[SapphireApplianceController gemForPredicate:[SapphireApplianceController predicate]]]; 
     151                [browser setListIcon:predicateGem]; 
    138152                [mutableMasterNames addObject:[NSString stringWithFormat:@"   %@", browserPoint]]; 
    139153                [mutableMasterControllers addObject:browser]; 
  • trunk/SapphireBrowser.m

    r203 r204  
    385385        currentPlayFile = nil; 
    386386        /*Reload our display*/ 
    387         [self reloadDirectoryContents]; 
     387        [self setNewPredicate:[SapphireApplianceController predicate]]; 
    388388    // always call super 
    389389    [super willBeExhumed]; 
     
    656656        NSString *name = [_names objectAtIndex:row]; 
    657657        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                 else 
    669                         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         } 
    682658         
    683659        /*Check for dir*/ 
  • trunk/SapphireMediaPreview.m

    r201 r204  
    6060{ 
    6161        [meta release]; 
     62        NSString *path = [newMeta path]; 
     63        if(path == nil) 
     64        { 
     65                meta = nil; 
     66                return; 
     67        } 
    6268        meta = [newMeta retain]; 
    6369        /*Now that we know the file, set the asset*/ 
  • trunk/SapphireMetaData.h

    r203 r204  
    137137- (void)getSubFileMetasWithDelegate:(id <SapphireMetaDataScannerDelegate>)subDelegate skipDirectories:(NSMutableSet *)skip; 
    138138- (void)scanForNewFilesWithDelegate:(id <SapphireMetaDataScannerDelegate>)subDelegate skipDirectories:(NSMutableSet *)skip; 
     139- (void)loadMetaData; 
    139140 
    140141- (BOOL)watchedForPredicate:(SapphirePredicate *)predicate; 
  • trunk/SapphireMetaData.m

    r203 r204  
    482482@implementation SapphireDirectoryMetaData 
    483483 
    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 not 
    485 - (NSString *)path 
    486 { 
    487         return [super path]; 
    488 } 
    489 - (void)setDelegate:(id <SapphireMetaDataDelegate>)newDelegate 
    490 { 
    491         [super setDelegate:newDelegate]; 
    492 } 
    493  
    494484/*! 
    495485 * @brief Creates a new meta data object 
     
    523513        [metaData setObject:metaDirs forKey:DIRS_KEY]; 
    524514        [metaDirs release]; 
     515         
     516        directories = [[NSMutableArray alloc] init]; 
     517        files = [[NSMutableArray alloc] init]; 
    525518         
    526519        /*Setup the cache*/ 
     
    10281021        [scanner setGivesResults:NO]; 
    10291022        [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        } 
    10301042} 
    10311043 
  • trunk/SapphireTVDirectory.m

    r203 r204  
    1010#import "SapphireMetaData.h" 
    1111 
     12@interface SapphireDirectoryMetaData (privateFunctions) 
     13- (id)initWithDictionary:(NSDictionary *)dict parent:(SapphireMetaData *)myParent path:(NSString *)myPath; 
     14@end 
     15 
    1216@implementation SapphireTVBaseDirectory 
    13 - (id)init 
     17- (id)initWithParent:(SapphireTVBaseDirectory *)myParent path:(NSString *)myPath 
    1418{ 
    15         self = [super init]; 
     19        self = [super initWithDictionary:nil parent:myParent path:myPath]; 
    1620        if(self == nil) 
    1721                return nil; 
     
    1923        directory = [[NSMutableDictionary alloc] init]; 
    2024        reloadTimer = nil; 
     25        scannedDirectory = YES; 
    2126         
    2227        return self; 
     28} 
     29 
     30- (id)init 
     31{ 
     32        return [self initWithParent:nil path:@"@TV"]; 
    2333} 
    2434 
     
    3242- (void)reloadDirectoryContents 
    3343{ 
     44        [files removeAllObjects]; 
     45        [directories removeAllObjects]; 
     46        [metaFiles removeAllObjects]; 
     47        [metaDirs removeAllObjects]; 
     48        [cachedMetaFiles removeAllObjects]; 
     49        [cachedMetaDirs removeAllObjects]; 
    3450        [reloadTimer invalidate]; 
    3551        reloadTimer = nil; 
     
    4864 
    4965@implementation SapphireTVDirectory 
    50 - (id)init 
     66- (id)initWithParent:(SapphireTVBaseDirectory *)myParent path:(NSString *)myPath 
    5167{ 
    52         self = [super init]; 
     68        self = [super initWithParent:myParent path:myPath]; 
    5369        if(self == nil) 
    5470                return nil; 
     
    6783- (void)reloadDirectoryContents 
    6884{ 
    69         [files removeAllObjects]; 
    70         [directories removeAllObjects]; 
     85        [super reloadDirectoryContents]; 
    7186        [directories addObjectsFromArray:[directory allKeys]]; 
    7287        [directories sortUsingSelector:@selector(directoryNameCompare:)]; 
    73         [super reloadDirectoryContents]; 
     88        [cachedMetaDirs addEntriesFromDictionary:directory]; 
     89        [metaDirs addEntriesFromDictionary:directory]; 
    7490} 
    7591 
     
    7793{ 
    7894        NSString *show = [file showName]; 
     95        if(show == nil) 
     96                return; 
    7997        SapphireShowDirectory *showInfo = [directory objectForKey:show]; 
    8098        if(showInfo == nil) 
    8199        { 
    82                 showInfo = [[SapphireShowDirectory alloc] init]; 
     100                showInfo = [[SapphireShowDirectory alloc] initWithParent:self path:[[self path] stringByAppendingPathComponent:show]]; 
    83101                [directory setObject:showInfo forKey:show]; 
    84102                [showInfo release]; 
     
    92110- (void)reloadDirectoryContents 
    93111{ 
    94         [files removeAllObjects]; 
    95         [directories removeAllObjects]; 
     112        [super reloadDirectoryContents]; 
    96113        [directories addObjectsFromArray:[directory allKeys]]; 
    97114        [directories sortUsingSelector:@selector(directoryNameCompare:)]; 
    98         [super reloadDirectoryContents]; 
     115        [cachedMetaDirs addEntriesFromDictionary:directory]; 
     116        [metaDirs addEntriesFromDictionary:directory]; 
    99117} 
    100118 
    101119- (void)processFile:(SapphireFileMetaData *)file 
    102120{ 
    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]; 
    104125        SapphireSeasonDirectory *seasonInfo = [directory objectForKey:season]; 
    105126        if(seasonInfo == nil) 
    106127        { 
    107                 seasonInfo = [[SapphireShowDirectory alloc] init]; 
     128                seasonInfo = [[SapphireSeasonDirectory alloc] initWithParent:self path:[[self path] stringByAppendingPathComponent:season]]; 
    108129                [directory setObject:seasonInfo forKey:season]; 
    109130                [seasonInfo release]; 
     
    117138- (void)reloadDirectoryContents 
    118139{ 
    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]]; 
    130140        [super reloadDirectoryContents]; 
     141        [files addObjectsFromArray:[directory allKeys]]; 
     142        [files sortUsingSelector:@selector(directoryNameCompare:)]; 
     143        [cachedMetaFiles addEntriesFromDictionary:directory]; 
     144        [metaFiles addEntriesFromDictionary:directory]; 
    131145} 
    132146 
    133147- (void)processFile:(SapphireFileMetaData *)file 
    134148{ 
    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]; 
    136153        [directory setObject:file forKey:ep]; 
    137154        [self setReloadTimer];