Revision: 201021 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 09 Jun 2010 09:37:52 +0300
branchRCL_3
changeset 21 ce86b6d44a6d
parent 19 95754dcd27ad
child 24 407431f36921
Revision: 201021 Kit: 2010123
inc/musindicatorapi.h
mmsharing/Conf/multimediasharing.confml
mmsharing/inc/musmanageripccommon.h
mmsharing/mmshavailability/inc/musavacapabilitytimer.h
mmsharing/mmshavailability/src/musavacapabilitytimer.cpp
mmsharing/mmshengine/group/musengine.mmp
mmsharing/mmshengine/inc/musengclipsession.h
mmsharing/mmshengine/inc/musenglivesession.h
mmsharing/mmshengine/inc/musenglivesessionobserver.h
mmsharing/mmshengine/inc/musengmcesession.h
mmsharing/mmshengine/inc/musengorientationhandler.h
mmsharing/mmshengine/inc/musengsession.h
mmsharing/mmshengine/inc/musengsessiondurationtimer.h
mmsharing/mmshengine/inc/musengtelephoneutils.h
mmsharing/mmshengine/src/musengclipsession.cpp
mmsharing/mmshengine/src/musenglivesession.cpp
mmsharing/mmshengine/src/musengmcesession.cpp
mmsharing/mmshengine/src/musengorientationhandler.cpp
mmsharing/mmshengine/src/musengsessiondurationtimer.cpp
mmsharing/mmshengine/src/musengtelephoneutils.cpp
mmsharing/mmshengine/tsrc/ut_engine/group/ut_musengine.mmp
mmsharing/mmshengine/tsrc/ut_engine/inc/musengstubs.h
mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengorientationhandler.h
mmsharing/mmshengine/tsrc/ut_engine/src/musengstubs.cpp
mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengclipsession.cpp
mmsharing/mmshengine/tsrc/ut_engine/src/ut_musenginedllmain.cpp
mmsharing/mmshengine/tsrc/ut_engine/src/ut_musenglivesession.cpp
mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengmcesession.cpp
mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengorientationhandler.cpp
mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengreceivesession.cpp
mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengtelephoneutils.cpp
mmsharing/mmshindicator/eabi/musindicatoru.def
mmsharing/mmshindicator/group/musindicator.mmp
mmsharing/mmshindicator/inc/musindicatordsa.h
mmsharing/mmshindicator/src/musindicatorapi.cpp
mmsharing/mmshindicator/src/musindicatordsa.cpp
mmsharing/mmshindicator/tsrc/ut_indicator/group/ut_musindicator.mmp
mmsharing/mmshindicator/tsrc/ut_indicator/inc/ut_cmusindicatordsa.h
mmsharing/mmshindicator/tsrc/ut_indicator/src/dllmain.cpp
mmsharing/mmshindicator/tsrc/ut_indicator/src/ut_cmusindicatorapi.cpp
mmsharing/mmshindicator/tsrc/ut_indicator/src/ut_cmusindicatordsa.cpp
mmsharing/mmshmanagercli/src/musmanagerimpl.cpp
mmsharing/mmshmanagercli/src/musmanagerserverstarter.cpp
mmsharing/mmshmanagersrv/inc/musmanagerserverclosetimer.h
mmsharing/mmshmanagersrv/src/musmanagerserverclosetimer.cpp
mmsharing/mmshmanagersrv/src/musmanagerservermain.cpp
mmsharing/mmshui/inc/musuiactivetimer.h
mmsharing/mmshui/inc/musuiactivitymanger.h
mmsharing/mmshui/inc/musuiappui.h
mmsharing/mmshui/inc/musuibitmapdecoder.h
mmsharing/mmshui/inc/musuiclipsharingcontroller.h
mmsharing/mmshui/inc/musuiclipsharingview.h
mmsharing/mmshui/inc/musuidefinitions.h
mmsharing/mmshui/inc/musuieventcontroller.h
mmsharing/mmshui/inc/musuieventobserver.h
mmsharing/mmshui/inc/musuigeneralview.h
mmsharing/mmshui/inc/musuilivesharingcontroller.h
mmsharing/mmshui/inc/musuilivesharingview.h
mmsharing/mmshui/inc/musuimmcmonitor.h
mmsharing/mmshui/inc/musuinavimediadecorator.h
mmsharing/mmshui/inc/musuireceivecontainer.h
mmsharing/mmshui/inc/musuireceiveview.h
mmsharing/mmshui/inc/musuiresourcehandler.h
mmsharing/mmshui/inc/musuisharingobserver.h
mmsharing/mmshui/src/musuiactivequerydialog.cpp
mmsharing/mmshui/src/musuiactivetimer.cpp
mmsharing/mmshui/src/musuiactivitymanger.cpp
mmsharing/mmshui/src/musuiappui.cpp
mmsharing/mmshui/src/musuibitmapdecoder.cpp
mmsharing/mmshui/src/musuicallbackservice.cpp
mmsharing/mmshui/src/musuiclipsharingcontroller.cpp
mmsharing/mmshui/src/musuiclipsharingview.cpp
mmsharing/mmshui/src/musuieventcontroller.cpp
mmsharing/mmshui/src/musuigeneralview.cpp
mmsharing/mmshui/src/musuilivesharingcontroller.cpp
mmsharing/mmshui/src/musuilivesharingview.cpp
mmsharing/mmshui/src/musuimmcmonitor.cpp
mmsharing/mmshui/src/musuinavimediadecorator.cpp
mmsharing/mmshui/src/musuireceivecontainer.cpp
mmsharing/mmshui/src/musuireceiveview.cpp
mmsharing/mmshui/src/musuiresourcehandler.cpp
mmshplugins/mmshaiwplugin/group/musaiwprovider.mmp
mmshplugins/mmshaiwplugin/inc/musaiwprovider.h
mmshplugins/mmshaiwplugin/src/musaiwprovider.cpp
mmshplugins/mmshsettingsuiplugin/src/mussettingsplugin.cpp
--- a/inc/musindicatorapi.h	Tue May 25 12:38:39 2010 +0300
+++ b/inc/musindicatorapi.h	Wed Jun 09 09:37:52 2010 +0300
@@ -142,8 +142,6 @@
     void PlayToneL();
 
     void StartLiveSharingL();
-    void ToggleIndicatorL();
-    TBool IsSubscriber() const;
     
         
 private: // data
Binary file mmsharing/Conf/multimediasharing.confml has changed
--- a/mmsharing/inc/musmanageripccommon.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/inc/musmanageripccommon.h	Wed Jun 09 09:37:52 2010 +0300
@@ -27,6 +27,7 @@
 _LIT( KMusManagerServerName,"musmanagerserver" );
 _LIT( KMusManagerServerFilename, "musmanagerserver" );
 _LIT( KMusManagerServerSemaphoreName, "musmanagerserverSemaphore" );
+_LIT( KMusManagerServerClosingSemaphoreName, "musmanagerserverClosingSemaphore" );
 
 const TUid KServerUid3 = { KMusManagerServerUid };
 
--- a/mmsharing/mmshavailability/inc/musavacapabilitytimer.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshavailability/inc/musavacapabilitytimer.h	Wed Jun 09 09:37:52 2010 +0300
@@ -45,6 +45,10 @@
 protected: // From CTimer
 
     void RunL();
+    
+protected: // from CActive
+
+    TInt RunError( TInt aError );
 
 private:
 
--- a/mmsharing/mmshavailability/src/musavacapabilitytimer.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshavailability/src/musavacapabilitytimer.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -56,6 +56,18 @@
     {
     iNotify->OnExpiredL( iStatus.Int() );
     }
+
+// -------------------------------------------------------------------------
+//  If RunL() leaves,It should be handled here.
+// -------------------------------------------------------------------------
+//
+TInt CMusAvaCapabilityTimer::RunError( TInt aError )
+    {    
+    // Nothing can be done here.
+    aError = KErrNone;
+
+    return aError;
+    }
     
 
 // ---------------------------------------------------------------------------
--- a/mmsharing/mmshengine/group/musengine.mmp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/group/musengine.mmp	Wed Jun 09 09:37:52 2010 +0300
@@ -46,6 +46,7 @@
 SOURCE          musengclipsession.cpp
 SOURCE          musenguriparser.cpp
 SOURCE          musengmceutils.cpp
+SOURCE			musengorientationhandler.cpp
 
 // SIP API
 SOURCE		    mussipprofilehandler.cpp
--- a/mmsharing/mmshengine/inc/musengclipsession.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/inc/musengclipsession.h	Wed Jun 09 09:37:52 2010 +0300
@@ -250,6 +250,7 @@
         TFileName iTranscodingDestFileName;
         TBool iRewindedToBeginning;
         TBool iTranscodingRequiredDueMissingOptions;
+        TBool iPause;
         
     };
 
--- a/mmsharing/mmshengine/inc/musenglivesession.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/inc/musenglivesession.h	Wed Jun 09 09:37:52 2010 +0300
@@ -28,11 +28,13 @@
 
 // FORWARD DECLARATIONS
 class MMusEngLiveSessionObserver;
+class CMusEngOrientationHandler;
 
 class CMusEngLiveSession : public CMusEngMceOutSession
     {
     MUS_UNITTEST( UT_CMusEngOutSession )
     MUS_UNITTEST( UT_CMusEngLiveSession )
+    MUS_UNITTEST( UT_CMusEngOrientationHandler )
 
     public:
 
@@ -239,6 +241,10 @@
         * Tells whether session is paused or not
         */
         IMPORT_C TBool IsPlayingL();
+        
+        void EnableDisplayL( TBool aEnable );
+        
+        void RefreshOrientationL();
 
 
     protected: // inherited from CMusEngMceOutSession
@@ -409,6 +415,8 @@
         */
         TInt iBigZoomStep;
         
+        CMusEngOrientationHandler* iOrientationHandler;
+        
     };
 
 #endif
--- a/mmsharing/mmshengine/inc/musenglivesessionobserver.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/inc/musenglivesessionobserver.h	Wed Jun 09 09:37:52 2010 +0300
@@ -36,7 +36,12 @@
     	* Indicates that disk has run out of space during recording.
     	*/
     	virtual void DiskFull() = 0;
+    	
+    	/**
+    	 * Orientation refresh ended.
+    	 */
+    	virtual void OrientationRefreshEnded() = 0;
 		
     };
 
-#endif
\ No newline at end of file
+#endif
--- a/mmsharing/mmshengine/inc/musengmcesession.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/inc/musengmcesession.h	Wed Jun 09 09:37:52 2010 +0300
@@ -218,6 +218,8 @@
         */
         IMPORT_C void UnmuteL();
         
+        void RefreshOrientationL();
+        
 
     protected: // CONSTRUCTORS
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/inc/musengorientationhandler.h	Wed Jun 09 09:37:52 2010 +0300
@@ -0,0 +1,83 @@
+/*
+* Copyright (c) 2005-2006 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 MUSENGORIENTATIONHANDLER_H
+#define MUSENGORIENTATIONHANDLER_H
+
+
+// INTERNAL INCLUDE
+#include "musunittesting.h"
+
+// SYSTEM INCLUDE
+#include <e32base.h>
+
+class CMusEngLiveSession;
+class MMusEngLiveSessionObserver;
+
+/**
+*
+* @lib musengine.lib
+*/
+NONSHARABLE_CLASS(CMusEngOrientationHandler) : public CTimer
+                              
+    {
+    MUS_UNITTEST( UT_CMusEngOrientationHandler )
+    
+    public:
+
+		/**
+        * Creates new instance of CMusEngOrientationHandler
+        */
+        static CMusEngOrientationHandler* NewL( CMusEngLiveSession& aSession,
+                                                MMusEngLiveSessionObserver& aSessionObserver );
+
+        /**
+        * Destructor
+        *
+        */
+        ~CMusEngOrientationHandler();
+
+
+    public: // API
+        
+        void RefreshOrientationL();
+        void UpdateL();
+        
+    protected:
+        
+        void RunL();
+        TInt RunError( TInt aError );
+
+    private:
+        
+        CMusEngOrientationHandler( CMusEngLiveSession& aSession,
+                                   MMusEngLiveSessionObserver& aSessionObserver );
+        void ConstructL();
+        
+        void DoDelayedResumeL();
+
+    private: // DATA
+        
+        CMusEngLiveSession& iSession;
+        MMusEngLiveSessionObserver& iSessionObserver;
+        TBool iRefreshBeginStateCamera;
+        TBool iRefreshBeginStateDisplay;
+
+    };
+
+#endif // MUSENGORIENTATIONHANDLER_H
--- a/mmsharing/mmshengine/inc/musengsession.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/inc/musengsession.h	Wed Jun 09 09:37:52 2010 +0300
@@ -161,6 +161,11 @@
         * and if needed also sent to network.
         */
         virtual void UnmuteL() = 0;
+        
+        /**
+         *
+         */
+        virtual void RefreshOrientationL() = 0;
 
 
 	protected: // INTERNAL 
@@ -209,4 +214,4 @@
 
     };
 
-#endif //MUSENGSESSION_H
\ No newline at end of file
+#endif //MUSENGSESSION_H
--- a/mmsharing/mmshengine/inc/musengsessiondurationtimer.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/inc/musengsessiondurationtimer.h	Wed Jun 09 09:37:52 2010 +0300
@@ -87,6 +87,12 @@
         * @since S60 v3.2
         */
         void DoCancel();
+        
+		/**
+   		*
+        * @since S60 v3.2
+        */
+        TInt RunError( TInt aError );
 
 
     private: // DATA
--- a/mmsharing/mmshengine/inc/musengtelephoneutils.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/inc/musengtelephoneutils.h	Wed Jun 09 09:37:52 2010 +0300
@@ -124,6 +124,7 @@
    		*
         */
         void RunL();
