--- a/browserplugins/browseraudiovideoplugin/inc/BavpController.h Tue Feb 02 00:12:41 2010 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,612 +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: Base Controller class for handling browser requests to play
-* audio or video.
-*
-*/
-
-
-#ifndef BAVPCONTROLLER_H
-#define BAVPCONTROLLER_H
-
-// INCLUDES
-#include <e32base.h>
-#include <coecntrl.h>
-#include <e32property.h> // RProperty class
-#include "FeatMgr.h"
-
-#include "BrowserAudioVideoPlugin.hrh"
-#include "BavpVolumeObserver.h" // Volume Observer class
-#include "BavpVolumeHandler.h"
-#include "BavpHwKeyEvents.h" // Hardware Key Events
-#include "BavpClipInfo.h" // Clip info
-#include <rt_gesturehelper.h>
-
-// FORWARD DECLARATIONS
-class RFs;
-class CBavpPlugin;
-class MBavpView;
-
-// CONSTANTS
-// Does this build include Side Volume Keys support
-#define HAS_HW_VOLUME_KEYS ( FeatureManager::FeatureSupported( KFeatureIdSideVolumeKeys ) )
-
-// Used to walk the content's meta data
-_LIT(KBavpTrue, "1");
-_LIT(KBavpFalse, "0");
-_LIT(KBavpLiveStream, "LiveStream");
-_LIT(KBavpSeekable, "Seekable");
-
-// ROP controller UID, ?? Helix UID ??
-const TUid KRopControllerUid =
- {
- 0x101F8514
- };
-
-// The Audio or Video player state
-enum TAudioVideoState
- {
- EBavpNone, // Player is idle or not created yet
- EBavpBuffering, // Loading the content
- EBavpPlaying, // Playing the content
- EBavpPlayComplete, // Done playing the content (end)
- EBavpStopped, // User stopped the content
- EBavpPaused, // User paused the content
- EBavpBadContent, // Bad content or network error encountered
- EBavpFastForwarding, // Fast Forwarding the content
- EBavpFastForwardComplete, // Fast Forward reached end of content
- EBavpRewinding, // Rewinding the content
- EBavpRewindComplete // Rewind reached beginning of content
- };
-
-// Use these values for fast-forwarding and rewinding
-const TInt KSkipToPosition = 2*1000*1000; // 2 seconds
-const TInt KUpdateFrequency = 400*1000; // 400 milliseconds
-const TInt KInitialDelay = 600*1000; // 600 milliseconds
-
-// CLASS DECLARATIONS
-
-/**
-* CBavpController.
-* Controller class for handling browser requests to play audio or video.
-* @lib npBrowserAudioVideoPlugin.lib
-* @since 3.2
-*/
-class CBavpController : public CActive,
- public MBavpVolumeObserver,
- public MBavpHwKeyEventsObserver,
- public MCenRepNotifyHandlerCallback
- {
- public: // Constructors and destructor
-
- /**
- * C++ default constructor.
- */
- CBavpController( MBavpView* aView, TUint aAccessPtId );
-
- /**
- * Destructor.
- */
- virtual ~CBavpController();
-
- public: // New pure virtual methods
-
- /**
- * Handles request to play the audio or video content
- * @since 3.2
- * @param none
- * @return void
- */
- virtual void PlayAudioVideoL() = 0;
-
- /**
- * Handles request to stop playing the content
- * @param none
- * @return void
- */
- virtual void Stop() = 0;
-
- /**
- * Handles request to play content
- * @param none
- * @return void
- */
- virtual void PlayL() = 0;
-
- /**
- * Handles request to pause playing content
- * @param none
- * @return void
- */
- virtual void PauseL() = 0;
-
- /**
- * Handles request to fast forward content
- * @param none
- * @return void
- */
- virtual void FastForwardL() = 0;
-
- /**
- * Handles request to rewind content
- * @param none
- * @return void
- */
- virtual void RewindL() = 0;
-
- /**
- * Set the volume in the player, we send volume value 0-10, this method
- * will scale before calling Player::SetVolume()
- * @param aVolume the new volume: 0(mute) - 10(max)
- * @return void
- */
- virtual void SetPlayerVolume( TInt aVolume ) = 0;
-
- /**
- * Get the current volume of the player
- * This needs to be scaled to 0-10 (CR value) before returning
- * @param none
- * @return player volume scaled: 0(mute) - 10(max)
- */
- virtual TInt GetPlayerVolume() = 0;
-
- /**
- * To get the current position of the clip
- * @since 3.2
- * @param none
- * @return TTimeIntervalMicroSeconds
- */
- virtual TTimeIntervalMicroSeconds getPositionL() = 0;
-
- /**
- * To set the position of the clip
- * @since 3.2
- * @param TTimeIntervalMicroSeconds
- * @return void
- */
- virtual void setPositionL(TTimeIntervalMicroSeconds) = 0;
-
- /**
- * Handles the incoming call
- * @param none
- * @return void
- */
- virtual void HandleInComingCallL() = 0;
-
- public: // New virtual methods
-
- /**
- * Handles Notifications from Browser
- * @since 3.2
- * @param TBool: Tell bavp plugin if Browser is in or out of focus
- * @return void
- */
- virtual void HandleBrowserNotification( TBool aBrowserFocus );
-
- /**
- * Handles the error
- * @param TInt aError: error to be handled
- * @return void
- */
- virtual void HandleError( TInt aError );
-
- /**
- * Handles the keys offered by the CCoeControl
- * @since 3.2
- * @param TInt aKeyEvent: Which key pressed
- * @param TInt aEventCode: Key down, key up...
- * @return TKeyResponse: Was the key consumed
- */
- virtual TKeyResponse HandleKeysL( const TKeyEvent& aKeyEvent,
- TEventCode aType );
-
- /**
- * Handles commands from Option Menu, defined in resource files
- * @since 3.2
- * @param TBavpCommandIds aCommand: a Command Id
- * @return void
- */
- virtual void HandleCommandL( TBavpCommandIds aCommand );
-
- /**
- * Called by CBavpView to CBavpPlugin whenever Bavp focus changes
- * @since 3.2
- * @param aFocus True if plugin has focus
- * @return none
- */
- virtual void BavpFocusChanged( TBool aFocus );
-
- virtual TBool HandleGesture(RT_GestureHelper::TGestureEvent *gesture);
-
- public: // New methods
-
- /**
- * Sets volume using the value from <object> attribute
- * @since 3.2
- * @param aVolume
- * @return void
- */
- void SetVolumeFromAttribute( TInt aVolume );
-
- /**
- * Sets loop using the value from <object> attribute
- * @since 3.2
- * @param aLoopValue: The number of times to play file
- * @param aInfiniteFlag: Set to ETrue if play infinitely, we use a loop
- * countValue = 50 for infinite and always set this to EFalse
- * @return void
- */
- void SetLoopFromAttribute( TInt aLoopValue, TBool aInfiniteFlag );
-
- /**
- * Refresh the coordinates of the rectangle to be drawn
- * @since 3.2
- * @param none
- * @return void
- */
- virtual void RefreshRectCoordinatesL();
-
- /**
- * Sets original file name (used for scripting functionality)
- * @since 3.2
- * @param originalFilename
- * @return void
- */
- void SetOriginalFileName( const TDesC* originalFileName );
-
-
- /**
- * Sets the mime type(used for scripting functionality)
- * @since 3.2
- * @param mime type
- * @return void
- */
- void SetMimeType( const TDesC8* mimetype );
-
- public: // New inline methods
-
- /**
- * Bavp has focus
- * @since 3.2
- * @param void
- * @return : TBool 0 or 1 indicating the focus
- */
- inline TBool BavpHasFocus()
- {
- return iBavpHasFocus;
- }
-
- /**
- * Returns the video player plugin current state
- * @since 3.2
- * @param none
- * @return TVideoState
- */
- inline TAudioVideoState State()
- {
- return iCurrentState;
- }
-
- /**
- * returns ETrue is the volume is muted
- * @param none
- * @return TBool
- */
- inline TBool IsVolumeMuted()
- {
- return ( iCurrentVolume == KCRVolumeMute );
- }
-
- /**
- * Returns ETrue is this is a video clip
- * @since 3.2
- * @param none
- * @return TBool
- */
- inline TBool IsClipVideo()
- {
- return iClipInfo->iVideoTrack;
- }
-
- /**
- * Returns ETrue is the clip is seekable.
- * @param none
- * @return TBool
- */
- inline TBool IsClipSeekable()
- {
- return iClipInfo->iSeekable;
- }
-
- /**
- * returns ETrue is the content is local media file.
- * Local files can be FF and Rewind
- * @param none
- * @return TBool
- */
- inline TBool IsClipLocalMedia()
- {
- return ( iClipInfo->iMediaType == ELocalVideoFile ||
- iClipInfo->iMediaType == ELocalAudioFile );
- }
-
- /**
- * Returns TRUE if the display is on full screen, otherwise FALSE
- * @since 3.2
- * @param none
- * @return TBool
- */
- inline TBool IsClipFullScreen()
- {
- return iClipInfo->iInFullScreenMode;
- }
-
- /**
- * Returns TRUE if the content is being fast-forwarded,
- * otherwise FALSE
- * @since 3.2
- * @param none
- * @return TBool
- */
- inline TBool IsClipFastForwarding()
- {
- return ( iCurrentState == EBavpFastForwarding );
- }
-
- /**
- * Returns TRUE if the content is being rewound,
- * otherwise FALSE
- * @since 3.2
- * @param none
- * @return TBool
- */
- inline TBool IsClipRewinding()
- {
- return ( iCurrentState == EBavpRewinding );
- }
-
- /**
- * Returns ETrue is the clip is onDemand stream.
- * @param none
- * @return TBool
- */
- inline TBool IsClipOnDemand()
- {
- return ( iClipInfo->iMediaType != ELocalVideoFile && iClipInfo->iSeekable );
- }
-
- /**
- * Returns ETrue is the clip is live stream.
- * @param none
- * @return TBool
- */
- inline TBool IsClipLive()
- {
- return ( iClipInfo->iLiveStream );
- }
-
-
- /** Returns the original filename of the clip
- * @param none
- * @return HBufC*
- */
- inline const HBufC& ClipName()
- {
- return *iOriginalFileName;
- }
-
- /** Returns the duration of the clip
- * @param none
- * @return TTimeIntervalMicroSeconds
- */
- inline TTimeIntervalMicroSeconds Duration()
- {
- return ( iClipInfo->iDurationInSeconds );
- }
-
- /** Returns the mime type of the clip
- * @param none
- * @return HBufC*
- */
- inline const HBufC8& MimeType()
- {
- return *iMimeType;
- }
-
-
-
- protected: // New methods
-
- /**
- * By default Symbian 2nd phase constructor is private.
- * @param none
- * @return void
- */
- void BaseConstructL( TBavpMediaType aMediaType,
- const TDesC& aFileName );
-
- /**
- * Parse the ram file
- * @param none
- * @return void
- */
- void ParseRamFileL();
-#if defined(BRDO_ASX_FF)
- /**
- * Parse the asx file
- * @param none
- * @return void
- */
- void ParseAsxFileL();
-#endif //BRDO_ASX_FF
- /**
- * Set the rectangle to prepare the display
- * @param TRect
- * @return TRect aRect
- */
- TRect GetClipRect( TRect aRect );
-
- /**
- * Create a query dialog for the volume setting list
- * @param none
- * @return void
- */
- void CreateVolumeListDlgL();
-
- /**
- * Check if an incoming call comes
- * @param none
- * @return TBool
- */
- TBool IsVideoOrAudioCall();
-
- /**
- * Check if other audio or video controllers are playing
- * @param none
- * @return TBool
- */
- TBool IsAnotherControllerPlaying();
-
- /**
- * Pause or Stop the other audio or video controllers from playing
- * @param none
- * @return void
- */
- void PauseOtherControllersPlaying();
-
- /**
- * Handle the error from MMF for multiple media object case
- * @param aError error code from MMF
- * @return void
- */
- void HandleMultiInstanceError();
-
- protected: // Methods from CActive
-
- /**
- * Implements cancellation of an outstanding request.
- * @param none
- * @return void
- */
- void DoCancel() { /* Not implemented */ }
-
- /**
- * Handles an active object’s request completion event.
- * @param none
- * @return void
- */
- void RunL();
-
- public: // Methods from MBavpVolumeObserver
-
- /**
- * Updates the volume
- * From MBavpVolumeObserver
- * @since 3.2
- * @param TInt aVolume: volume value
- * @return void
- */
- void UpdateVolume( TInt aVolume );
-
- private: // From MHwKeyEventsObserver
-
- /**
- * Called when volume level should be changed.
- * Set volume control visible into navi pane.
- * @param aVolumeChange: +1 change volume up
- * -1 change volume down
- */
- void BavpHwKeyVolumeChange( TInt aVolumeChange );
-
- /**
- * Called when a media hardware key (play, pause...) was presed.
- * @since 3.2
- * @param aCommand: Command ID representing Play, Pause, ...
- * @return void
- */
- // void BavpHwKeyCommand( TBavpCommandIds aCommand );
-
- public: // Data, public
-
- // Is Bavp Plugin in focus
- TBool iBavpHasFocus;
-
- // Audio Video plugin current state
- TAudioVideoState iCurrentState;
-
- // ClipInfo contains our metadata from the MMF/Helix and content file
- CBavpClipInfo* iClipInfo;
-
- // Array of pointers of CBavpController (this) instances
- static RPointerArray<CBavpController> iBavpControllerArray;
-
- protected: // Data
-
- // The player is initialized and ready to be used
- TBool iPlayerInitialized;
-
- // Bavp plugin previous state - used when handling interrupted
- // media, because of a phone call
- TAudioVideoState iPreCallState;
-
- // Last command
- TBavpCommandIds iLastCommand;
-
- // The number of times the audio or video file will play (loop)
- TInt iLoopCount;
-
- // Hold the initial value of loop
- TInt iInitLoopCount;
-
- // The infinite loop flag, we currently set to EFalse and use loop=50
- // if a web site requests infinite looping
- TBool iInfiniteLoopFlag;
-
- // Access pt id
- TUint iAccessPtId;
-
- // Bavp View
- MBavpView* iBavpView;
-
- // Events from Hardware Keys
- CBavpHwKeyEvents* iHwKeyEvents;
-
- // System state
- RProperty iIncomingCalls;
-
- // Volume hander
- CBavpVolumeHandler* iBavpVolumeHandler;
-
- // Current volume level
- TInt iCurrentVolume;
-
- // Audio or Video player max volume
- TInt iPlayerMaxVolume;
-
- // Timer to jump to a new position, used for Fast Forward, Rewind
- CPeriodic* iPositionUpdater;
-
- // original file name. added for scripting functionality
- HBufC* iOriginalFileName;
-
- // mime type. added for scripting functionality
- HBufC8* iMimeType;
-
- //Normal display mode screen rect
- TRect iNormalScreenRect;
- };
-
-#endif // CBAVPCONTROLLER_H
-
-// End of File