diff -r 481242ead638 -r 48e827313edd browserplugins/browseraudiovideoplugin/inc/BavpController.h --- 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 -#include -#include // 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 - -// 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 attribute - * @since 3.2 - * @param aVolume - * @return void - */ - void SetVolumeFromAttribute( TInt aVolume ); - - /** - * Sets loop using the value from 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 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