+        TInt RunError( TInt aError );
         
 		/**
    		* Cancels outstanding request to phone client
--- a/mmsharing/mmshengine/src/musengclipsession.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/src/musengclipsession.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -362,7 +362,7 @@
                      iFRWDStartTime.Int64() == 0, 
                      User::Leave( KErrNotReady ) );                     
 
-    
+    iPause = EFalse;
     CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iSession );
 
     if ( !file->IsEnabled() )
@@ -395,6 +395,7 @@
                      User::Leave( KErrNotReady ) );  
 
     
+    iPause = ETrue;
     CMceFileSource* file = MusEngMceUtils::GetFileSourceL( *iSession );
     
     if ( file->IsEnabled() )
@@ -1107,7 +1108,8 @@
             TRAP( error, isRewindFromEnd = 
                         ( position.Int64() != 0 && 
                           !filesource->IsEnabled() && 
-                          videoOut->State() == CMceMediaStream::EDisabled ) )
+                          videoOut->State() == CMceMediaStream::EDisabled &&
+                          !iPause ) )
             if(  isRewindFromEnd )
                 {
                 MUS_LOG( "mus: [ENGINE]     Rewind from end of clip" )
--- a/mmsharing/mmshengine/src/musenglivesession.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/src/musenglivesession.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -24,6 +24,7 @@
 #include "musengmceutils.h"
 #include "musenglogger.h"
 #include "mussettings.h"
+#include "musengorientationhandler.h"
 
 // SYSTEM
 #include <mcemanager.h>
@@ -113,6 +114,9 @@
 CMusEngLiveSession::~CMusEngLiveSession()
     {
     MUS_LOG( "mus: [ENGINE]  -> CMusEngLiveSession::~CMusEngLiveSession()" )
+        
+    delete iOrientationHandler;
+    
     MUS_LOG( "mus: [ENGINE]  <- CMusEngLiveSession::~CMusEngLiveSession()" )
     }
 
@@ -569,6 +573,8 @@
         {
         MUS_LOG( "mus: [ENGINE]    Camera already enabled, ignore request" )
         }
+    
+    iOrientationHandler->UpdateL();
         
     MUS_LOG( "mus: [ENGINE]  <- CMusEngLiveSession::PlayL()" )
     }
@@ -595,6 +601,8 @@
         MUS_LOG( "mus: [ENGINE]    Camera already disabled, ignore request" )
         }
 
+    iOrientationHandler->UpdateL();
+    
     MUS_LOG( "mus: [ENGINE]  <- CMusEngLiveSession::PauseL()" )
     }
 
@@ -609,7 +617,29 @@
     
     return ( MusEngMceUtils::GetCameraL( *iSession )->IsEnabled() );
     }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::EnableDisplayL( TBool aEnable )
+{
+    CMusEngMceSession::EnableDisplayL( aEnable );
+    iOrientationHandler->UpdateL();
+}
     
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngLiveSession::RefreshOrientationL()
+    {
+    MUS_LOG( "mus: [ENGINE]  -> CMusEngLiveSession::RefreshOrientationL()" )
+        
+    iOrientationHandler->RefreshOrientationL();
+        
+    MUS_LOG( "mus: [ENGINE]  <- CMusEngLiveSession::RefreshOrientationL()" )
+    }
 
 // -----------------------------------------------------------------------------
 //
@@ -888,6 +918,8 @@
 
     CMusEngMceOutSession::ConstructL( aSipProfileId );
 
+    iOrientationHandler = CMusEngOrientationHandler::NewL( *this, iLiveSessionObserver );
+    
     MUS_LOG( "mus: [ENGINE]  <- CMusEngLiveSession::ConstructL()" )
     }
 
--- a/mmsharing/mmshengine/src/musengmcesession.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/src/musengmcesession.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -372,6 +372,14 @@
     MUS_LOG( "mus: [ENGINE]  <- CMusEngMceSession::Unmute()" )
     }
 
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngMceSession::RefreshOrientationL()
+{
+    MUS_LOG( "mus: [ENGINE]  <-> CMusEngMceSession::RefreshOrientationL()" )
+}
 
 // -----------------------------------------------------------------------------
 //
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/src/musengorientationhandler.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -0,0 +1,173 @@
+/*
+* Copyright (c) 2005-2006 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:
+*
+*/
+
+
+// USER
+#include "musengorientationhandler.h"
+#include "muslogger.h"
+#include "musenglivesession.h"
+#include "musenglivesessionobserver.h"
+
+// SYSTEM
+
+const TInt KMusEngDelayedResume = 300000; // 300 ms
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngOrientationHandler* CMusEngOrientationHandler::NewL( 
+    CMusEngLiveSession& aSession, MMusEngLiveSessionObserver& aSessionObserver )
+    {
+    CMusEngOrientationHandler* self = 
+        new (ELeave) CMusEngOrientationHandler( aSession, aSessionObserver );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self);
+    return self;
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngOrientationHandler::~CMusEngOrientationHandler()
+    {
+    MUS_LOG( "mus: [ENGINE]     CMusEngOrientationHandler::~CMusEngOrientationHandler()" )
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngOrientationHandler::RefreshOrientationL()
+    {
+    MUS_LOG( "mus: [ENGINE]  -> CMusEngOrientationHandler::RefreshOrientationL()" )
+    if ( !IsActive() )
+        {
+        TBool refreshBeginStateCamera = iSession.IsPlayingL();
+        TBool refreshBeginStateDisplay = iSession.IsDisplayEnabledL();
+            
+        if ( refreshBeginStateCamera )
+             {
+             MUS_LOG( "mus: [MUSENG]  -> Playing, pause/stop to restart camera" );
+             iSession.PauseL();
+             } 
+         
+        if ( refreshBeginStateDisplay )
+             {
+             MUS_LOG( "mus: [MUSENG]  -> display is enabled, disable/enable it");
+             iSession.EnableDisplayL(EFalse);
+             }
+        iRefreshBeginStateCamera = refreshBeginStateCamera;
+        iRefreshBeginStateDisplay = refreshBeginStateDisplay;
+        }
+    
+    DoDelayedResumeL();
+    
+    MUS_LOG( "mus: [ENGINE]  <- CMusEngOrientationHandler::RefreshOrientationL()" )
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngOrientationHandler::UpdateL()
+    {
+    MUS_LOG( "mus: [ENGINE]  -> CMusEngOrientationHandler::UpdateL()" )
+    iRefreshBeginStateCamera = iSession.IsPlayingL();
+    iRefreshBeginStateDisplay = iSession.IsDisplayEnabledL();
+    MUS_LOG2( "mus: [ENGINE]  <- CMusEngOrientationHandler::UpdateL(), cam:%d disp:%d", 
+        iRefreshBeginStateCamera, iRefreshBeginStateDisplay )
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngOrientationHandler::RunL()
+    {
+    MUS_LOG( "mus: [ENGINE]  -> CMusEngOrientationHandler::RunL()" )
+
+    TBool refreshBeginStateCamera = iRefreshBeginStateCamera;
+    TBool refreshBeginStateDisplay = iRefreshBeginStateDisplay;
+       
+    iSessionObserver.OrientationRefreshEnded();
+    
+    if ( refreshBeginStateDisplay )
+        {
+        MUS_LOG( "mus: [ENGINE] enable display after delayed orientation" )
+        iSession.EnableDisplayL(ETrue);
+        }
+    
+    if ( refreshBeginStateCamera )
+        {
+        MUS_LOG( "mus: [ENGINE] enable camera after delayed orientation" )
+        iSession.PlayL();
+        }
+    MUS_LOG( "mus: [ENGINE]  <- CMusEngOrientationHandler::RunL()" )
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TInt CMusEngOrientationHandler::RunError( TInt aError )
+    {
+    MUS_LOG( "mus: [ENGINE]  <-> CMusEngOrientationHandler::RunError()" )
+    aError = KErrNone;
+    return aError;
+    }
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngOrientationHandler::DoDelayedResumeL()
+    {
+    if ( IsActive() )
+        {
+        Cancel();
+        }
+    After( KMusEngDelayedResume );
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+CMusEngOrientationHandler::CMusEngOrientationHandler( 
+    CMusEngLiveSession& aSession, MMusEngLiveSessionObserver& aSessionObserver )
+    : CTimer( CActive::EPriorityStandard ), iSession( aSession ), 
+      iSessionObserver( aSessionObserver )
+    {
+    CActiveScheduler::Add(this);
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusEngOrientationHandler::ConstructL()
+    {
+    MUS_LOG( "mus: [ENGINE]  -> CMusEngOrientationHandler::ConstructL()" )
+        
+    CTimer::ConstructL();
+    
+    MUS_LOG( "mus: [ENGINE]  <- CMusEngOrientationHandler::ConstructL()" )
+    }
+
--- a/mmsharing/mmshengine/src/musengsessiondurationtimer.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/src/musengsessiondurationtimer.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -99,6 +99,17 @@
         }
     }
 
+// -------------------------------------------------------------------------
+//  If RunL() leaves,It should be handled here.
+// -------------------------------------------------------------------------
+//
+TInt CMusEngSessionDurationTimer::RunError( TInt aError )
+    {    
+    // Nothing can be done here.
+    aError = KErrNone;
+
+    return aError;
+    }
 
 // -----------------------------------------------------------------------------
 // 
--- a/mmsharing/mmshengine/src/musengtelephoneutils.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/src/musengtelephoneutils.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -100,8 +100,6 @@
     TBool retValue = ( iTelephonyAudioRouting->Output() !=
                        CTelephonyAudioRouting::EWiredAudioAccessory &&
                        iTelephonyAudioRouting->Output() !=
-                       CTelephonyAudioRouting::EBTAudioAccessory &&
-                       iTelephonyAudioRouting->Output() !=
                        CTelephonyAudioRouting::ETTY );
     
     MUS_LOG1( "mus: [ENGINE]  <- CMusEngTelephoneUtils::AudioRoutingCanBeChanged: %d",
@@ -123,7 +121,9 @@
     if ( aEnable )
         {
         if ( iTelephonyAudioRouting->Output() == 
-             CTelephonyAudioRouting::EHandset )
+             CTelephonyAudioRouting::EHandset || 
+             iTelephonyAudioRouting->Output() == 
+             CTelephonyAudioRouting::EBTAudioAccessory )  
             {
             // Disable note shown by audiorouting api as it causes
             // application going to background for a while. Instead, display
@@ -304,6 +304,22 @@
     MUS_LOG( "mus: [ENGINE]  <- CMusEngTelephoneUtils::RunL()" )
     }
 
+// -------------------------------------------------------------------------
+//  If RunL() leaves,It should be handled here.
+// -------------------------------------------------------------------------
+//
+TInt CMusEngTelephoneUtils::RunError( TInt aError )
+    {
+    MUS_LOG1( "mus: [ENGINE]     -> CMusEngTelephoneUtils::\
+              RunError() return #%d", aError )
+    
+    // Nothing can be done here.
+    aError = KErrNone;
+
+    MUS_LOG( "mus: [ENGINE]  <- CMusEngTelephoneUtils::RunError()" )
+    return aError;
+    }
+
 
 // -----------------------------------------------------------------------------
 // 
--- a/mmsharing/mmshengine/tsrc/ut_engine/group/ut_musengine.mmp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/group/ut_musengine.mmp	Wed Jun 09 09:37:52 2010 +0300
@@ -74,6 +74,7 @@
 SOURCE                  ut_musengtelephoneutils.cpp
 SOURCE                  ut_musengsessiondurationtimer.cpp
 SOURCE                  ut_musenguriparser.cpp
+SOURCE                  ut_musengorientationhandler.cpp
 
 // Tested classes
 SOURCEPATH              ../../../src
@@ -88,6 +89,7 @@
 SOURCE                  musengsessiondurationtimer.cpp
 SOURCE                  musengmceutils.cpp
 SOURCE                  musenguriparser.cpp
+SOURCE                  musengorientationhandler.cpp
 
 // Includes
 
--- a/mmsharing/mmshengine/tsrc/ut_engine/inc/musengstubs.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/musengstubs.h	Wed Jun 09 09:37:52 2010 +0300
@@ -115,6 +115,7 @@
         // From MMusEngLiveSessionObserver
         
         void DiskFull();
+        void OrientationRefreshEnded();
         
         // From MMusEngClipSessionObserver    
         
@@ -212,6 +213,7 @@
         
         TInt iVolume;
         TBool iDueUnknowCapas;
+        TBool iOrientationRefreshEndedCalled;
     };
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/tsrc/ut_engine/inc/ut_musengorientationhandler.h	Wed Jun 09 09:37:52 2010 +0300
@@ -0,0 +1,82 @@
+/*
+* 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:
+*
+*/
+
+
+#ifndef __UT_MUSENGORIENTATIONHANDLER_H__
+#define __UT_MUSENGORIENTATIONHANDLER_H__
+
+
+//  EXTERNAL INCLUDES
+#include <digia/eunit/ceunittestsuiteclass.h>
+#include <digia/eunit/eunitmacros.h>
+
+//  FORWARD DECLARATIONS
+class CMusEngLiveSession;
+class CMusEngObserverStub;
+class CMusEngOrientationHandler;
+
+
+//  CLASS DEFINITION
+/**
+ * Tester class for CMusEngLiveSession. 
+ * Tests only implementations that are not tested in ancestor classes.
+ * 
+ */
+NONSHARABLE_CLASS( UT_CMusEngOrientationHandler ): public CEUnitTestSuiteClass
+    {
+    public:     // Constructors and destructors
+
+        /**
+         * Two phase construction
+         */
+        static UT_CMusEngOrientationHandler* NewL();
+        static UT_CMusEngOrientationHandler* NewLC();
+        
+        /**
+         * Destructor
+         */
+        ~UT_CMusEngOrientationHandler();
+
+    private: // Constructors and destructors
+
+        UT_CMusEngOrientationHandler();
+        void ConstructL();
+        
+    private: // Test case setup and teardown
+
+        void SetupL();
+
+        void Teardown();
+
+    private: // Test methdods
+    
+        void UT_NewLL();
+        void UT_RefreshOrientationL();
+
+    private:    // Data
+
+        CMusEngLiveSession* iLiveSession;
+        CMusEngObserverStub* iObserver;
+        CMusEngOrientationHandler* iHandler;
+
+        EUNIT_DECLARE_TEST_TABLE;
+
+    };
+
+#endif      //  __UT_MUSENGORIENTATIONHANDLER_H__
+
+// End of file
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/musengstubs.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/musengstubs.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -270,7 +270,14 @@
     iDiskFullCalled = ETrue;
     }
 
-
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+void CMusEngObserverStub::OrientationRefreshEnded()
+    {
+    iOrientationRefreshEndedCalled = ETrue;    
+    }
 
 
 // ---- FUNCTIONS OF MMusEngClipSessionObserver ----------------------------------
@@ -504,6 +511,7 @@
     iAudioRouteChangeAllowed = ETrue;
     iVolume = 0;
     iDueUnknowCapas = EFalse;
+    iOrientationRefreshEndedCalled = EFalse;
     }
 
 
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengclipsession.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengclipsession.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -910,7 +910,7 @@
     changedStream->iState = CMceMediaStream::EIdle;
     static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged( 
                                                             *changedStream );
-    EUNIT_ASSERT( iObserver->IsReseted() )
+    EUNIT_ASSERT( iObserver->iStreamIdleCalled )
     
     // EStreaming, stream is streaming
     changedStream->iState = CMceMediaStream::EStreaming;
@@ -1064,7 +1064,7 @@
     changedStream->iState = CMceMediaStream::EIdle;
     static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged( 
                             *changedStream, *changedSource );
-    EUNIT_ASSERT( iObserver->IsReseted() )
+    EUNIT_ASSERT( iObserver->iStreamIdleCalled )
     
     // EStreaming, stream is streaming
     changedStream->iState = CMceMediaStream::EStreaming;
@@ -1134,7 +1134,7 @@
     static_cast<MMceStreamObserver*>(iClipSession)->StreamStateChanged( 
                                                             *changedStream,
                                                             *changedSink );
-    EUNIT_ASSERT( iObserver->IsReseted() )
+    EUNIT_ASSERT( iObserver->iStreamIdleCalled );
     
     // EStreaming, stream is streaming
     changedStream->iState = CMceMediaStream::EStreaming;
@@ -1588,6 +1588,12 @@
     // Disapling stream
     videoOut->iState = CMceMediaStream::EDisabled;
     EUNIT_ASSERT( iClipSession->IsRewindFromEnd() )
+    
+    iClipSession->iPause = ETrue;
+    EUNIT_ASSERT( !iClipSession->IsRewindFromEnd() )
+    
+    iClipSession->iPause = EFalse;
+    EUNIT_ASSERT( iClipSession->IsRewindFromEnd() )
        
     // and finaly try with "real" end of clip 
     (static_cast<CMceFileSource*> (videoOut->Source()))->iPosition = 0;
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musenginedllmain.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musenginedllmain.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -27,6 +27,7 @@
 #include "ut_musengtelephoneutils.h"
 #include "ut_musenguriparser.h"
 #include "ut_musengsipprofilehandler.h"
+#include "ut_musengorientationhandler.h"
 
 
 //  SYSTEM INCLUDES
@@ -74,6 +75,9 @@
     
     rootSuite->AddL( UT_TMusEngUriParser::NewLC() );
     CleanupStack::Pop();     
+    
+    rootSuite->AddL( UT_CMusEngOrientationHandler::NewLC() );
+    CleanupStack::Pop();     
 
     CleanupStack::Pop( rootSuite );
 
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musenglivesession.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musenglivesession.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -1036,7 +1036,7 @@
     changedStream->iState = CMceMediaStream::EIdle;
     static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged( 
                                                             *changedStream );
-    EUNIT_ASSERT( iObserver->IsReseted() );
+    EUNIT_ASSERT( iObserver->iStreamIdleCalled );
     
     // EStreaming, stream is streaming
     changedStream->iState = CMceMediaStream::EStreaming;
@@ -1115,7 +1115,7 @@
     changedStream->iState = CMceMediaStream::EIdle;
     static_cast<MMceStreamObserver*>(iLiveSession)->StreamStateChanged( 
                             *changedStream, *changedSource );
-    EUNIT_ASSERT( iObserver->IsReseted() );
+    EUNIT_ASSERT( iObserver->iStreamIdleCalled );
     
     // EStreaming, stream is streaming
     changedStream->iState = CMceMediaStream::EStreaming;
@@ -1239,7 +1239,7 @@
     // EIdle, stream is not receiving RTP
     changedStream->iState = CMceMediaStream::EIdle;
     iLiveSession->StreamStateChanged( *changedStream, *changedSink );
-    EUNIT_ASSERT( iObserver->IsReseted() );
+    EUNIT_ASSERT( iObserver->iStreamIdleCalled );
     
     // EStreaming, stream is streaming
     changedStream->iState = CMceMediaStream::EStreaming;
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengmcesession.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengmcesession.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -1164,7 +1164,7 @@
     // EIdle, stream is not receiving RTP
     changedStream->iState = CMceMediaStream::EIdle;
     iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
-    EUNIT_ASSERT( iObserver->IsReseted() );
+    EUNIT_ASSERT( iObserver->iStreamIdleCalled );
     
     // EStreaming, stream is streaming
     changedStream->iState = CMceMediaStream::EStreaming;
@@ -1241,7 +1241,7 @@
     // EIdle, stream is not receiving RTP
     changedStream->iState = CMceMediaStream::EIdle;
     iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
-    EUNIT_ASSERT( iObserver->IsReseted() );
+    EUNIT_ASSERT( iObserver->iStreamIdleCalled );
     
     // EStreaming, stream is streaming
     changedStream->iState = CMceMediaStream::EStreaming;
@@ -1308,7 +1308,7 @@
     // EIdle, stream is not receiving RTP
     changedStream->iState = CMceMediaStream::EIdle;
     iLiveSession->CMusEngMceSession::StreamStateChanged( *changedStream );
-    EUNIT_ASSERT( iObserver->IsReseted() );
+    EUNIT_ASSERT( iObserver->iStreamIdleCalled );
     
     // EStreaming, stream is streaming
     changedStream->iState = CMceMediaStream::EStreaming;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengorientationhandler.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -0,0 +1,217 @@
+/*
+* 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:
+*
+*/
+
+
+//  INTERNAL INCLUDES
+#include "ut_musengorientationhandler.h"
+#include "musengorientationhandler.h"
+#include "musengstubs.h"
+#include "musengtestdefs.h"
+#include "musenglivesession.h"
+#include "musengmceutils.h"
+#include <mcecamerasource.h>
+#include <mcedisplaysink.h>
+
+//  SYSTEM INCLUDES
+#include <digia/eunit/eunitmacros.h>
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngOrientationHandler* UT_CMusEngOrientationHandler::NewL()
+    {
+    UT_CMusEngOrientationHandler* self = UT_CMusEngOrientationHandler::NewLC();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngOrientationHandler* UT_CMusEngOrientationHandler::NewLC()
+    {
+    UT_CMusEngOrientationHandler* self = new( ELeave ) UT_CMusEngOrientationHandler();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    return self;
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngOrientationHandler::~UT_CMusEngOrientationHandler()
+    {
+    // NOP
+    }
+
+
+// -----------------------------------------------------------------------------
+// Default constructor
+// -----------------------------------------------------------------------------
+//
+UT_CMusEngOrientationHandler::UT_CMusEngOrientationHandler()
+    {
+    // NOP
+    }
+
+
+// -----------------------------------------------------------------------------
+// Second phase construct
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngOrientationHandler::ConstructL()
+    {
+    // The ConstructL from the base class CEUnitTestSuiteClass must be called.
+    // It generates the test case table.
+    CEUnitTestSuiteClass::ConstructL();
+    }
+    
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngOrientationHandler::SetupL()
+    {
+    iObserver = new( ELeave ) CMusEngObserverStub;
+    
+    iLiveSession = CMusEngLiveSession::NewL( TRect(0, 0, 100, 100),
+                                             *iObserver,
+                                             *iObserver,
+                                             *iObserver );   
+
+    iLiveSession->iOperatorVariant = EFalse;
+    
+    iHandler = CMusEngOrientationHandler::NewL( *iLiveSession, *iObserver );
+    }
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngOrientationHandler::Teardown()
+    {
+    delete iHandler;
+    delete iLiveSession;
+    delete iObserver;
+    }
+
+
+
+// TEST CASES
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngOrientationHandler::UT_NewLL()
+    {
+    EUNIT_ASSERT( iHandler );
+    }
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void UT_CMusEngOrientationHandler::UT_RefreshOrientationL()
+    { 
+    ESTABLISH_OUT_SESSION( iLiveSession )
+        
+    // Refresh when both camera and display are enabled
+    CMceCameraSource* camera = 
+        MusEngMceUtils::GetCameraL( *(iLiveSession->iSession) );
+    camera->iIsEnabled = ETrue;
+    CMceDisplaySink* display = 
+        MusEngMceUtils::GetDisplayL( *(iLiveSession->iSession) );
+    display->iIsEnabled = ETrue;
+    EUNIT_ASSERT( !iHandler->IsActive() );
+    iHandler->RefreshOrientationL();
+    EUNIT_ASSERT( iHandler->IsActive() );
+    EUNIT_ASSERT( !camera->iIsEnabled );
+    EUNIT_ASSERT( !display->iIsEnabled );
+    iHandler->Cancel();
+    iHandler->RunL(); // Simulate completion
+    EUNIT_ASSERT( !iHandler->IsActive() );
+    EUNIT_ASSERT( camera->iIsEnabled );
+    EUNIT_ASSERT( display->iIsEnabled );
+       
+    // Refresh when camera is disabled, display disabled
+    camera->iIsEnabled = EFalse;
+    display->iIsEnabled = ETrue;
+    iHandler->RefreshOrientationL();
+    EUNIT_ASSERT( iHandler->IsActive() );
+    EUNIT_ASSERT( !camera->iIsEnabled );
+    EUNIT_ASSERT( !display->iIsEnabled );
+    iHandler->Cancel();
+    iHandler->RunL(); // Simulate completion
+    EUNIT_ASSERT( !iHandler->IsActive() );
+    EUNIT_ASSERT( !camera->iIsEnabled );
+    EUNIT_ASSERT( display->iIsEnabled );
+    
+    // Display and camera gets resumed while delayed orientation handling is ongoing, pausing
+    // display after handling completes should not happen
+    camera->iIsEnabled = ETrue;
+    display->iIsEnabled = EFalse;
+    iHandler->RefreshOrientationL();
+    EUNIT_ASSERT( iHandler->IsActive() );
+    EUNIT_ASSERT( !camera->iIsEnabled );
+    EUNIT_ASSERT( !display->iIsEnabled );
+    display->iIsEnabled = ETrue;
+    camera->iIsEnabled = ETrue;
+    iHandler->UpdateL();
+    iHandler->Cancel();
+    iHandler->RunL(); // Simulate completion
+    EUNIT_ASSERT( !iHandler->IsActive() );
+    EUNIT_ASSERT( camera->iIsEnabled );
+    EUNIT_ASSERT( display->iIsEnabled );     
+    }
+
+
+//  TEST TABLE
+
+EUNIT_BEGIN_TEST_TABLE(
+    UT_CMusEngOrientationHandler,
+    "UT_CMusEngLiveSesssion",
+    "UNIT" )
+
+EUNIT_TEST(
+    "NewL - test ",
+    "CMusEngOrienationHandler",
+    "NewL",
+    "FUNCTIONALITY",
+    SetupL, UT_NewLL, Teardown)
+    
+EUNIT_TEST(
+    "UT_RefreshOrientationL - test ",
+    "CMusEngOrienationHandler",
+    "NewL",
+    "FUNCTIONALITY",
+    SetupL, UT_RefreshOrientationL, Teardown)
+      
+EUNIT_END_TEST_TABLE
+
+//  END OF FILE
+
+
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengreceivesession.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengreceivesession.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -803,7 +803,7 @@
     // Try default behaviors
     videoStream->iState = CMceMediaStream::EIdle;
     iReceiveSession->StreamStateChanged( *videoStream );
-    EUNIT_ASSERT( iObserver->IsReseted() )
+    EUNIT_ASSERT( iObserver->iStreamIdleCalled );
     
     }
 
--- a/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengtelephoneutils.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshengine/tsrc/ut_engine/src/ut_musengtelephoneutils.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -155,7 +155,7 @@
     
     iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
                   CTelephonyAudioRouting::EBTAudioAccessory;
-    EUNIT_ASSERT( !iTelephoneUtils->AudioRoutingCanBeChanged() );
+    EUNIT_ASSERT( iTelephoneUtils->AudioRoutingCanBeChanged() );
     
     iTelephoneUtils->iTelephonyAudioRouting->iCurrentOutput =
                   CTelephonyAudioRouting::ETTY;
--- a/mmsharing/mmshindicator/eabi/musindicatoru.def	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshindicator/eabi/musindicatoru.def	Wed Jun 09 09:37:52 2010 +0300
@@ -5,8 +5,6 @@
 	_ZN16CMusIndicatorApi5NewLCER21MMusIndicatorObserver @ 4 NONAME
 	_ZTI15CMusSoundPlayer @ 5 NONAME
 	_ZTI16CMusIndicatorApi @ 6 NONAME
-	_ZTI16CMusIndicatorDsa @ 7 NONAME
-	_ZTV15CMusSoundPlayer @ 8 NONAME
-	_ZTV16CMusIndicatorApi @ 9 NONAME
-	_ZTV16CMusIndicatorDsa @ 10 NONAME
+	_ZTV15CMusSoundPlayer @ 7 NONAME
+	_ZTV16CMusIndicatorApi @ 8 NONAME
 
--- a/mmsharing/mmshindicator/group/musindicator.mmp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshindicator/group/musindicator.mmp	Wed Jun 09 09:37:52 2010 +0300
@@ -38,7 +38,6 @@
 SOURCEPATH              ../src
 SOURCE                  musindicatorapi.cpp
 SOURCE                  mussoundplayer.cpp
-SOURCE                  musindicatordsa.cpp
 SOURCE                  musresourceutil.cpp
 
 USERINCLUDE             ../inc
--- a/mmsharing/mmshindicator/inc/musindicatordsa.h	Tue May 25 12:38:39 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,186 +0,0 @@
-/*
-* Copyright (c) 2007 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:  Draws availability indication to screen using direct screen
-*                access.
-*
-*/
-
-
-
-#ifndef C_MUSINDICATORDSA_H
-#define C_MUSINDICATORDSA_H
-
-
-#include "musunittesting.h"
-#include <e32base.h>
-#include <w32std.h>
-#include <coecntrl.h>
-
-const TInt KMusIndicatorDelay = 400000;
-const TInt KMusRedrawDelay = 25000;
-
-/**
- *  CMusIndicatorDsa provides multimedia sharing ready indicator "box" 
- *  indcating videosharing availability to user.
- *
- *  @code
- *   // Activates indication
- *  CMusIndicatorDsa* dsa = CMusIndicatorDsa::NewL();
- *
- *  // Deactivates indication
- *  delete dsa;
- *
- *  @endcode
- *
- *  @lib musindicator.lib
- */
-class CMusIndicatorDsa : public CCoeControl
-    {
-public:
-
-    MUS_UNITTEST( UT_CMusIndicatorDsa )
-
-    static CMusIndicatorDsa* NewL();
-
-    /**
-     * Destructor.
-     */
-    ~CMusIndicatorDsa();
-
-    
-public: //from CCoeControl
-    
-    
-    /**
-     * Draws video sharing ready box and text
-     */
-    void Draw( const TRect& aRect ) const;
-    
-    /**
-     * Hanldes resource change i.e layout change
-     * 
-     */
-    void HandleResourceChange( TInt aType);
-    
-private:
-
-    /**
-     * Initializes
-     */
-     void Initialize();
-
-    /**
-     * Loads image.
-     */
-    void LoadImageL();
-
-    /**
-     * Loads resource string.
-     */
-    void LoadResourceStringL();
-
-
-private:
-
-    CMusIndicatorDsa();
-
-    void ConstructL();
-
-    const CFont& Font() const;
-
-    void TryActivateL();
-
-    
-    /**
-    * Callback function to periodic timer.
-    *
-    * @param instanse of this.
-    * @return TInt value indicating if function completed succesfully
-    */
-   static TInt TryActivate( TAny* aThis );
-
-    /**
-     * Callback function to periodic timer.
-     *
-     * @param instanse of this.
-     * @return TInt value indicating if function completed succesfully
-     */
-    static TInt DoHandleResourceChange( TAny* aThis );
-   
-    void StartPeriodicTimer( const TCallBack& aCallBack) const;
-    
-    /**
-     * Stops peridoic timer.
-     */
-    void StopPeriodicTimer();
-    
-    
-private: // data
-
-
-    /**
-     * Periodic timer.
-     * Own.
-     */
-    CPeriodic* iPeriodic;
-
-    /**
-     * Used screen rectangle.
-     */
-    TRect iScreenRect;
-
-    /**
-     * Used client area size
-     */
-    TSize iScreenSize;
-    
-    /**
-     * Calculated position of left-top point of text.
-     */
-    TPoint iTextpos;
-
-    /**
-     * Color of DSA boxes border.
-     */
-    TRgb iBorderColor;
-
-    /**
-     * DSA boxes background color.
-     */
-    TRgb iBorderBgColor;
-
-    /**
-     * Color of used font.
-     */
-    TRgb iFontColor;
-
-    /**
-     * Displayed text.
-     * Own.
-     */
-    HBufC* iText;
-    
-    CFbsBitmap* iIcon;
-    CFbsBitmap* iIconMask;
-    
-    TSize iImageSize;
-    TPoint iImagepos;
-    
-    TCallBack iActivateCallBack;
-    TCallBack iRedrawCallBack;
-    
-    
-    };
-
-#endif // C_MUSINDICATORDSA_H
--- a/mmsharing/mmshindicator/src/musindicatorapi.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshindicator/src/musindicatorapi.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -21,7 +21,6 @@
 #include "musindicatorapi.h"
 #include "musresourcefinderutil.h"
 #include "muslogger.h"
-#include "musindicatordsa.h"
 #include "mussettings.h"
 #include "mussettingskeys.h"
 #include "mussoundplayer.h"
@@ -82,10 +81,9 @@
     Cancel();
     delete iIndicatorWindow;
     delete iSoundPlayer;
-    if ( !IsSubscriber() )
-        {
-        Indicator( EFalse );
-        }
+
+    Indicator( EFalse );
+
     
     iProperty.Close();
 
@@ -94,16 +92,6 @@
 
 
 // -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TBool CMusIndicatorApi::IsSubscriber() const
-    {
-    return !iObserver;
-    }
-
-
-// -----------------------------------------------------------------------------
 // Indicates VS availability to user.
 // In operator specific variant this can include DSA note and an audio tone
 // played with CMdaAudioPlayerUtility.
@@ -112,8 +100,6 @@
 EXPORT_C void CMusIndicatorApi::IndicateAvailabilityL()
     {
     MUS_LOG( "mus: [MUSIND]  -> CMusIndicatorApi::IndicateAvailabilityL" )
-    __ASSERT_ALWAYS( !IsSubscriber(), User::Leave( KErrArgument ) );
-    
     Indicator( ETrue );
 
     if( MultimediaSharingSettings::AuditoryNotificationSettingL() ==
@@ -136,16 +122,10 @@
     {
     MUS_LOG( "mus: [MUSIND]  <- CMusIndicatorApi::RunL" )
     
-    if ( !IsSubscriber() )
-        {
-        MUS_LOG( "mus: [MUSIND ] : publisher" )
-        StartLiveSharingL();
-        }
-    else
-        {
-        MUS_LOG( "mus: [MUSIND ] : subscriber" )
-        ToggleIndicatorL();
-        }
+
+    MUS_LOG( "mus: [MUSIND ] : publisher" )
+    StartLiveSharingL();
+
 
     MUS_LOG( "mus: [MUSIND]  -> CMusIndicatorApi::RunL" )
     }
@@ -172,45 +152,6 @@
 
 
 // -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
-void CMusIndicatorApi::ToggleIndicatorL()
-    {
-    MUS_LOG( "mus: [MUSIND]  -> CMusIndicatorApi::ToggleIndicatorL" )
-    TInt val;
-    
-
-    
-    User::LeaveIfError( RProperty::Get( KPSUidCoreApplicationUIs,
-                                        KCoreAppUIsVideoSharingIndicator,
-                                        val ) );
-    iProperty.Subscribe( iStatus );
-    SetActive();
-    
-    TBool on = ( val == ECoreAppUIsVideoSharingIndicatorOn );
-    
-    if ( on && !iIndicatorWindow 
-         && MultimediaSharingSettings::OperatorVariantSettingL() ==
-         MusSettingsKeys::EOperatorSpecific )
-        {
-        iIndicatorWindow = CMusIndicatorDsa::NewL();
-        }
-    else if ( !on )
-        {
-        delete iIndicatorWindow;
-        iIndicatorWindow = NULL;
-        }
-    else
-        {
-        //NOP
-        }
-    
-    MUS_LOG( "mus: [MUSIND]  <- CMusIndicatorApi::ToggleIndicatorL" )
-    }
-
-
-// -----------------------------------------------------------------------------
 // From CActive.
 // Cancels an outstanding asynchronous request.
 // -----------------------------------------------------------------------------
@@ -219,10 +160,7 @@
     {
     MUS_LOG( "mus: [MUSIND]  <- CMusIndicatorApi::DoCancel" )
     
-    if ( IsSubscriber() )
-        {
-        iProperty.Cancel();
-        }
+
     MUS_LOG( "mus: [MUSIND]  -> CMusIndicatorApi::DoCancel" )
     }
 
@@ -282,21 +220,10 @@
     {
     MUS_LOG( "mus: [MUSIND ]  ->  MusIndicatorApi::ConstructL" )
     
-    if ( IsSubscriber() )
-        {
-        MUS_LOG( "mus: [MUSIND ] :  subscriber (called by aiwprovider)" )
+    
+    MUS_LOG( "mus: [MUSIND ] : publisher (called by manager)" )
+    CActiveScheduler::Add( this );
 
-        User::LeaveIfError( iProperty.Attach( KPSUidCoreApplicationUIs,
-                                              KCoreAppUIsVideoSharingIndicator ) );
-        CActiveScheduler::Add( this );
-        iProperty.Subscribe( iStatus );
-        SetActive();
-        }
-    else
-        {
-        MUS_LOG( "mus: [MUSIND ] : publisher (called by manager)" )
-        CActiveScheduler::Add( this );
-        }
     MUS_LOG( "mus: [MUSIND ]  <-  MusIndicatorApi::ConstructL" )
     }
 
--- a/mmsharing/mmshindicator/src/musindicatordsa.cpp	Tue May 25 12:38:39 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,491 +0,0 @@
-/*
-* Copyright (c) 2007 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:  MusIndicatorApi provides means to show notes and indicate
-*                availability of videosharing to user.
-*
-*/
-
-
-#include "musindicatordsa.h"
-#include "muslogger.h"
-#include "musresourceutil.h"
-#include "musresourcefinderutil.h"
-#include <e32cmn.h>
-#include <e32std.h>
-#include <musindicator.rsg>
-#include <eikenv.h>
-#include <coefontprovider.h>
-#include <AknsDrawUtils.h>
-#include <eikappui.h>
-#include <musindicatoricons.mbg>
-#include <AknUtils.h>
-
-// constants
-// Size and positions
-
-const TInt KMusIndicatorWindowHeight = 50;
-const TInt KMusIndicatorWindowShrink = 2;
-const TInt KMusSpaceBetweenImageAndText = 5;
-
-// appereance
-const TInt KMusIndicatorBorderRoundedCorners = 6;
-const TInt KMusIndicatorBorderSize = 1;
-//const TInt KMusIndicatorFontPenSize = 1;
-
-
-
-
-CMusIndicatorDsa* CMusIndicatorDsa::NewL()
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::NewL" )
-    CMusIndicatorDsa* self = new (ELeave) CMusIndicatorDsa();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::NewL" )
-    return self;
-    }
-
-
-CMusIndicatorDsa::CMusIndicatorDsa()
-    : iActivateCallBack( CMusIndicatorDsa::TryActivate, this ),
-      iRedrawCallBack( CMusIndicatorDsa::DoHandleResourceChange, this )
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::CMusIndicatorDsa" )
-        
-    iBorderColor = KRgbBlack;
-    iBorderBgColor = KRgbWhite;
-    iFontColor = KRgbBlack;
-    
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::CMusIndicatorDsa" )
-    }
-
-
-CMusIndicatorDsa::~CMusIndicatorDsa()
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::~CMusIndicatorDsa" )
-    
-    StopPeriodicTimer();    
-    delete iPeriodic;
-
-    delete iIcon;
-    delete iIconMask;
-    
-    delete iText;
-    
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::~CMusIndicatorDsa" )
-    }
-
-
-const CFont& CMusIndicatorDsa::Font() const
-    {
-    TCoeFont coeFont = TCoeFont::NormalFont();
-    TZoomFactor zoomFactor = AccumulatedZoom();
-    return FindFontProvider().Font(coeFont, zoomFactor);
-    }
-
-//------------------------------------------------------------------------------
-//
-//------------------------------------------------------------------------------
-//
-void CMusIndicatorDsa::ConstructL()
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::ConstructL" )
-
-    iPeriodic = CPeriodic::NewL( CActive::EPriorityStandard );
-    
-    LoadResourceStringL();
-    LoadImageL();
-    CreateWindowL();
-    
-    Initialize();
-    TryActivateL();
-    
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::ConstructL" )
-    }
-
-
-// -----------------------------------------------------------------------------
-// 
-// -----------------------------------------------------------------------------
-//
-void CMusIndicatorDsa::TryActivateL()
-    {
-    MAknsControlContext* cc = 
-        AknsDrawUtils::ControlContext( ControlEnv()->AppUi()->TopFocusedControl() );
-
-    if ( cc )
-        {
-        StopPeriodicTimer();
-        ActivateL();
-        }
-    else
-        {
-        StartPeriodicTimer( iActivateCallBack );
-        }
-    }
-
-
-// -----------------------------------------------------------------------------
-// Called by framework to redraw the screen area.
-// -----------------------------------------------------------------------------
-//
-void CMusIndicatorDsa::Draw( const TRect& aRect ) const
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::Draw" )
-    MUS_LOG2( "mus: [MUSIND] : x=%d,y=%d", aRect.iTl.iX, aRect.iTl.iY )
-    MUS_LOG2( "mus: [MUSIND] : x=%d,y=%d", aRect.iBr.iX, aRect.iBr.iY )
-    
-    CWindowGc& gc = SystemGc();
-    
-    TSize screenSizeNow = ControlEnv()->ScreenDevice()->SizeInPixels();
-    
-    if ( screenSizeNow != iScreenSize )
-        {
-        StartPeriodicTimer( iRedrawCallBack );
-        }
-    
-    MAknsControlContext* cc = 
-        AknsDrawUtils::ControlContext( ControlEnv()->AppUi()->TopFocusedControl() );
-    MUS_LOG1( "mus: [MUSIND] : cc = %d", cc )
-
-    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-    MUS_LOG1( "mus: [MUSIND] : skin = %d", skin )
-
-    TRgb fontColor;
-    AknsUtils::GetCachedColor( skin, fontColor, 
-                               KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 );
-    TRgb borderColor = fontColor;
-    
-    TBool backgroundWithBitmap = 
-                ( skin && !cc ) ? 
-                 EFalse :
-                 AknsDrawUtils::Background( skin, cc,this,gc,aRect,KAknsDrawParamDefault );
-    
-    if( !backgroundWithBitmap )
-        {
-        MUS_LOG( "mus: [MUSIND] : Clearing rect with null brush") 
-        gc.SetBrushStyle( CGraphicsContext::ENullBrush );
-        gc.Clear( aRect );
-        }
-    else
-        {
-        MUS_LOG( "mus: [MUSIND] : rect was cleared with bitmap") 
-        }
-    
-    gc.UseFont( &Font() );
-    
-    // Border initialization                   
-    gc.SetBrushStyle( CGraphicsContext::ENullBrush );
-
-    // Draw border
-    MUS_LOG( "mus: [MUSIND] : Draw border") 
-    gc.SetPenStyle( CGraphicsContext::ESolidPen );
-    gc.SetPenColor( borderColor );
-    gc.SetPenSize(
-        TSize( KMusIndicatorBorderSize, KMusIndicatorBorderSize ) );
-    gc.DrawRoundRect( iScreenRect,
-                        TSize( KMusIndicatorBorderRoundedCorners,
-                               KMusIndicatorBorderRoundedCorners ) );
-    
-    /* 
-    // Draw smaller border with other color
-    MUS_LOG( "mus: [MUSIND] : Draw smaller border with other color") 
-    gc.SetPenColor( iBorderBgColor );
-    TRect smallerRect = iScreenRect;
-    smallerRect.Shrink( KMusIndicatorBorderSize, KMusIndicatorBorderSize );
-    gc.DrawRoundRect( smallerRect,
-                        TSize( KMusIndicatorBorderRoundedCorners,
-                               KMusIndicatorBorderRoundedCorners ) );
-                              
-    // Font outline initialization
-    
-    MUS_LOG( "mus: [MUSIND] : Draw text outlines") 
-    gc.SetPenColor( iBorderBgColor );
-    gc.SetPenSize( TSize( KMusIndicatorFontPenSize, KMusIndicatorFontPenSize ) );
-
-    // Draw text outlines
-    TPoint outlineTextPos = iTextpos;
-    outlineTextPos -= TPoint( 1, 1 );
-    gc.DrawText( *iText, outlineTextPos );
-    */
-   
-    // Font initialization
-    gc.SetPenColor( fontColor );
-
-    // Draw text
-    MUS_LOG( "mus: [MUSIND] : Draw text") 
-    if ( AknLayoutUtils::LayoutMirrored() )
-    	{
-        CGraphicsContext::TDrawTextExtendedParam drawParam;
-        drawParam.iParRightToLeft = ETrue;
-        gc.DrawTextExtended(*iText, iTextpos,drawParam);
-    	}
-    else
-    	{
-        gc.DrawText( *iText, iTextpos );
-    	}
-    
-    gc.BitBltMasked( iImagepos, 
-                       iIcon, 
-                       TRect( 0, 0, iImageSize.iWidth, iImageSize.iHeight ),
-                       iIconMask, 
-                       EFalse );
-
-
-    
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::Draw" )
-    }
-
-
-//------------------------------------------------------------------------------
-// 
-//------------------------------------------------------------------------------
-//
-void CMusIndicatorDsa::HandleResourceChange( TInt aType )
-    {
-    
-    if ( aType == KEikDynamicLayoutVariantSwitch )
-        {
-        Initialize();
-        DrawDeferred();
-        }
-    
-    StopPeriodicTimer();
-    
-    }
-
-
-
-//------------------------------------------------------------------------------
-// Calculates topleft position of drawn text.
-//------------------------------------------------------------------------------
-//
-void CMusIndicatorDsa::Initialize()
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::Initialize" )
-    
-    TRect clientRect = CEikonEnv::Static()->EikAppUi()->ClientRect();
-    MUS_LOG2( "mus: [MUSIND] clientrect : x=%d,y=%d", clientRect.iTl.iX, clientRect.iTl.iY )
-    MUS_LOG2( "mus: [MUSIND] clientrect : x=%d,y=%d", clientRect.iBr.iX, clientRect.iBr.iY )
-    
-    iScreenSize = ControlEnv()->ScreenDevice()->SizeInPixels();
-
-    //test (indicator goes inside options menu area)  
-    //clientRect.iTl.iY = 150;
-    
-    SetPosition( clientRect.iTl );
-    SetSize(
-        TSize( iScreenSize.iWidth, KMusIndicatorWindowHeight ) );
-    
-    iScreenRect = TRect(
-        TPoint( 0, 0 ),
-        TSize( iScreenSize.iWidth, KMusIndicatorWindowHeight ) );
-    iScreenRect.Shrink( KMusIndicatorWindowShrink, KMusIndicatorWindowShrink );
-    
-    
-    TInt imagePlusTextWidth = Font().TextWidthInPixels( *iText ) + 
-            iImageSize.iWidth + KMusSpaceBetweenImageAndText;
-    if ( AknLayoutUtils::LayoutMirrored() )
-         { 
-         // Text position
-         iTextpos.iX = ( iScreenRect.Width() - imagePlusTextWidth )  >> 1;
-
-         iTextpos.iY = ( iScreenRect.Height() >> 1 ) +
-                       ( Font().HeightInPixels() >> 1 ) +
-                         iScreenRect.iTl.iY;
-
-         iImagepos.iX = iTextpos.iX + 
-		                Font().TextWidthInPixels( *iText ) +
-						KMusSpaceBetweenImageAndText;
-         iImagepos.iY = ( iScreenRect.Height() - iImageSize.iHeight ) >> 1;
-         }
-    else
-         {
-    iImagepos.iX = ( iScreenRect.Width() - imagePlusTextWidth )  >> 1;
-    iImagepos.iY = ( iScreenRect.Height() - iImageSize.iHeight ) >> 1;
-    
-    // Text position
-    iTextpos.iX = iImagepos.iX + iImageSize.iWidth + KMusSpaceBetweenImageAndText;
-
-    iTextpos.iY = ( iScreenRect.Height() >> 1 ) +
-                  ( Font().HeightInPixels() >> 1 ) +
-                    iScreenRect.iTl.iY;
-         }
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::Initialize" )
-    }
-
-
-
-//------------------------------------------------------------------------------
-// Loads displayed image.
-//------------------------------------------------------------------------------
-//
-void CMusIndicatorDsa::LoadImageL()
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::LoadImageL" )
-    
-    if ( iIcon || iIconMask )
-        {
-        MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::LoadImageL" )
-        return;
-        }
-    
-    _LIT( KMyBitmapRomFile, "Z:\\resource\\apps\\musindicatoricons.mbm" );
-    _LIT( KMyBitmapRamFile, "C:\\resource\\apps\\musindicatoricons.mbm" );
-
-    TFileName imageFileName;
-    if ( MusResourceFinderUtil::IsExistL( KMyBitmapRomFile ) ) 
-        {
-        imageFileName = KMyBitmapRomFile;
-        }
-    else if ( MusResourceFinderUtil::IsExistL( KMyBitmapRamFile ) ) 
-        {
-        imageFileName = KMyBitmapRamFile;
-        }
-    else
-        {
-        MUS_LOG( "mus: [MUSIND]  Icon File Not Found!" );
-        User::Leave( KErrNotFound );
-        } 
-        
-    iIcon = new ( ELeave ) CFbsBitmap();
-    iIconMask = new ( ELeave ) CFbsBitmap();
-    
-    // Enumerations of mbg file are usable only when vector images
-    // in mif file are used. Those cannot be loaded without UI components.
-    const TInt KMusIndicatorIconIndex = 0;
-    const TInt KMusIndicatorIconMaskIndex = 1;
-    User::LeaveIfError( 
-        iIcon->Load( imageFileName, KMusIndicatorIconIndex ) );
-    User::LeaveIfError( 
-        iIconMask->Load( imageFileName, KMusIndicatorIconMaskIndex ) );
-    
-    iImageSize = iIcon->SizeInPixels();
-    
-    // Crop icon if it is too big
-    if ( iImageSize.iHeight > KMusIndicatorWindowHeight )
-        {
-        TInt newHeight = KMusIndicatorWindowHeight >> 1;
-        TInt newWidth = 
-            TReal( iImageSize.iHeight / iImageSize.iWidth  ) * newHeight;
-        iIcon->Resize( TSize( newHeight, newWidth ) );
-        iIconMask->Resize( TSize( newHeight, newWidth ) );
-        }
-    
-    
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::LoadImageL" )
-    }
-
-
-//------------------------------------------------------------------------------
-//
-//------------------------------------------------------------------------------
-//
-void CMusIndicatorDsa::LoadResourceStringL()
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::LoadResourceStringL" )
-    delete iText;
-    iText = NULL;
-    iText = MusResourceUtil::ReadResourceString16L(
-        R_MUSINDICATOR_NOTE_VSREADY_TXT,
-        KMusIndicatorResource );
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::LoadResourceStringL" )
-    }
-
-//------------------------------------------------------------------------------
-// Periodic timer completion
-//------------------------------------------------------------------------------
-//
-TInt CMusIndicatorDsa::TryActivate( TAny* aThis )
-    {
-    if ( !aThis )
-        {
-        return KErrArgument;
-        }
-
-    CMusIndicatorDsa* handle = static_cast< CMusIndicatorDsa* > ( aThis );
-    
-    TInt error = KErrNone;
-    TRAP( error, handle->TryActivateL() );
-
-    return error;
-    }
-    
-
-//------------------------------------------------------------------------------
-// Periodic timer completion
-//------------------------------------------------------------------------------
-//
-TInt CMusIndicatorDsa::DoHandleResourceChange( TAny* aThis )
-    {
-
-    if ( !aThis )
-        {
-        return KErrArgument;
-        }
-
-    CMusIndicatorDsa* handle = static_cast< CMusIndicatorDsa* > ( aThis );
-
-    handle->HandleResourceChange( KEikDynamicLayoutVariantSwitch );
-    
-    return KErrNone;
-    
-    }
-
-
-
-//------------------------------------------------------------------------------
-//
-//------------------------------------------------------------------------------
-//
-void CMusIndicatorDsa::StartPeriodicTimer( const TCallBack& aCallBack) const
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::StartPeriodicTimer" )
-    
-    if ( iPeriodic->IsActive() )
-        {
-        return;
-        }
-    
-    TTimeIntervalMicroSeconds32 delay = 
-            aCallBack.iFunction == CMusIndicatorDsa::TryActivate ?
-                                  KMusIndicatorDelay : KMusRedrawDelay;
-    
-    iPeriodic->Start( delay, delay, aCallBack );
-    
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::StartPeriodicTimer" )
-    }
-
-
-//------------------------------------------------------------------------------
-//
-//------------------------------------------------------------------------------
-//
-void CMusIndicatorDsa::StopPeriodicTimer()
-    {
-    MUS_LOG( "mus: [MUSIND] -> CMusIndicatorDsa::StopPeriodicTimer" )
-    if( iPeriodic )
-        {
-        iPeriodic->Cancel();
-        }
-    MUS_LOG( "mus: [MUSIND] <- CMusIndicatorDsa::StopPeriodicTimer" )
-    }
-
-    
-
-
-
-// End of file
-
--- a/mmsharing/mmshindicator/tsrc/ut_indicator/group/ut_musindicator.mmp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshindicator/tsrc/ut_indicator/group/ut_musindicator.mmp	Wed Jun 09 09:37:52 2010 +0300
@@ -37,13 +37,11 @@
 SOURCE              dllmain.cpp
 SOURCE              ut_cmusindicatorapi.cpp
 SOURCE              ut_cmussoundplayer.cpp
