diff -r dec420019252 -r cf5481c2bc0b videoplayback/hbvideoplaybackview/inc/mpxvideoplaybackcontrolscontroller.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videoplayback/hbvideoplaybackview/inc/mpxvideoplaybackcontrolscontroller.h Fri Apr 16 14:59:52 2010 +0300 @@ -0,0 +1,373 @@ +/* +* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "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: Implementation of MPXVideoPlaybackControlsController +* +*/ + +// Version : %version: da1mmcf#13 % + + + +#ifndef MPXVIDEOPLAYBACKCONTROLSCONTROLLER_H_ +#define MPXVIDEOPLAYBACKCONTROLSCONTROLLER_H_ + +// INCLUDES +#include +#include + +#include + +#include "mpxvideo_debug.h" +#include "mpxvideoplaybackcontrol.hrh" +#include "mpxcommonvideoplaybackview.hrh" +#include "mpxvideoplaybackviewfiledetails.h" + +// FORWARD DECLARATIONS +class QTimer; +class QString; +class HbAction; +class ThumbnailManager; +class QActionGroup; +class CMPXVideoViewWrapper; +class HbVideoBasePlaybackView; +class QMPXVideoPlaybackControlPolicy; +class QMPXVideoPlaybackDocumentLoader; +class QMPXVideoPlaybackFullScreenControl; +class QMPXVideoPlaybackNonTouchVolumeBar; +class QMPXVideoPlaybackControlsController; +class QMPXVideoPlaybackControlConfiguration; + + +// DATA TYPES + +enum TMPXTimerAction +{ + EMPXTimerCancel, + EMPXTimerReset +}; + +enum TThumbNailState +{ + EThumbNailEmpty, + EThumbNailNotAvailable, + EThumbNailRequsted, + EThumbNailSet +}; + +enum TPlaybackViewMode +{ + EFullScreenView, + EDetailsView, + EAudioOnlyView +}; + +const int KMPXControlsTimeOut = 4000; + +const QString KMPXPLAYBACKVIEW_XML = ":/hbvideoplaybackview/hbvideoplaybackview.docml"; + + +// CLASS DECLARATION + +class QMPXVideoPlaybackControlsController : public QObject +{ + Q_OBJECT + + public: + + /** + * constructor. + */ + QMPXVideoPlaybackControlsController( + HbVideoBasePlaybackView *view, + CMPXVideoViewWrapper *viewWrapper, + QMPXVideoPlaybackViewFileDetails *details ); + + /** + * Destructor. + */ + virtual ~QMPXVideoPlaybackControlsController(); + + public: + + /** + * Handle event from container + */ + void handleEvent( TMPXVideoPlaybackControlCommandIds event, int value = 0 ); + + /** + * Command handling function. + * Call HandleCommandL() of container + */ + void handleCommand( TMPXVideoPlaybackViewCommandIds command, int value = 0 ); + + /* + * Return ETrue if TV-out cable gets connected + */ + inline bool isTvOutConnected(); + + /* + * Return ETrue if TV-out cable is connected and content can be played + */ + inline bool isTvOutPlaybackAllowed(); + + /** + * Reset or cancel timers for the controls + */ + void resetDisappearingTimers( TMPXTimerAction timerAction ); + + /** + * Return state + */ + inline TMPXPlaybackState state(); + + /** + * Return file details + */ + inline QMPXVideoPlaybackViewFileDetails* fileDetails(); + + // + // Add the file details to the controls controller when available + // + void addFileDetails( QMPXVideoPlaybackViewFileDetails* details ); + + inline QMPXVideoPlaybackDocumentLoader* layoutLoader(); + + inline HbVideoBasePlaybackView* view(); + + void updateVideoRectDone(); + + TPlaybackViewMode viewMode(); + + void changeViewMode( TPlaybackViewMode viewMode, bool transitionEffect = true ); + + private: + /** + * Initialize controller + */ + void initializeController(); + + /** + * Update controls + */ + void handleStateChange( TMPXPlaybackState newState ); + + /** + * Show Controls and reset the timers + */ + void showControls(); + + /** + * Return ETrue if any control is visible + */ + bool isVisible(); + + /** + * Append a control based on control index + */ + void appendControl( TMPXVideoPlaybackControls controlIndex ); + + /** + * Set changed volume + */ + void volumeChanged( int volume ); + + /** + * Set changed duration + */ + void durationChanged( int duration); + + /** + * Set changed position + */ + void positionChanged( int position ); + + /** + * Set changed position + */ + void aspectRatioChanged( int aspectRatio ); + + /* + * Sets the download size on the progress bar + */ + void setDownloadSize( int size ); + + /* + * Updates the download ratio on the progress bar + */ + void updateDownloadPosition( int newSize ); + + /** + * Set changed state on the controls + */ + void updateState(); + + /** + * Check whether this clip is real format or not + */ + bool realFormat( QString filename ); + + /** + * Check whether this clip is real format or not for streaming/live streaming + */ + bool realFormatForStreaming( const TDesC& des ); + + /** + * Check whether this clip is real format or not for local/progressive donwload + */ + bool realFormatForLocal(); + + /** + * Handle errors + */ + void handleErrors(); + + /** + * Return ETrue if control is visible + */ + bool isSoftKeyVisible( int value ); + + /** + * Handle tvout connected/disconnected event + */ + void handleTvOutEvent( bool connected, + TMPXVideoPlaybackControlCommandIds event, + int value ); + + HbAction* createAction( QActionGroup *actionsGroup, + int index, + const char *slot, + const QString& toolTip ); + + void updateVideoRect( bool transitionEffect = true ); + + void showVolumeControls(); + + void setDefaultBitmap(); + + void generateThumbNail(); + + private slots: + void hideAllControls(); + void skipToNextVideoItem(); + void skipToPreviousVideoItem(); + void handleTappedOnScreen(); + void handleThumbnailReady( QPixmap tnData, void *internal , int id, int error ); + void controlsListUpdated(); + + private: + HbVideoBasePlaybackView *mView; + CMPXVideoViewWrapper *mViewWrapper; + QMPXVideoPlaybackViewFileDetails *mFileDetails; + + QList mControls; + + QMPXVideoPlaybackControlPolicy *mControlsPolicy; + QMPXVideoPlaybackControlConfiguration *mControlsConfig; + + QTimer *mControlsTimer; + + QMPXVideoPlaybackDocumentLoader *mLoader; + QMPXVideoPlaybackNonTouchVolumeBar *mVolumeControl; + + ThumbnailManager *mThumbnailManager; + + bool mViewTransitionIsGoingOn; + TThumbNailState mThumbNailState; + + TMPXPlaybackState mState; + TPlaybackViewMode mViewMode; +}; + +// INLINE METHODS +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlsController::state +// ------------------------------------------------------------------------------------------------- +// +inline +TMPXPlaybackState QMPXVideoPlaybackControlsController::state() +{ + return mState; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlsController::fileDetails +// ------------------------------------------------------------------------------------------------- +// +inline +QMPXVideoPlaybackViewFileDetails* QMPXVideoPlaybackControlsController::fileDetails() +{ + return mFileDetails; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlsController::isTvOutConnected +// ------------------------------------------------------------------------------------------------- +// +inline +bool QMPXVideoPlaybackControlsController::isTvOutConnected() +{ + MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::isTvOutConnected(%d)"), + mFileDetails->mTvOutConnected); + + return mFileDetails->mTvOutConnected; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlsController::isTvOutPlaybackAllowed +// ------------------------------------------------------------------------------------------------- +// +inline +bool QMPXVideoPlaybackControlsController::isTvOutPlaybackAllowed() +{ + bool playable = ( ! mFileDetails->mTvOutConnected || mFileDetails->mTvOutPlayAllowed ); + + MPX_DEBUG(_L("QMPXVideoPlaybackControlsController::isTvOutPlaybackAllowed() [%d]"), + playable); + + return playable; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlsController::layoutLoader +// ------------------------------------------------------------------------------------------------- +// +inline +QMPXVideoPlaybackDocumentLoader* QMPXVideoPlaybackControlsController::layoutLoader() +{ + return mLoader; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlsController::view +// ------------------------------------------------------------------------------------------------- +// +inline +HbVideoBasePlaybackView* QMPXVideoPlaybackControlsController::view() +{ + return mView; +} + +// ------------------------------------------------------------------------------------------------- +// QMPXVideoPlaybackControlsController::viewMode +// ------------------------------------------------------------------------------------------------- +// +inline +TPlaybackViewMode QMPXVideoPlaybackControlsController::viewMode() +{ + return mViewMode; +} + +#endif /*MPXVIDEOPLAYBACKCONTROLSCONTROLLER_P_H_*/ + +// End of File