tsrc/musenginestub/inc/musenglivesession.h
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:12:07 +0300
branchRCL_3
changeset 22 73a1feb507fb
parent 0 f0cf47e981f9
child 23 bc78a40cd63c
permissions -rw-r--r--
Revision: 201032 Kit: 201035

/*
* Copyright (c) 2005 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: 
*
*/


#ifndef MUSHENGLIVESESSION_H
#define MUSHENGLIVESESSION_H

// USER
#include "musengmceoutsession.h"
#include "musunittesting.h"
#include "mussettings.h"
#include "musengcamerahandler.h"
#include "lcvideoplayer.h"
#include "lccameracontrol.h"
#include "lcbrightnesscontrol.h"
#include "lczoomcontrol.h"
#include "lcfilecontrol.h"

// SYSTEM
#include <ecam.h>

// FORWARD DECLARATIONS
class MMusEngLiveSessionObserver;
class MLcValueControl;


class CMusEngLiveSession : 
    public CMusEngMceOutSession, 
    public MLcVideoPlayer,
    public MLcCameraControl,
    public MLcBrightnessControl,
    public MLcZoomControl,
    public MLcFileControl
    {
    
    public:
        /**
        * Creates new MultimediaSharing Live session.
        *
        * @param aFileName Media filename
        * @param aRect UI drawing area. It is allowed handle from engine
        * @param aSessionObserver Interface for session specific callbacks
        * @param aOutSessionObserver Interface for outsession specific callbacks
        * @param aLiveSessionObserver interface for live session specific
        *        callbacks
        * @return CMusEngLiveSession* New instanse of specified class
        */
        static CMusEngLiveSession* NewL( 
							const TDesC& aFileName,
                            const TRect& aRect );
                            
        /**
        * Creates new MultimediaSharing Live session.
        *
        * @param aRect UI drawing area. It is allowed handle from engine
        * @param aSessionObserver Interface for session specific callbacks
        * @param aOutSessionObserver Interface for outsession specific callbacks
        * @param aLiveSessionObserver interface for live session specific
        *        callbacks
        * @return CMusEngLiveSession* New instanse of specified class
        */
        static CMusEngLiveSession* NewL( 
                            const TRect& aRect );


    public:

        /**
        * Destructor
        */
        ~CMusEngLiveSession();


    public: // from MLcSession
        
        void EstablishLcSessionL();
    
        MLcVideoPlayer* LocalVideoPlayer();
        
        const TDesC& RemoteDisplayName();
        
        
    public: // from MLcVideoPlayer
        
        TLcVideoPlayerState LcVideoPlayerState() const;
        
        TBool LcIsPlayingL();
        
        void LcPlayL();
        
        void LcPauseL();
    
        MLcWindow* LcWindow();

        MLcCameraControl* LcCameraControl();
        
        MLcFileControl* LcSourceFile();
        
        MLcFileControl* LcDestinationFile();
        
        MLcAudioControl* LcAudioControl();
    
        MLcZoomControl* LcZoomControl();
    
        MLcBrightnessControl* LcBrightnessControl();

        RPointerArray< MLcValueControl >& LcExtensionControls();    

    public: // from MLcCameraControl
        
        TInt LcCameraCountL();

        void ToggleLcCameraL();       

    public: // MLcBrightnessControl
        
        TInt MinLcBrightnessL();

        TInt MaxLcBrightnessL();

        TInt LcBrightnessL();

        void SetLcBrightnessL( TInt aValue );
        
        void IncreaseLcBrightnessL();
        
        void DecreaseLcBrightnessL();
        
    public: // from MLcZoomControl
        
        TInt MinLcZoomL();

        TInt MaxLcZoomL();

        TInt LcZoomValueL();

        void SetLcZoomValueL( TInt aValue );
        
        void LcZoomInL();
        
        void LcZoomOutL();        
        
    public: // from MLcFileControl
        
        void EnableLcFileL( TBool aEnable );
        
        TBool IsLcFileEnabled();

        void SetLcFileNameL( const TFileName& aFileName );
        
        TFileName& LcFileName();  
        
    protected:

        /**
        * Constructor
        */
        CMusEngLiveSession( const TRect& aRect, 
        					const TDesC& aRecordedFile = KNullDesC );

        /**
        * Second-phase constructor
        */
        void ConstructL();

    

    protected:

        /**
        * File name for recording. If KNullDesC no recording performed.
        */
        TFileName iRecordedFile;
        
        /** 
        * Dummy member variable to implement MLcVideoPlayer::LcExtensionControls
        */
        RPointerArray< MLcValueControl > iValueControls;    
        
        TMusEngCameraHandler iCameraHandler;
        
        /*
         * Remote Display Name
         */
        HBufC* iRemoteDisplayName;
        
        TInt iCurrentZoom;
        TInt iDefaultZoomFactor;
        TInt iCurrentBrighness;
        TInt iPlaying;
        TBool iFileEnabled;
        
    };

#endif