-SOURCE              ut_cmusindicatordsa.cpp
 
 // tested classes
 SOURCEPATH          ../../../src
 SOURCE              mussoundplayer.cpp
 SOURCE              musindicatorapi.cpp
-SOURCE              musindicatordsa.cpp
 SOURCE              musresourceutil.cpp
 
 USERINCLUDE         ../inc
--- a/mmsharing/mmshindicator/tsrc/ut_indicator/inc/ut_cmusindicatordsa.h	Tue May 25 12:38:39 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,100 +0,0 @@
-/*
-* Copyright (c) 2007 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:  Unit tests for CMusIndicatorApi class.
-*
-*/
-
-
-
-#ifndef UT_CMUSINDICATORDSA_H
-#define UT_CMUSINDICATORDSA_H
-
-
-#include <digia/eunit/ceunittestsuiteclass.h>
-#include <e32def.h>
-
-
-#ifndef NONSHARABLE_CLASS
-    #define NONSHARABLE_CLASS(x) class x
-#endif
-
-
-class CMusIndicatorDsa;
-
-
-/**
- *  Unit test class for CMusIndicatorApi class.
- *  Implements unit tests for CMusIndicatorApi class.
- */
-NONSHARABLE_CLASS( UT_CMusIndicatorDsa ) : public CEUnitTestSuiteClass
-    {
-public:
-
-    static UT_CMusIndicatorDsa* NewL();
-    static UT_CMusIndicatorDsa* NewLC();
-
-    /**
-     * Destructor.
-     */
-    ~UT_CMusIndicatorDsa();
-
-private:
-
-    UT_CMusIndicatorDsa();
-
-    void ConstructL();
-
-    /**
-     * Sets up a new test.
-     */
-    void SetupL();
-
-    /**
-     * Tears down a test.
-     */
-    void Teardown();
-
-    /**
-     * Actual unit test methods.
-     */
-    void UT_CMusIndicatorDsa_NewLL();
-    void UT_CMusIndicatorDsa_DrawL();
-    void UT_CMusIndicatorDsa_LoadImageLL();
-    void UT_CMusIndicatorDsa_LoadResourceStringLL();
-    void UT_CMusIndicatorDsa_InitializeL();
-    void UT_CMusIndicatorDsa_TryActivateL();
-    void UT_CMusIndicatorDsa_StartPeriodicTimerL();
-    void UT_CMusIndicatorDsa_StopPeriodicTimerL();
-    void UT_CMusIndicatorDsa_HandleResourceChangeL();
-    void UT_CMusIndicatorDsa_DoHandleResourceChangeL();
-    
-    
-    /**
-    * Helpers
-    */
-    void FakeVisibilityL();
-
-private: // data
-
-    /**
-     * Tested class.
-     * Own.
-     */
-    CMusIndicatorDsa* iIndicatorDsa;
-
-    EUNIT_DECLARE_TEST_TABLE;
-
-    };
-
-#endif // UT_CMUSINDICATORDSA_H
--- a/mmsharing/mmshindicator/tsrc/ut_indicator/src/dllmain.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshindicator/tsrc/ut_indicator/src/dllmain.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -19,7 +19,6 @@
 
 #include "ut_cmusindicatorapi.h"
 #include "ut_cmussoundplayer.h"
