Show
Ignore:
Timestamp:
04/26/09 17:24:48 (3 years ago)
Author:
gbooker
Message:

Added screen capture ability thanks to patch by wazza. Does not work on ATV since ATV is broken.
Fixes #45

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/CoreData/SapphireFrappliance/Browser/SapphireMarkMenu.m

    r818 r827  
    3333#import "SapphireConfirmPrompt.h" 
    3434#import "SapphireApplianceController.h" 
     35#import "SapphirePosterChooser.h" 
     36#import "NSImage-Extensions.h" 
     37#import "NSFileManager-Extensions.h" 
     38 
     39BOOL allowCoverArtChange( NSString * const path ) 
     40{ 
     41        if ( [[NSFileManager defaultManager] hasVIDEO_TS:path] ) 
     42                return NO; 
     43         
     44        const NSSet * const disallowedFormats = [[NSSet alloc] initWithObjects:@"mkv", @"flv", nil]; 
     45         
     46        return ![disallowedFormats containsObject:[path pathExtension]]; 
     47} 
    3548 
    3649@implementation SapphireMarkMenu 
     
    5164        COMMAND_CUT_PATH, 
    5265        COMMAND_DELETE_PATH, 
     66        COMMAND_CHANGE_ARTWORK, 
    5367        //File Only Commands 
    5468        COMMAND_MARK_TO_JOIN, 
     
    365379                                [NSNumber numberWithInt:COMMAND_DELETE_PATH], MARK_COMMAND, 
    366380                                nil]]; 
     381                // Allow cover art change for all formats except for DVD, .mkv, and .flv 
     382                // QTMovie is broken on the ATV, don't do it there 
     383                if ( [SapphireFrontRowCompat usingFrontRow] && ![SapphireFrontRowCompat usingTakeTwo] && allowCoverArtChange( [meta path] ) ) 
     384                { 
     385                        [marks addObject: 
     386                                [NSDictionary dictionaryWithObjectsAndKeys: 
     387                                        BRLocalizedString(@"Change artwork", @"Change artwork"), MARK_NAME, 
     388                                        BRLocalizedString(@"Select displayed artwork", @""), MARK_DESCRIPTION, 
     389                                        [NSNumber numberWithInt:COMMAND_CHANGE_ARTWORK], MARK_COMMAND, 
     390                                        nil]]; 
     391                } 
    367392        } 
    368393        else 
     
    384409} 
    385410 
    386 - (NSController *)doJoin:(SapphireWaitDisplay *)wait 
     411- (BRLayerController *)loadArtwork:(SapphireFileMetaData *)fileMeta 
     412{ 
     413        NSInvocation *invoke = [NSInvocation invocationWithMethodSignature: [self methodSignatureForSelector: @selector(doChangeArtwork:)]]; 
     414        [invoke setSelector: @selector(doChangeArtwork:)]; 
     415        [invoke setTarget:   self]; 
     416         
     417        SapphireWaitDisplay *wait = [[SapphireWaitDisplay alloc] initWithScene: [self scene] 
     418                                                                                                                                         title: BRLocalizedString(@"Getting artwork selection", @"Getting artwork selection") 
     419                                                                                                                                invokation: invoke]; 
     420         
     421        [invoke setArgument: &fileMeta atIndex: 2]; 
     422        return [wait autorelease]; 
     423} 
     424 
     425- (BRLayerController *)doChangeArtwork:(SapphireFileMetaData *)fileMeta 
     426{ 
     427        SapphirePosterChooser *controller = [[SapphirePosterChooser alloc] initWithScene:[self scene]]; 
     428 
     429        [controller setListTitle:BRLocalizedString(@"Select cover art", @"Select cover art")]; 
     430        [controller setMovieTitle:@" "]; 
     431        [controller setFile:fileMeta]; 
     432        [controller setPosterImages:[NSImage imagesFromMovie:[fileMeta path] forArraySize:10]]; 
     433         
     434        NSInvocation *invoke = [NSInvocation invocationWithMethodSignature: [self methodSignatureForSelector:@selector(loadArtwork:)]]; 
     435        [invoke setSelector:@selector(loadArtwork:)]; 
     436        [invoke setTarget: self]; 
     437        [invoke setArgument:&fileMeta atIndex:2]; 
     438        [controller setRefreshInvokation:invoke]; 
     439         
     440        return [controller autorelease]; 
     441} 
     442 
     443- (BRLayerController *)doJoin:(SapphireWaitDisplay *)wait 
    387444{ 
    388445        @try { 
     
    704761                                replaceController = [confirm autorelease]; 
    705762                        } 
     763                                break; 
     764                        case COMMAND_CHANGE_ARTWORK: 
     765                                replaceController = [self loadArtwork:fileMeta]; 
     766                                break; 
    706767                } 
    707768        }