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/MetaDataImporting/SapphirePosterChooser.m

    r744 r827  
    2525#import "SapphireMedia.h" 
    2626#import "SapphireMetaData.h" 
     27#import "SapphireWaitDisplay.h" 
    2728#import "SapphireDirectoryMetaData.h" 
    2829#import <SapphireCompatClasses/SapphireFrontRowCompat.h> 
    2930#import "SapphireApplianceController.h" 
     31 
     32#import "NSImage-Extensions.h" 
    3033 
    3134NSData *CreateBitmapDataFromImage(CGImageRef image, unsigned int width, unsigned int height); 
     
    9497} 
    9598 
     99- (void)setRefreshInvokation: (NSInvocation *)invoke; 
     100{ 
     101        [refreshInvoke release]; 
     102        refreshInvoke = [invoke retain]; 
     103} 
     104 
    96105- (void) resetLayout 
    97106{ 
     
    147156} 
    148157 
     158- (BRLayerController *)doRefresh 
     159{ 
     160        [refreshInvoke invoke]; 
     161        BRLayerController *ret = nil; 
     162        [refreshInvoke getReturnValue:&ret]; 
     163        return ret; 
     164} 
     165 
    149166- (void) itemSelected: (long) row 
    150167{ 
    151168        /*User made a selection*/ 
    152         //      if(selection==0) 
    153         //      { 
    154         /*User requested a menu refresh*/ 
    155         //              [self resetLayout]; 
    156         //      } 
    157         //      else 
    158         //      { 
    159         selectedPoster = row; 
    160         [[self stack] popController]; 
    161         //      } 
     169        if ( refreshInvoke != nil && row == [posters count] ) 
     170        { 
     171                NSInvocation *invoke = [NSInvocation invocationWithMethodSignature: [self methodSignatureForSelector: @selector(doRefresh)]]; 
     172                [invoke setSelector: @selector(doRefresh)]; 
     173                [invoke setTarget:   self]; 
     174                 
     175                SapphireWaitDisplay *wait = [[SapphireWaitDisplay alloc] initWithScene: [self scene] 
     176                                                                                                                                                 title: BRLocalizedString(@"Getting artwork selection", @"Getting artwork selection") 
     177                                                                                                                                        invokation: invoke]; 
     178                [[self stack] swapController:wait]; 
     179        } 
     180        else 
     181        { 
     182                selectedPoster = row; 
     183                if ( [[posters objectAtIndex:selectedPoster] isKindOfClass:[NSImage class]] ) 
     184                        [[posters objectAtIndex:row] writeToFile:[meta coverArtPath] atomically:YES]; 
     185                [[self stack] popController]; 
     186        } 
    162187} 
    163188 
     
    186211    [posterMarch setIconSource: self]; 
    187212        [[self list] setDatasource:self]; 
     213} 
     214 
     215- (void)setPosterImages:(NSArray *)posterList 
     216{ 
     217        posters = [posterList retain]; 
     218 
     219        [posterMarch release]; 
     220        posterMarch = nil; 
     221 
     222        [[self list] setDatasource: self]; 
    188223} 
    189224 
     
    234269         
    235270        NSRect master = [SapphireFrontRowCompat frameOfController:self]; 
    236         [fileInfoText setMaximumSize:NSMakeSize(master.size.width * 2.0f/3.0f, master.size.height * 0.4f)]; 
    237         NSSize txtSize = [fileInfoText renderedSize]; 
     271        NSSize txtSize = [SapphireFrontRowCompat textControl:fileInfoText renderedSizeWithMaxSize:NSMakeSize(master.size.width * 2.0f/3.0f, master.size.height * 0.4f)]; 
    238272        NSRect frame; 
    239273        frame.origin.x = (master.size.width - txtSize.width) * 0.5f; 
     
    274308- (long) itemCount 
    275309{ 
     310        if ( refreshInvoke != nil )  
     311                return [posters count] + 1; 
     312         
    276313        return [posters count]; 
    277314} 
     
    281318{ 
    282319        BRAdornedMenuItemLayer *result = [SapphireFrontRowCompat textMenuItemForScene:[self scene] folder:NO]; 
    283         //      if(row==0) 
    284         //              [SapphireFrontRowCompat setTitle:BRLocalizedString(@"< Refresh Posters >", @"Reload poster images") forMenu:result]; 
    285         //      else 
    286         [SapphireFrontRowCompat setTitle:[NSString stringWithFormat:@"Version %2d",row+1] forMenu:result]; 
     320        if ( refreshInvoke != nil && row == [posters count] ) 
     321                [SapphireFrontRowCompat setTitle:BRLocalizedString(@"Refresh", @"Reload images") forMenu:result]; 
     322        else 
     323                [SapphireFrontRowCompat setTitle:[NSString stringWithFormat:@"Version %2d",row+1] forMenu:result]; 
    287324        return result; 
    288325} 
     
    292329        if(row > [posters count]) 
    293330                return nil; 
    294         else 
    295                 return [NSString stringWithFormat:@"Version %2d",row+1]; 
     331 
     332        if (refreshInvoke != nil && row == [posters count]) 
     333                return BRLocalizedString(@"Refresh", @"Reload images"); 
     334 
     335        return [NSString stringWithFormat:@"Version %2d",row+1]; 
    296336} 
    297337 
     
    438478        if(posterMarch != nil) 
    439479                return nil; 
     480 
    440481        SapphireMediaPreview *preview = [[SapphireMediaPreview alloc] initWithScene:[self scene]]; 
    441         SapphireMedia *asset = [[SapphireMedia alloc] initWithMediaURL:[NSURL fileURLWithPath:@"none"]]; 
    442         NSString *poster = [posters objectAtIndex:row]; 
    443         NSString *posterDest=[NSString stringWithFormat:@"%@/%@", 
    444                                                   [applicationSupportDir() stringByAppendingPathComponent:@"Poster_Buffer"], 
    445                                                   [poster lastPathComponent]]; 
    446         [preview setShowsMetadataImmediately:NO]; 
    447         SapphireDirectoryMetaData *parent = [meta parent]; 
    448         [preview setMetaData:meta inMetaData:parent]; 
    449482        [preview setShowsMetadataImmediately:YES]; 
    450         [asset setImagePath:posterDest]; 
    451         [preview setAsset:asset]; 
    452         [asset release]; 
    453          
     483         
     484        if ( row < [posters count] ) 
     485        { 
     486                [preview setMetaData:meta inMetaData:[meta parent]]; 
     487                 
     488                SapphireMedia *asset = [[SapphireMedia alloc] initWithMediaURL:[NSURL fileURLWithPath:@"none"]]; 
     489                id poster = [posters objectAtIndex:row]; 
     490 
     491                if ( [poster isKindOfClass:[NSString class]] ) 
     492                { 
     493                        NSString *posterDest = [NSString stringWithFormat:@"%@/%@",     [applicationSupportDir() stringByAppendingPathComponent:@"Poster_Buffer"], 
     494                                                                                                                                                [poster lastPathComponent]]; 
     495                        [asset setImagePath: posterDest]; 
     496                } 
     497                else 
     498                { 
     499                        [asset setImage: poster]; 
     500                } 
     501 
     502                [preview setAsset:asset]; 
     503                [asset release]; 
     504        } 
     505        else if ( row == [posters count] ) 
     506        { 
     507                NSMutableDictionary *refreshMeta = [[NSMutableDictionary alloc] init]; 
     508                [refreshMeta setObject: BRLocalizedString( @"Refresh the artwork selection", @"Refresh the artwork selection" ) forKey: META_TITLE_KEY]; 
     509                [preview setUtilityData: refreshMeta]; 
     510        } 
     511 
    454512        return [preview autorelease]; 
    455513}