-#include "ut_cmusindicatordsa.h"
 #include <digia/eunit/ceunittestsuite.h>
 
 
@@ -39,9 +38,6 @@
     rootSuite->AddL( UT_CMusSoundPlayer::NewLC() );
     CleanupStack::Pop();
 
-    rootSuite->AddL( UT_CMusIndicatorDsa::NewLC() );
-    CleanupStack::Pop();
-
     CleanupStack::Pop( rootSuite );
 
     return rootSuite;
--- a/mmsharing/mmshindicator/tsrc/ut_indicator/src/ut_cmusindicatorapi.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshindicator/tsrc/ut_indicator/src/ut_cmusindicatorapi.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -153,17 +153,7 @@
     iIndicatorApi->Cancel();
     iIndicatorApi->iStatus = KErrNone;
     iIndicatorApi->RunL();
-    EUNIT_ASSERT( iStartLiveSharingLCalled );    
-    
-    EUNIT_ASSERT( !iIndicatorApi->IsSubscriber() );
-    
-    iIndicatorApi->iObserver = NULL;
-    EUNIT_ASSERT( iIndicatorApi->IsSubscriber() );
-    iIndicatorApi->Indicator( ETrue );
-    
-    iIndicatorApi->Cancel();
-    
-    iIndicatorApi->RunL();
+    EUNIT_ASSERT( iStartLiveSharingLCalled ); 
     
     }
 
