Changeset 693

Show
Ignore:
Timestamp:
12/03/08 15:03:43 (1 month ago)
Author:
gbooker
Message:

Re-commit a bunch of stuff that was lost in server failure

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/SapphireFrappliance/Sapphire.xcodeproj/project.pbxproj

    r680 r693  
    160160                        containerPortal = F51BFD2D0D26BDF300E22363 /* SapphireCompatibilityClasses.xcodeproj */; 
    161161                        proxyType = 2; 
    162                         remoteGlobalIDString = F571B4B90E96F62C00B7FD9D /* SapphireTakeTwoPointTwoCompatClasses.framework */
     162                        remoteGlobalIDString = F571B4B90E96F62C00B7FD9D
    163163                        remoteInfo = SapphireTakeTwoPointTwoCompatClasses; 
    164164                }; 
     
    167167                        containerPortal = F51BFD2D0D26BDF300E22363 /* SapphireCompatibilityClasses.xcodeproj */; 
    168168                        proxyType = 1; 
    169                         remoteGlobalIDString = F571B4B80E96F62C00B7FD9D /* SapphireTakeTwoPointTwoCompatClasses */
     169                        remoteGlobalIDString = F571B4B80E96F62C00B7FD9D
    170170                        remoteInfo = SapphireTakeTwoPointTwoCompatClasses; 
    171171                }; 
     
    769769                        isa = PBXReferenceProxy; 
    770770                        fileType = wrapper.framework; 
    771                         name = SapphireTakeTwoPointTwoCompatClasses.framework; 
    772                         path = ../../../../build/Release/SapphireTakeTwoPointTwoCompatClasses.framework; 
     771                        path = SapphireTakeTwoPointTwoCompatClasses.framework; 
    773772                        remoteRef = F571B4BE0E96F62C00B7FD9D /* PBXContainerItemProxy */; 
    774773                        sourceTree = BUILT_PRODUCTS_DIR; 
  • trunk/SapphireFrappliance/SapphireApplianceController.m

    r635 r693  
    141141                        [ret appendFormat:@"\n0x%X\t%@", [key pointerValue], [mapping objectForKey:key]]; 
    142142        } 
    143         NSLog(@"%@", ret);       
    144143} 
    145144 
     
    302301} 
    303302 
    304 - (void) willBePushed 
    305 { 
    306     // We're about to be placed on screen, but we're not yet there 
     303- (void) wasPushed 
     304{ 
     305    // We've just been put on screen, the user can see this controller's content now 
    307306    [self recreateMenu]; 
    308307        [[self list] reload]; 
    309308    // always call super 
    310     [super willBePushed]; 
    311 } 
    312  
    313 - (void) wasPushed 
    314 { 
    315     // We've just been put on screen, the user can see this controller's content now 
    316      
    317     // always call super 
    318309    [super wasPushed]; 
    319 } 
    320  
    321 - (void) willBePopped 
    322 { 
    323     // The user pressed Menu, but we've not been removed from the screen yet 
    324      
    325     // always call super 
    326     [super willBePopped]; 
    327310} 
    328311 
     
    335318} 
    336319 
    337 - (void) willBeBuried 
    338 { 
    339     // The user just chose an option, and we will be taken off the screen 
    340      
    341     // always call super 
    342     [super willBeBuried]; 
    343 } 
    344  
    345320- (void) wasBuriedByPushingController: (BRLayerController *) controller 
    346321{ 
     
    351326} 
    352327 
    353 - (void) willBeExhumed 
    354 { 
    355     // the user pressed Menu, but we've not been revealed yet 
     328- (void) wasExhumedByPoppingController: (BRLayerController *) controller 
     329{ 
     330    // handle being revealed when the user presses Menu 
    356331     
    357     // always call super 
    358     [super willBeExhumed]; 
    359332        [self setMenuFromSettings]; 
    360333        [[self list] reload]; 
    361334        [SapphireFrontRowCompat renderScene:[self scene]]; 
    362 
    363  
    364 - (void) wasExhumedByPoppingController: (BRLayerController *) controller 
    365 
    366     // handle being revealed when the user presses Menu 
    367      
     335 
    368336    // always call super 
    369337    [super wasExhumedByPoppingController: controller]; 
  • trunk/SapphireFrappliance/SapphireBrowser.m

    r675 r693  
    169169} 
    170170 
    171 - (void) willBePushed 
    172 
    173     // We're about to be placed on screen, but we're not yet there 
    174      
    175     // always call super 
    176     [super willBePushed]; 
     171- (void) wasPushed 
     172
     173    // We've just been put on screen, the user can see this controller's content now 
    177174        /*Reload upon display*/ 
    178         [metaData setDelegate:self]; 
    179         [self setNewPredicate:[SapphireApplianceController predicate]]; 
    180 
    181  
    182 - (void) wasPushed 
    183 
    184     // We've just been put on screen, the user can see this controller's content now 
    185      
     175        @try { 
     176                [metaData setDelegate:self]; 
     177                [self setNewPredicate:[SapphireApplianceController predicate]]; 
     178        } 
     179        @catch (NSException * e) { 
     180                [SapphireApplianceController logException:e]; 
     181        }        
    186182    // always call super 
    187183    [super wasPushed]; 
     
    190186} 
    191187 
    192 - (void) willBePopped 
    193 
    194     // The user pressed Menu, but we've not been removed from the screen yet 
    195      
     188- (void) wasPopped 
     189
     190    // The user pressed Menu, removing us from the screen 
    196191    // always call super 
    197     [super willBePopped]; 
     192 
     193    [super wasPopped]; 
    198194        /*Cancel everything we were doing*/ 
    199195        [metaData cancelImport]; 
     
    202198} 
    203199 
    204 - (void) wasPopped 
    205 
    206     // The user pressed Menu, removing us from the screen 
    207     // always call super 
    208     [super wasPopped]; 
    209 
    210  
    211 - (void) willBeBuried 
    212 
    213     // The user just chose an option, and we will be taken off the screen 
    214      
     200- (void) wasBuriedByPushingController: (BRLayerController *) controller 
     201
     202    // The user chose an option and this controller is no longer on screen 
     203 
    215204        /*Cancel everything we were doing*/ 
    216205        [metaData cancelImport]; 
    217206        cancelScan = YES; 
    218         // always call super 
    219     [super willBeBuried]; 
    220 
    221  
    222 - (void) wasBuriedByPushingController: (BRLayerController *) controller 
    223 
    224     // The user chose an option and this controller is no longer on screen 
    225      
     207 
    226208    // always call super 
    227209    [super wasBuriedByPushingController: controller]; 
    228210} 
    229211 
    230 - (void) willBeExhumed 
    231 { 
    232     // the user pressed Menu, but we've not been revealed yet 
    233      
     212- (void) wasExhumedByPoppingController: (BRLayerController *) controller 
     213{ 
     214    // handle being revealed when the user presses Menu 
     215 
    234216        /*Reload our display*/ 
    235217        [self setNewPredicate:[SapphireApplianceController predicate]]; 
    236     // always call super 
    237     [super willBeExhumed]; 
    238 
    239  
    240 - (void) wasExhumedByPoppingController: (BRLayerController *) controller 
    241 
    242     // handle being revealed when the user presses Menu 
    243      
     218 
    244219    // always call super 
    245220    [super wasExhumedByPoppingController: controller]; 
     
    557532                         
    558533                        /*and go*/ 
    559                         SapphireVideoPlayerController *controller = [[SapphireVideoPlayerController alloc] initWithScene:[self scene]]; 
     534                        SapphireVideoPlayerController *controller = [[SapphireVideoPlayerController alloc] initWithScene:[self scene] player:player]; 
    560535                        [controller setPlayFile:currentPlayFile]; 
    561536                        [controller setAllowsResume:YES]; 
    562                         [controller setVideoPlayer:player]; 
    563537                        [[self stack] pushController:controller]; 
    564538 
  • trunk/SapphireFrappliance/SapphireImporterDataMenu.h

    r504 r693  
    2121#import "SapphireMetaData.h" 
    2222#import <SapphireCompatClasses/SapphireCenteredMenuController.h> 
     23#import <SapphireCompatClasses/SapphireLayoutManager.h> 
    2324 
    2425@protocol SapphireFileMetaDataProtocol; 
     
    109110 * This class creates the importer UI.  It handles all the user interaction and passes commands on to its subordinates. 
    110111 */ 
    111 @interface SapphireImporterDataMenu : SapphireCenteredMenuController <SapphireMetaDataScannerDelegate, SapphireImporterBackgroundProtocol
     112@interface SapphireImporterDataMenu : SapphireCenteredMenuController <SapphireMetaDataScannerDelegate, SapphireImporterBackgroundProtocol, SapphireLayoutDelegate
    112113{ 
    113114        BRTextControl                                   *text;                                  /*!< @brief The informative text*/ 
     
    131132        SEL                                                             action;                                 /*!< @brief The action selector when the button is hit*/ 
    132133        NSString                                                *buttonTitle;                   /*!< @brief The fake button title*/ 
     134        BOOL                                                    layoutDone;                             /*!< @brief YES if layout already done, NO otherwise*/ 
    133135} 
    134136/*! 
  • trunk/SapphireFrappliance/SapphireImporterDataMenu.m

    r675 r693  
    6767        [self addControl: currentFile] ; 
    6868        [SapphireFrontRowCompat addSublayer:bar toControl:self]; 
    69  
     69         
     70        [SapphireLayoutManager setCustomLayoutOnControl:self]; 
     71         
    7072    return ( self ); 
    7173} 
     
    412414} 
    413415 
     416- (void)doMyLayout 
     417{ 
     418        if(!layoutDone) 
     419        { 
     420                [self layoutFrame]; 
     421                [self resetUIElements]; 
     422                layoutDone = YES; 
     423        } 
     424} 
     425 
    414426- (void)wasPushed 
    415427{ 
  • trunk/SapphireFrappliance/SapphireMarkMenu.m

    r635 r693  
    266266} 
    267267 
    268 - (void) willBePushed 
    269 { 
    270     // We're about to be placed on screen, but we're not yet there 
    271      
    272     // always call super 
    273     [super willBePushed]; 
    274 } 
    275  
    276268- (void) wasPushed 
    277269{ 
     
    282274} 
    283275 
    284 - (void) willBePopped 
    285 { 
    286     // The user pressed Menu, but we've not been removed from the screen yet 
    287      
    288     // always call super 
    289     [super willBePopped]; 
    290 } 
    291  
    292276- (void) wasPopped 
    293277{ 
     
    298282} 
    299283 
    300 - (void) willBeBuried 
    301 { 
    302     // The user just chose an option, and we will be taken off the screen 
    303      
    304     // always call super 
    305     [super willBeBuried]; 
    306 } 
    307  
    308284- (void) wasBuriedByPushingController: (BRLayerController *) controller 
    309285{ 
     
    312288    // always call super 
    313289    [super wasBuriedByPushingController: controller]; 
    314 } 
    315  
    316 - (void) willBeExhumed 
    317 { 
    318     // the user pressed Menu, but we've not been revealed yet 
    319      
    320     // always call super 
    321     [super willBeExhumed]; 
    322290} 
    323291 
  • trunk/SapphireFrappliance/SapphireMedia.h

    r461 r693  
    2525 * This class is designed to allow the custom settings of resume time as well as a custom image path.  It extends from BRSimpleMediaAsset, so it can be used whenever a URL based asset is needed. 
    2626 */ 
    27 @interface SapphireMedia : BRSimpleMediaAsset { 
     27@interface SapphireMedia : BRXMLMediaAsset { 
    2828        unsigned int            resumeTime;             /*!< @brief The resume time to use, 0 to use super*/ 
    2929        NSString                        *imagePath;             /*!< @brief The cover art path to use, nil to use super*/ 
    3030} 
     31 
     32/*! 
     33 * @brief Creates a media with a URL. Compatibility with old calling mechanism 
     34 * 
     35 * @param url The url to use for this media. 
     36 * @return The media 
     37 */ 
     38- (id)initWithMediaURL:(NSURL *)url; 
    3139 
    3240/*! 
  • trunk/SapphireFrappliance/SapphireMedia.m

    r461 r693  
    2323 
    2424@implementation SapphireMedia 
     25 
     26- (id)initWithMediaURL:(NSURL *)url 
     27{ 
     28        //This is here to fix 2.2 
     29        self = [super initWithMediaProvider:nil]; 
     30        NSString *urlString = [url absoluteString]; 
     31        NSString *filename = [url path]; 
     32        [self setObject:[filename lastPathComponent] forKey:@"id"]; 
     33        [self setObject:[BRMediaType movie] forKey:@"mediaType"]; 
     34        [self setObject:urlString forKey:@"mediaURL"]; 
     35         
     36        return self; 
     37} 
    2538 
    2639- (void)dealloc 
  • trunk/SapphireFrappliance/SapphireMediaPreview.h

    r496 r693  
    2929 */ 
    3030@interface SapphireMediaPreview : BRMetadataPreviewController{ 
    31         int             padding[16];  /*!< @brief The classes are of different sizes.  This padding prevents a class compiled with one size to overlap when used with a class of a different size*/    
     31        int             padding[32];  /*!< @brief The classes are of different sizes.  This padding prevents a class compiled with one size to overlap when used with a class of a different size*/    
    3232        SapphireMetaData                        *meta;                  /*!< @brief The metadata to display in the preview*/ 
    3333        SapphireDirectoryMetaData       *dirMeta;               /*!< @brief The directory containing the metadata*/ 
  • trunk/SapphireFrappliance/SapphireMovieChooser.h

    r461 r693  
    2020 
    2121#import <SapphireCompatClasses/SapphireCenteredMenuController.h> 
     22#import <SapphireCompatClasses/SapphireLayoutManager.h> 
    2223 
    2324#define MOVIE_CHOOSE_CANCEL             -2 
     
    2930 * This class presents the user with a list of possible movies to match a file and asks the user to choose its name. 
    3031 */ 
    31 @interface SapphireMovieChooser : SapphireCenteredMenuController
     32@interface SapphireMovieChooser : SapphireCenteredMenuController <SapphireLayoutDelegate>
    3233        NSArray                 *movies;                /*!< @brief The list of possible movies*/ 
    3334        NSString                *fileName;              /*!< @brief The filename of the current file*/ 
  • trunk/SapphireFrappliance/SapphireMovieChooser.m

    r505 r693  
    4343        [self addControl: fileNameText];         
    4444        [[self list] setDatasource:self]; 
     45         
     46        [SapphireLayoutManager setCustomLayoutOnControl:self]; 
    4547         
    4648        return self; 
     
    8991} 
    9092 
    91 - (void)willBePushed 
    92 { 
    93         [super willBePushed]; 
    94         [(BRListControl *)[self list] setSelection:1]; 
    95 } 
    96  
    9793- (void)wasPushed 
    9894{ 
     95        [(BRListControl *)[self list] setSelection:1]; 
    9996        [self doMyLayout]; 
    10097        [super wasPushed]; 
  • trunk/SapphireFrappliance/SapphireMovieImporter.h

    r461 r693  
    3333        NSString                                        *settingsPath;                  /*!< @brief The persistent store of translations*/ 
    3434        SapphirePosterChooser           *posterChooser;                 /*!< @brief The poster chooser (if exists) (not retained)*/ 
     35        BRLayerController                       *childController;               /*!< @brief The controller we push on top of us*/ 
    3536} 
    3637 
  • trunk/SapphireFrappliance/SapphireMovieImporter.m

    r682 r693  
    197197        [movieTranslations release]; 
    198198        [settingsPath release]; 
     199        [childController release]; 
    199200        [super dealloc]; 
    200201} 
     
    729730                [chooser setListTitle:BRLocalizedString(@"Select Movie Title", @"Prompt the user for title of movie")]; 
    730731                /*And display prompt*/ 
     732                childController = [chooser retain]; 
    731733                [[dataMenu stack] pushController:chooser]; 
    732734                [chooser release]; 
     
    788790                                [posterChooser setFile:(SapphireFileMetaData *)metaData]; 
    789791                                [posterChooser setListTitle:BRLocalizedString(@"Select Movie Poster", @"Prompt the user for poster selection")]; 
     792                                childController = [posterChooser retain]; 
    790793                                [[dataMenu stack] pushController:posterChooser]; 
    791794                                [posterChooser release]; 
     
    896899{ 
    897900        /*See if it was a movie chooser*/ 
    898         if([controller isKindOfClass:[SapphireMovieChooser class]]) 
     901        if([childController isKindOfClass:[SapphireMovieChooser class]]) 
    899902        { 
    900903                /*Get the user's selection*/ 
    901                 SapphireMovieChooser *chooser = (SapphireMovieChooser *)controller; 
     904                SapphireMovieChooser *chooser = (SapphireMovieChooser *)childController; 
    902905                int selection = [chooser selection]; 
    903906                if(selection == MOVIE_CHOOSE_CANCEL) 
     
    932935                [dataMenu resume]; 
    933936        } 
    934         else if([controller isKindOfClass:[SapphirePosterChooser class]]) 
     937        else if([childController isKindOfClass:[SapphirePosterChooser class]]) 
    935938        { 
    936939                int selectedPoster = [posterChooser selectedPoster]; 
     
    958961        else 
    959962                return; 
     963         
     964        [childController release]; 
     965        childController = nil; 
    960966} 
    961967 
  • trunk/SapphireFrappliance/SapphirePosterChooser.h

    r504 r693  
    2020 
    2121#import <SapphireCompatClasses/SapphireMediaMenuController.h> 
     22#import <SapphireCompatClasses/SapphireLayoutManager.h> 
    2223 
    2324#define POSTER_CHOOSE_CANCEL            -1 
     
    3132 * This class provides a menu and maching icons to display posters for the user to choose. 
    3233 */ 
    33 @interface SapphirePosterChooser : SapphireMediaMenuController <BRIconSourceProtocol, BRMenuListItemProvider> { 
     34@interface SapphirePosterChooser : SapphireMediaMenuController <BRIconSourceProtocol, BRMenuListItemProvider, SapphireLayoutDelegate> { 
    3435        NSArray                                 *posters;               /*!< @brief The array of poster paths*/ 
    3536        NSMutableArray                  *posterLayers;  /*!< @brief The image layers of posters*/ 
  • trunk/SapphireFrappliance/SapphirePosterChooser.m

    r518 r693  
    7171        /* Setup posterMarch controls */ 
    7272        posterMarch = [SapphireFrontRowCompat newMarchingIconLayerWithScene:scene]; 
     73        [SapphireLayoutManager setCustomLayoutOnControl:self]; 
    7374         
    7475        return self; 
     
    100101{ 
    101102    // We're about to be placed on screen, but we're not yet there 
    102     // add the icon march layer to the scene 
    103     [self showIconMarch]; 
    104103     
    105104    // always call super 
  • trunk/SapphireFrappliance/SapphireSettings.m

    r516 r693  
    309309} 
    310310 
    311 - (void) willBePushed 
    312 { 
    313     // We're about to be placed on screen, but we're not yet there 
    314      
    315     // always call super 
    316     [super willBePushed]; 
    317 } 
    318  
    319311- (void) wasPushed 
    320312{ 
     
    325317} 
    326318 
    327 - (void) willBePopped 
    328 { 
    329     // The user pressed Menu, but we've not been removed from the screen yet 
    330      
    331     // always call super 
    332     [super willBePopped]; 
    333 } 
    334  
    335319- (void) wasPopped 
    336320{ 
     
    341325} 
    342326 
    343 - (void) willBeBuried 
    344 { 
    345     // The user just chose an option, and we will be taken off the screen 
    346      
    347     // always call super 
    348     [super willBeBuried]; 
    349 } 
    350  
    351327- (void) wasBuriedByPushingController: (BRLayerController *) controller 
    352328{ 
     
    355331    // always call super 
    356332    [super wasBuriedByPushingController: controller]; 
    357 } 
    358  
    359 - (void) willBeExhumed 
    360 { 
    361     // the user pressed Menu, but we've not been revealed yet 
    362      
    363     // always call super 
    364     [super willBeExhumed]; 
    365333} 
    366334 
  • trunk/SapphireFrappliance/SapphireShowChooser.h

    r461 r693  
    2020 
    2121#import <SapphireCompatClasses/SapphireCenteredMenuController.h> 
     22#import <SapphireCompatClasses/SapphireLayoutManager.h> 
    2223 
    2324#define SHOW_CHOOSE_CANCEL -2 
     
    2930 * This class presents the user with a list of possible shows to match a file and asks the user to choose its name. 
    3031 */ 
    31 @interface SapphireShowChooser : SapphireCenteredMenuController
     32@interface SapphireShowChooser : SapphireCenteredMenuController <SapphireLayoutDelegate>
    3233        NSArray                 *shows;         /*!< @brief The list of possible shows*/ 
    3334        NSString                *searchStr;     /*!< @brief The string we searched for*/ 
  • trunk/SapphireFrappliance/SapphireShowChooser.m

    r505 r693  
    4444        [self addControl: fileName];     
    4545        [[self list] setDatasource:self]; 
     46         
     47        [SapphireLayoutManager setCustomLayoutOnControl:self]; 
    4648         
    4749        return self; 
     
    9496} 
    9597 
    96 - (void)willBePushed 
    97 { 
    98         [super willBePushed]; 
    99         [(BRListControl *)[self list] setSelection:1]; 
    100 } 
    101  
    10298- (void)wasPushed 
    10399{ 
     100        [(BRListControl *)[self list] setSelection:1]; 
    104101        [self doMyLayout]; 
    105102        [super wasPushed]; 
  • trunk/SapphireFrappliance/SapphireTVShowImporter.h

    r461 r693  
    2222#include <regex.h> 
    2323 
     24@class SapphireShowChooser; 
     25 
    2426/*! 
    2527 * @brief The importer of TV data 
     
    3638        regex_t                                         seasonByEpisode;                /*!< @brief Regex for matching #x##*/ 
    3739        regex_t                                         seasonEpisodeTriple;    /*!< @brief Regex for matching ###*/ 
     40        SapphireShowChooser                     *chooser;                               /*!< @brief The TV Show chooser*/ 
    3841} 
    3942 
  • trunk/SapphireFrappliance/SapphireTVShowImporter.m

    r654 r693  
    120120        regfree(&seasonByEpisode); 
    121121        regfree(&seasonEpisodeTriple); 
     122        [chooser release]; 
    122123        [super dealloc]; 
    123124} 
     
    532533                NSArray *shows = [self searchResultsForSeries:searchStr]; 
    533534                /*Bring up the prompt*/ 
    534                 SapphireShowChooser *chooser = [[SapphireShowChooser alloc] initWithScene:[dataMenu scene]]; 
     535                chooser = [[SapphireShowChooser alloc] initWithScene:[dataMenu scene]]; 
    535536                [chooser setShows:shows]; 
    536537                [chooser setFileName:fileName]; 
     
    539540                /*And display prompt*/ 
    540541                [[dataMenu stack] pushController:chooser]; 
    541                 [chooser release]; 
    542542                return IMPORT_STATE_NEEDS_SUSPEND; 
    543543        } 
     
    595595                /*Match on show title*/ 
    596596                NSString *showTitle = nil; 
    597                 [scanner scanUpToCharactersFromSet:[NSCharacterSet letterCharacterSet] intoString:nil]; 
     597                [scanner scanUpToCharactersFromSet:[NSCharacterSet alphanumericCharacterSet] intoString:nil]; 
    598598                if([scanner scanUpToString:@"." intoString:&showTitle]) 
    599599                        info = [self getInfo:show forSeason:season episodeTitle:showTitle]; 
     
    663663{ 
    664664        /*See if it was a show chooser*/ 
    665         if(![controller isKindOfClass:[SapphireShowChooser class]]
     665        if(chooser == nil
    666666                return; 
    667667         
    668668        /*Get the user's selection*/ 
    669         SapphireShowChooser *chooser = (SapphireShowChooser *)controller; 
    670669        int selection = [chooser selection]; 
    671670        if(selection == SHOW_CHOOSE_CANCEL) 
     
    686685                [self writeSettings]; 
    687686        } 
     687        [chooser release]; 
     688        chooser = nil; 
    688689        /*We can resume now*/ 
    689690        [dataMenu resume]; 
  • trunk/SapphireFrappliance/SapphireVideoPlayer.h

    r523 r693  
    4242        double                                  skipTime;               /*!< @brief Time by which next skip should advance/reverse*/ 
    4343        SkipState                               state;                  /*!< @brief Current state we are in*/ 
     44        BOOL                                    enabledChecked; /*!< @brief YES if we checked to enable, NO otherwise*/ 
    4445        BOOL                                    enabled;                /*!< @brief YES if we are enabled, NO if we behave the same as the super class*/ 
    4546        NSTimer                                 *resetTimer;    /*!< @brief Timer to reset our state machine to default (not retained)*/ 
  • trunk/SapphireFrappliance/SapphireVideoPlayer.m

    r523 r693  
    6161@end 
    6262 
     63typedef enum 
     64        { 
     65                kBRMediaPlayerStateStopped =            0, 
     66                kBRMediaPlayerStatePaused, 
     67                kBRMediaPlayerStateLoading, 
     68                kBRMediaPlayerStatePlaying, 
     69                kBRMediaPlayerStateFastForwardLevel1, 
     70                kBRMediaPlayerStateFastForwardLevel2, 
     71                kBRMediaPlayerStateFastForwardLevel3, 
     72                kBRMediaPlayerStateRewindLevel1, 
     73                kBRMediaPlayerStateRewindLevel2, 
     74                kBRMediaPlayerStateRewindLevel3, 
     75                kBRMediaPlayerStateSlowForwardLevel1, 
     76                kBRMediaPlayerStateSlowForwardLevel2, 
     77                kBRMediaPlayerStateSlowForwardLevel3, 
     78                kBRMediaPlayerStateSlowRewindLevel1, 
     79                kBRMediaPlayerStateSlowRewindLevel2, 
     80                kBRMediaPlayerStateSlowRewindLevel3, 
     81                 
     82                kBRMediaPlayerStateRewind = kBRMediaPlayerStateRewindLevel1,    // default 
     83                kBRMediaPlayerStateFastForward = kBRMediaPlayerStateFastForwardLevel1,  // default 
     84                 
     85                kBRMediaPlayerStateRESERVED     =               20, 
     86                 
     87                // Individual player subclasses may create their own states beyond the 
     88                // reserved states. For instance, the DVD player may want to create states 
     89                // for when it's in menus. 
     90                 
     91        } BRMediaPlayerState; 
     92 
     93@interface BRQTKitVideoPlayer (compat) 
     94-(BOOL)setState:(BRMediaPlayerState)state error:(NSError **)error; 
     95-(BOOL)setMedia:(BRBaseMediaAsset *)asset inTrackList:(NSArray *)tracklist error:(NSError **)error; 
     96-(BOOL)setMediaAtIndex:(long)index inTrackList:(NSArray *)tracklist error:(NSError **)error; 
     97-(double)duration; 
     98-(double)elapsedTime; 
     99@end 
     100 
     101 
    63102#define LOW_SKIP_TIME 5.0f 
    64103 
     
    107146} 
    108147 
     148- (void)checkIfCanEnable 
     149{ 
     150        /*Check to see if the movie has any chapters by default*/ 
     151        Movie myMovie = [[self gimmieVideo] gimmieMovie]; 
     152         
     153        BOOL hasChapters = [self movieHasChapters:myMovie]; 
     154        duration = ((double)GetMovieDuration(myMovie)) / ((double)GetMovieTimeScale(myMovie)); 
     155         
     156        if(!hasChapters) 
     157                enabled = TRUE; 
     158        NSLog(@"Enabled is %d", enabled); 
     159} 
     160 
    109161- (BOOL)prerollMedia:(NSError * *)fp8 
    110162{ 
     
    114166                return ret; 
    115167         
    116         /*Check to see if the movie has any chapters by default*/ 
    117         Movie myMovie = [[self gimmieVideo] gimmieMovie]; 
    118          
    119         BOOL hasChapters = [self movieHasChapters:myMovie]; 
    120         duration = ((double)GetMovieDuration(myMovie)) / ((double)GetMovieTimeScale(myMovie)); 
    121          
    122         if(!hasChapters) 
    123                 enabled = TRUE; 
    124  
     168        [self checkIfCanEnable]; 
     169 
     170        return ret; 
     171
     172 
     173-(BOOL)setState:(BRMediaPlayerState)playState error:(NSError **)error; 
     174
     175        BOOL ret = [super setState:playState error:error]; 
     176         
     177        if(!ret) 
     178                return ret; 
     179 
     180        if(!enabledChecked) 
     181        { 
     182                [self checkIfCanEnable]; 
     183                enabledChecked = YES; 
     184        } 
     185         
    125186        return ret; 
    126187} 
     
    262323} 
    263324 
    264 @end 
     325- (BOOL)setMedia:(BRBaseMediaAsset *)asset error:(NSError **)error 
     326
     327        if([SapphireFrontRowCompat usingTakeTwoDotTwo]) 
     328        { 
     329                if([[SapphireVideoPlayer superclass] instancesRespondToSelector:@selector(setMedia:inTrackList:error:)]) 
     330                        return [super setMedia:asset inTrackList:[NSArray arrayWithObject:asset] error:error]; 
     331                else 
     332                        return [super setMediaAtIndex:0 inTrackList:[NSArray arrayWithObject:asset] error:error]; 
     333        } 
     334        return [super setMedia:asset error:error]; 
     335
     336 
     337- (double)elapsedPlaybackTime 
     338
     339        if([[SapphireVideoPlayer superclass] instancesRespondToSelector:@selector(elapsedPlaybackTime)]) 
     340                return [super elapsedPlaybackTime]; 
     341        return [super elapsedTime]; 
     342
     343 
     344- (double)trackDuration 
     345
     346        if([[SapphireVideoPlayer superclass] instancesRespondToSelector:@selector(trackDuration)]) 
     347                return [super trackDuration]; 
     348        return [super duration]; 
     349
     350 
     351@end 
  • trunk/SapphireFrappliance/SapphireVideoPlayerController.h

    r524 r693  
    1919 */ 
    2020 
    21 @class SapphireFileMetaData
     21@class SapphireFileMetaData, SapphireVideoPlayer
    2222 
    2323/*! 
     
    3333 
    3434/*! 
     35 * @brief Creates the controller for a player 
     36 * 
     37 * @param scene The scene 
     38 * @param player The player 
     39 * @return the controller 
     40 */ 
     41- (id)initWithScene:(BRRenderScene *)scene player:(SapphireVideoPlayer *)player; 
     42 
     43/*! 
    3544 * @brief Set the currently playing file metadata 
    3645 * 
  • trunk/SapphireFrappliance/SapphireVideoPlayerController.m

    r638 r693  
    3232#define SOUND_STATE_SOUND_PASSTHROUGH   2 
    3333 
     34@interface BRVideoPlayerController (compat) 
     35- (id)initWithPlayer:(SapphireVideoPlayer *)player; 
     36@end 
     37 
     38 
    3439@implementation SapphireVideoPlayerController 
    3540 
    36 - (id)initWithScene:(BRRenderScene *)scene 
     41- (id)initWithScene:(BRRenderScene *)scene player:(SapphireVideoPlayer *)player; 
    3742{ 
    3843        if([[BRVideoPlayerController class] instancesRespondToSelector:@selector(initWithScene:)]) 
    3944                self = [super initWithScene:scene]; 
     45        else if([[BRVideoPlayerController class] instancesRespondToSelector:@selector(initWithPlayer:)]) 
     46                self = [super initWithPlayer:player]; 
    4047        else 
    4148                self = [super init]; 
    4249         
     50        [self setVideoPlayer:player]; 
    4351        return self; 
    4452} 
     
    201209} 
    202210 
    203 - (void)w