Changeset 1291 for trunk

Show
Ignore:
Timestamp:
06/26/10 16:08:51 (2 years ago)
Author:
gbooker
Message:

Added sort by duration and sorting by filesize.

Location:
trunk/SapphireFrappliance/MetaData
Files:
7 modified

Legend:

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

    r1251 r1291  
    1010+ (void)load 
    1111{ 
    12         allowedSorts = [[NSArray alloc] initWithObjects:[SapphireMovieTitleSorter sharedInstance], [SapphireDateSorter sharedInstance], [SapphireMovieIMDBRatingSorter sharedInstance], nil]; 
     12        allowedSorts = [[NSArray alloc] initWithObjects:[SapphireMovieTitleSorter sharedInstance], [SapphireDurationSorter sharedInstance], [SapphireFileSizeSorter sharedInstance], [SapphireDateSorter sharedInstance], [SapphireMovieIMDBRatingSorter sharedInstance], nil]; 
    1313} 
    1414 
  • trunk/SapphireFrappliance/MetaData/SapphireMObjects/SapphireGenre.m

    r1251 r1291  
    1111+ (void)load 
    1212{ 
    13         allowedSorts = [[NSArray alloc] initWithObjects:[SapphireMovieTitleSorter sharedInstance], [SapphireDateSorter sharedInstance], [SapphireMovieIMDBRatingSorter sharedInstance], nil]; 
     13        allowedSorts = [[NSArray alloc] initWithObjects:[SapphireMovieTitleSorter sharedInstance], [SapphireDurationSorter sharedInstance], [SapphireFileSizeSorter sharedInstance], [SapphireDateSorter sharedInstance], [SapphireMovieIMDBRatingSorter sharedInstance], nil]; 
    1414} 
    1515 
  • trunk/SapphireFrappliance/MetaData/SapphireMObjects/SapphireSeason.m

    r1269 r1291  
    1010+ (void)load 
    1111{ 
    12         allowedSorts = [[NSArray alloc] initWithObjects:[SapphireTVEpisodeSorter sharedInstance], [SapphireDateSorter sharedInstance], nil]; 
     12        allowedSorts = [[NSArray alloc] initWithObjects:[SapphireTVEpisodeSorter sharedInstance], [SapphireDurationSorter sharedInstance], [SapphireFileSizeSorter sharedInstance], [SapphireDateSorter sharedInstance], nil]; 
    1313} 
    1414 
  • trunk/SapphireFrappliance/MetaData/SapphireMObjects/SapphireTVShow.m

    r1269 r1291  
    1919+ (void)load 
    2020{ 
    21         allowedSorts = [[NSArray alloc] initWithObjects:[SapphireTVEpisodeSorter sharedInstance], [SapphireDateSorter sharedInstance], nil]; 
     21        allowedSorts = [[NSArray alloc] initWithObjects:[SapphireTVEpisodeSorter sharedInstance], [SapphireDurationSorter sharedInstance], [SapphireFileSizeSorter sharedInstance], [SapphireDateSorter sharedInstance], nil]; 
    2222} 
    2323 
  • trunk/SapphireFrappliance/MetaData/Support/SapphireFileSorter.h

    r599 r1291  
    6161 
    6262@end 
     63 
     64@interface SapphireDurationSorter : SapphireFileSorter { 
     65} 
     66 
     67@end 
     68 
     69@interface SapphireFileSizeSorter : SapphireFileSorter { 
     70} 
     71 
     72@end 
  • trunk/SapphireFrappliance/MetaData/Support/SapphireFileSorter.m

    r872 r1291  
    3434@end 
    3535 
     36SapphireFileMetaData *getFileFromFileOrLink(id file) 
     37{ 
     38        if([file isKindOfClass:[SapphireFileMetaData class]]) 
     39                return (SapphireFileMetaData *)file; 
     40        else 
     41                return ((SapphireFileSymLink *)file).file;       
     42} 
    3643 
    3744@implementation SapphireFileSorter 
     
    218225@end 
    219226 
     227@implementation SapphireDurationSorter 
     228 
     229+ (SapphireFileSorter *)sharedInstance 
     230{ 
     231        static SapphireDurationSorter *shared = nil; 
     232        if(shared == nil) 
     233                shared = [[SapphireDurationSorter alloc] init]; 
     234        return shared; 
     235} 
     236 
     237- (NSString *)displayName 
     238{ 
     239        return BRLocalizedString(@"By Duration", @"[Sort] By Duration"); 
     240} 
     241 
     242- (NSString *)displayDescription 
     243{ 
     244        return BRLocalizedString(@"Sort by Duration.", @"Sort by Duration description"); 
     245} 
     246 
     247- (int)sortNumber 
     248{ 
     249        return 5; 
     250} 
     251 
     252NSComparisonResult fileAndLinkDurationCompare(id file1, id file2, void *context) 
     253{ 
     254        SapphireFileMetaData *first = getFileFromFileOrLink(file1); 
     255        SapphireFileMetaData *second = getFileFromFileOrLink(file2); 
     256         
     257        return [first.duration compare:second.duration]; 
     258} 
     259 
     260- (void)sortFiles:(NSMutableArray *)files 
     261{ 
     262        [files sortUsingFunction:fileAndLinkDurationCompare context:nil]; 
     263} 
     264 
     265@end 
     266 
     267@implementation SapphireFileSizeSorter 
     268 
     269+ (SapphireFileSorter *)sharedInstance 
     270{ 
     271        static SapphireFileSizeSorter *shared = nil; 
     272        if(shared == nil) 
     273                shared = [[SapphireFileSizeSorter alloc] init]; 
     274        return shared; 
     275} 
     276 
     277- (NSString *)displayName 
     278{ 
     279        return BRLocalizedString(@"By File Size", @"[Sort] By File Size"); 
     280} 
     281 
     282- (NSString *)displayDescription 
     283{ 
     284        return BRLocalizedString(@"Sort by File Size.", @"Sort by File Size description"); 
     285} 
     286 
     287- (int)sortNumber 
     288{ 
     289        return 6; 
     290} 
     291 
     292NSComparisonResult fileAndLinkSizeCompare(id file1, id file2, void *context) 
     293{ 
     294        SapphireFileMetaData *first = getFileFromFileOrLink(file1); 
     295        SapphireFileMetaData *second = getFileFromFileOrLink(file2); 
     296         
     297        return [first.size compare:second.size]; 
     298} 
     299 
     300- (void)sortFiles:(NSMutableArray *)files 
     301{ 
     302        [files sortUsingFunction:fileAndLinkSizeCompare context:nil]; 
     303} 
     304 
     305@end 
     306 
    220307@implementation SapphireDateSorter 
    221308 
     
    240327- (int)sortNumber 
    241328{ 
    242         return 5; 
     329        return 7; 
    243330} 
    244331 
     
    246333{ 
    247334        /*Resolve link and try to sort by episodes*/ 
    248         SapphireFileMetaData *first; 
    249         if([file1 isKindOfClass:[SapphireFileMetaData class]]) 
    250                 first = (SapphireFileMetaData *)file1; 
    251         else 
    252                 first = ((SapphireFileSymLink *)file1).file; 
    253          
    254         SapphireFileMetaData *second; 
    255         if([file2 isKindOfClass:[SapphireFileMetaData class]]) 
    256                 second = (SapphireFileMetaData *)file2; 
    257         else 
    258                 second = ((SapphireFileSymLink *)file2).file; 
     335        SapphireFileMetaData *first = getFileFromFileOrLink(file1); 
     336        SapphireFileMetaData *second = getFileFromFileOrLink(file2); 
    259337         
    260338        NSComparisonResult result = [first episodeAirDateCompare:second]; 
     
    299377- (int)sortNumber 
    300378{ 
    301         return 6; 
     379        return 8; 
    302380} 
    303381 
  • trunk/SapphireFrappliance/MetaData/Support/SapphireMovieDirectory.m

    r1224 r1291  
    123123        SapphireFileSorter *imdbRankSort = [SapphireMovieIMDBTop250RankSorter sharedInstance]; 
    124124        SapphireFileSorter *awardSort = [SapphireMovieAcademyAwardSorter sharedInstance]; 
     125        SapphireFileSorter *durationSort = [SapphireDurationSorter sharedInstance]; 
     126        SapphireFileSorter *sizeSort = [SapphireFileSizeSorter sharedInstance]; 
    125127        SapphireFileSorter *dateSort = [SapphireDateSorter sharedInstance]; 
    126128        SapphireFileSorter *imdbRatingSort = [SapphireMovieIMDBRatingSorter sharedInstance]; 
     
    132134        [all setPath:VIRTUAL_DIR_ALL_PATH]; 
    133135        [all setCoverArtPath:moviePath]; 
    134         [all setFileSorters:[NSArray arrayWithObjects:titleSort, dateSort, imdbRatingSort, nil]]; 
     136        [all setFileSorters:[NSArray arrayWithObjects:titleSort, durationSort, sizeSort, dateSort, imdbRatingSort, nil]]; 
    135137        [genre setPath:VIRTUAL_DIR_GENRE_PATH]; 
    136138        [genre setCoverArtPath:moviePath]; 
     
    144146        [top250 setPath:VIRTUAL_DIR_TOP250_PATH]; 
    145147        [top250 setCoverArtPath:moviePath]; 
    146         [top250 setFileSorters:[NSArray arrayWithObjects:imdbRankSort, titleSort, dateSort, imdbRatingSort, nil]]; 
     148        [top250 setFileSorters:[NSArray arrayWithObjects:imdbRankSort, titleSort, durationSort, sizeSort, dateSort, imdbRatingSort, nil]]; 
    147149        [oscar setPath:VIRTUAL_DIR_OSCAR_PATH]; 
    148150        [oscar setCoverArtPath:[[NSBundle bundleForClass:[self class]] pathForResource:@"AMPAS_Oscar_H" ofType:@"png"]]; 
    149         [oscar setFileSorters:[NSArray arrayWithObjects:awardSort, titleSort, dateSort, imdbRatingSort, nil]]; 
     151        [oscar setFileSorters:[NSArray arrayWithObjects:awardSort, titleSort, durationSort, sizeSort, dateSort, imdbRatingSort, nil]]; 
    150152        [subDirs makeObjectsPerformSelector:@selector(setNotificationName:) withObject:MOVIE_DID_CHANGE_PREDICATE_MATCHING]; 
    151153        Basic_Directory_Function_Inits