--- a/mmsharing/mmshindicator/tsrc/ut_indicator/src/ut_cmusindicatordsa.cpp	Tue May 25 12:38:39 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,501 +0,0 @@
-/*
-* Copyright (c) 2007 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:  Implements unit tests for CMusIndicatorApi class.
-*
-*/
-
-
-
-#include "ut_cmusindicatordsa.h"
-#include "musindicatordsa.h"
-#include "mustesthelp.h"
-#include "e32property.h"
-
-#include <digia/eunit/eunitmacros.h>
-#include <AknGlobalMsgQuery.h>
-#include <AknsDrawUtils.h>
-
-
-// Next row is to disable warning emerging from EUnit code.
-#pragma warn_illtokenpasting off
-
-const TSize KOriginalSize = TSize( 176, 208 );
-const TSize KDifferentSize = TSize( 208, 176 );
-
-static CWindowGc* gc = NULL;
-static TAny* cc = NULL;
-static TTimeIntervalMicroSeconds32 delay = 0;
-static TSize sizeInPixels = KOriginalSize;
-
-
-// ======== stubs ========
-
-
-void CCoeControl::CreateWindowL()
-    {
-    
-    }
-
-void CCoeControl::ActivateL()
-    {
-    
-    }
-
-void CCoeControl::DrawDeferred() const
-    {
-    }
-
-CWindowGc& CCoeControl::SystemGc() const
-    {
-    return *gc;
-    }
-
-MWsClientClass::MWsClientClass()
-    {
-    }
-
-CWindowGc::CWindowGc(CWsScreenDevice* /*aDevice*/ )
-    {
-    
-    }
-
-CWindowGc::~CWindowGc()
-    {
-    
-    }
-
-void CWindowGc::SetBrushStyle( TBrushStyle /*aBrushStyle*/ )
-    {
-    }
-
-void CWindowGc::Clear( const TRect& /*aRect*/ )
-    {
-    }
-    
-void CWindowGc::UseFont( const CFont* /*aFont*/ )
-    {
-    }
-    
-void CWindowGc::SetPenStyle( TPenStyle /*aPenStyle*/ )
-    {
-    }
-
-void CWindowGc::SetPenColor( const TRgb& /*aColor*/ )
-    {
-    }
-
-void CWindowGc::SetPenSize( const TSize& /*aSize*/ )
-    {
-    }
-
-void CWindowGc::DrawRoundRect( const TRect& /*aRect*/,const TSize& /*aEllipse*/ )
-    {
-    }
-
-void CWindowGc::DrawText( const TDesC& /*aBuf*/,const TPoint& /*aPos*/ )
-    {
-    }
-    
-//Cannot stub due it is virtual method. This is not called
-TSize CWsScreenDevice::SizeInPixels() const
-    {
-    return sizeInPixels;
-    }
-
-void CWindowGc::BitBltMasked(const TPoint& /*aPoint*/,const CFbsBitmap* /*aBitmap*/,
-        const TRect& /*aSourceRect*/,const CFbsBitmap* /*aMaskBitmap*/,TBool /*aInvertMask*/)
-    {
-    }
-
-MAknsControlContext* AknsDrawUtils::ControlContext( const MObjectProvider* /*aMop*/ )
-    {
-    return static_cast<MAknsControlContext*>( cc );
-    }
-
-TBool AknsDrawUtils::Background( MAknsSkinInstance* /*aInstance*/,
-            MAknsControlContext* /*aContext*/, const CCoeControl* /*aControl*/,
-            CWindowGc& /*aGc*/, const TRect& /*aRect*/, const TInt /*aDrawParam*/ )
-    {
-    return ETrue;
-    }
-
-
-void CPeriodic::Start(TTimeIntervalMicroSeconds32 aDelay,TTimeIntervalMicroSeconds32 /*anInterval*/,TCallBack /*aCallBack*/)
-    {
-    delay = aDelay;
-    After(aDelay);
-    
-    }
-
-
-
-// ======== MEMBER FUNCTIONS ========
-
-
-UT_CMusIndicatorDsa* UT_CMusIndicatorDsa::NewL()
-    {
-    UT_CMusIndicatorDsa* self = UT_CMusIndicatorDsa::NewLC();
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-
-UT_CMusIndicatorDsa* UT_CMusIndicatorDsa::NewLC()
-    {
-    UT_CMusIndicatorDsa* self = new( ELeave ) UT_CMusIndicatorDsa();
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-
-UT_CMusIndicatorDsa::~UT_CMusIndicatorDsa()
-    {
-    }
-
-
-UT_CMusIndicatorDsa::UT_CMusIndicatorDsa()
-    {
-    delete iIndicatorDsa;
-    iIndicatorDsa = NULL;
-    }
-
-
-// ---------------------------------------------------------------------------
-// The ConstructL from the base class CEUnitTestSuiteClass must be called.
-// It generates the test case table.
-// ---------------------------------------------------------------------------
-//
-void UT_CMusIndicatorDsa::ConstructL()
-    {
-    CEUnitTestSuiteClass::ConstructL();
-    }
-
-
-// ----------------------------------------------------------------------------
-// Prepares a test for execution.
-// ----------------------------------------------------------------------------
-//
-void UT_CMusIndicatorDsa::SetupL()
-    {
-    /* NOTE: EUnit reports leak for any first test due AVKON resource reservation,
-     * which is not released by AVKON at end of test. Resource reservation
-     * happend in contruction of CMusIndicatorDsa
-     */
-    
-    cc = this;
-    iIndicatorDsa = CMusIndicatorDsa::NewL();
-    if ( !gc )
-        {
-        gc = new (ELeave) CWindowGc( NULL );
-        }
-    delay = 0;
-    sizeInPixels = KOriginalSize;
-    
-    }
-
-
-// ----------------------------------------------------------------------------
-// Finalizes a test by releasing used resources.
-// ----------------------------------------------------------------------------
-//
-void UT_CMusIndicatorDsa::Teardown()
-    {
-    delete iIndicatorDsa;
-    iIndicatorDsa = NULL;
-    delete gc;
-    gc = NULL;
-    cc = NULL;
-    delay = 0;
-    sizeInPixels = KOriginalSize;
-    PropertyHelper::Close();
-    
-    }
-
-
-// ======== UNIT TEST METHODS ========
-
-
-// ----------------------------------------------------------------------------
-// Asserts successful instantiation.
-// ----------------------------------------------------------------------------
-//
-
-void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_NewLL()
-    {
-    EUNIT_ASSERT( iIndicatorDsa );
-    }
-
-
-// ----------------------------------------------------------------------------
-// 
-// ----------------------------------------------------------------------------
-//
-void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_DrawL()
-    {
-    EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
-
-    TRect rect;
-    iIndicatorDsa->Draw( rect );
-    EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
-    
-    cc = NULL;
-    iIndicatorDsa->Draw( rect );
-    EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
-    
-    /*size cannot be changed
-    sizeInPixels = KDifferentSize;
-    iIndicatorDsa->Draw( rect );
-    EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() );
-    */
-    
-    }
-
-// ----------------------------------------------------------------------------
-// 
-// ----------------------------------------------------------------------------
-//
-void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_InitializeL()
-    {
-    iIndicatorDsa->Initialize();
-        
-    
-    EUNIT_ASSERT( iIndicatorDsa->iTextpos.iX );
-    EUNIT_ASSERT( iIndicatorDsa->iTextpos.iY );
-    
-    }
-
-
-// ----------------------------------------------------------------------------
-// Asserts that load image is not doing anything if icon is already loaded
-// ----------------------------------------------------------------------------
-//
-void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_LoadImageLL()
-    {
-    CFbsBitmap* icon = iIndicatorDsa->iIcon;
-    CFbsBitmap* iconMask = iIndicatorDsa->iIconMask;
-    EUNIT_ASSERT( icon != NULL );
-    EUNIT_ASSERT( iconMask != NULL );
-    iIndicatorDsa->LoadImageL();
-    
-    EUNIT_ASSERT( icon == iIndicatorDsa->iIcon );
-    EUNIT_ASSERT( iconMask == iIndicatorDsa->iIconMask );
-    }
-
-
-// ----------------------------------------------------------------------------
-// Asserts successful loading of resource string.
-// ----------------------------------------------------------------------------
-//
-void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_LoadResourceStringLL()
-    {
-    iIndicatorDsa->LoadResourceStringL();
-    EUNIT_ASSERT( iIndicatorDsa->iText );
-    EUNIT_ASSERT( iIndicatorDsa->iText->Length() );
-    }
-
-
-
-// ----------------------------------------------------------------------------
-// Asserts that periodic timer is started after method call.
-// ----------------------------------------------------------------------------
-//
-void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_StartPeriodicTimerL()
-    {
-    EUNIT_ASSERT( iIndicatorDsa->iPeriodic );
-    EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
-    EUNIT_ASSERT( delay.Int() == 0 );
-    
-    iIndicatorDsa->StartPeriodicTimer( iIndicatorDsa->iActivateCallBack );
-    EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() );
-    EUNIT_ASSERT( delay.Int() == KMusIndicatorDelay );
-    
-    delay = 0;
-    iIndicatorDsa->StartPeriodicTimer( iIndicatorDsa->iActivateCallBack );
-    EUNIT_ASSERT( delay.Int() == 0 );
-    
-    iIndicatorDsa->iPeriodic->Cancel();
-    EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
-    EUNIT_ASSERT( delay.Int() == 0 );
-    
-    iIndicatorDsa->StartPeriodicTimer( iIndicatorDsa->iRedrawCallBack );
-    EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() );
-    EUNIT_ASSERT( delay.Int() == KMusRedrawDelay );
-    
-    }
-
-
-// ----------------------------------------------------------------------------
-// Asserts that periodic timer is stopped after method call.
-// ----------------------------------------------------------------------------
-//
-void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_StopPeriodicTimerL()
-    {
-    EUNIT_ASSERT( iIndicatorDsa->iPeriodic );
-    EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
-    iIndicatorDsa->StopPeriodicTimer();
-    EUNIT_ASSERT( iIndicatorDsa->iPeriodic );
-    EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
-    
-    iIndicatorDsa->StartPeriodicTimer( iIndicatorDsa->iActivateCallBack );
-    EUNIT_ASSERT( iIndicatorDsa->iPeriodic );
-    EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() );
-    
-    iIndicatorDsa->StopPeriodicTimer();
-    EUNIT_ASSERT( iIndicatorDsa->iPeriodic );
-    EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
-    
-    }
-
-// ----------------------------------------------------------------------------
-// Asserts that periodic timer 
-// ----------------------------------------------------------------------------
-//
-void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_TryActivateL()
-    {
-    EUNIT_ASSERT( iIndicatorDsa->iPeriodic );
-    EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
-
-    EUNIT_ASSERT_EQUALS( iIndicatorDsa->TryActivate( iIndicatorDsa ), KErrNone );
-    EUNIT_ASSERT( iIndicatorDsa->iPeriodic );
-    EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
-
-    cc = NULL;
-
-    // Through async callback
-    EUNIT_ASSERT_EQUALS( iIndicatorDsa->TryActivate( iIndicatorDsa ), KErrNone );
-    EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() );
-    
-    EUNIT_ASSERT_EQUALS( iIndicatorDsa->TryActivate( NULL ), KErrArgument );
-    EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() );
-    
-    }
-
-void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_DoHandleResourceChangeL()
-    {
-    EUNIT_ASSERT( iIndicatorDsa->iPeriodic );
-    EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
-
-    EUNIT_ASSERT_EQUALS( iIndicatorDsa->DoHandleResourceChange( iIndicatorDsa ), KErrNone );
-    EUNIT_ASSERT( iIndicatorDsa->iPeriodic );
-    EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
-
-    EUNIT_ASSERT_EQUALS( iIndicatorDsa->DoHandleResourceChange( NULL ), KErrArgument );
-    EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
-    
-    }
-
-void UT_CMusIndicatorDsa::UT_CMusIndicatorDsa_HandleResourceChangeL()
-    {
-    EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
-    iIndicatorDsa->StartPeriodicTimer( iIndicatorDsa->iRedrawCallBack );
-    EUNIT_ASSERT( iIndicatorDsa->iPeriodic->IsActive() );
-    
-    iIndicatorDsa->iScreenSize = TSize();
-    iIndicatorDsa->HandleResourceChange( KEikDynamicLayoutVariantSwitch );
-    EUNIT_ASSERT( !iIndicatorDsa->iPeriodic->IsActive() );
-    
-    EUNIT_ASSERT( iIndicatorDsa->iScreenSize != TSize() );
-    
-    iIndicatorDsa->iScreenSize = TSize();
-    iIndicatorDsa->HandleResourceChange( 0 );
-    EUNIT_ASSERT( iIndicatorDsa->iScreenSize == TSize() );
-    
-    }
-
-
-
-// ======== EUNIT TEST TABLE ========
-
-
-EUNIT_BEGIN_TEST_TABLE(
-    UT_CMusIndicatorDsa,
-    "UT_CMusIndicatorDsa",
-    "UNIT" )
-
-EUNIT_TEST(
-    "NewL - test",
-    "CMusIndicatorDsa",
-    "NewL",
-    "FUNCTIONALITY",
-    SetupL, UT_CMusIndicatorDsa_NewLL, Teardown )
-
-
-EUNIT_TEST(
-    "Draw - test",
-    "CMusIndicatorDsa",
-    "Draw",
-    "FUNCTIONALITY",
-    SetupL, UT_CMusIndicatorDsa_DrawL, Teardown )
-
-
-EUNIT_TEST(
-    "Initialize - test",
-    "CMusIndicatorDsa",
-    "Initialize",
-    "FUNCTIONALITY",
-    SetupL, UT_CMusIndicatorDsa_InitializeL, Teardown )
-
-EUNIT_TEST(
-    "LoadImageL - test",
-    "CMusIndicatorDsa",
-    "LoadImageL",
-    "FUNCTIONALITY",
-    SetupL, UT_CMusIndicatorDsa_LoadImageLL, Teardown )
-
-EUNIT_TEST(
-    "LoadResourceStringL - test",
-    "CMusIndicatorDsa",
-    "LoadResourceStringL",
-    "FUNCTIONALITY",
-    SetupL, UT_CMusIndicatorDsa_LoadResourceStringLL, Teardown )
-
-
-EUNIT_TEST(
-    "TryActivate - test",
-    "CMusIndicatorDsa",
-    "TryActivate",
-    "FUNCTIONALITY",
-    SetupL, UT_CMusIndicatorDsa_TryActivateL, Teardown )
-
-EUNIT_TEST(
-    "StartPeriodicTimer - test",
-    "CMusIndicatorDsa",
-    "StartPeriodicTimer",
-    "FUNCTIONALITY",
-    SetupL, UT_CMusIndicatorDsa_StartPeriodicTimerL, Teardown )
-
-EUNIT_TEST(
-    "StopPeriodicTimer - test",
-    "CMusIndicatorDsa",
-    "StopPeriodicTimer",
-    "FUNCTIONALITY",
-    SetupL, UT_CMusIndicatorDsa_StopPeriodicTimerL, Teardown )
-
-EUNIT_TEST(
-    "DoHandleResourceChange - test",
-    "CMusIndicatorDsa",
-    "DoHandleResourceChange",
-    "FUNCTIONALITY",
-    SetupL, UT_CMusIndicatorDsa_DoHandleResourceChangeL, Teardown )
-
-EUNIT_TEST(
-    "HandleResourceChange - test",
-    "CMusIndicatorDsa",
-    "HandleResourceChange",
-    "FUNCTIONALITY",
-    SetupL, UT_CMusIndicatorDsa_HandleResourceChangeL, Teardown )
-
-    
-EUNIT_END_TEST_TABLE
--- a/mmsharing/mmshmanagercli/src/musmanagerimpl.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshmanagercli/src/musmanagerimpl.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -402,6 +402,9 @@
     {
     MUS_LOG1( "mus: [MUSCLI]     CMusManagerImplListener::RunError: %d", \
                  aError );
+    // Nothing can be done here.
+    aError = KErrNone;
+    
     return aError;
     }
 
