videoplayback/inc/mpxvideoplaybackcontrolscontroller.h
branchRCL_3
changeset 23 befca0ec475f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/videoplayback/inc/mpxvideoplaybackcontrolscontroller.h	Wed Sep 01 12:30:28 2010 +0100
@@ -0,0 +1,426 @@
+/*
+* Copyright (c) 2008 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: 20 %
+
+
+#ifndef MPXVIDEOPLAYBACKCONTROLSCONTROLLER_H_
+#define MPXVIDEOPLAYBACKCONTROLSCONTROLLER_H_
+
+// INCLUDES
+#include <mpxplaybackframeworkdefs.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+#include <f32file.h>
+#include <MMFScalingCustomCommandConstants.h>
+
+#include "mpxvideo_debug.h"
+#include "mpxvideoplaybackviewfiledetails.h"
+#include "mpxvideoplaybackcontrol.hrh"
+
+// FORWARD DECLARATIONS
+class CEikLabel;
+class CEikImage;
+class MTouchFeedback;
+class CMPXVideoPlaybackControl;
+class CMPXVideoPlaybackContainer;
+class CMPXVideoPlaybackControlPolicy;
+class CAknsBasicBackgroundControlContext;
+class CMPXVideoPlaybackControlConfiguration;
+
+// DATA TYPES
+
+enum TMPXTimerAction
+{
+    EMPXTimerCancel,
+    EMPXTimerReset
+};
+
+
+// CLASS DECLARATION
+
+class CMPXVideoPlaybackControlsController : public CBase
+{
+
+    public: // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        IMPORT_C static CMPXVideoPlaybackControlsController* NewL(
+                CMPXVideoPlaybackContainer* aContainer,
+                TRect aRect,
+                CMPXVideoPlaybackViewFileDetails* aDetails );
+
+        /**
+        * Destructor.
+        */
+        IMPORT_C virtual ~CMPXVideoPlaybackControlsController();
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CMPXVideoPlaybackControlsController( CMPXVideoPlaybackContainer* aContainer, TRect aRect );
+
+        /**
+        * Symbian 2nd phase constructor.
+        */
+        void ConstructL( CMPXVideoPlaybackViewFileDetails* aDetails );
+
+    public:
+
+        /**
+        * Handle event from container
+        */
+        IMPORT_C void HandleEventL( TMPXVideoPlaybackControlCommandIds aEvent, TInt aValue = 0 );
+
+        IMPORT_C CEikImage* GetBitmap( TMPXVideoPlaybackControls aBitmap );
+
+        //
+        //  Add the file details to the controls controller when available
+        //
+        IMPORT_C void AddFileDetailsL( CMPXVideoPlaybackViewFileDetails* aDetails );
+
+        /**
+        * Command handling function.
+        * Call HandleCommandL() of container
+        */
+        void HandleCommandL( TInt aCommand, TInt aValue = 0 );
+
+        /**
+        * Return ETrue if TV-out cable gets connected
+        */
+        inline TBool IsTvOutConnected();
+
+        /**
+        * Reset or cancel timers for the controls
+        */
+        void ResetDisappearingTimers( TMPXTimerAction aTimerAction );
+
+        /**
+        * Return state
+        */
+        inline TMPXPlaybackState State();
+
+        /*
+         *   Return the Aspect Ratio for the clip
+         */
+        inline TMMFScalingType AspectRatio();
+
+        /**
+        * Return file details
+        */
+        inline CMPXVideoPlaybackViewFileDetails* FileDetails();
+
+        //
+        //  Locates the bitmap file searching from y: down and then z: last
+        //
+        void LocateBitmapFileL( TFileName& aFileName );
+
+        void SetRealOneBitmapVisibility( TBool aVisible );
+
+        inline TBool IsRealMediaFormat();
+
+    private:
+        /**
+        * Create controls
+        */
+        void CreateControlsL();
+
+        /**
+        * Update controls
+        */
+        void HandleStateChange( TMPXPlaybackState aNewState );
+
+        /**
+        * Update Control's visibility
+        */
+        void UpdateControlsVisibility();
+
+        /**
+        * Toggle visibility
+        */
+        void ToggleVisibility();
+
+        CEikImage* CreateImageL( TFileName& aIconsPath, TInt aBitmapIndex, TInt aBitmapMaskIndex );
+
+        CEikImage* CreateBitmapL( TFileName& aIconsPath,
+                                  TInt aBitmapIndex,
+                                  const TAknWindowLineLayout& aLayout );
+
+        /**
+        * Create/delete controls based on updated control list
+        */
+        void ControlsListUpdatedL( TBool aUpdateVisibility = ETrue );
+
+        /**
+        * Create fake softkeyL
+        */
+        void CreateFakeSoftKeyL( TInt aResource,
+                                 TBool aTop,
+                                 TMPXVideoPlaybackControls aControlIndex,
+                                 TUint aProperties );
+
+        /**
+        * Crate text label with speccific layout
+        */
+        void CreateTextLabelWithSpecificLayoutL(
+                TInt aResource,
+                TMPXVideoPlaybackControls aControlIndex,
+                TUint aProperties,
+                TAknTextComponentLayout aLayout );
+
+        //
+        //  Create the bitmaps for Audio Only Clips
+        //
+        void CreateAudioOnlyBitmapL( TFileName& aIconsPath,
+                                     TInt aBitmapIndex,
+                                     TInt aBitmapMaskIndex,
+                                     TMPXVideoPlaybackControls aControlIndex,
+                                     const TAknWindowLineLayout& aLayout,
+                                     TUint aProperties );
+
+        //
+        //  Create the title control for Audio Only Clips
+        //
+        void CreateTitleControlL( TMPXVideoPlaybackControls aControlIndex,
+                                  TUint aProperties );
+
+        /**
+        * Create CEikLabelL
+        */
+        CEikLabel* CreateTextLabelL( const TDesC& aText );
+
+        /*
+        *  Handles the Controls Timer Timout
+        */
+        static TInt HandleControlsTimeout( TAny* aPtr );
+
+        /**
+        * Cancels all disappearing timers and hides all controls
+        */
+        void HideAllControls();
+
+        /**
+        * Show Controls and reset the timers
+        */
+        void ShowControls();
+
+        /**
+        * Return ETrue if any control is visible
+        */
+        TBool IsVisible();
+
+        /**
+        * Return ETrue if real one bitmap is visible
+        */
+        TBool IsRealOneBitmapVisible();
+
+        /**
+        * Append a control based on control index
+        */
+        void AppendControlL( TMPXVideoPlaybackControls aControlIndex );
+
+        /**
+        * Set changed volume
+        */
+        void VolumeChanged( TInt aVolume );
+
+        /**
+        * Set changed duration
+        */
+        void DurationChangedL( TInt aDuration);
+
+        /**
+        * Set changed position
+        */
+        void PositionChangedL( TInt aPosition );
+
+        /**
+        * Set changed position
+        */
+        void AspectRatioChanged( TInt aAspectRatio );
+        /*
+         *  Sets the download size on the progress bar
+         */
+        void SetDownloadSize( TInt aSize );
+
+        /*
+         *  Updates the download ratio on the progress bar
+         */
+        void UpdateDownloadPosition( TInt aNewSize );
+
+        /**
+        * Set changed state on button bar
+        */
+        void UpdateStateOnButtonBar();
+
+        /**
+        * Stop branding animation
+        */
+        void StopBrandingAnimation();
+
+        /**
+        * Check whether this clip is real format or not
+        */
+        TBool IsRealFormatL( const TDesC& aDes );
+
+        /**
+        * Check whether this clip is real format or not for streaming/live streaming
+        */
+        TBool RealFormatForStreamingL( const TDesC& aDes );
+
+        /**
+        * Check whether this clip is real format or not for local/progressive donwload
+        */
+        TBool RealFormatForLocalL();
+
+        /*
+         *  Create the Real One bitmap
+         */
+        void CreateRealOneBitmapL();
+
+        /**
+        * Handle errors
+        */
+        void HandleErrors();
+
+        /**
+        * Return ETrue if control is visible
+        */
+        TBool IsSoftKeyVisible( TInt aValue );
+
+        /**
+        * Handle tvout connected/disconnected event
+        */
+        void HandleTvOutEventL( TBool aConnected,
+                                TMPXVideoPlaybackControlCommandIds aEvent,
+                                TBool aShowArIcon );
+        /**
+        * Handle softkey pressed event
+        */
+        void HandleSoftKeyPressedL( TInt aValue );
+
+        /*
+         *  Locate the path of the dll
+         */
+        TInt AddDllPath( TDes& aFileName );
+
+        /*
+         *  Shows the Meida File Details Viewer control
+         */
+        void ShowMediaDetailsViewerL();
+
+        /*
+         *  Checks if Media Details Viewer control is open/visible
+         */
+        TBool IsMediaDetailsViewerVisible();
+
+        /*
+         *  Closes Media Details Viewer
+         */
+        void CloseMediaDetailsViewer();
+
+        /*
+         *   Handles the Loading Started command that was received after Buffering state was
+         *   blocked by the playback view
+         */
+        void HandleLoadingStarted();
+
+        /*
+         *   This will cause the controls to be updated when the surface changes and the
+         *   controls are visible.
+         */
+        void RedrawControlsForSurfaceChanges();
+
+    private:
+
+        CMPXVideoPlaybackControlPolicy*         iControlsPolicy;
+        CArrayPtrFlat<CMPXVideoPlaybackControl> iControls;
+        CMPXVideoPlaybackControl*               iMediaDetailsViewerControl;
+
+        CMPXVideoPlaybackControlConfiguration*  iControlsConfig;
+
+        CEikImage*                              iRealOneBitmap;
+
+        CPeriodic*                              iControlsTimer;
+
+        TRect                                   iRect;
+        TInt                                    iVideoResourceOffset;
+
+        TMPXPlaybackState                       iState;
+        TMMFScalingType                         iAspectRatio;
+
+        CMPXVideoPlaybackViewFileDetails*       iFileDetails;     //  not owned
+
+        RFs                                     iFs;
+        TFileName                               iBitmapFileName;
+
+        TBool                                   iTvOutConnected;
+        TBool                                   iShowControls;
+        TBool                                   iRNFormat;
+
+#ifdef RD_TACTILE_FEEDBACK
+        MTouchFeedback*                         iFeedback;
+#endif //RD_TACTILE_FEEDBACK
+
+    public:
+        CMPXVideoPlaybackContainer*             iContainer;
+};
+
+// INLINE METHODS
+
+inline
+TMPXPlaybackState CMPXVideoPlaybackControlsController::State()
+{
+    return iState;
+}
+
+inline
+CMPXVideoPlaybackViewFileDetails* CMPXVideoPlaybackControlsController::FileDetails()
+{
+    return iFileDetails;
+}
+
+inline
+TBool CMPXVideoPlaybackControlsController::IsTvOutConnected()
+{
+    MPX_DEBUG(_L("CMPXVideoPlaybackControlsController::IsTvOutConnected(%d)"),
+        iFileDetails->iTvOutConnected);
+
+    return iFileDetails->iTvOutConnected;
+}
+
+inline
+TBool CMPXVideoPlaybackControlsController::IsRealMediaFormat()
+{
+    MPX_DEBUG(_L("CMPXVideoPlaybackControlsController::IsRealFormat() [%d]"), iRNFormat);
+    return iRNFormat;
+}
+
+inline
+TMMFScalingType CMPXVideoPlaybackControlsController::AspectRatio()
+{
+    MPX_DEBUG(_L("CMPXVideoPlaybackControlsController::AspectRatio(%d)"), iAspectRatio);
+    return iAspectRatio;
+}
+
+#endif /*MPXVIDEOPLAYBACKCONTROLSCONTROLLER_H_*/
+
+// End of File