Changeset 934

Show
Ignore:
Timestamp:
10/14/2009 11:11:11 PM (2 years ago)
Author:
gbooker
Message:

XML based virtual movie directories. Patch by skyy99_1111
Fixes #313

Location:
trunk/SapphireFrappliance
Files:
4 added
5 modified

Legend:

Unmodified
Added
Removed
  • trunk/SapphireFrappliance/MetaData/SapphireMObjects/SapphireEpisode.m

    r928 r934  
    151151        { 
    152152                NSEnumerator *otherEps = [dictionaries objectEnumerator]; 
    153                 NSDictionary *epDict = [otherEps nextObject]; //Skip first 
     153                NSDictionary *epDict = nil; 
     154                [otherEps nextObject]; //Skip first 
    154155                while((epDict = [otherEps nextObject]) != nil) 
    155156                        [ret insertAdditionalEpisode:epDict]; 
  • trunk/SapphireFrappliance/MetaData/Support/SapphireMovieDirectory.h

    r555 r934  
    2222#import "SapphireBasicDirectoryFunctionsDefines.h" 
    2323 
     24@class SapphireMovieVirtualDirectoryImporter; 
     25 
    2426/*! 
    2527 * @brief The base movies virtual directory 
     
    2931@interface SapphireMovieDirectory : NSObject <SapphireDirectory> { 
    3032        NSManagedObjectContext                  *moc;                           /*!< @brief The context*/ 
    31         NSArray                                                 *subDirs;                       /*!< @brief The sub-directory objects*/ 
    32         NSArray                                                 *names;                         /*!< @brief The sub-directory names*/ 
     33        NSArray                                                 *originalSubDirs;       /*!< @brief The static sub-directory objects*/ 
     34        NSArray                                                 *originalNames;         /*!< @brief The static sub-directory names*/ 
     35        NSMutableArray                                  *subDirs;                       /*!< @brief The sub-directory objects*/ 
     36        NSMutableArray                                  *names;                         /*!< @brief The sub-directory names*/ 
     37        NSArray                                                 *virtualDirs;           /*!< @brief The virtual directories last imported*/ 
     38        NSArray                                                 *defaultSorters;        /*!< @brief The list of default file sorters*/ 
     39        SapphireMovieVirtualDirectoryImporter   *vdImport;      /*!< @brief The virtial directory importer*/ 
    3340        Basic_Directory_Function_Instance_Variables 
    3441} 
  • trunk/SapphireFrappliance/MetaData/Support/SapphireMovieDirectory.m

    r908 r934  
    2727#import "SapphireBasicDirectoryFunctionsImports.h" 
    2828#import "SapphireFileSorter.h" 
    29  
     29#import "SapphireMovieVirtualDirectoryImporter.h" 
     30#import "SapphireMovieVirtualDirectory.h" 
    3031#import "SapphireMovie.h" 
    3132#import "SapphireCast.h" 
     
    8990         
    9091        moc = [context retain]; 
    91  
     92         
     93        /*Define the static virtual directories*/ 
    9294        NSPredicate *allPred = [NSPredicate predicateWithFormat:@"movie != nil"]; 
    9395        SapphireFilteredFileDirectory *all = [[SapphireFilteredFileDirectory alloc] initWithPredicate:allPred Context:moc]; 
     
    99101        NSPredicate *oscarPred = [NSPredicate predicateWithFormat:@"movie.oscarsWon != 0"]; 
    100102        SapphireFilteredFileDirectory *oscar = [[SapphireFilteredFileDirectory alloc] initWithPredicate:oscarPred Context:moc]; 
    101          
    102         subDirs = [[NSArray alloc] initWithObjects: 
    103                            all, 
    104                            cast, 
    105                            director, 
    106                            genre, 
    107                            top250, 
    108                            oscar, 
    109                            nil]; 
    110         names = [[NSArray alloc] initWithObjects: 
    111                            BRLocalizedString( @"All Movies", @"Select all movies" ), 
    112                            BRLocalizedString( @"By Cast", @"Select movies based on cast members" ), 
    113                            BRLocalizedString( @"By Director", @"Select movies based on director" ), 
    114                            BRLocalizedString( @"By Genre", @"Select movies based on genre" ), 
    115                            BRLocalizedString( @"IMDB Top 250", @"Show movies in IMDb Top 250 only" ), 
    116                            BRLocalizedString( @"Academy Award Winning", @"Show Oscar winning movies only" ), 
    117                            nil]; 
    118          
     103 
     104        originalSubDirs = [[NSArray alloc] initWithObjects: 
     105                                           all, 
     106                                           cast, 
     107                                           director, 
     108                                           genre, 
     109                                           top250, 
     110                                           oscar, 
     111                                           nil]; 
     112         
     113        originalNames = [[NSArray alloc] initWithObjects: 
     114                                         BRLocalizedString( @"All Movies", @"Select all movies" ), 
     115                                         BRLocalizedString( @"By Cast", @"Select movies based on cast members" ), 
     116                                         BRLocalizedString( @"By Director", @"Select movies based on director" ), 
     117                                         BRLocalizedString( @"By Genre", @"Select movies based on genre" ), 
     118                                         BRLocalizedString( @"IMDB Top 250", @"Show movies in IMDb Top 250 only" ), 
     119                                         BRLocalizedString( @"Academy Award Winning", @"Show Oscar winning movies only" ), 
     120                                         nil]; 
     121                                          
    119122        SapphireFileSorter *titleSort = [SapphireMovieTitleSorter sharedInstance]; 
    120123        SapphireFileSorter *imdbRankSort = [SapphireMovieIMDBTop250RankSorter sharedInstance]; 
     
    124127         
    125128        NSString *moviePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"video_H" ofType:@"png"]; 
    126          
     129        vdImport = [[SapphireMovieVirtualDirectoryImporter alloc] initWithPath:[applicationSupportDir() stringByAppendingPathComponent:@"virtualDirs.xml"]]; 
     130        defaultSorters = [[NSArray alloc] initWithObjects:titleSort, dateSort, imdbRatingSort, nil]; 
     131         
     132        /*Finish the static directory setup*/ 
    127133        [all setPath:VIRTUAL_DIR_ALL_PATH]; 
    128134        [all setCoverArtPath:moviePath]; 
     
    157163- (void) dealloc 
    158164{ 
     165        [originalSubDirs release]; 
     166        [originalNames release]; 
    159167        [subDirs release]; 
    160168        [names release]; 
     169        [virtualDirs release]; 
     170        [defaultSorters release]; 
     171        [vdImport release]; 
    161172        Basic_Directory_Function_Deallocs 
    162173        [super dealloc]; 
     
    209220- (void)reloadDirectoryContents 
    210221{ 
     222        /*Import any defined movie virtual directories*/ 
     223        NSArray *newVirtualDirs = [vdImport virtualDirectories]; 
     224        if(![virtualDirs isEqualToArray:newVirtualDirs]) 
     225        { 
     226                [virtualDirs release]; 
     227                [names release]; 
     228                [subDirs release]; 
     229                virtualDirs = [newVirtualDirs retain]; 
     230                names = [originalNames mutableCopy]; 
     231                subDirs = [originalSubDirs mutableCopy]; 
     232                 
     233                NSString *moviePath = [[NSBundle bundleForClass:[self class]] pathForResource:@"video_H" ofType:@"png"]; 
     234                NSEnumerator *mvdEnum = [newVirtualDirs objectEnumerator]; 
     235                SapphireMovieVirtualDirectory *virtualDir; 
     236                while((virtualDir = [mvdEnum nextObject]) != nil) 
     237                { 
     238                        SapphireFilteredFileDirectory *custom = [[SapphireFilteredFileDirectory alloc] initWithPredicate:[virtualDir predicate] Context:moc]; 
     239                        [subDirs addObject:custom]; 
     240                        [names addObject:BRLocalizedString([virtualDir title], [virtualDir description])]; 
     241                        [custom setPath:[[VIRTUAL_DIR_ROOT_PATH stringByAppendingString:@"/"] stringByAppendingString:[virtualDir description]]]; 
     242                        [custom setCoverArtPath:moviePath]; // Change this to be part of the XML? 
     243                        [custom setFileSorters:defaultSorters]; 
     244                        NSLog(@"Added %@, %@: %@", [names lastObject], [virtualDir predicate],[subDirs lastObject]); 
     245                        [custom release]; 
     246                } 
     247        } 
     248         
    211249        [subDirs makeObjectsPerformSelector:@selector(setFilterPredicate:) withObject:filterPredicate]; 
    212250        [delegate directoryContentsChanged]; 
  • trunk/SapphireFrappliance/Sapphire.xcodeproj/project.pbxproj

    r921 r934  
    5454                38FAFC320C012A7800853CFE /* SapphireAppliance.m in Sources */ = {isa = PBXBuildFile; fileRef = 38FAFC2F0C012A7800853CFE /* SapphireAppliance.m */; }; 
    5555                38FAFC330C012A7800853CFE /* SapphireBrowser.m in Sources */ = {isa = PBXBuildFile; fileRef = 38FAFC310C012A7800853CFE /* SapphireBrowser.m */; }; 
     56                5941C04710786EB2004C887B /* SapphireMovieVirtualDirectory.m in Sources */ = {isa = PBXBuildFile; fileRef = 5941C03A10786DD5004C887B /* SapphireMovieVirtualDirectory.m */; }; 
     57                5941C04810786ECA004C887B /* SapphireMovieVirtualDirectoryImporter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5941C03C10786DD5004C887B /* SapphireMovieVirtualDirectoryImporter.m */; }; 
    5658                805420AA0F94FA7E002D2DBF /* NSImage-Extensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 805420A90F94FA7E002D2DBF /* NSImage-Extensions.m */; }; 
    5759                8D5B49B0048680CD000E48DA /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 089C167DFE841241C02AAC07 /* InfoPlist.strings */; }; 
     
    361363                38FAFC300C012A7800853CFE /* SapphireAppliance.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SapphireAppliance.h; sourceTree = "<group>"; }; 
    362364                38FAFC310C012A7800853CFE /* SapphireBrowser.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = SapphireBrowser.m; sourceTree = "<group>"; }; 
     365                5941C03910786DD5004C887B /* SapphireMovieVirtualDirectory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SapphireMovieVirtualDirectory.h; sourceTree = "<group>"; }; 
     366                5941C03A10786DD5004C887B /* SapphireMovieVirtualDirectory.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SapphireMovieVirtualDirectory.m; sourceTree = "<group>"; }; 
     367                5941C03B10786DD5004C887B /* SapphireMovieVirtualDirectoryImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SapphireMovieVirtualDirectoryImporter.h; sourceTree = "<group>"; }; 
     368                5941C03C10786DD5004C887B /* SapphireMovieVirtualDirectoryImporter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SapphireMovieVirtualDirectoryImporter.m; sourceTree = "<group>"; }; 
    363369                805420A80F94FA7E002D2DBF /* NSImage-Extensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSImage-Extensions.h"; sourceTree = "<group>"; }; 
    364370                805420A90F94FA7E002D2DBF /* NSImage-Extensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSImage-Extensions.m"; sourceTree = "<group>"; }; 
     
    9941000                        isa = PBXGroup; 
    9951001                        children = ( 
     1002                                5941C03910786DD5004C887B /* SapphireMovieVirtualDirectory.h */, 
     1003                                5941C03A10786DD5004C887B /* SapphireMovieVirtualDirectory.m */, 
     1004                                5941C03B10786DD5004C887B /* SapphireMovieVirtualDirectoryImporter.h */, 
     1005                                5941C03C10786DD5004C887B /* SapphireMovieVirtualDirectoryImporter.m */, 
    9961006                                F5C55EC20DE90F3900661563 /* CoreDataSupportFunctions.h */, 
    9971007                                F5C55EC30DE90F3900661563 /* CoreDataSupportFunctions.m */, 
     
    13821392                                805420AA0F94FA7E002D2DBF /* NSImage-Extensions.m in Sources */, 
    13831393                                F5505DC71040864D0064D392 /* SapphireAudioNowPlayingController.m in Sources */, 
     1394                                5941C04710786EB2004C887B /* SapphireMovieVirtualDirectory.m in Sources */, 
     1395                                5941C04810786ECA004C887B /* SapphireMovieVirtualDirectoryImporter.m in Sources */, 
    13841396                        ); 
    13851397                        runOnlyForDeploymentPostprocessing = 0; 
  • trunk/SapphireFrappliance/main_debug.m

    r928 r934  
    4343#import "SapphireDirector.h" 
    4444#import "SapphireXMLData.h" 
     45#import "SapphireMovieDirectory.h" 
    4546 
    4647void overrideApplicationSupportdir(NSString *override); 
     
    259260        } 
    260261#endif 
    261 #define TESTING_MULTIPLE_AND_SINGLE_TV_SHOW_IMPORT 
     262//#define TESTING_MULTIPLE_AND_SINGLE_TV_SHOW_IMPORT 
    262263#ifdef TESTING_MULTIPLE_AND_SINGLE_TV_SHOW_IMPORT 
    263264        { 
     
    271272        } 
    272273#endif 
     274#define TESTING_MOVIE_VIRTUAL_DIRS_IN_XML 
     275#ifdef TESTING_MOVIE_VIRTUAL_DIRS_IN_XML 
     276        { 
     277                SapphireMovieDirectory *movieDir = [[SapphireMovieDirectory alloc] initWithContext:moc]; 
     278                [movieDir reloadDirectoryContents]; 
     279                [movieDir reloadDirectoryContents]; 
     280                [movieDir release]; 
     281        } 
     282#endif 
    273283         
    274284        [moc release];