--- a/mmsharing/mmshmanagercli/src/musmanagerserverstarter.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshmanagercli/src/musmanagerserverstarter.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -59,8 +59,15 @@
     TFullName name;
     if (findServer.Next(name) == KErrNone)
         {
-    MUS_LOG( "mus: [MUSCLI]  <- MusManagerServerStarter::Start()" );
-        return ETrue; // Server already running
+        MUS_LOG( "mus: [MUSCLI]  <- MusManagerServerStarter::Start()" );
+    
+        // Server may be running but already doing destruction, report
+        // it as not running in such case.
+        RSemaphore closingSemaphore;
+        TBool closingCurrently( 
+            closingSemaphore.OpenGlobal( KMusManagerServerClosingSemaphoreName ) == KErrNone );
+        closingSemaphore.Close();
+        return !closingCurrently;
         }
     MUS_LOG( "mus: [MUSCLI]  <- MusManagerServerStarter::Start()" );
     return EFalse;
@@ -73,6 +80,17 @@
 TInt MusManagerServerStarter::CreateServerProcess( RSemaphore& aSemaphore )
     {
     TInt err = KErrNone;
+    
+    RSemaphore closingSemaphore;
+    if ( closingSemaphore.OpenGlobal( KMusManagerServerClosingSemaphoreName ) == KErrNone )
+        {
+        MUS_LOG( "mus: [MUSCLI]     Server is currently closing, wait" );
+        // Don't wait forever if server is somehow horribly jammed
+        const TInt KMusServerClosingWaitTimeoutInMicrosecs = 20000000; // 20 secs
+        closingSemaphore.Wait(KMusServerClosingWaitTimeoutInMicrosecs);
+        }
+    closingSemaphore.Close();
+    
     const TUidType serverUid( KNullUid, KNullUid, KServerUid3 );
     RProcess server;
     err = server.Create( KMusManagerServerName, KNullDesC() ,serverUid );
--- a/mmsharing/mmshmanagersrv/inc/musmanagerserverclosetimer.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/inc/musmanagerserverclosetimer.h	Wed Jun 09 09:37:52 2010 +0300
@@ -39,6 +39,7 @@
     
 	void StopActiveSchedulerAfter( TUint aMilliSeconds );
 	void RunL();
+	TInt RunError( TInt aError );
 	void DoCancel();
 
 private:
--- a/mmsharing/mmshmanagersrv/src/musmanagerserverclosetimer.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/src/musmanagerserverclosetimer.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -101,6 +101,18 @@
 	CActiveScheduler::Stop();
     }
 
+// -------------------------------------------------------------------------
+//  If RunL() leaves,It should be handled here.
+// -------------------------------------------------------------------------
+//
+TInt CMusManagerServerCloseTimer::RunError( TInt aError )
+    {
+    // Nothing can be done here.
+    aError = KErrNone;
+
+    return aError;
+    }
+
 // ----------------------------------------------------------------------------
 // CMusManagerServerCloseTimer::DoCancel
 // ----------------------------------------------------------------------------
--- a/mmsharing/mmshmanagersrv/src/musmanagerservermain.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshmanagersrv/src/musmanagerservermain.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -70,9 +70,21 @@
 
 	// Start handling requests
 	CActiveScheduler::Start();
+	
+	// Open semaphore for destruction phase as it may take several seconds.
+	// Client can then interpret that it needs to soon start the server again.
+	// Even if creation of semaphore fails it is better to continue with gracefull shutdown.
+    RSemaphore closingSemaphore;
+    TInt err = closingSemaphore.CreateGlobal( KMusManagerServerClosingSemaphoreName, 0 );
 
     // This will be executed after the active scheduler has been stopped:
     CleanupStack::PopAndDestroy(server); 
+    
+    if ( err == KErrNone )
+        {
+        closingSemaphore.Signal();
+        }
+    closingSemaphore.Close();
 	}
 
 // -----------------------------------------------------------------------------
--- a/mmsharing/mmshui/inc/musuiactivetimer.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/inc/musuiactivetimer.h	Wed Jun 09 09:37:52 2010 +0300
@@ -61,6 +61,8 @@
     void DoCancel();
 
     void RunL();
+    
+    TInt RunError( TInt aError );
 
 private:    // Data
 
--- a/mmsharing/mmshui/inc/musuiactivitymanger.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/inc/musuiactivitymanger.h	Wed Jun 09 09:37:52 2010 +0300
@@ -54,6 +54,8 @@
     void DoCancel();
 
     void RunL();
+    
+    TInt RunError( TInt aError );
 
 
 protected:
--- a/mmsharing/mmshui/inc/musuiappui.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/inc/musuiappui.h	Wed Jun 09 09:37:52 2010 +0300
@@ -125,6 +125,8 @@
     virtual TBool OrientationCanBeChanged() const;
     
     virtual TInt GetUiVolumeValue();
+    
+    virtual CMusUiResourceHandler* ResourceHandler();
 
 private: // from base class CEikAppUi
 
@@ -193,6 +195,8 @@
     TInt iAknNfyServerWgId;
     
     TBool iForeground;
+    
+    CMusUiResourceHandler* iResourceHandler;
 
 	
     };
--- a/mmsharing/mmshui/inc/musuibitmapdecoder.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/inc/musuibitmapdecoder.h	Wed Jun 09 09:37:52 2010 +0300
@@ -66,6 +66,8 @@
     void DoCancel();
 
     void RunL();
+    
+    TInt RunError( TInt aError );
 
 private:    // Data
 
--- a/mmsharing/mmshui/inc/musuiclipsharingcontroller.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/inc/musuiclipsharingcontroller.h	Wed Jun 09 09:37:52 2010 +0300
@@ -172,6 +172,8 @@
 private:    // new functions:
 
     void StreamStreamingL();
+    
+    void StreamIdleL();
 
     void SessionTimeChangedL( const TTimeIntervalSeconds& aSeconds );
     
--- a/mmsharing/mmshui/inc/musuiclipsharingview.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/inc/musuiclipsharingview.h	Wed Jun 09 09:37:52 2010 +0300
@@ -107,7 +107,7 @@
     
 public: // new functions
 
-    void RefreshView( TBool aLayoutChange = EFalse );
+    void RefreshView();
     
     void CancelTranscodingL();
 
--- a/mmsharing/mmshui/inc/musuidefinitions.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/inc/musuidefinitions.h	Wed Jun 09 09:37:52 2010 +0300
@@ -86,8 +86,7 @@
     EMusUiAsyncStartInvitation,
     EMusUiAsyncStartMediaGallery,
     EMusUiAsyncStartTranscoding,
-    EMusUiAsyncHandleExit,
-    EMusUiAsyncRefreshView
+    EMusUiAsyncHandleExit
     };
 
 enum TMusUiNaviMediaDecorator
--- a/mmsharing/mmshui/inc/musuieventcontroller.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/inc/musuieventcontroller.h	Wed Jun 09 09:37:52 2010 +0300
@@ -284,6 +284,11 @@
     /**
     * 
     */
+    virtual TBool IsForeground() const;
+    
+    /**
+    * 
+    */
     virtual void OfferToolbarEventL( TInt aCommand );
     
     /**
--- a/mmsharing/mmshui/inc/musuieventobserver.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/inc/musuieventobserver.h	Wed Jun 09 09:37:52 2010 +0300
@@ -27,6 +27,8 @@
 #include <aknappui.h>
 #include <cntdef.h>
 
+class CMusUiResourceHandler;
+
 class MMusUiEventObserver
 	{
 	
@@ -66,6 +68,8 @@
     virtual TBool OrientationCanBeChanged() const = 0;
     
     virtual TInt GetUiVolumeValue() = 0;
+    
+    virtual CMusUiResourceHandler* ResourceHandler() = 0;
 	};
 
 #endif // MUSUIEVENTOBSERVER_H
--- a/mmsharing/mmshui/inc/musuigeneralview.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/inc/musuigeneralview.h	Wed Jun 09 09:37:52 2010 +0300
@@ -78,7 +78,7 @@
      * to landscape or vice versa.  This is a virtual function that must be 
      * implemented by all concrete MUS UI views.
      */
-    virtual void RefreshView( TBool aLayoutChange = EFalse ) = 0;
+    virtual void RefreshView() = 0;
     
     virtual void HandleToolbarCommandL( TInt aCommand ) = 0;
     
@@ -166,7 +166,9 @@
     */
     virtual void RefreshAudioRoutingToolbarButton();
     
-    virtual void UpdateSessionTime( const TDesC& aSessionTime );                                  
+    virtual void UpdateSessionTime( const TDesC& aSessionTime );  
+        
+    virtual void DismissMenuBar();
                                         
                                         
 public: // from base class CAknView
@@ -252,6 +254,8 @@
         
     TBool iToolbarItemSelected;
     
+    CMusUiBackgroundViewContainer* iBackgroundContainer; // skin background drawer
+    
 private: // data
     
     CAknIncallBubble* iIncallBubble;
@@ -264,8 +268,6 @@
     
     TBool iCurrentExitSetting;
     
-    CMusUiBackgroundViewContainer* iBackgroundContainer; // skin background drawer
-    
     };
 
 // macro for NO_TOOLBAR case
--- a/mmsharing/mmshui/inc/musuilivesharingcontroller.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/inc/musuilivesharingcontroller.h	Wed Jun 09 09:37:52 2010 +0300
@@ -28,6 +28,7 @@
 
 class MMusUiLiveSharingObserver;
 class CMusEngLiveSession;
