diff -r ce5ada96ab30 -r 5294c000a26d videoplayback/videoplaybackviews/src/mpxvideoplaybackcontainer.cpp --- a/videoplayback/videoplaybackviews/src/mpxvideoplaybackcontainer.cpp Fri Mar 12 15:43:00 2010 +0200 +++ b/videoplayback/videoplaybackviews/src/mpxvideoplaybackcontainer.cpp Mon Mar 15 12:40:47 2010 +0200 @@ -15,8 +15,8 @@ * */ -// Version : %version: 22 % +// Version : %version: 25 % // INCLUDE FILES @@ -48,7 +48,10 @@ using namespace AknLayoutScalable_Apps; -// CONSTANTS +// +// CONSTANTS +// +const TInt KMPXRealOneLogoTimeOut = 600000; // ======== MEMBER FUNCTIONS ======================================================================= @@ -96,7 +99,7 @@ CreateControlsL(); iUserInputHandler = - CMPXVideoPlaybackUserInputHandler::NewL( this, iFileDetails->iTvOutConnected ); + CMPXVideoPlaybackUserInputHandler::NewL( this ); ActivateL(); } @@ -107,6 +110,13 @@ // CMPXVideoPlaybackContainer::~CMPXVideoPlaybackContainer() { + if ( iRealOneBitmapTimer ) + { + iRealOneBitmapTimer->Cancel(); + delete iRealOneBitmapTimer; + iRealOneBitmapTimer = NULL; + } + if ( iFileDetails ) { delete iFileDetails; @@ -134,15 +144,30 @@ // void CMPXVideoPlaybackContainer::AddFileDetailsL( CMPXVideoPlaybackViewFileDetails* aDetails ) { - iControlsController->AddFileDetailsL( aDetails ); + MPX_ENTER_EXIT(_L("CMPXVideoPlaybackContainer::AddFileDetailsL()")); // - // Delete the temp file details since plugin initialization is complete + // If clip is audio only Real Media, delay adding the file details until the + // Real One bitmap has been shown. // - if ( iFileDetails ) + if ( iRealOneBitmapTimer && iRealOneBitmapTimer->IsActive() && ! aDetails->iVideoEnabled ) + { + MPX_DEBUG(_L("CMPXVideoPlaybackContainer::AddFileDetailsL() file details delayed")); + + iDelayedFileDetails = aDetails; + } + else { - delete iFileDetails; - iFileDetails = NULL; + iControlsController->AddFileDetailsL( aDetails ); + + // + // Delete the temp file details since plugin initialization is complete + // + if ( iFileDetails ) + { + delete iFileDetails; + iFileDetails = NULL; + } } } @@ -230,7 +255,7 @@ if ( aType == EEventKeyUp ) { iControlsController->HandleEventL( EMPXControlCmdSoftKeyPressed, - aKeyEvent.iScanCode ); + aKeyEvent.iScanCode ); } iKeyResponse = EKeyWasConsumed; @@ -243,8 +268,8 @@ // Handles rocker's middle key => Toggles between play & pause // ------------------------------------------------------------------------------------------------- // -void CMPXVideoPlaybackContainer::HandleRockerMiddleKeyL(const TKeyEvent& aKeyEvent, - TEventCode aType) +void CMPXVideoPlaybackContainer::HandleRockerMiddleKeyL( const TKeyEvent& aKeyEvent, + TEventCode aType ) { if ( aKeyEvent.iCode == EKeyNull && aType == EEventKeyDown ) { @@ -256,15 +281,15 @@ // Starts/Stops Seeking Forward // ------------------------------------------------------------------------------------------------- // -void CMPXVideoPlaybackContainer::HandleSeekFwdL(TEventCode aType) +void CMPXVideoPlaybackContainer::HandleSeekFwdL( TEventCode aType ) { - if (aType == EEventKeyDown) + if ( aType == EEventKeyDown ) { - iView->HandleCommandL(EMPXPbvCmdSeekForward); + iView->HandleCommandL( EMPXPbvCmdSeekForward ); } - else if (aType == EEventKeyUp) + else if ( aType == EEventKeyUp ) { - iView->HandleCommandL(EMPXPbvCmdEndSeek); + iView->HandleCommandL( EMPXPbvCmdEndSeek ); } } @@ -272,15 +297,15 @@ // Starts/Stops Seeking Backward // ------------------------------------------------------------------------------------------------- // -void CMPXVideoPlaybackContainer::HandleSeekBackL(TEventCode aType) +void CMPXVideoPlaybackContainer::HandleSeekBackL( TEventCode aType ) { - if (aType == EEventKeyDown) + if ( aType == EEventKeyDown ) { iView->HandleCommandL(EMPXPbvCmdSeekBackward); } - else if (aType == EEventKeyUp) + else if ( aType == EEventKeyUp ) { - iView->HandleCommandL(EMPXPbvCmdEndSeek); + iView->HandleCommandL( EMPXPbvCmdEndSeek ); } } @@ -301,7 +326,6 @@ // void CMPXVideoPlaybackContainer::GetHelpContext( TCoeHelpContext& /*aContext*/ ) const { - //aContext.iMajor = KAppUidMusicPlayerX; } // ------------------------------------------------------------------------------------------------- @@ -311,14 +335,14 @@ // TInt CMPXVideoPlaybackContainer::CountComponentControls() const { - TInt count = 0; + TInt count = 0; - if ( iRealOneBitmap ) - { + if ( iRealOneBitmap ) + { count = 1; - } + } - return count; + return count; } // ------------------------------------------------------------------------------------------------- @@ -350,7 +374,7 @@ { MPX_ENTER_EXIT(_L("CMPXVideoPlaybackContainer::HandlePointerEventL()")); - iUserInputHandler->ProcessPointerEventL(this, aPointerEvent, EMpxVideoPlaybackContainer); + iUserInputHandler->ProcessPointerEventL( this, aPointerEvent, EMpxVideoPlaybackContainer ); } @@ -380,7 +404,7 @@ MPX_ENTER_EXIT(_L("CMPXVideoPlaybackContainer::Draw()")); CWindowGc& gc = SystemGc(); - + gc.SetBrushStyle( CGraphicsContext::ESolidBrush ); // @@ -431,14 +455,12 @@ } else if ( aEvent == EMPXControlCmdTvOutConnected ) { - iTvOutConnected = ETrue; - iUserInputHandler->HandleTVOutEvent(ETrue); + iTvOutConnected = ETrue; DrawNow(); } else if ( aEvent == EMPXControlCmdTvOutDisconnected ) { - iTvOutConnected = EFalse; - iUserInputHandler->HandleTVOutEvent(EFalse); + iTvOutConnected = EFalse; DrawNow(); } @@ -473,8 +495,6 @@ // iView->RetrievePdlInformationL(); - iControlsController->HandleEventL( EMPXControlCmdCloseFileDetailsViewer ); - break; } case EAknSoftkeyOptions: @@ -489,9 +509,16 @@ } case EMPXPbvSurfaceCreated: { - iSurfaceCreated = ETrue; - iControlsController->HandleEventL( EMPXControlCmdSurfaceCreated ); - DrawNow(); + iSurfaceCreated = ETrue; + iControlsController->HandleEventL( EMPXControlCmdSurfaceCreated ); + DrawNow(); + break; + } + case EMPXPbvSurfaceRemoved: + { + iSurfaceCreated = EFalse; + iControlsController->HandleEventL( EMPXControlCmdSurfaceRemoved ); + DrawNow(); break; } default: @@ -556,6 +583,22 @@ // Retrieve the Real One Logo bitmap // iRealOneBitmap = iControlsController->GetBitmap( EMPXRealLogoBitmap ); + + if ( iRealOneBitmap ) + { + // + // Start timer since Real One bitmap is created + // + iRealOneBitmapTimer = CPeriodic::NewL( CActive::EPriorityStandard ); + + iRealOneBitmapTimer->Start( + KMPXRealOneLogoTimeOut, + 0, + TCallBack( CMPXVideoPlaybackContainer::HandleRealOneBitmapTimeout, this ) ); + + DrawNow(); + } + iTvOutConnected = iFileDetails->iTvOutConnected; } @@ -566,8 +609,71 @@ EXPORT_C CMPXVideoPlaybackUserInputHandler* CMPXVideoPlaybackContainer::UserInputHandler() { MPX_DEBUG(_L("CMPXVideoPlaybackContainer::UserInputHandler()")); - return iUserInputHandler; } +// ------------------------------------------------------------------------------------------------- +// CMPXVideoPlaybackContainer::IsRealOneBitmapTimerActive() +// ------------------------------------------------------------------------------------------------- +// +TBool CMPXVideoPlaybackContainer::IsRealOneBitmapTimerActive() +{ + TBool timerActive( EFalse ); + + if ( iRealOneBitmapTimer ) + { + timerActive = iRealOneBitmapTimer->IsActive(); + } + + MPX_DEBUG(_L("CMPXVideoPlaybackContainer::IsRealOneBitmapTimerActive(%d)"), timerActive); + + return timerActive; +} + + +// ------------------------------------------------------------------------------------------------- +// CMPXVideoPlaybackContainer::HandleRealOneBitmapTimeout +// ------------------------------------------------------------------------------------------------- +// +TInt CMPXVideoPlaybackContainer::HandleRealOneBitmapTimeout( TAny* aPtr ) +{ + MPX_DEBUG(_L("CMPXVideoPlaybackContainer::HandleRealOneBitmapTimeout()")); + static_cast(aPtr)->DoHandleRealOneBitmapTimeout(); + return KErrNone; +} + +// ------------------------------------------------------------------------------------------------- +// CMPXVideoPlaybackContainer::DoHandleRealOneBitmapTimeout +// ------------------------------------------------------------------------------------------------- +// +void CMPXVideoPlaybackContainer::DoHandleRealOneBitmapTimeout() +{ + MPX_DEBUG(_L("CMPXVideoPlaybackContainer::DoHandleRealOneBitmapTimeout()")); + + if ( iDelayedFileDetails ) + { + iControlsController->AddFileDetailsL( iDelayedFileDetails ); + + // + // Delete the temp file details since plugin initialization is complete + // + if ( iFileDetails ) + { + delete iFileDetails; + iFileDetails = NULL; + } + + iDelayedFileDetails = NULL; + } + + if ( iRealOneBitmapTimer->IsActive() ) + { + iRealOneBitmapTimer->Cancel(); + delete iRealOneBitmapTimer; + iRealOneBitmapTimer = NULL; + } + + iView->HandleCommandL( EMPXPbvCmdRealOneBitmapTimeout ); +} + // EOF