Changeset 1140 for branches/PlayerFramework/CommonMediaPlayer/Media Players/DVD Framework/CMPDVDPlayerController.m
- Timestamp:
- 02/16/10 10:24:27 (2 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
branches/PlayerFramework/CommonMediaPlayer/Media Players/DVD Framework/CMPDVDPlayerController.m
r1104 r1140 141 141 [windowCreation release]; 142 142 [overlayDismiss invalidate]; 143 [statusOverlay release]; 143 144 [subtitlesOverlay release]; 144 145 [audioOverlay release]; 145 146 [chapterOverlay release]; 147 [playheadOverlay release]; 146 148 [blurredMenu release]; 147 149 [super dealloc]; … … 187 189 } 188 190 else 189 [windowCreation closeOverlay:shield ];191 [windowCreation closeOverlay:shield withFade:[NSNumber numberWithFloat:0]]; 190 192 } 191 193 … … 320 322 } 321 323 322 - (void)releaseAllOverlaysWithFadeTime:(float)fadeTime 323 { 324 [windowCreation closeAllOverlaysWithFadeTime:fadeTime]; 325 [subtitlesOverlay release]; 326 subtitlesOverlay = nil; 327 [audioOverlay release]; 328 audioOverlay = nil; 329 [chapterOverlay release]; 330 chapterOverlay = nil; 331 overlayMode = CMPDVDPlayerControllerOverlayModeNormal; 332 } 333 334 - (void)dismissOverlaysWithFadeTime:(float)fadeTime 335 { 336 [self releaseAllOverlaysWithFadeTime:fadeTime]; 337 [overlayDismiss invalidate]; 324 static void closeAndNilOverlay(CMPDVDWindowCreationAction *windowCreation, CMPDVDOverlayWindow * *overlay, NSNumber *fadeTime) 325 { 326 CMPDVDOverlayWindow *actualOverlay = *overlay; 327 [windowCreation closeOverlay:actualOverlay withFade:fadeTime]; 328 [actualOverlay release]; 329 *overlay = nil; 330 } 331 332 - (void)overlayModeChangedWithFade:(float)fade 333 { 334 NSNumber *fadeTime = [NSNumber numberWithFloat:fade]; 335 BOOL closeStatus = (statusOverlay != nil); 336 BOOL closeSubtitles = (subtitlesOverlay != nil); 337 BOOL closeAudio = (audioOverlay != nil); 338 BOOL closeChapter = (chapterOverlay != nil); 339 BOOL closePlayhead = (playheadOverlay != nil); 340 341 switch (overlayMode) { 342 case CMPDVDPlayerControllerOverlayModeStatus: 343 closeStatus = NO; 344 closePlayhead = NO; 345 break; 346 case CMPDVDPlayerControllerOverlayModeSubAndAudio: 347 closeSubtitles = NO; 348 closeAudio = NO; 349 break; 350 case CMPDVDPlayerControllerOverlayModeChapters: 351 closeChapter = NO; 352 closePlayhead = NO; 353 break; 354 default: 355 break; 356 } 357 358 if(closeStatus) 359 closeAndNilOverlay(windowCreation, &statusOverlay, fadeTime); 360 if(closeSubtitles) 361 closeAndNilOverlay(windowCreation, &subtitlesOverlay, fadeTime); 362 if(closeAudio) 363 closeAndNilOverlay(windowCreation, &audioOverlay, fadeTime); 364 if(closeChapter) 365 closeAndNilOverlay(windowCreation, &chapterOverlay, fadeTime); 366 if(closePlayhead) 367 closeAndNilOverlay(windowCreation, &playheadOverlay, fadeTime); 368 } 369 370 - (void)fadeOverlays 371 { 338 372 overlayDismiss = nil; 339 } 340 341 - (void)fadeOverlays 342 { 343 [self dismissOverlaysWithFadeTime:0.5]; 373 overlayMode = CMPDVDPlayerControllerOverlayModeNone; 374 [self overlayModeChangedWithFade:0.5]; 344 375 } 345 376 … … 352 383 - (void)showPlayheadOverlay 353 384 { 354 CMPDVDPlayerPlayHead *playhead = [windowCreation addPlayheadOverlay]; 355 [playhead setPlayer:player]; 356 [playhead displayWithFadeTime:0.1]; 357 } 358 359 - (void)showSubAndAudioOverlays 360 { 361 [self releaseAllOverlaysWithFadeTime:0]; 362 363 subtitlesOverlay = [[windowCreation addTextOverlayInPosition:CMPDVDOverlayUpperLeft] retain]; 385 if(playheadOverlay) 386 return; 387 playheadOverlay = [[windowCreation addPlayheadOverlay] retain]; 388 [playheadOverlay setPlayer:player]; 389 [playheadOverlay displayWithFadeTime:0.1]; 390 } 391 392 - (void)showSubAndAudioMode 393 { 394 overlayMode = CMPDVDPlayerControllerOverlayModeSubAndAudio; 395 [self overlayModeChangedWithFade:0]; 396 397 if(!subtitlesOverlay) 398 subtitlesOverlay = [[windowCreation addTextOverlayInPosition:CMPDVDOverlayUpperLeft] retain]; 364 399 [subtitlesOverlay setText:[player currentSubFormat]]; 365 400 [subtitlesOverlay displayWithFadeTime:0.25]; 366 audioOverlay = [[windowCreation addTextOverlayInPosition:CMPDVDOverlayUpperRight] retain]; 401 if(!audioOverlay) 402 audioOverlay = [[windowCreation addTextOverlayInPosition:CMPDVDOverlayUpperRight] retain]; 367 403 [audioOverlay setText:[player currentAudioFormat]]; 368 404 [audioOverlay displayWithFadeTime:0.25]; 369 overlayMode = CMPDVDPlayerControllerOverlayModeSubAndAudio;405 370 406 [self resetOverlayTimerTo:10]; 371 407 } 372 408 373 - (void)showChapterOverlay 374 { 375 [self releaseAllOverlaysWithFadeTime:0]; 376 chapterOverlay = [[windowCreation addTextOverlayInPosition:CMPDVDOverlayUpperLeft] retain]; 409 - (void)showChapterMode 410 { 411 overlayMode = CMPDVDPlayerControllerOverlayModeChapters; 412 [self overlayModeChangedWithFade:0]; 413 414 if(!chapterOverlay) 415 chapterOverlay = [[windowCreation addTextOverlayInPosition:CMPDVDOverlayUpperLeft] retain]; 377 416 [chapterOverlay setText:[NSString stringWithFormat:@"Chapter %d/%d", [player currentChapter], [player chapters]]]; 378 417 [chapterOverlay displayWithFadeTime:0.25]; 379 418 [self showPlayheadOverlay]; 380 overlayMode = CMPDVDPlayerControllerOverlayModeChapters;419 381 420 [self resetOverlayTimerTo:10]; 382 }383 384 - (void)setOverlayText:(NSString *)text inPosition:(CMPDVDOverlayPosition)position dismissingOthers:(BOOL)dismiss385 {386 if(overlayMode != CMPDVDPlayerControllerOverlayModeNormal)387 return;388 if(dismiss)389 [self releaseAllOverlaysWithFadeTime:0];390 CMPDVDTextView *overlay = [windowCreation addTextOverlayInPosition:position];391 [overlay setText:text];392 [overlay displayWithFadeTime:0.25];393 [self resetOverlayTimerTo:3];394 }395 396 - (void)showResumeOverlayWithDismiss:(BOOL)dismiss397 {398 if(dismiss)399 [self dismissOverlaysWithFadeTime:0];400 blurredMenu = [[windowCreation addBlurredMenuOverlayWithItems:[NSArray arrayWithObjects:@"Resume Playback", @"Start From Beginning", @"Main Menu", nil]] retain];401 [blurredMenu displayWithFadeTime:0.5];402 421 } 403 422 … … 423 442 } 424 443 425 - (void)showStateOverlay 426 { 427 [self setOverlayText:[self stringForPlayerState] inPosition:CMPDVDOverlayUpperLeft dismissingOthers:YES]; 444 - (void)showStateMode 445 { 446 overlayMode = CMPDVDPlayerControllerOverlayModeStatus; 447 [self overlayModeChangedWithFade:0]; 448 449 if(!statusOverlay) 450 statusOverlay = [[windowCreation addTextOverlayInPosition:CMPDVDOverlayUpperLeft] retain]; 451 [statusOverlay setText:[self stringForPlayerState]]; 452 [statusOverlay displayWithFadeTime:0.25]; 428 453 [self showPlayheadOverlay]; 454 455 [self resetOverlayTimerTo:3]; 456 } 457 458 - (void)dismissOverlaysWithFadeTime:(float)fadeTime 459 { 460 overlayMode = CMPDVDPlayerControllerOverlayModeNone; 461 [self overlayModeChangedWithFade:fadeTime]; 462 463 //Catch any others 464 [windowCreation closeAllOverlaysWithFadeTime:fadeTime]; 465 466 [overlayDismiss invalidate]; 467 overlayDismiss = nil; 468 } 469 470 - (void)showResumeOverlayWithDismiss:(BOOL)dismiss 471 { 472 if(dismiss) 473 [self dismissOverlaysWithFadeTime:0]; 474 blurredMenu = [[windowCreation addBlurredMenuOverlayWithItems:[NSArray arrayWithObjects:@"Resume Playback", @"Start From Beginning", @"Main Menu", nil]] retain]; 475 [blurredMenu displayWithFadeTime:0.5]; 429 476 } 430 477 … … 499 546 else if(inMenu) 500 547 [player doUserNavigation:CMPDVDPlayerNavigationUp]; 501 else if(overlayMode == CMPDVDPlayerControllerOverlayModeNormal)502 [self showSubAndAudio Overlays];548 else if(overlayMode <= CMPDVDPlayerControllerOverlayModeStatus) 549 [self showSubAndAudioMode]; 503 550 else if(overlayMode == CMPDVDPlayerControllerOverlayModeSubAndAudio) 504 overlayMode = CMPDVDPlayerControllerOverlayMode Normal;551 overlayMode = CMPDVDPlayerControllerOverlayModeStatus; 505 552 else if(overlayMode == CMPDVDPlayerControllerOverlayModeChapters) 506 overlayMode = CMPDVDPlayerControllerOverlayMode Normal;553 overlayMode = CMPDVDPlayerControllerOverlayModeStatus; 507 554 else 508 555 ;//Something else … … 514 561 else if(inMenu) 515 562 [player doUserNavigation:CMPDVDPlayerNavigationDown]; 516 else if(overlayMode == CMPDVDPlayerControllerOverlayModeNormal)517 [self showChapter Overlay];563 else if(overlayMode <= CMPDVDPlayerControllerOverlayModeStatus) 564 [self showChapterMode]; 518 565 else if(overlayMode == CMPDVDPlayerControllerOverlayModeSubAndAudio) 519 overlayMode = CMPDVDPlayerControllerOverlayMode Normal;566 overlayMode = CMPDVDPlayerControllerOverlayModeStatus; 520 567 else if(overlayMode == CMPDVDPlayerControllerOverlayModeChapters) 521 overlayMode = CMPDVDPlayerControllerOverlayMode Normal;568 overlayMode = CMPDVDPlayerControllerOverlayModeStatus; 522 569 else 523 570 ;//Something else … … 569 616 } 570 617 571 if(!supressStateDisplay && overlayMode == CMPDVDPlayerControllerOverlayModeNormal)572 [self showState Overlay];618 if(!supressStateDisplay && overlayMode <= CMPDVDPlayerControllerOverlayModeStatus) 619 [self showStateMode]; 573 620 574 621 return YES;
