- Timestamp:
- 06/26/10 16:08:51 (2 years ago)
- Location:
- trunk/SapphireFrappliance/MetaData
- Files:
-
- 7 modified
-
SapphireMObjects/SapphireDirector.m (modified) (1 diff)
-
SapphireMObjects/SapphireGenre.m (modified) (1 diff)
-
SapphireMObjects/SapphireSeason.m (modified) (1 diff)
-
SapphireMObjects/SapphireTVShow.m (modified) (1 diff)
-
Support/SapphireFileSorter.h (modified) (1 diff)
-
Support/SapphireFileSorter.m (modified) (5 diffs)
-
Support/SapphireMovieDirectory.m (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/SapphireFrappliance/MetaData/SapphireMObjects/SapphireDirector.m
r1251 r1291 10 10 + (void)load 11 11 { 12 allowedSorts = [[NSArray alloc] initWithObjects:[SapphireMovieTitleSorter sharedInstance], [SapphireD ateSorter sharedInstance], [SapphireMovieIMDBRatingSorter sharedInstance], nil];12 allowedSorts = [[NSArray alloc] initWithObjects:[SapphireMovieTitleSorter sharedInstance], [SapphireDurationSorter sharedInstance], [SapphireFileSizeSorter sharedInstance], [SapphireDateSorter sharedInstance], [SapphireMovieIMDBRatingSorter sharedInstance], nil]; 13 13 } 14 14 -
trunk/SapphireFrappliance/MetaData/SapphireMObjects/SapphireGenre.m
r1251 r1291 11 11 + (void)load 12 12 { 13 allowedSorts = [[NSArray alloc] initWithObjects:[SapphireMovieTitleSorter sharedInstance], [SapphireD ateSorter sharedInstance], [SapphireMovieIMDBRatingSorter sharedInstance], nil];13 allowedSorts = [[NSArray alloc] initWithObjects:[SapphireMovieTitleSorter sharedInstance], [SapphireDurationSorter sharedInstance], [SapphireFileSizeSorter sharedInstance], [SapphireDateSorter sharedInstance], [SapphireMovieIMDBRatingSorter sharedInstance], nil]; 14 14 } 15 15 -
trunk/SapphireFrappliance/MetaData/SapphireMObjects/SapphireSeason.m
r1269 r1291 10 10 + (void)load 11 11 { 12 allowedSorts = [[NSArray alloc] initWithObjects:[SapphireTVEpisodeSorter sharedInstance], [SapphireD ateSorter sharedInstance], nil];12 allowedSorts = [[NSArray alloc] initWithObjects:[SapphireTVEpisodeSorter sharedInstance], [SapphireDurationSorter sharedInstance], [SapphireFileSizeSorter sharedInstance], [SapphireDateSorter sharedInstance], nil]; 13 13 } 14 14 -
trunk/SapphireFrappliance/MetaData/SapphireMObjects/SapphireTVShow.m
r1269 r1291 19 19 + (void)load 20 20 { 21 allowedSorts = [[NSArray alloc] initWithObjects:[SapphireTVEpisodeSorter sharedInstance], [SapphireD ateSorter sharedInstance], nil];21 allowedSorts = [[NSArray alloc] initWithObjects:[SapphireTVEpisodeSorter sharedInstance], [SapphireDurationSorter sharedInstance], [SapphireFileSizeSorter sharedInstance], [SapphireDateSorter sharedInstance], nil]; 22 22 } 23 23 -
trunk/SapphireFrappliance/MetaData/Support/SapphireFileSorter.h
r599 r1291 61 61 62 62 @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 34 34 @end 35 35 36 SapphireFileMetaData *getFileFromFileOrLink(id file) 37 { 38 if([file isKindOfClass:[SapphireFileMetaData class]]) 39 return (SapphireFileMetaData *)file; 40 else 41 return ((SapphireFileSymLink *)file).file; 42 } 36 43 37 44 @implementation SapphireFileSorter … … 218 225 @end 219 226 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 252 NSComparisonResult 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 292 NSComparisonResult 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 220 307 @implementation SapphireDateSorter 221 308 … … 240 327 - (int)sortNumber 241 328 { 242 return 5;329 return 7; 243 330 } 244 331 … … 246 333 { 247 334 /*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); 259 337 260 338 NSComparisonResult result = [first episodeAirDateCompare:second]; … … 299 377 - (int)sortNumber 300 378 { 301 return 6;379 return 8; 302 380 } 303 381 -
trunk/SapphireFrappliance/MetaData/Support/SapphireMovieDirectory.m
r1224 r1291 123 123 SapphireFileSorter *imdbRankSort = [SapphireMovieIMDBTop250RankSorter sharedInstance]; 124 124 SapphireFileSorter *awardSort = [SapphireMovieAcademyAwardSorter sharedInstance]; 125 SapphireFileSorter *durationSort = [SapphireDurationSorter sharedInstance]; 126 SapphireFileSorter *sizeSort = [SapphireFileSizeSorter sharedInstance]; 125 127 SapphireFileSorter *dateSort = [SapphireDateSorter sharedInstance]; 126 128 SapphireFileSorter *imdbRatingSort = [SapphireMovieIMDBRatingSorter sharedInstance]; … … 132 134 [all setPath:VIRTUAL_DIR_ALL_PATH]; 133 135 [all setCoverArtPath:moviePath]; 134 [all setFileSorters:[NSArray arrayWithObjects:titleSort, d ateSort, imdbRatingSort, nil]];136 [all setFileSorters:[NSArray arrayWithObjects:titleSort, durationSort, sizeSort, dateSort, imdbRatingSort, nil]]; 135 137 [genre setPath:VIRTUAL_DIR_GENRE_PATH]; 136 138 [genre setCoverArtPath:moviePath]; … … 144 146 [top250 setPath:VIRTUAL_DIR_TOP250_PATH]; 145 147 [top250 setCoverArtPath:moviePath]; 146 [top250 setFileSorters:[NSArray arrayWithObjects:imdbRankSort, titleSort, d ateSort, imdbRatingSort, nil]];148 [top250 setFileSorters:[NSArray arrayWithObjects:imdbRankSort, titleSort, durationSort, sizeSort, dateSort, imdbRatingSort, nil]]; 147 149 [oscar setPath:VIRTUAL_DIR_OSCAR_PATH]; 148 150 [oscar setCoverArtPath:[[NSBundle bundleForClass:[self class]] pathForResource:@"AMPAS_Oscar_H" ofType:@"png"]]; 149 [oscar setFileSorters:[NSArray arrayWithObjects:awardSort, titleSort, d ateSort, imdbRatingSort, nil]];151 [oscar setFileSorters:[NSArray arrayWithObjects:awardSort, titleSort, durationSort, sizeSort, dateSort, imdbRatingSort, nil]]; 150 152 [subDirs makeObjectsPerformSelector:@selector(setNotificationName:) withObject:MOVIE_DID_CHANGE_PREDICATE_MATCHING]; 151 153 Basic_Directory_Function_Inits