+class CMusUiActiveTimer;
 
 /**
  *
@@ -84,8 +85,6 @@
     virtual void InviteL( const TDesC& aRecipient );
     
     virtual void HandleSliderValueChangeL( TInt aNewLevel );
-
-    virtual void HandleAsyncEventL( TMusUiAsyncEvent aEventId );
     
 public:	// new functions
     
@@ -141,7 +140,8 @@
 public: // From MMusEngLiveSessionObserver
 
 	void DiskFull();
-
+	
+    void OrientationRefreshEnded();
 	    
 public:	// from MMusEngSessionObserver
 
@@ -160,8 +160,10 @@
 	void SessionTimeChanged( const TTimeIntervalSeconds& aSeconds );
 	
     void InactivityTimeout();
-
-    void AsyncRefreshView();
+    
+    void HandlePauseResumeInToolbar();
+    
+    void UserInitiatedCameraStateChangeL(TBool aEnable);
 
 private:
 
@@ -180,6 +182,8 @@
     TBool iDiskFull;
     
     TBool iSessionEstablished;
+    
+    CMusUiActiveTimer* iPauseResumeGuardTimer;
 	
     };
 
--- a/mmsharing/mmshui/inc/musuilivesharingview.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/inc/musuilivesharingview.h	Wed Jun 09 09:37:52 2010 +0300
@@ -96,13 +96,11 @@
     void ReplaceToolbarCommand( TInt aOldCommand, 
                                 TInt aNewCommand,
                                 TBool aSetNewCommandFocused );
-
-
+    void DoRefreshView();
+    
 public: // new functions
 
-    void RefreshView( TBool aLayoutChange );
-
-    void DoRefreshView();
+    void RefreshView();
 
     void LevelIndicatorDismissed();
     
--- a/mmsharing/mmshui/inc/musuimmcmonitor.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/inc/musuimmcmonitor.h	Wed Jun 09 09:37:52 2010 +0300
@@ -53,6 +53,7 @@
     private: // from CActive
 
         void RunL();
+        TInt RunError( TInt aError );
         void DoCancel();
     
     private:    // New functions.
--- a/mmsharing/mmshui/inc/musuinavimediadecorator.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/inc/musuinavimediadecorator.h	Wed Jun 09 09:37:52 2010 +0300
@@ -128,7 +128,8 @@
                                                 const TAknsItemID& aId,
                                                 TInt aBitmapId,
                                                 TInt aMaskId,
-                                                TParse parse );
+                                                TParse parse,
+                                                TBool aIconHasOwnColor = ETrue);
 
 
 	private: // DATA
--- a/mmsharing/mmshui/inc/musuireceivecontainer.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/inc/musuireceivecontainer.h	Wed Jun 09 09:37:52 2010 +0300
@@ -95,6 +95,8 @@
  
 
     void SetFullScreen( TBool aFullScreen, TRect aRect );
+    
+    void UpdatePointerCapture();
 
 
 private: // from base class CCoeControl
--- a/mmsharing/mmshui/inc/musuireceiveview.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/inc/musuireceiveview.h	Wed Jun 09 09:37:52 2010 +0300
@@ -93,7 +93,7 @@
 
 public: // new functions
 
-    void RefreshView( TBool aLayoutChange );
+    void RefreshView();
     
 
 protected: // from MusUiGeneralView
--- a/mmsharing/mmshui/inc/musuiresourcehandler.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/inc/musuiresourcehandler.h	Wed Jun 09 09:37:52 2010 +0300
@@ -20,6 +20,7 @@
 #include "musuipropertyobserver.h"
 #include "musresourceproperties.h"
 #include "mussettingskeys.h"
+#include "musmanagercommon.h"
 
 #include <e32base.h>
 
@@ -49,6 +50,8 @@
         
         TBool RequestVideoPlayerL( TBool aMandatory = EFalse );
         
+        void CheckInitialOrientationL( MultimediaSharing::TMusUseCase aUsecase );
+        
         
     public:	// From MMusUiPropertyObserver
 
--- a/mmsharing/mmshui/inc/musuisharingobserver.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/inc/musuisharingobserver.h	Wed Jun 09 09:37:52 2010 +0300
@@ -78,6 +78,8 @@
         virtual void RefreshAudioRoutingToolbarButton() = 0;
         
         virtual void UpdateSessionTime( const TDesC& aSessionTime ) = 0;
+        
+        virtual void DismissMenuBar() = 0;
                                                     
     };
 
--- a/mmsharing/mmshui/src/musuiactivequerydialog.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/src/musuiactivequerydialog.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -143,8 +143,10 @@
     {
     MUS_LOG1( "mus: [MUSUI ]     -> CMusUiActiveQueryDialog::RunError [%d]", 
               aError );
+    
+    iObserver.HandleQueryError( aError );
               
-    return iObserver.HandleQueryError( aError );
+    return KErrNone;
     }
 
 
--- a/mmsharing/mmshui/src/musuiactivetimer.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/src/musuiactivetimer.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -116,16 +116,30 @@
 void CMusUiActiveTimer::RunL()
     {
     MUS_LOG( "mus: [MUSUI ]  -> CMusUiActiveTimer::RunL" );
-    if (iStatus == KErrNone)
+    if (iObserver && iStatus == KErrNone)
         {
         iObserver->TimerComplete( this );
         }
     else
         {
-        User::Leave(iStatus.Int());
+        User::LeaveIfError(iStatus.Int());
         }
     MUS_LOG( "mus: [MUSUI ]  <- CMusUiActiveTimer::RunL" );
     }
 
+// -------------------------------------------------------------------------
+//  If RunL() leaves,It should be handled here.
+// -------------------------------------------------------------------------
+//
+TInt CMusUiActiveTimer::RunError( TInt aError )
+    {
+	MUS_LOG( "mus: [MUSUI ]  -> CMusUiActiveTimer::RunError" );
+    // Nothing can be done here.
+    aError = KErrNone;
+
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiActiveTimer::RunError" );
+    return aError;
+    }
+
 
 // end of file
--- a/mmsharing/mmshui/src/musuiactivitymanger.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/src/musuiactivitymanger.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -163,5 +163,19 @@
     MUS_LOG( "mus: [MUSUI ]  <- CMusUiActivityManager::RunL" );
     }
 
+// -------------------------------------------------------------------------
+//  If RunL() leaves,It should be handled here.
+// -------------------------------------------------------------------------
+//
+TInt CMusUiActivityManager::RunError( TInt aError )
+    {
+	MUS_LOG( "mus: [MUSUI ]  -> CMusUiActivityManager::RunError" );
+    // Nothing can be done here.
+    aError = KErrNone;
+
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiActivityManager::RunError" );
+    return aError;
+    }
+
 
 // end of file
--- a/mmsharing/mmshui/src/musuiappui.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/src/musuiappui.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -28,6 +28,7 @@
 #include "mussettings.h"
 #include "mussettingskeys.h"
 #include "musmanagercommon.h"
+#include "musuiresourcehandler.h"
 #include "musui.hrh"
 #include "musuid.hrh"
 #include "muslogger.h" // debug logging
@@ -52,7 +53,11 @@
     {
     MUS_LOG( "mus: [MUSUI ]  -> CMusUiAppUi::ConstructL" );
     BaseConstructL( EAknEnableSkin | EAppOrientationAutomatic | EAknEnableMSK );
-
+    
+    iResourceHandler = CMusUiResourceHandler::NewL( *this );
+    MultimediaSharing::TMusUseCase usecase = MusUiStartController::ReadUseCaseL();
+    iResourceHandler->CheckInitialOrientationL(usecase);
+    
     iForeground = ETrue;
     
     // View for Live Sharing:
@@ -92,7 +97,7 @@
     AknsUtils::SetAvkonSkinEnabledL( ETrue );
 
     // Check use case and set default view
-    switch ( MusUiStartController::ReadUseCaseL() )
+    switch ( usecase )
         {
         case MultimediaSharing::EMusLiveVideo:
             ActivateLocalViewL( liveSharingView->Id() );
@@ -116,7 +121,7 @@
     iOperatorSpecificFunctionality = 
         ( MultimediaSharingSettings::OperatorVariantSettingL() == 
                                                     EOperatorSpecific );
-
+    
     MUS_LOG( "mus: [MUSUI ]  <- CMusUiAppUi::ConstructL" );
     }
 
@@ -128,6 +133,7 @@
 CMusUiAppUi::~CMusUiAppUi()
     {
     MUS_LOG( "mus: [MUSUI ]  -> CMusUiAppUi::~CMusUiAppUi" );
+    delete iResourceHandler;
     delete iConfirmationQuery;
     delete iStatusPaneHandler;
     delete iInterfaceSelector;
@@ -528,7 +534,7 @@
     MUS_LOG( "mus: [MUSUI ]  -> CMusUiAppUi::HandleResourceChangeL" );
     CAknAppUi::HandleResourceChangeL( aResourceChangeType );
 
-    if ( aResourceChangeType == KEikDynamicLayoutVariantSwitch )
+    if ( aResourceChangeType == KEikDynamicLayoutVariantSwitch && iView )
         {
         MUS_LOG( "mus: [MUSUI ]  CMusUiAppUi::HandleResourceChangeL:\
                  aResourceChangeType == KEikDynamicLayoutVariantSwitch" );
@@ -545,7 +551,7 @@
         
         if ( activatedView )
             {
-            activatedView->RefreshView( ETrue );
+            activatedView->RefreshView();
             }
         }
 
@@ -588,8 +594,10 @@
         case EAknSoftkeyExit:
         case EEikCmdExit:
             {
-            SetToolbarVisibility( EFalse );
-            HandleExit();
+            CMusUiGeneralView* activatedView =
+                                    static_cast<CMusUiGeneralView*>( iView );
+            activatedView->HandleCommandL( EAknSoftkeyExit );
+
             break;
             }
         default:
@@ -607,6 +615,14 @@
     return iStatusPaneHandler->GetVolumeControlValue();
     }
 
+// -----------------------------------------------------------------------------
+// CMusUiAppUi::ResourceHandler()
+// -----------------------------------------------------------------------------
+//
+CMusUiResourceHandler* CMusUiAppUi::ResourceHandler()
+    {
+    return iResourceHandler;
+    }
 
 // -----------------------------------------------------------------------------
 // CMusUiAppUi::AppHelpContextL()
--- a/mmsharing/mmshui/src/musuibitmapdecoder.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/src/musuibitmapdecoder.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -148,5 +148,19 @@
     MUS_LOG( "mus: [MUSUI ]  <- CMusUiBitmapDecoder::RunL" );
     }
 
+// -------------------------------------------------------------------------
+//  If RunL() leaves,It should be handled here.
+// -------------------------------------------------------------------------
+//
+TInt CMusUiBitmapDecoder::RunError( TInt aError )
+    {
+	MUS_LOG( "mus: [MUSUI ]  -> CMusUiBitmapDecoder::RunError" );
+    // Nothing can be done here.
+    aError = KErrNone;
+
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiBitmapDecoder::RunError" );
+    return aError;
+    }
+
 
 // end of file
--- a/mmsharing/mmshui/src/musuicallbackservice.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/src/musuicallbackservice.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -142,8 +142,9 @@
     {
     MUS_LOG1( "mus: [MUSUI ]        CMusUiCallbackService::RunError [%d]",
                             aError );
+    iCallbackObserver.HandleAsyncError( aError );
                             
-    return iCallbackObserver.HandleAsyncError( aError );
+    return KErrNone;
     }
 
 
--- a/mmsharing/mmshui/src/musuiclipsharingcontroller.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/src/musuiclipsharingcontroller.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -1025,6 +1025,11 @@
     {
     MUS_LOG( "mus: [MUSUI ]  -> CMusUiClipSharingController::StreamIdle" );
     iClipObserver.InvalidVideoFrame( ETrue );
+    TRAPD( error, StreamIdleL() );
+    if ( error != KErrNone )
+        {
+        iEventObserver.HandleError( error );
+        }
     MUS_LOG( "mus: [MUSUI ]  <- CMusUiClipSharingController::StreamIdle" );
     }
 
@@ -1107,6 +1112,21 @@
     MUS_LOG( "mus: [MUSUI ]  <- CMusUiClipSharingController::StreamStreamingL" );
     }
 
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiClipSharingController::StreamIdleL()
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiClipSharingController::StreamIdleL" );
+    
+    if ( ConnectionEstablished() )
+        {    
+        iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconPause );
+        }
+        
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiClipSharingController::StreamIdleL" );
+    }
 
 // -----------------------------------------------------------------------------
 //
--- a/mmsharing/mmshui/src/musuiclipsharingview.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/src/musuiclipsharingview.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -467,11 +467,15 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMusUiClipSharingView::RefreshView( TBool /*aLayoutChange*/ )
+void CMusUiClipSharingView::RefreshView()
     {
     MUS_LOG( "mus: [MUSUI ]  -> CMusUiClipSharingView::RefreshView" );
     
-
+    if ( iBackgroundContainer )
+        {
+        iBackgroundContainer->SetRect( ClientRect() );
+        }
+    
     if ( iContainer )
         {            
         TInt height = MusAppUi()->ApplicationRect().Height();
--- a/mmsharing/mmshui/src/musuieventcontroller.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/src/musuieventcontroller.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -65,7 +65,6 @@
 CMusUiEventController::~CMusUiEventController()
     {
     MUS_LOG( "mus: [MUSUI ]  -> CMusUiEventController::~CMusUiEventController" );
-    delete iResourceHandler;
     delete iStatusPropertyWatch;    
     delete iContactName;
     delete iTelNumber;
@@ -140,7 +139,8 @@
 
     iMmcMonitor = CMusUiMmcMonitor::NewL( *this );
 
-    iResourceHandler = CMusUiResourceHandler::NewL( iEventObserver );
+    iResourceHandler = iEventObserver.ResourceHandler();
+    __ASSERT_ALWAYS( iResourceHandler, User::Leave( KErrNotFound ) );
     
     //Mic mute status property
     iMicMuteStatusPropertyWatch = CMusUiPropertyWatch::NewL(
@@ -603,6 +603,8 @@
     {
     MUS_LOG( "mus: [MUSUI ]  -> CMusUiEventController::ExitProcedureL" );
     
+    iSharingObserver.DismissMenuBar();
+    
     switch ( iShutdownState )
         {
         case EMusUiShutdownStarted: 
@@ -692,6 +694,11 @@
         aConnectionInitialized );
     
     iConnectionInitialized = aConnectionInitialized;
+    
+    if ( !iForeground && !ExitOccured() )
+        {
+        TRAP_IGNORE( EnableDisplayL(EFalse) )
+        }
     }
     
 // -----------------------------------------------------------------------------
@@ -847,6 +854,14 @@
     MUS_LOG( "mus: [MUSUI ]  <- CMusUiEventController::HandleForegroundEventL" );
     }
 
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+TBool CMusUiEventController::IsForeground() const
+    {
+    return iForeground;
+    }
 
 // -----------------------------------------------------------------------------
 //
--- a/mmsharing/mmshui/src/musuigeneralview.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/src/musuigeneralview.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -470,6 +470,18 @@
 //
 // -----------------------------------------------------------------------------
 //
+void CMusUiGeneralView::DismissMenuBar()
+	{
+	 MUS_LOG( "mus: [MUSUI ]  -> CMusUiGeneralView::DismissMenuBar" );
+	 StopDisplayingMenuBar();
+	 MUS_LOG( "mus: [MUSUI ]  <- CMusUiGeneralView::DismissMenuBar" );
+	}
+
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
 void CMusUiGeneralView::RefreshAudioRoutingToolbarButton()
     {
     MUS_LOG( "mus: [MUSUI ]  -> CMusUiGeneralView::RefreshAudioRoutingToolbarButton" )
@@ -590,7 +602,7 @@
     {
     MUS_LOG1( "mus: [MUSUI ]  -> CMusUiGeneralView::HandleForegroundEventL: %d",
                             aForeground );
-
+    
     SetCurrentFgBgEvent( ( aForeground ? EMusFgEvent : EMusBgEvent ) );
     iCurrentExitSetting = aExit;
         
@@ -598,9 +610,7 @@
         {
         if ( aForeground )
             {
-            MUS_LOG( "mus: [MUSUI ] immediately to fg" );
-            RefreshView();
-            DoForegroundEventL();
+            MUS_LOG( "mus: [MUSUI ] delayed to fg" );
             }
         else
             {
@@ -749,24 +759,18 @@
     {
     MUS_LOG( "mus: [MUSUI ] -> CMusUiGeneralView::CompleteForegroundEventL()" )
     
-    switch ( iCurrentFgBgEvent )
+    if ( iCurrentFgBgEvent == EMusFgEvent )
+        {
+        DoForegroundEventL();
+        }
+    else if ( iCurrentFgBgEvent == EMusBgEvent && EventControllerL().IsForeground() )
         {
-        case EMusFgEvent:
-            {
-            DoForegroundEventL();
-            break;
-            }
-        case EMusBgEvent:
-            {
-            DoBackgroundEventL( iCurrentExitSetting );
-            break;
-            }
-        default:
-            {
-            break;
-            }
+        // Bg handling when already at bg would cause problems in state
+        // restoring phase when coming back to fg. Easiest to deal with that
+        // at this level.
+        DoBackgroundEventL( iCurrentExitSetting );
         }
-    
+
     SetCurrentFgBgEvent( EMusFgBgEventNone );   
     
     MUS_LOG( "mus: [MUSUI ] <- CMusUiGeneralView::CompleteForegroundEventL()" )
@@ -781,13 +785,8 @@
     {
     MUS_LOG( "mus: [MUSUI ] -> CMusUiGeneralView::DoForegroundEventL()" )
     
-    /* if background container exist then draw now. but do not change
-     * the ordinal so that other control preceed in drawing.
-     */
-    if( iBackgroundContainer )
-        {
-        iBackgroundContainer->RefreshView();
-        }
+    RefreshView();
+    
     iSessionEndTimer->Cancel();    
         
     EventControllerL().HandleForegroundEventL( ETrue );
--- a/mmsharing/mmshui/src/musuilivesharingcontroller.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/src/musuilivesharingcontroller.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -31,6 +31,7 @@
 #include "mussettingskeys.h"
 #include "muslogger.h" // debug logging
 #include "musuigeneralview.h"
+#include "musuiactivetimer.h"
 
 #include <musui.rsg>
 #include <avkon.hrh>
@@ -41,8 +42,8 @@
 using namespace NMusResourceApi;
 using namespace MusSettingsKeys;
 
+const TInt KMusUiPauseResumeGuardPeriod = 500000;
 
-const TInt KMusUiIntervalToPlay = 5000000;
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
@@ -74,6 +75,7 @@
     {
     MUS_LOG( "mus: [MUSUI ]  -> CMusUiLiveSharingController::~CMusUiLiveSharingController" );
     delete iSession;
+    delete iPauseResumeGuardTimer;
     MUS_LOG( "mus: [MUSUI ]  <- CMusUiLiveSharingController::~CMusUiLiveSharingController" );
     }
 
@@ -122,6 +124,8 @@
         {
         iSession->SetSupportedVideoCodecListL( *iVideoCodec );
         }
+    
+    iPauseResumeGuardTimer = CMusUiActiveTimer::NewL( NULL );
         
     MUS_LOG( "mus: [MUSUI ]  <- CMusUiLiveSharingController::ConstructL" );
     }
@@ -151,34 +155,15 @@
 void CMusUiLiveSharingController::RefreshCameraOrientationL()
     {
     MUS_LOG( "mus: [MUSUI ]  -> CMusUiLiveSharingController::RefreshCameraOrientationL" );
-    if ( IsPlayingL() )
-         {
-         MUS_LOG( "mus: [MUSUI ]  -> Playing, pause/stop to restart camera" );
-         TTimeIntervalMicroSeconds32 interval( KMusUiIntervalToPlay ); 
-         PauseL();
-         EnableDisplayL(false);
-         EnableDisplayL(true);
-         PlayL();
-         } 
-     else
-         {
-         MUS_LOG( "mus: [MUSUI ]  -> Not Playing, try display to restart camera");
-         if ( IsDisplayEnabledL() )
-             {
-             //Disabling of display will cause disabling of viewfinder and in its 
-             //turn releasing of camera, enabling of display will recreate a camera
-             //with new orientation
-             MUS_LOG( "mus: [MUSUI ]  -> display is enabled, disable/enable it");
-             EnableDisplayL(false);
-             EnableDisplayL(true);
-             }
-         else
-             {
-             MUS_LOG( "mus: [MUSUI ]  -> Not refreshing ");
-             }
-         }
+
+    if ( EngineSession() ){
+        EngineSession()->RefreshOrientationL();
+    }
+    
     MUS_LOG( "mus: [MUSUI ]  <- CMusUiLiveSharingController::RefreshCameraOrientationL" );
     }
+
+// -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 //
@@ -318,18 +303,14 @@
         case EMusuiCmdToolbarPauseLive:
             {
             HandleCommandL( EMusuiCmdViewPause );
-            iSharingObserver.ReplaceToolbarCommand( EMusuiCmdToolbarPauseLive,
-                                                    EMusuiCmdToolbarUnPauseLive,
-                                                    ETrue );
+            HandlePauseResumeInToolbar();
             break;
             }
             
         case EMusuiCmdToolbarUnPauseLive:
             {
             HandleCommandL( EMusuiCmdViewContinue );
-            iSharingObserver.ReplaceToolbarCommand( EMusuiCmdToolbarUnPauseLive,
-                                                    EMusuiCmdToolbarPauseLive,
-                                                    ETrue );
+            HandlePauseResumeInToolbar();
             break;
             }
         case EMusuiCmdToolbarZoom:
@@ -393,13 +374,12 @@
         {
         case EMusuiCmdViewPause:
             {            
-            PauseL();
-            iEventObserver.ShowNaviPaneIconL( EMusUiNaviIconPause );
+            UserInitiatedCameraStateChangeL(EFalse);
             break;
             }
         case EMusuiCmdViewContinue:
             {
-            PlayL();
+            UserInitiatedCameraStateChangeL(ETrue);
             break;
             }
 
@@ -770,7 +750,17 @@
     TRAP_IGNORE( MusUiDialogUtil::ShowGlobalErrorDialogL( R_MUS_VIEW_NOTE_MEMORY_LOW ) ) );
     iDiskFull = ETrue;
     }
-    
+
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiLiveSharingController::OrientationRefreshEnded()  
+    {
+    MUS_LOG( "mus: [MUSUI ]  -> CMusUiLiveSharingController::OrientationRefreshEnded" );
+    iLiveObserver.DoRefreshView();
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiLiveSharingController::OrientationRefreshEnded" );
+    }
     
 // -----------------------------------------------------------------------------
 //
@@ -932,40 +922,6 @@
     MUS_LOG( "mus: [MUSUI ] <- CMusUiLiveSharingController::InactivityTimeout" );
     }
 
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::AsyncRefreshView()
-    {
-    TRAP_IGNORE( iCallbackService->AsyncEventL( EMusUiAsyncRefreshView ) );
-    }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CMusUiLiveSharingController::HandleAsyncEventL( TMusUiAsyncEvent aEventId )
-    {
-    MUS_LOG( "mus: [MUSUI ]  -> CMusUiLiveSharingController::HandleAsyncEventL" );
-    switch ( aEventId )
-        {
-        case EMusUiAsyncRefreshView:
-            {
-            iLiveObserver.DoRefreshView();
-            break;
-            }
-        default:
-            {
-            // Not live sharing specific, let the base class handle
-            CMusUiSendController::HandleAsyncEventL( aEventId );
-            }
-        }
-    MUS_LOG( "mus: [MUSUI ]  <- CMusUiLiveSharingController::HandleAsyncEventL" );
-    
-    }
-
 // -----------------------------------------------------------------------------
 // Determines whether Session established or not
 // -----------------------------------------------------------------------------
@@ -975,5 +931,58 @@
 	return iSessionEstablished;
 	}
 
+// -----------------------------------------------------------------------------
+// 
+// -----------------------------------------------------------------------------
+//
+void CMusUiLiveSharingController::HandlePauseResumeInToolbar()
+    {
+    TBool isPlaying( EFalse );
+    TRAP_IGNORE( isPlaying = IsPlayingL() )
+    if ( isPlaying )
+        {
+        iSharingObserver.ReplaceToolbarCommand( EMusuiCmdToolbarUnPauseLive,
+                                                EMusuiCmdToolbarPauseLive,
+                                                ETrue );
+        }
+    else
+        {
+        iSharingObserver.ReplaceToolbarCommand( EMusuiCmdToolbarPauseLive,
+                                                EMusuiCmdToolbarUnPauseLive,
+                                                ETrue );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// Workaround for problem at lower level (encoder side) which causes crash
+// if several sequential pause/resumes are done too rapidly. Discard state change
+// attempt if it occurs too quickly after previous state change.
+// -----------------------------------------------------------------------------
+//
+void CMusUiLiveSharingController::UserInitiatedCameraStateChangeL( TBool aEnable )
+    {
+    MUS_LOG1( "mus: [MUSUI ]  -> CMusUiLiveSharingController::UserInitiatedCameraStateChangeL, enable:", 
+              aEnable );
+    
+    if ( iPauseResumeGuardTimer->IsActive() ){
+        MUS_LOG( "mus: [MUSUI ]  <- State change ignored as guard timer is running!" );
+        return;
+    }
+    
+    if ( aEnable )
+        {
+        PlayL();
+        }
+    else
+        {
+        PauseL();
+        }
+    
+    iPauseResumeGuardTimer->After( KMusUiPauseResumeGuardPeriod );
+    
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiLiveSharingController::UserInitiatedCameraStateChangeL" );
+    }
+
+
 // End of file
 
--- a/mmsharing/mmshui/src/musuilivesharingview.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/src/musuilivesharingview.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -572,20 +572,12 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMusUiLiveSharingView::RefreshView( TBool aLayoutChange )
+void CMusUiLiveSharingView::RefreshView()
     {
     MUS_LOG( "mus: [MUSUI ]  -> CMusUiLiveSharingView::RefreshView" );
     if ( iController )
         {
-		if ( aLayoutChange && iController->IsSessionEstablished() ) 
-			{
-			iController->AsyncRefreshView();
-			}
-		else
-			{
-			DoRefreshView();
-			} 
-
+        DoRefreshView();
         }
     MUS_LOG( "mus: [MUSUI ]  <- CMusUiLiveSharingView::RefreshView" );
     }
@@ -598,6 +590,12 @@
 void CMusUiLiveSharingView::DoRefreshView()
     {
     MUS_LOG( "mus: [MUSUI ]  -> CMusUiLiveSharingView::DoRefreshView" );
+    
+    if ( iBackgroundContainer )
+        {
+        iBackgroundContainer->SetRect(ClientRect());
+        }
+    
     if ( iContainer )
         {
         TRect containerRect( ClientRect().iBr.iX - KMusUiContainerWidth, 
@@ -626,7 +624,6 @@
     MUS_LOG( "mus: [MUSUI ]  <- CMusUiLiveSharingView::DoRefreshView" );
     } 
 
-
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
--- a/mmsharing/mmshui/src/musuimmcmonitor.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/src/musuimmcmonitor.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -111,6 +111,20 @@
     MUS_LOG( "mus: [MUSUI ]  <- CMusUiMmcMonitor::RunL" );
     }
 
+// -------------------------------------------------------------------------
+//  If RunL() leaves,It should be handled here.
+// -------------------------------------------------------------------------
+//
+TInt CMusUiMmcMonitor::RunError( TInt aError )
+    {
+	MUS_LOG( "mus: [MUSUI ]  -> CMusUiMmcMonitor::RunError" );
+    // Nothing can be done here.
+    aError = KErrNone;
+
+    MUS_LOG( "mus: [MUSUI ]  <- CMusUiMmcMonitor::RunError" );
+    return aError;
+    }
+
 
 // -----------------------------------------------------------------------------
 //
--- a/mmsharing/mmshui/src/musuinavimediadecorator.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/src/musuinavimediadecorator.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -434,43 +434,50 @@
                      item,
                      EMbmMusuiiconsQgn_indi_video_forw,
                      EMbmMusuiiconsQgn_indi_video_forw_mask,
-                     parse );
+                     parse,
+                     EFalse );
 
     ConstructImageL( skin,
                      item,
                      EMbmMusuiiconsQgn_indi_video_pause,
                      EMbmMusuiiconsQgn_indi_video_pause_mask,
-                     parse );
+                     parse,
+                     EFalse );
 
     ConstructImageL( skin,
                      item,
                      EMbmMusuiiconsQgn_indi_video_play,
                      EMbmMusuiiconsQgn_indi_video_play_mask,
-                     parse );
+                     parse,
+                     ETrue );
 
     ConstructImageL( skin,
                      item,
                      EMbmMusuiiconsQgn_indi_video_record,
                      EMbmMusuiiconsQgn_indi_video_record_mask,
-                     parse );
+                     parse,
+                     ETrue );
 
     ConstructImageL( skin,
                      item,
                      EMbmMusuiiconsQgn_indi_video_record_not,
                      EMbmMusuiiconsQgn_indi_video_record_not_mask,
-                     parse );
+                     parse,
+                     ETrue );
 
     ConstructImageL( skin,
                      item,
                      EMbmMusuiiconsQgn_indi_video_rew,
                      EMbmMusuiiconsQgn_indi_video_rew_mask,
-                     parse );
+                     parse,
+                     EFalse );
 
     ConstructImageL( skin,
                      item,
                      EMbmMusuiiconsQgn_indi_video_stop,
                      EMbmMusuiiconsQgn_indi_video_stop_mask,
-                     parse );
+                     parse,
+                     EFalse );
 
     }
 
