mmsharing/mmshui/inc/musuieventcontroller.h
branchRCL_3
changeset 33 bc78a40cd63c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshui/inc/musuieventcontroller.h	Wed Sep 01 12:31:01 2010 +0100
@@ -0,0 +1,482 @@
+/*
+* 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 MUSUIEVENTCONTROLLER_H
+#define MUSUIEVENTCONTROLLER_H
+
+#include "musuipropertyobserver.h"
+#include "musuicallbackobserver.h"
+#include "musuibitmapdecoderobserver.h"
+#include "musresourceproperties.h"
+#include "musuidefinitions.h"
+#include "musmanagercommon.h"
+#include "musuimmcobserver.h"
+#include "musunittesting.h"
+
+#include "musengsessionobserver.h"
+#include "musengaudioroutingobserver.h"
+#include "musengvolumechangeobserver.h"
+
+#include <aknappui.h>        // CAknAppUiBase::TAppUiOrientation
+
+class CMusUiCallbackService;
+class MMusUiEventObserver;
+class CMusUiMmcMonitor;
+class CMusUiPropertyWatch;
+class CMusUiBitmapDecoder;
+class CFbsBitmap;
+class CMusEngMceSession;
+class MMusUiSharingObserver;
+class CMusUiActivityManager;
+class CMusUiResourceHandler;
+
+using namespace MultimediaSharing;
+
+
+/**
+ *
+ *
+ * @lib musui.exe
+ */
+class CMusUiEventController : public CBase, 
+                              public MMusUiPropertyObserver, 
+                              public MMusUiCallbackObserver,
+                              public MMusUiMmcObserver,
+                              public MMusEngSessionObserver,
+                              public MMusEngAudioRoutingObserver,
+                              public MMusEngVolumeChangeObserver
+    {
+
+public: // enumerations
+
+    enum TMusUiShutdownState
+            {
+            EMusUiShutdownNotDefined,
+            EMusUiShutdownStarted,
+            EMusUiShutdownVideoSaved,
+            EMusUiShutdownContactSavingQueried,
+            EMusUiShutdownOver
+            };    
+
+
+public:
+
+    /**
+    * 
+    */
+	virtual ~CMusUiEventController();
+
+	
+protected:
+
+    /**
+    * 
+    */
+	void ConstructL();
+	
+    /**
+    * 
+    */
+	CMusUiEventController( MMusUiEventObserver& aEventObserver,
+	                       MMusUiSharingObserver& aSharingObserver );
+
+
+public:	// From MMusUiPropertyObserver
+
+    /**
+    * Sets the property key value common to all sharing types.
+    * To be overridden for specific key values.
+    * CMusUiPropertyWatch calls MMusUiPropertyObserver::PropertyChanged,
+    * when P&S key values change
+    *
+    * @param TUint aKey - The Property key
+    * @param TInt aValue - The value of the Property key
+    */
+    virtual	void PropertyChanged( const TUint aKey, const TInt aValue );
+	
+    /**
+    * 
+    */
+	virtual void HandlePropertyError( const TInt aReason );
+
+
+public:	// From MMusUiCallbackObserver
+
+    /**
+    * Handles async events common to all session types.
+    * Should be called if child classes are not able to handle the call.
+    */
+    virtual void HandleAsyncEventL( TMusUiAsyncEvent aEventId );
+
+    /**
+    * Error handler for HandleAsyncEventL.
+    */
+    virtual TInt HandleAsyncError( TInt aError );
+
+
+public:	// From MMusUiMmcObserver
+
+    /**
+    * 
+    */
+    virtual void MmcRemoved();
+
+
+public: // From 
+
+    /**
+    * Handles session establishment procedures common to all session types.
+    */
+    virtual void SessionEstablished();
+    
+
+public: // From MMusEngAudioRoutingObserver
+    
+    /**
+    * Indicates that some other application has changed audio routing.
+    *
+    */
+    virtual void AudioRoutingChanged( TBool aShowNote );
+    
+    /**
+    * Before doing audio routing, permission is asked
+    *
+    */
+    virtual TBool AudioRouteChangeAllowed() const;
+    
+public: // From MMusEngVolumeChangeObserver
+    
+    /**
+    * Indicates that some other application has changed volume level.
+    *
+    */
+    virtual void VolumeChanged( TInt aVolume, TBool aAudioRouteChanged );
+    
+
+public:	// New functions
+	
+	/**
+    * 
+    */
+	void SetRect( const TRect& aRect );
+
+    /**
+    * 
+    */
+    const TDesC& MusContactName();
+    
+    /**
+    * 
+    */
+	const TDesC& MusVideoCodecValue();
+
+    /**
+    * 
+    */
+	const TDesC& MusTelNumberValue();
+    
+    /**
+    * 
+    */
+    const TDesC& SessionTimeFormatted( const TTimeIntervalSeconds& aSeconds );
+    
+    /**
+    * 
+    */
+    void SaveContactQueryL();
+    
+    /**
+    * 
+    */
+    void HandleError( const TInt aError );
+
+    /**
+    * Starts shutdown process
+    */
+    void HandleExitL( TBool aTerminateCall = EFalse );
+
+    /**
+    * 
+    */
+    void AsyncQueryDialogAcceptedL( TBool aAccepted );
+    
+    /**
+    * 
+    */
+    TBool ExitOccured();
+    
+    /**
+    *
+    */
+    TBool AudioRoutingCanBeChanged();
+    
+    /**
+    * 
+    */
+    TBool IsLoudSpeakerEnabled();
+    
+    /**
+    * 
+    */
+    TBool DeviceHasDedicatedVolumeKeys();
+    
+    /**
+    * Queries flag for session state
+    */
+    TBool ConnectionEstablished() const;
+    
+    /**
+    * Set session initialization state
+    */
+    void SetConnectionInitialized( TBool aConnectionInitialized );
+    
+    /**
+    * Queries flag for session state
+    */
+    TBool ConnectionInitialized() const;
+    
+    /**
+    * 
+    */
+    void EnableDisplayL( TBool aEnable );
+    
+    /**
+    * 
+    */
+    void ChangeOrientationL( CAknAppUiBase::TAppUiOrientation aOrientation );
+    
+    /**
+    * 
+    */
+    TBool ToolbarVolumeSelected();
+    
+    /**
+    *
+    */ 
+    TBool IsMicMutedL();
+    
+    /**
+    * Function to be overridden in sibling classes
+    * @return EFalse by default
+    */
+    virtual TBool ManualAddressTyped() const;
+    
+    /**
+    * 
+    */
+    virtual void HandleForegroundEventL( TBool aForeground );
+    
+    /**
+    * 
+    */
+    virtual TBool IsForeground() const;
+    
+    /**
+    * 
+    */
+    virtual void OfferToolbarEventL( TInt aCommand );
+    
+    /**
+    * 
+    */
+    virtual void HandleCommandL( TInt aCommand );
+
+    /**
+    * Returns a pointer to engine side session.
+    */
+    virtual CMusEngMceSession* EngineSession() = 0;
+    
+    /**
+    * 
+    */
+    virtual const TDesC& TypedAddress() const = 0;
+    
+    /**
+    * 
+    */
+    virtual void DeleteEngineSession() = 0;
+      
+    /**
+    * 
+    */
+    TBool IsDisplayEnabledL();
+    
+    /**
+     * 
+     */
+    TBool IsAudioRoutingLoudSpeaker();
+
+protected:    // New functions
+
+    /**
+    * General functionality of exit procedure
+    */
+    virtual void ExitProcedureL( TBool aUserAcceptance );
+    
+    /**
+    * Handles status changes common to all sharing types.
+    * To be overridden in sibling classes for sharing type specific 
+    * status changes.
+    */
+    virtual void HandleChangedStatusL( TMusAvailabilityStatus aStatus );    
+    
+    
+protected:
+        
+    /**
+    * 
+    */
+	MMusUiEventObserver& iEventObserver;
+	
+    /**
+    *
+    */
+    MMusUiSharingObserver& iSharingObserver;
+    
+    /**
+    * 
+    */
+	CMusUiCallbackService* iCallbackService;
+
+    /**
+    * Flag of the connection state
+    */
+	TBool iConnectionEstablished;
+	
+	/**
+    * Flag of the connection state
+    */
+	TBool iConnectionInitialized;
+
+    /**
+    * 
+    */
+	TFileName iVideoFilePath;
+	
+    /**
+    * 
+    */
+	TFileName iLocalizedVideoFilePath;
+	
+    /**
+    * 
+    */
+	TFileName iVideoFileNamePlain;
+	
+	/**
+    * 
+    */
+	TInt iSipProfileId;
+	
+	/**
+    * 
+    */
+	TInt iContactId;
+	
+	/**
+    * 
+    */
+	HBufC* iContactName;
+
+    /**
+    * 
+    */
+	HBufC* iTelNumber;
+	
+    /**
+    * 
+    */
+	HBufC* iDialogPrompt;
+    
+    /**
+    * 
+    */
+	HBufC* iVideoCodec;
+	
+    /**
+    * 
+    */
+    TBool iForeground;
+
+    /**
+    * ETrue if operator specific functionality is needed 
+    */
+    TBool iOperatorSpecificFunctionality;
+    
+    /**
+    *
+    */
+    CMusUiResourceHandler* iResourceHandler;
+    
+	/**
+    * 
+    */
+    TMusUiShutdownState iShutdownState;
+    
+    /**
+	* Flag indicating whether show "loudspeaker deactived"
+	*/
+    TBool iShowDialog;
+    
+   
+private:
+	
+    /**
+    * 
+    */
+	CMusUiMmcMonitor* iMmcMonitor;
+	
+	/**
+    * 
+    */
+    CMusUiActivityManager* iActivityManager;
+
+    /**
+    * 
+    */
+    CMusUiPropertyWatch* iStatusPropertyWatch; 
+    
+    /**
+    * 
+    */  
+    CMusUiPropertyWatch* iMicMuteStatusPropertyWatch;
+
+    /**
+    * 
+    */
+    TBuf<7> iTimeBuffer;
+    
+    /**
+     * Flag of the Volume item in the Toolbar
+     */
+    TBool iToolbarVolumeSelected;
+    
+    /**
+    * Flag indicating whether call has ended
+    */
+    TBool iActiveCall;
+    
+    MUS_UNITTEST( UT_CMusUiEventController )
+    MUS_UNITTEST( UT_CMusUiLiveSharingController )
+    MUS_UNITTEST( UT_CMusUiClipSharingController )
+    MUS_UNITTEST( UT_CMusUiReceiveController )
+    };
+
+#endif // MUSUIEVENTCONTROLLER_H
+
+// end of file