--- a/browserplugins/browseraudiovideoplugin/src/BavpView.cpp Tue Feb 02 00:12:41 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,796 +0,0 @@
-/*
-* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
-* All rights reserved.
-* This component and the accompanying materials are made available
-* under the terms of the License "Eclipse Public License v1.0"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description: Uses the interface MPluginAdapter to notify browser of construction
- and destruction of the plug-in, implements interface MPluginOptionHandler
- to add menus and draws animated images while video player loading the data
-*
-*/
-
-
-// INCLUDE FILES
-#include <browser_platform_variant.hrh>
-#include <AknUtils.h>
-#include <aknclearer.h>
-#include <AknBitmapAnimation.h>
-#include <data_caging_path_literals.hrh>
-#include <barsread.h> // For TResourceReader
-#include <StringLoader.h>
-#include <pluginadapterinterface.h>
-#include <BrowserAudioVideoPlugin.rsg> // For text
-
-#include <brctldefs.h>
-
-#include "BavpLogger.h"
-#include "BavpView.h"
-#include "BavpController.h"
-#include "BavpPlugin.h"
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CBavpView::CBavpView
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-CBavpView::CBavpView()
- {
- }
-
-// -----------------------------------------------------------------------------
-// CBavpView::ConstructL
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CBavpView::ConstructL( const CCoeControl* aParent,
- const TRect& aRect, CBavpPlugin* aBavPlugin )
- {
- Log( EFalse, _L("CBavpView::ConstructL") );
- iBavPlugin = aBavPlugin;
-
- CreateWindowL(aParent);
-#ifdef BRDO_MULTITOUCH_ENABLED_FF
- if (AknLayoutUtils::PenEnabled()) {
- DrawableWindow()->SetPointerGrab(ETrue);
- EnableDragEvents();
- }
- //To enable advance pointer info for multi-touch
- Window().EnableAdvancedPointers();
-#endif
- ActivateL(); // Draws icon
- iRect = aRect;
- CCoeControl::SetRect( aRect ); // Calls SizeChanged
-
- User::LeaveIfError( iWsSession.Connect() );
- iWindowId = iCoeEnv->RootWin().Identifier();
-
- // Video buffering animation, used to show that content is buffering
- iVideoBuffAnimation = CAknBitmapAnimation::NewL();
- iVideoBuffAnimation->SetContainerWindowL( *this );
- TResourceReader rrBuffering;
- iCoeEnv->CreateResourceReaderLC( rrBuffering, R_ANIMATION_BUFFERING );
- iVideoBuffAnimation->ConstructFromResourceL( rrBuffering );
- CleanupStack::PopAndDestroy(); // rrBuffering
- iIsVideoBuffAnimRunning = EFalse;
-
- // Bad content animation, used to show that content is not available
- iBadContentAnimation = CAknBitmapAnimation::NewL();
- iBadContentAnimation->SetContainerWindowL( *this );
- TResourceReader rrNoContentAnim;
- iCoeEnv->CreateResourceReaderLC( rrNoContentAnim, R_NO_CONTENT_ANIMATION );
- iBadContentAnimation->ConstructFromResourceL( rrNoContentAnim );
- CleanupStack::PopAndDestroy(); // rrNoContentAnim
- iIsBadContentAnimRunning = EFalse;
-
- // Video stopped animation, used to show that video content is stopped
- iVideoStoppedAnimation = CAknBitmapAnimation::NewL();
- iVideoStoppedAnimation->SetContainerWindowL( *this );
- TResourceReader rrVideoStoppedAnim;
- iCoeEnv->CreateResourceReaderLC( rrVideoStoppedAnim, R_VIDEO_STOPPED_ANIMATION );
- iVideoStoppedAnimation->ConstructFromResourceL( rrVideoStoppedAnim );
- CleanupStack::PopAndDestroy(); // rrVideoStoppedAnim
- iIsVideoStoppedAnimRunning = EFalse;
-
- // Video paused animation, used to show that video content is paused
- iVideoPausedAnimation = CAknBitmapAnimation::NewL();
- iVideoPausedAnimation->SetContainerWindowL( *this );
- TResourceReader rrVideoPausedAnim;
- iCoeEnv->CreateResourceReaderLC( rrVideoPausedAnim, R_VIDEO_PAUSED_ANIMATION );
- iVideoPausedAnimation->ConstructFromResourceL( rrVideoPausedAnim );
- CleanupStack::PopAndDestroy(); // rrVideoPausedAnim
- iIsVideoPausedAnimRunning = EFalse;
-
- // Audio playing animation, used when no video is present, only audio
- iAudioPlayAnimation = CAknBitmapAnimation::NewL();
- iAudioPlayAnimation->SetContainerWindowL( *this );
- TResourceReader rrAudioPlayAnim;
- iCoeEnv->CreateResourceReaderLC( rrAudioPlayAnim, R_AUDIO_PLAY_ANIMATION );
- iAudioPlayAnimation->ConstructFromResourceL( rrAudioPlayAnim );
- CleanupStack::PopAndDestroy(); // rrAudioPlayAnim
- iIsAudioPlayAnimRunning = EFalse;
-
- // Audio stopped animation, used to show that audio content is stopped
- iAudioStoppedAnimation = CAknBitmapAnimation::NewL();
- iAudioStoppedAnimation->SetContainerWindowL( *this );
- TResourceReader rrAudioStoppedAnim;
- iCoeEnv->CreateResourceReaderLC( rrAudioStoppedAnim, R_AUDIO_STOPPED_ANIMATION );
- iAudioStoppedAnimation->ConstructFromResourceL( rrAudioStoppedAnim );
- CleanupStack::PopAndDestroy(); // rrAudioStoppedAnim
- iIsAudioStoppedAnimRunning = EFalse;
-
- // Audio paused animation, used to show that audio content is paused
- iAudioPausedAnimation = CAknBitmapAnimation::NewL();
- iAudioPausedAnimation->SetContainerWindowL( *this );
- TResourceReader rrAudioPausedAnim;
- iCoeEnv->CreateResourceReaderLC( rrAudioPausedAnim, R_AUDIO_PAUSED_ANIMATION );
- iAudioPausedAnimation->ConstructFromResourceL( rrAudioPausedAnim );
- CleanupStack::PopAndDestroy(); // rrAudioPausedAnim
- iIsAudioPausedAnimRunning = EFalse;
-
- Log( EFalse, _L("CBavpView::ConstructL - Start Buffering animation") );
- RunAnimation(iVideoBuffAnimation, iIsVideoBuffAnimRunning);
- }
-
-// -----------------------------------------------------------------------------
-// CBavpView::NewL
-// Two-phased constructor.
-// -----------------------------------------------------------------------------
-CBavpView* CBavpView::NewL( const CCoeControl* aParent,
- const TRect& aRect, CBavpPlugin* aBavPlugin )
- {
- Log( EFalse, _L("CBavpView::NewL") );
-
- CBavpView* self = new( ELeave ) CBavpView;
- CleanupStack::PushL( self );
- self->ConstructL( aParent, aRect, aBavPlugin );
- CleanupStack::Pop( self );
- return self;
- }
-
-// -----------------------------------------------------------------------------
-// CBavpView::Destructor
-// -----------------------------------------------------------------------------
-CBavpView::~CBavpView()
- {
- Log( EFalse, _L("CBavpView::~CBavpView") );
-
- // Check if the keyhandling is on the stack, if yes, remove it
- if ( iIsOnStack )
- {
- // Check if the animation is active
- // if it is not start animation
- iEikonEnv->EikAppUi()->RemoveFromStack( this );
- }
-
- // Cancel video buffering animation, if it's still running
- if ( iIsVideoBuffAnimRunning )
- {
- iVideoBuffAnimation->CancelAnimation();
- }
- delete iVideoBuffAnimation;
-
- // Cancel video stopped animation, if it's still running
- if ( iIsVideoStoppedAnimRunning )
- {
- iVideoStoppedAnimation->CancelAnimation();
- }
- delete iVideoStoppedAnimation;
-
- // Cancel video paused animation, if it's still running
- if ( iIsVideoPausedAnimRunning )
- {
- iVideoPausedAnimation->CancelAnimation();
- }
- delete iVideoPausedAnimation;
-
- // Cancel audio only animation, if it's still running
- if ( iIsAudioPlayAnimRunning )
- {
- iAudioPlayAnimation->CancelAnimation();
- }
- delete iAudioPlayAnimation;
-
- // Cancel audio stopped animation, if it's still running
- if ( iIsAudioStoppedAnimRunning )
- {
- iAudioStoppedAnimation->CancelAnimation();
- }
- delete iAudioStoppedAnimation;
-
- // Cancel audio paused animation, if it's still running
- if ( iIsAudioPausedAnimRunning )
- {
- iAudioPausedAnimation->CancelAnimation();
- }
- delete iAudioPausedAnimation;
-
- // Cancel bad content animation, if it's still running
- if ( iIsBadContentAnimRunning )
- {
- iBadContentAnimation->CancelAnimation();
- }
- delete iBadContentAnimation;
-
- iWsSession.Close();
- }
-
-// -----------------------------------------------------------------------------
-// CBavpView::SizeChanged
-// Responds to size changes to sets the size and position of the contents of
-// this control
-// -----------------------------------------------------------------------------
-void CBavpView::SizeChanged()
- {
- Log( EFalse, _L("CBavpView::SizeChanged") );
-
- if ( iBavpController )
- {
- iRect = Rect();
- iBavpController->RefreshRectCoordinatesL();
- }
- }
-
-// -----------------------------------------------------------------------------
-// CBavpView::AddPluginOptionMenuItemsL
-// Add the Option Menu items to the menuPane, these will be handled by plugin.
-// -----------------------------------------------------------------------------
-void CBavpView::AddPluginOptionMenuItemsL( CEikMenuPane& aMenuPane,
- TInt aCommandBase,
- TInt /*aAfter*/ )
- {
- Log( EFalse, _L("CBavpView::AddPluginOptionMenuItemsL") );
-
- iCommandBase = aCommandBase;
- TInt index( 0 );
-
- // The menus are only added, if the controller exists and we're in
- // normal screen and not bad content
- if ( !iBavpController || iBavpController->IsClipFullScreen() ||
- iBavpController->State() == EBavpBadContent )
- {
- return;
- }
-
- // Display the "Mute" menu item, unless we have HW volume keys, and...
- if ( !HAS_HW_VOLUME_KEYS &&
- !iBavpController->IsVolumeMuted() &&
- !iBavpController->IsClipRewinding() &&
- !iBavpController->IsClipFastForwarding() )
- {
- InsertOneMenuItemL( aMenuPane, EBavpCmdMuteVolume,
- R_TEXT_VIDEO_PLUGIN_VOLUME_MUTE, index);
- index++;
- }
-
- // Check CurrentState to determine the menu items to add
- switch ( iBavpController->State() )
- {
- case EBavpStopped:
- case EBavpRewindComplete:
- case EBavpPlayComplete:
- {
- // The content is at the beginning, user can play
- InsertOneMenuItemL( aMenuPane, EBavpCmdPlay,
- R_TEXT_VIDEO_PLUGIN_PLAY, index );
- index ++;
- break;
- }
- case EBavpPlaying:
- {
- // Check if it can be paused
- if ( iBavpController->IsClipSeekable() )
- {
- InsertOneMenuItemL( aMenuPane, EBavpCmdPause,
- R_TEXT_VIDEO_PLUGIN_PAUSE, index);
- index++;
- }
-
- // If playing, user can also stop
- InsertOneMenuItemL( aMenuPane, EBavpCmdStop,
- R_TEXT_VIDEO_PLUGIN_STOP, index );
- index++;
- // Add FF and Rewind, only if content seekable, local media, video
- if ( iBavpController->IsClipSeekable() &&
- iBavpController->IsClipLocalMedia() &&
- iBavpController->IsClipVideo() )
- {
- InsertOneMenuItemL( aMenuPane, EBavpCmdFastForward,
- R_TEXT_VIDEO_PLUGIN_FAST_FORWARD, index );
- index++;
- InsertOneMenuItemL( aMenuPane, EBavpCmdRewind,
- R_TEXT_VIDEO_PLUGIN_REWIND, index );
- index++;
- }
- // Add full screen, only if video content
- if ( iBavpController->IsClipVideo() )
- {
- InsertOneMenuItemL( aMenuPane, EBavpCmdPlayFullScreen,
- R_TEXT_VIDEO_PLUGIN_FULL_SCREEN, index );
- index++;
- }
- break;
- }
- case EBavpPaused:
- {
- // If paused, user can continue (play) or stop
- InsertOneMenuItemL( aMenuPane, EBavpCmdPlay,
- R_TEXT_VIDEO_PLUGIN_PLAY, index );
- index++;
-
- InsertOneMenuItemL( aMenuPane, EBavpCmdStop,
- R_TEXT_VIDEO_PLUGIN_STOP, index );
- index++;
- // Add FF and Rewind, only if content seekable, local media, video
- if ( iBavpController->IsClipSeekable() &&
- iBavpController->IsClipLocalMedia() &&
- iBavpController->IsClipVideo() )
- {
- InsertOneMenuItemL( aMenuPane, EBavpCmdFastForward,
- R_TEXT_VIDEO_PLUGIN_FAST_FORWARD, index );
- index++;
- InsertOneMenuItemL( aMenuPane, EBavpCmdRewind,
- R_TEXT_VIDEO_PLUGIN_REWIND, index );
- index++;
- }
- break;
- }
- case EBavpFastForwarding:
- case EBavpRewinding:
- {
- // User can play, while FF or Rewinding
- InsertOneMenuItemL( aMenuPane, EBavpCmdPlay,
- R_TEXT_VIDEO_PLUGIN_PLAY, index );
- index++;
- // Add pause, we should only be fast-forwarding or rewinding
- // seekable content, no need to check
- InsertOneMenuItemL( aMenuPane, EBavpCmdPause,
- R_TEXT_VIDEO_PLUGIN_PAUSE, index);
- index++;
- break;
- }
- case EBavpFastForwardComplete:
- {
- // Content is at the end, user can replay
- InsertOneMenuItemL( aMenuPane, EBavpCmdPlay,
- R_TEXT_VIDEO_PLUGIN_PLAY, index );
- index++;
- // Add rewind, we should only be fast-forwarding seekable content,
- // no need to check
- InsertOneMenuItemL( aMenuPane, EBavpCmdRewind,
- R_TEXT_VIDEO_PLUGIN_REWIND, index );
- index++;
- break;
- }
- default:
- {
- break;
- }
- } // End of switch
-
- // Display "Media Volume" menu item, unless we have HW volume keys and...
- if ( !HAS_HW_VOLUME_KEYS &&
- !iBavpController->IsClipRewinding() &&
- !iBavpController->IsClipFastForwarding() )
- {
- // User can adjust volume
- InsertOneMenuItemL( aMenuPane, EBavpCmdChangeVolume,
- R_TEXT_VIDEO_PLUGIN_MEDIA_VOLUME, index );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CBavpView::HandlePluginCommandL
-// Handle the user command from the option menu to the plugin.
-// -----------------------------------------------------------------------------
-void CBavpView::HandlePluginCommandL( TInt aCommand )
- {
- iBavpController->HandleCommandL( (TBavpCommandIds)(aCommand - iCommandBase) );
- }
-
-// -----------------------------------------------------------------------------
-// CBavpView::OfferKeyEventL
-// Control framework calls this function to handle the key event
-// -----------------------------------------------------------------------------
-TKeyResponse CBavpView::OfferKeyEventL( const TKeyEvent& aKeyEvent,
- TEventCode aType )
- {
- Log( EFalse, _L("CBavpView::OfferKeyEventL") );
-
- TKeyResponse keyResponse( EKeyWasNotConsumed );
-
- //Check if the controller is already initialized
- if (iBavpController)
- {
- // Let the Audio or Video controller handle the key presses
- keyResponse = iBavpController->HandleKeysL( aKeyEvent, aType );
- }
-
- return keyResponse;
- }
-
-// -----------------------------------------------------------------------------
-// CBavpView::SetRect
-// Sets the control's extent, specifying a TRect
-// -----------------------------------------------------------------------------
-void CBavpView::SetRect( NPWindow* aWindow )
- {
- Log( EFalse, _L("CBavpView::SetRect") );
- iWindowRect = TRect(TPoint(aWindow->x, aWindow->y), TSize(aWindow->width, aWindow->height));
- iClipRect = TRect(aWindow->clipRect.left, aWindow->clipRect.top, aWindow->clipRect.right, aWindow->clipRect.bottom);
- TRect r(iClipRect);
- r.Intersection(iWindowRect);
- TBool flag = iRect != r;
- iRect = r;
- CCoeControl::SetRect( iRect );
-
- // Set the rect only when the animation is playing
- if ( iIsVideoBuffAnimRunning && iVideoBuffAnimation &&
- flag)
- {
- iVideoBuffAnimation->CancelAnimation();
- TRect animRect( iWindowRect);
- iVideoBuffAnimation->SetRect( animRect );
- TRAP_IGNORE( iVideoBuffAnimation->StartAnimationL() );
- }
- else if ( iIsAudioPlayAnimRunning && iAudioPlayAnimation &&
- flag)
- {
- iAudioPlayAnimation->CancelAnimation();
- TRect animRect( iWindowRect);
- iAudioPlayAnimation->SetRect( animRect );
- TRAP_IGNORE( iAudioPlayAnimation->StartAnimationL() );
- }
- else if ( iIsAudioStoppedAnimRunning && iAudioStoppedAnimation &&
- flag)
- {
- iAudioStoppedAnimation->CancelAnimation();
- TRect animRect( iWindowRect);
- iAudioStoppedAnimation->SetRect( animRect );
- TRAP_IGNORE( iAudioStoppedAnimation->StartAnimationL() );
- }
- else if ( iIsAudioPausedAnimRunning && iAudioPausedAnimation &&
- flag)
- {
- iAudioPausedAnimation->CancelAnimation();
- TRect animRect( iWindowRect);
- iAudioPausedAnimation->SetRect( animRect );
- TRAP_IGNORE( iAudioPausedAnimation->StartAnimationL() );
- }
- else if ( iIsVideoStoppedAnimRunning && iVideoStoppedAnimation &&
- flag)
- {
- iVideoStoppedAnimation->CancelAnimation();
- TRect animRect( iWindowRect);
- iVideoStoppedAnimation->SetRect( animRect );
- TRAP_IGNORE( iVideoStoppedAnimation->StartAnimationL() );
- }
- else if ( iIsVideoPausedAnimRunning && iVideoPausedAnimation &&
- flag)
- {
- iVideoPausedAnimation->CancelAnimation();
- TRect animRect( iWindowRect);
- iVideoPausedAnimation->SetRect( animRect );
- TRAP_IGNORE( iVideoPausedAnimation->StartAnimationL() );
- }
- else if ( iIsBadContentAnimRunning && iBadContentAnimation &&
- flag)
- {
- iBadContentAnimation->CancelAnimation();
- TRect animRect( iWindowRect);
- iBadContentAnimation->SetRect( animRect );
- TRAP_IGNORE( iBadContentAnimation->StartAnimationL() );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CBavpView::IsTopWindow
-// Return ETrue if the CCoeControl is the top window instance
-// -----------------------------------------------------------------------------
-TBool CBavpView::IsTopWindowL()
- {
- Log( EFalse, _L("CBavpView::IsTopWindowL") );
-
- TBool ret( EFalse );
- TInt numWg( iWsSession.NumWindowGroups() );
- CArrayFixFlat<TInt>* wgList = new (ELeave) CArrayFixFlat<TInt>( numWg );
-
- // Check if our window is front or not
- if ( iWsSession.WindowGroupList( 0, wgList ) == KErrNone )
- {
- ret = ( iWindowId == wgList->At(0) );
- }
- else
- {
- ret = EFalse;
- }
-
- delete wgList;
- return ret;
- }
-
-// -----------------------------------------------------------------------------
-// CBavpView::UpdateView
-// Check animation running status, display the animated image if the video
-// player is not playing
-// -----------------------------------------------------------------------------
-void CBavpView::UpdateView()
- {
- Log( EFalse, _L("CBavpView::UpdateView") );
-
- // Handle the bad content case, ie MMF reports an error that needs to
- // be displayed to the user. (loss of network or bad content)
- if ( iBavpController->State() == EBavpBadContent && !iIsBadContentAnimRunning )
- {
- Log( EFalse, _L("CBavpView::UpdateView - Bad Content") );
- RunAnimation( iBadContentAnimation, iIsBadContentAnimRunning );
- }
- // Handle the beffering content state
- else if ( iBavpController->State() == EBavpBuffering && !iIsVideoBuffAnimRunning )
- {
- Log( EFalse, _L("CBavpView::UpdateView - Buffering media") );
- RunAnimation( iVideoBuffAnimation, iIsVideoBuffAnimRunning );
- }
- // Handle the video animations states
- else if ( iBavpController->IsClipVideo() )
- {
- Log( EFalse, _L("CBavpView::UpdateView - We got Video") );
- if ( iBavpController->State() == EBavpPlaying )
- {
- Log( EFalse, _L("CBavpView::UpdateView - Video Playing, stop animation") );
- TBool flag( EFalse );
- RunAnimation( NULL, flag );
- }
- else if ( iBavpController->State() == EBavpStopped && !iIsVideoStoppedAnimRunning )
- {
- Log( EFalse, _L("CBavpView::UpdateView - Video Stopped") );
- RunAnimation( iVideoStoppedAnimation, iIsVideoStoppedAnimRunning );
- }
- else if ( iBavpController->State() == EBavpPaused && !iIsVideoPausedAnimRunning )
- {
- Log( EFalse, _L("CBavpView::UpdateView - Video Paused") );
- RunAnimation( iVideoPausedAnimation, iIsVideoPausedAnimRunning );
- }
- }
- // Handle the audio animations states
- else
- {
- Log( EFalse, _L("CBavpView::UpdateView - We got Audio") );
- if ( iBavpController->State() == EBavpPlaying && !iIsAudioPlayAnimRunning )
- {
- Log( EFalse, _L("CBavpView::UpdateView - Audio Playing") );
- RunAnimation( iAudioPlayAnimation, iIsAudioPlayAnimRunning );
- }
- else if ( iBavpController->State() == EBavpStopped ||
- iBavpController->State() == EBavpPlayComplete &&
- !iIsAudioStoppedAnimRunning )
- {
- Log( EFalse, _L("CBavpView::UpdateView - Audio Stopped") );
- RunAnimation( iAudioStoppedAnimation, iIsAudioStoppedAnimRunning );
- }
- else if ( iBavpController->State() == EBavpPaused && !iIsAudioPausedAnimRunning )
- {
- Log( EFalse, _L("CBavpView::UpdateView - Audio Paused") );
- RunAnimation( iAudioPausedAnimation, iIsAudioPausedAnimRunning );
- }
- }
- }
-
-// -----------------------------------------------------------------------------
-// CBavpView::FocusChanged
-// This method is called once CCoeControl::SetFocus is called, could be when
-// BavpPlugin::NotifyL causes SetFocus to be called
-// -----------------------------------------------------------------------------
-void CBavpView::FocusChanged( TDrawNow /*aDrawNow*/ )
- {
- iBavpController->BavpFocusChanged( IsFocused() );
- }
-
-// -----------------------------------------------------------------------------
-// CBavpView::Draw
-// This method is called by CCoeControl::Draw
-// -----------------------------------------------------------------------------
-void CBavpView::Draw( const TRect& aRect ) const
- {
-
- if (iBavpController && !iBavpController->IsClipFullScreen()) {
- if ( Window().DisplayMode() == EColor16MA )
- {
- Log( EFalse, _L("BavpView::Draw() - DisplayMode=EColor16MA") );
- CWindowGc& gc = SystemGc();
- gc.SetDrawMode( CGraphicsContext::EDrawModeWriteAlpha );
-#ifdef _DEBUG
- gc.SetBrushColor(TRgb::Color16MA(0x0000ff00));
-#else
- gc.SetBrushColor( TRgb::Color16MA(0) );
-#endif
- gc.Clear( aRect );
- }
-
- if (iBavpController->IsClipLocalMedia() && iBavpController->IsClipSeekable()) {
- if (iBavpController->State() == EBavpPlayComplete) {
- TRAP_IGNORE(iBavpController->setPositionL(iBavpController->Duration()));
- }
- else if (iBavpController->State() == EBavpPaused) {
- TRAP_IGNORE(iBavpController->setPositionL(iBavpController->getPositionL()));
- }
- }
- }
-
- }
-
-// -----------------------------------------------------------------------------
-// CBavpView::ControllerStateChangedL
-// Check animation running status and the display screen mode
-// -----------------------------------------------------------------------------
-void CBavpView::ControllerStateChangedL()
- {
- Log( EFalse, _L("CBavpView::ControllerStateChangedL") );
-
- // If not in full screen mode and if it is on the stack, then remove
- // from the stack
- if ( !iBavpController->IsClipFullScreen() && iIsOnStack )
- {
- iIsOnStack = EFalse;
- iEikonEnv->EikAppUi()->RemoveFromStack( this );
- }
- else if ( iBavpController->IsClipFullScreen() && !iIsOnStack )
- {
- // If full screen mode and not on stack, add to stack
- iIsOnStack = ETrue;
- iEikonEnv->EikAppUi()->AddToStackL( this );
- }
- }
-
-// -----------------------------------------------------------------------------
-// CBavpView::InsertOneMenuItemL
-// Insert one menu item
-// -----------------------------------------------------------------------------
-void CBavpView::InsertOneMenuItemL( CEikMenuPane& aMenuPane, TInt aCommand,
- TInt aResourceId, TInt index )
- {
- Log( EFalse, _L("CBavpView::InsertOneMenuItemL") );
-
- CEikMenuPaneItem::SData item;
- HBufC* buf = StringLoader::LoadLC( aResourceId );
- item.iText.Copy( *buf );
- CleanupStack::PopAndDestroy(); // buf
- buf = NULL;
-
- item.iCommandId = aCommand + iCommandBase;
- item.iFlags = 0;
- item.iCascadeId = 0;
- aMenuPane.InsertMenuItemL( item, index );
- }
-
-// -----------------------------------------------------------------------------
-// CBavpView::RunAnimation
-// Run the animation specified, and stop all the other animations
-// If the animation and run flag are NULL, we stop all animations
-// Check if animation is already running, if so don't stop, this causes flicker
-// -----------------------------------------------------------------------------
-void CBavpView::RunAnimation( CAknBitmapAnimation* aAnimation,
- TBool &aAnimRunning )
- {
- Log( EFalse, _L("CBavpView::RunAnimation") );
- // Display the animation specified, after cancelling any
- // other animations first.
- //
- // Stop the video buffering animation
- if ( iIsVideoBuffAnimRunning && iVideoBuffAnimation != aAnimation )
- {
- Log( EFalse, _L("CBavpView::RunAnimation - cancel VideoBuffAnimation") );
- iVideoBuffAnimation->CancelAnimation();
- iIsVideoBuffAnimRunning = EFalse;
- }
- else if ( iIsVideoStoppedAnimRunning && iVideoStoppedAnimation != aAnimation )
- {
- // Stop the video stopped animation
- Log( EFalse, _L("CBavpView::RunAnimation - cancel VideoStoppedAnimation") );
- iVideoStoppedAnimation->CancelAnimation();
- iIsVideoStoppedAnimRunning = EFalse;
- }
- else if ( iIsVideoPausedAnimRunning && iVideoPausedAnimation != aAnimation )
- {
- // Stop the video paused animation
- Log( EFalse, _L("CBavpView::RunAnimation - cancel VideoPausedAnimation") );
- iVideoPausedAnimation->CancelAnimation();
- iIsVideoPausedAnimRunning = EFalse;
- }
- else if ( iIsAudioPlayAnimRunning && iAudioPlayAnimation != aAnimation )
- {
- // Stop the audio playing animation
- Log( EFalse, _L("CBavpView::RunAnimation - cancel AudioPlayAnimation") );
- iAudioPlayAnimation->CancelAnimation();
- iIsAudioPlayAnimRunning = EFalse;
- }
- else if ( iIsAudioStoppedAnimRunning && iAudioStoppedAnimation != aAnimation )
- {
- // Stop the audio stopped animation
- Log( EFalse, _L("CBavpView::RunAnimation - cancel AudioStoppedAnimation") );
- iAudioStoppedAnimation->CancelAnimation();
- iIsAudioStoppedAnimRunning = EFalse;
- }
- else if ( iIsAudioPausedAnimRunning && iAudioPausedAnimation != aAnimation )
- {
- // Stop the audio paused animation
- Log( EFalse, _L("CBavpView::RunAnimation - cancel AudioPausedAnimation") );
- iAudioPausedAnimation->CancelAnimation();
- iIsAudioPausedAnimRunning = EFalse;
- }
- else if ( iIsBadContentAnimRunning && iBadContentAnimation != aAnimation )
- {
- // Stop the bad content animation
- Log( EFalse, _L("CBavpView::RunAnimation - cancel BadContentAnimation") );
- iBadContentAnimation->CancelAnimation();
- iIsBadContentAnimRunning = EFalse;
- }
-
- // Now, start the animation specified, if it isn't already running.
- // If the animation and run flag are NULL, we don't start any animations.
- if ( aAnimation && !aAnimRunning )
- {
- Log( EFalse, _L("CBavpView::RunAnimation - start new animation") );
- if ( aAnimation->Rect().Size() != iRect.Size() )
- {
- TRect animRect( iWindowRect);
- aAnimation->SetRect( animRect );
- }
- TRAP_IGNORE
- (
- aAnimation->StartAnimationL();
- aAnimRunning = ETrue;
- );
- }
-
- }
-
-
-void CBavpView::HandlePointerEventL(const TPointerEvent &aPointerEvent)
- {
- /*
- * Plugin is sending all pointer events to the browser.
- * Browser will process them to gesture and return back using
- * event() function. (see PluginWin::HandleGesture(), BavpEvent() and
- * CBavpPlugin::HandleGesture().
- * Browser expects event position to be in absolute co-ordinates,
- * so we convert position of the pointer event here.
- */
- TPoint point(aPointerEvent.iPosition + PositionRelativeToScreen());
- NPNetscapeFuncs* funcs = iBavPlugin->getNPNFuncs();
-#ifdef BRDO_MULTITOUCH_ENABLED_FF
- if (aPointerEvent.IsAdvancedPointerEvent()) {
- TAdvancedPointerEvent tadvp = *(static_cast<const TAdvancedPointerEvent *>(&aPointerEvent));
- tadvp.iPosition = point;
- if(funcs && funcs->setvalue) {
- (funcs->setvalue)(iBavPlugin->getNPP(),
- (NPPVariable) NPPVPluginPointerEvent,
- (void*) &(tadvp));
- }
-
- }
- else {
-#endif
- TPointerEvent event(aPointerEvent);
- event.iPosition = point;
- if(funcs && funcs->setvalue) {
- (funcs->setvalue)(iBavPlugin->getNPP(),
- (NPPVariable) NPPVPluginPointerEvent,
- (void*) &(event));
- }
-#ifdef BRDO_MULTITOUCH_ENABLED_FF
- }
-#endif
-
- }
-
-// End of File