@@ -482,7 +489,8 @@
                                                 const TAknsItemID& aId,
                                                 TInt aBitmapId,
                                                 TInt aMaskId,
-                                                TParse parse )
+                                                TParse parse,
+                                                TBool aIconHasOwnColor )
 
     {
     MUS_LOG( "mus: [MUSUI ] -> CMusUiNaviMediaDecorator::ConstructImageL()" );
@@ -490,16 +498,30 @@
     CFbsBitmap* bitmap = NULL;
     CFbsBitmap* mask = NULL;
    
-    AknsUtils::CreateColorIconL(aSkin,
+    if (aIconHasOwnColor)
+        {
+   	    AknsUtils::CreateIconL(aSkin,
+                           aId,
+                           bitmap,
+                           mask,
+                           parse.FullName(),
+                           aBitmapId,
+                           aMaskId);
+
+  	    }
+    else
+        {
+        AknsUtils::CreateColorIconL(aSkin,
         		                aId,
         		                KAknsIIDQsnIconColors,
-        		                EAknsCIQsnIconColorsCG13,
+        		                EAknsCIQsnIconColorsCG7,
         		                bitmap,
-    							mask,
-    							parse.FullName(),
-    							aBitmapId,
-    							aMaskId,
-    							KRgbBlack);
+    							          mask,
+    							          parse.FullName(),
+    							          aBitmapId,
+    							          aMaskId,
+    							          KRgbBlack);
+        }
 
     AknIconUtils::SetSize( bitmap, iImageSize );
     AknIconUtils::SetSize( mask, iImageSize );
--- a/mmsharing/mmshui/src/musuireceivecontainer.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/src/musuireceivecontainer.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -315,6 +315,27 @@
                 (MusUiView()))->HandleCommandL( EMusuiCmdToolbarFullScreen );
         }
     }
-
-
+	
+	
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiReceiveContainer::UpdatePointerCapture()
+	{
+	MUS_LOG( "mus: [MUSUI ]  -> CMusUiReceiveContainer::UpdatePointerCapture" );
+	
+	if ( iFullScreen )
+		{
+		// In order to capture pointer events this container must be visible.
+		// Thus we make it as small as possible.
+		SetRect( TRect( 0, 0, 0, 0 ) );
+		MakeVisible( ETrue );
+		SetGloballyCapturing( ETrue );
+		SetPointerCapture( ETrue );    	
+		}
+	
+	MUS_LOG( "mus: [MUSUI ]  <- CMusUiReceiveContainer::UpdatePointerCapture" );
+	}
+	
 // end of file
--- a/mmsharing/mmshui/src/musuireceiveview.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/src/musuireceiveview.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -386,13 +386,19 @@
 //
 // -----------------------------------------------------------------------------
 //
-void CMusUiReceiveView::RefreshView( TBool /*aLayoutChange*/ )
+void CMusUiReceiveView::RefreshView()
     {
     MUS_LOG( "mus: [MUSUI ]  -> CMusUiReceiveView::RefreshView" );
     
+    if ( iBackgroundContainer )
+    	{
+		iBackgroundContainer->SetRect( ClientRect() );
+    	}
+    
     if ( iContainer )
         {
         iContainer->SetRect( ClientRect() );
+        iContainer->UpdatePointerCapture();
         }
     
     TRect videoRect( ClientRect().iTl.iX,
--- a/mmsharing/mmshui/src/musuiresourcehandler.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmsharing/mmshui/src/musuiresourcehandler.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -388,7 +388,7 @@
     MultimediaSharingSettings::ResourceUsability( iCameraUsability ,
     											  iKeypadUsability,
     											  iVideoplayerUsability);
-    
+        
     // Read the value from cenrep and check whether camera and keypad
     // available dynamically.
     MusSettingsKeys::TAvailability camera,keypad;    
@@ -509,6 +509,32 @@
             );
     }
 
+// -----------------------------------------------------------------------------
+//
+// -----------------------------------------------------------------------------
+//
+void CMusUiResourceHandler::CheckInitialOrientationL(MultimediaSharing::TMusUseCase aUsecase )
+    {
+    MUS_LOG( "mus: [MUSUI ] -> CMusUiResourceHandler::CheckInitialOrientationL()" )
+    if ( aUsecase != MultimediaSharing::EMusLiveVideo &&
+         aUsecase != MultimediaSharing::EMusClipVideo &&
+         aUsecase != MultimediaSharing::EMusReceive )
+        {
+        return;   
+        }
+    
+    MusSettingsKeys::TUsability usability = ( aUsecase == MultimediaSharing::EMusLiveVideo ) ?
+        iCameraUsability : iVideoplayerUsability;
+    if ( usability == MusSettingsKeys::EUsabilityPortrait )
+        {
+        iObserver.SwitchOrientationL( CAknAppUiBase::EAppUiOrientationPortrait );
+        }
+    else if ( usability == MusSettingsKeys::EUsabilityLandscape )
+        {
+        iObserver.SwitchOrientationL( CAknAppUiBase::EAppUiOrientationLandscape );
+        }
+    MUS_LOG( "mus: [MUSUI ] <- CMusUiResourceHandler::CheckInitialOrientationL()" )
+    }
 
 
 
--- a/mmshplugins/mmshaiwplugin/group/musaiwprovider.mmp	Tue May 25 12:38:39 2010 +0300
+++ b/mmshplugins/mmshaiwplugin/group/musaiwprovider.mmp	Wed Jun 09 09:37:52 2010 +0300
@@ -52,7 +52,6 @@
 
 // MultimediaSharing libraries
 LIBRARY                 musmanagerclient.lib
-LIBRARY                 musindicator.lib
 
 // SymbianOS/Series60 libraries
 LIBRARY                 aknnotify.lib 
--- a/mmshplugins/mmshaiwplugin/inc/musaiwprovider.h	Tue May 25 12:38:39 2010 +0300
+++ b/mmshplugins/mmshaiwplugin/inc/musaiwprovider.h	Wed Jun 09 09:37:52 2010 +0300
@@ -166,8 +166,6 @@
     
     /** To Differentiate Error and Warning Notes */
 	TBool iIsWarning ;
-	
-	CMusIndicatorApi* iIndicator;
     };
 
 
--- a/mmshplugins/mmshaiwplugin/src/musaiwprovider.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmshplugins/mmshaiwplugin/src/musaiwprovider.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -27,7 +27,6 @@
 #include "musresourcefinderutil.h"
 #include "mussettings.h"
 #include "mussesseioninformationapi.h"
-#include "musindicatorapi.h"
 
 #include <musresourceproperties.h>
 
@@ -78,9 +77,8 @@
     {
     MUS_LOG( "mus: [AIWPRO]  -> CMusAiwProvider::~CMusAiwProvider" )
     delete iResourceFileName ;
-    iResourceFileName = NULL ;    
-    delete iIndicator;
-    iIndicator = NULL ;    
+    iResourceFileName = NULL ;  
+
     MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::~CMusAiwProvider" )
     }
 
@@ -211,12 +209,7 @@
 void CMusAiwProvider::DoInitialiseL()
     {
     MUS_LOG( "mus: [AIWPRO]  -> CMusAiwProvider::DoInitialiseL")
-    
-    if ( !iIndicator )
-        {
-        MUS_LOG( "mus: [AIWPRO]  :  creating indicator")
-        iIndicator = CMusIndicatorApi::NewL();
-        }
+
     MUS_LOG( "mus: [AIWPRO]  <- CMusAiwProvider::DoInitialiseL")
     }
 
--- a/mmshplugins/mmshsettingsuiplugin/src/mussettingsplugin.cpp	Tue May 25 12:38:39 2010 +0300
+++ b/mmshplugins/mmshsettingsuiplugin/src/mussettingsplugin.cpp	Wed Jun 09 09:37:52 2010 +0300
@@ -12,7 +12,7 @@
 * Contributors:
 *
 * Description:  MUSSettingsPlugin implementation.
-*  Version     : %version: 36 % << Don't touch! Updated by Synergy at check-out.
+*  Version     : %version: be1sipx1#38 % << Don't touch! Updated by Synergy at check-out.
 *
 */
 
@@ -614,9 +614,16 @@
                             TRAPD( error, iHandler->DisableProfileL() );
                             MUS_LOG1( "[MUSSET]   VS is off (err=%d)", error )
                             //activation disabled = true
-                            //to remove warning :)
-                            enabled = error != KErrNone ? ETrue : ETrue;
                             iModel->SetActivationItem( enabled );
+                            
+                            if ( error == KErrNone )
+                            	{
+								MUS_LOG( "[MUSSET]    Activation setting set off" )
+								//MusSettingsKeys::ENever = 2 can not be used anymore
+								//EActiveInHomeNetworks = 1 is used instead -> off
+								MultimediaSharingSettings::SetActivationSettingL(
+												MusSettingsKeys::EActiveInHomeNetworks );
+								}
                             }
                         else//currently disabled => enable
                             {
@@ -626,7 +633,14 @@
                             enabled = error != KErrNone;
                             //activation disabled = false/true(if failed)
                             iModel->SetActivationItem( enabled );
-                            }
+
+                            if ( error == KErrNone )
+                            	{
+								MUS_LOG( "[MUSSET]    Activation setting set on" )
+								MultimediaSharingSettings::SetActivationSettingL(
+													MusSettingsKeys::EAlwaysActive );
+								}                            
+                            }             
                         }
                     }
                 }