Revision: 201003 RCL_3 PDK_3.0.h
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Fri, 19 Feb 2010 22:44:34 +0200
branchRCL_3
changeset 6 fc8c25e5a2e8
parent 2 7b872347d83b
child 8 7117cbf1600a
Revision: 201003 Kit: 201007
callcontinuity/rom/vcc.iby
callcontinuity/vcc/inc/cvccdirector.h
callcontinuity/vcc/src/cvccdirector.cpp
commsconfig/cscapplicationui/group/cscappui.mmp
commsconfig/cscapplicationui/inc/cscserviceview.h
commsconfig/cscapplicationui/src/cscappui.cpp
commsconfig/cscapplicationui/src/cscservicecontainer.cpp
commsconfig/cscapplicationui/src/cscserviceview.cpp
commsconfig/cscengine/inc/cscengtimer.h
commsconfig/cscengine/src/cscengtimer.cpp
sipvoipprovider/src/svpemergencysession.cpp
sipvoipprovider/src/svpsessionbase.cpp
sipvoipprovider/svphold/src/svpholdconnectedstate.cpp
voipplugins/voipadapters/cpvoipadapter/src/CWPVoIPItem.cpp
--- a/callcontinuity/rom/vcc.iby	Tue Feb 02 00:05:57 2010 +0200
+++ b/callcontinuity/rom/vcc.iby	Fri Feb 19 22:44:34 2010 +0200
@@ -27,10 +27,10 @@
 data=ZSYSTEM\install\vcc_stub.sis 			System\Install\vcc_stub.sis
 
 // wpvccprovisioning
-ECOM_PLUGIN_UDEB(wpvccadapter.dll,wpvccadapter.rsc)
+ECOM_PLUGIN(wpvccadapter.dll,wpvccadapter.rsc)
 
 // nsmldmvccadapter
-ECOM_PLUGIN_UDEB(nsmldmvccadapter.dll,nsmldmvccadapter.rsc)
+ECOM_PLUGIN(nsmldmvccadapter.dll,nsmldmvccadapter.rsc)
 
 // vcchotrigger
 file=ABI_DIR\BUILD_DIR\vcchotrigger.dll        		SHARED_LIB_DIR\vcchotrigger.dll
--- a/callcontinuity/vcc/inc/cvccdirector.h	Tue Feb 02 00:05:57 2010 +0200
+++ b/callcontinuity/vcc/inc/cvccdirector.h	Fri Feb 19 22:44:34 2010 +0200
@@ -463,13 +463,7 @@
      */
     void CreateConferenceL( MCCPConferenceCall& aConferenceCall );
     
-    /*
-     * Check if Voip was enabled/disabled and load/destroy it
-     * @since S60 3.2
-     * @param aConferenceCall Created conference
-     */
-    void CheckVoipEnabledL( TServiceId aServiceId );
-    
+   
     
 private: // data
 
@@ -551,8 +545,7 @@
      */
     CVccDtmfProvider* iDtmfProvider;
     
-    TBool iSvpLoaded;
-    
+     
 	friend class T_CVccDirector;
     friend class T_CVccDTMFProvider;
 	};
--- a/callcontinuity/vcc/src/cvccdirector.cpp	Tue Feb 02 00:05:57 2010 +0200
+++ b/callcontinuity/vcc/src/cvccdirector.cpp	Fri Feb 19 22:44:34 2010 +0200
@@ -62,7 +62,6 @@
     {
     RUBY_DEBUG_BLOCKL( "CVccDirector::ConstructL" );
 
-    iSvpLoaded = EFalse;
     FillCallProviderArrayL();
     
     // Create the HO-trigger and connect to the wlan network
@@ -143,7 +142,7 @@
     //creating cs and sipvoipproviders
     
     //List implementations
-    //Only load cs plugin in the boot. SVP will be loaded when needed.
+
     RImplInfoPtrArray implementations;
     TCleanupItem arrayCleanup( PointerArrayCleanup, &implementations );
     CleanupStack::PushL( arrayCleanup );
@@ -154,7 +153,7 @@
         {
         RUBY_DEBUG1( "- for loop counter value: %d", i );
         CImplementationInformation *info = implementations[i];
-        if ( info->ImplementationUid().iUid == KCSCallProviderPlugId )
+        if ( IsVccOwnedPlugin ( info->ImplementationUid().iUid ) )
             {
             CConvergedCallProvider* provider =
                 CConvergedCallProvider::NewL( info->ImplementationUid() );
@@ -167,8 +166,6 @@
         }
     
     CleanupStack::PopAndDestroy();//implementations
-  
-    TRAP_IGNORE( CheckVoipEnabledL(  VccSettingsReader::VoIPServiceIdL() ) );
 	}
 
 // ---------------------------------------------------------------------------
@@ -674,10 +671,9 @@
 // Only VCC service changes are notified
 // -----------------------------------------------------------------------------
 //
-void CVccDirector::HandleNotifyChange( TServiceId aServiceId )
+void CVccDirector::HandleNotifyChange( TServiceId /*aServiceId*/ )
     {
     RUBY_DEBUG_BLOCK( "CVccDirector::HandleNotifyChange" );
-    CheckVoipEnabledL( aServiceId );
     
     if( !IsPluginInitialized())
     	RetryInitialization();
@@ -979,90 +975,3 @@
     iConference = CVccConferenceCall::NewL( aConferenceCall, iPerfArray );
     aConferenceCall.AddObserverL( *iConference );
     }
-
-// -----------------------------------------------------------------------------
-// CVccDirector::CheckVoipEnabledL
-// -----------------------------------------------------------------------------
-//
-void CVccDirector::CheckVoipEnabledL( TServiceId aServiceId )
-    {
-    RUBY_DEBUG_BLOCK( "CVccDirector::CheckVoipEnabledL" );
-    
-    TInt vccService = VccSettingsReader::VccServiceIdL();
-    TInt voipService = 0;
-    if( vccService )
-        {
-        voipService = VccSettingsReader::VoIPServiceIdL();
-        }
-    if( voipService == aServiceId )
-        {
-        RUBY_DEBUG0( "CVccDirector::HandleNotifyChange -- VoIP Service" );
-        CSPProperty* property = CSPProperty::NewLC();
-        CSPSettings* settings = CSPSettings::NewLC();
-        settings->FindPropertyL( aServiceId,
-                    ESubPropertyVoIPEnabled, *property );
-            
-        TOnOff enabled( EOONotSet );
-        property->GetValue( enabled );
-            
-        CleanupStack::PopAndDestroy( settings );
-        CleanupStack::PopAndDestroy( property );
-        //if voip is enabled load also SVP and put it into providers array
-        if( enabled && !iSvpLoaded )
-            {
-            RUBY_DEBUG0( "CVccDirector::HandleNotifyChange -- VoIP enabled, load SVP" );
-            RImplInfoPtrArray implementations;
-            TCleanupItem arrayCleanup( PointerArrayCleanup, &implementations );
-            CleanupStack::PushL( arrayCleanup );
-
-            CConvergedCallProvider::ListImplementationsL( implementations );
-                 
-            for( TInt i = 0; i < implementations.Count(); i++ )
-                {
-                RUBY_DEBUG1( "- for loop counter value: %d", i );
-                CImplementationInformation *info = implementations[i];
-                if( info->ImplementationUid().iUid == KSipVoipCallProviderPlugId )
-                    {
-                    CConvergedCallProvider* provider =
-                         CConvergedCallProvider::NewL( info->ImplementationUid() );
-                    CleanupStack::PushL( provider );
-                           
-                    User::LeaveIfError( iProviders.Append( provider ) );
-                            
-                    CleanupStack::Pop( provider );  //provider
-                        
-                    if( iDtmfProvider )
-                        {
-                        provider->DTMFProviderL( *iDtmfProvider );
-                        }
-                    }
-                }
-                iSvpLoaded = ETrue;
-                CleanupStack::PopAndDestroy();  //implementations
-            }
-            //if voip is disabled, destroy SVP and remove it from providers array.
-        else if( !enabled )
-            {
-            RUBY_DEBUG0( "CVccDirector::HandleNotifyChange -- VoIP disabled, destroy SVP" );
-                            
-            for( TInt i = 0; i < iProviders.Count(); i++ )
-                {
-                if( iProviders[ i ]->Uid().iUid == KSipVoipCallProviderPlugId )
-                    {
-                    delete iProviders[ i ];
-                    iProviders.Remove( i );
-                    iProviders.Compress();
-                    for( TInt a = 0; a < iInitialisedPlugins.Count(); a++ )
-                        {
-                        if( iInitialisedPlugins[ a ] == KSipVoipCallProviderPlugId )
-                            {
-                            iInitialisedPlugins.Remove( a );
-                            iInitialisedPlugins.Compress();
-                            }
-                        }
-                    iSvpLoaded = EFalse;
-                    }
-                }
-            }
-        }
-    }
--- a/commsconfig/cscapplicationui/group/cscappui.mmp	Tue Feb 02 00:05:57 2010 +0200
+++ b/commsconfig/cscapplicationui/group/cscappui.mmp	Fri Feb 19 22:44:34 2010 +0200
@@ -25,7 +25,7 @@
 TARGETTYPE      exe
 UID             0x100039CE 0x10275458
 
-CAPABILITY      CAP_APPLICATION TrustedUI NetworkControl
+CAPABILITY      CAP_APPLICATION TrustedUI NetworkControl AllFiles
 VENDORID        VID_DEFAULT
 
 SOURCEPATH      ../src
--- a/commsconfig/cscapplicationui/inc/cscserviceview.h	Tue Feb 02 00:05:57 2010 +0200
+++ b/commsconfig/cscapplicationui/inc/cscserviceview.h	Fri Feb 19 22:44:34 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-2010 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"
@@ -21,6 +21,7 @@
 
 #include <aknview.h>
 #include "mcscservicecontainerobserver.h"
+#include "mcscengtimerobserver.h"
 
 class CCSCAppUi;
 class CCSCDialog;
@@ -43,7 +44,8 @@
  */
 NONSHARABLE_CLASS( CCSCServiceView ) : public CAknView,
                                        public MEikListBoxObserver,
-                                       public MCSCServiceContainerObserver
+                                       public MCSCServiceContainerObserver,
+                                       public MCSCEngTimerObserver
     {
     public:
 
@@ -98,17 +100,8 @@
          * @since S60 v5.1
          */
         void InitializeWithStartupParametersL();
-                            
-        /**
-         * Updates container data because of layout change.
-         *
-         * @since S60 v3.2
-         * @param aType for layout change type
-         */ 
-        void UpdateLayout( TInt aType );
         
-         
-       
+        
         // from base class CAknView
         
         /**
@@ -214,7 +207,8 @@
          * @since S60 v3.2
          */         
         void UpdateCbaL();
-                
+        
+		
     protected:
               
         // from base class MEIkListBoxObserver
@@ -230,8 +224,7 @@
         void HandleListBoxEventL( CEikListBox* aListBox, 
                                   TListBoxEvent aEventType );    
                                   
-        
-        
+		
     private:
         
         
@@ -300,6 +293,16 @@
         void DoDeactivate();
         
         
+        // from base class MCSCEngTimerObserver
+        
+        /**
+         * From MCSCEngTimerObserver.
+         *
+         * @since S60 v5.0
+         */
+        void TimerExpired();
+         
+		
     private: // data
                            
         /**
@@ -359,6 +362,27 @@
          */
         RArray<TUid> iOfferedPluginUids;
         
+        /**
+         * Pointer to timer
+         * Own.
+         */
+        CCSCEngTimer* iEngTimer;
+        
+        /**
+         * Plugin info.
+         */
+        TServicePluginInfo iPluginInfo;
+        
+        /**
+         * Next plugin index.
+         */
+        TUint iNextPluginIndex;
+		
+        /**
+         * Uid.
+         */
+        TUid iUid;
+        
 #ifdef _DEBUG
     friend class UT_CSC;
 #endif
--- a/commsconfig/cscapplicationui/src/cscappui.cpp	Tue Feb 02 00:05:57 2010 +0200
+++ b/commsconfig/cscapplicationui/src/cscappui.cpp	Fri Feb 19 22:44:34 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-2010 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"
@@ -211,17 +211,9 @@
 //
 void CCSCAppUi::HandleResourceChangeL( TInt aType )
     {
-    CSCDEBUG( "CCSCAppUi::HandleResourceChangeL - begin" );
-    
-    if ( aType == KAknsMessageSkinChange || 
-         aType == KEikDynamicLayoutVariantSwitch )
-        {
-        iServiceView->UpdateLayout( aType );
-        }
+    CSCDEBUG( "CCSCAppUi::HandleResourceChangeL" );
 
     CAknViewAppUi::HandleResourceChangeL( aType );
-    
-    CSCDEBUG( "CCSCAppUi::HandleResourceChangeL - end" );
     }
 
 
--- a/commsconfig/cscapplicationui/src/cscservicecontainer.cpp	Tue Feb 02 00:05:57 2010 +0200
+++ b/commsconfig/cscapplicationui/src/cscservicecontainer.cpp	Fri Feb 19 22:44:34 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-2010 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"
@@ -551,6 +551,14 @@
                                            mainPaneRect );
         SetRect( mainPaneRect );
         DrawNow();
+        iListBox->DrawNow();
+        
+        // Get handler to status pane.
+        CEikStatusPane* statusPane = iEikonEnv->AppUiFactory()->StatusPane();
+        if ( statusPane )
+            {
+            statusPane->DrawNow();
+            }
         }
     
     CCoeControl::HandleResourceChange( aType );
--- a/commsconfig/cscapplicationui/src/cscserviceview.cpp	Tue Feb 02 00:05:57 2010 +0200
+++ b/commsconfig/cscapplicationui/src/cscserviceview.cpp	Fri Feb 19 22:44:34 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-2010 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"
@@ -151,27 +151,9 @@
     
     delete iSettingsUi;
     delete iContainer;
-      
-    CSCDEBUG( "CCSCServiceView::~CCSCServiceView - end" );
-    }
-    
+    delete iEngTimer;
     
-// ---------------------------------------------------------------------------
-// Updates container data because of layout change.
-// ---------------------------------------------------------------------------
-//
-void CCSCServiceView::UpdateLayout( TInt aType )
-    {
-    CSCDEBUG( "CCSCServiceView::UpdateLayout - begin" );
-        
-    if ( iContainer )
-        {
-        iContainer->SetRect( ClientRect() );
-        TRAP_IGNORE( iContainer->UpdateServiceViewL() );
-        iContainer->HandleResourceChange( aType );
-        }
-    
-    CSCDEBUG( "CCSCServiceView::UpdateLayout - end" );
+    CSCDEBUG( "CCSCServiceView::~CCSCServiceView - end" );
     }
 
 
@@ -513,70 +495,68 @@
 TBool CCSCServiceView::HandleServiceConfigurationL( TUid aUid )
     {
     CSCDEBUG( "CCSCServiceView::HandleServiceConfigurationL" );
-     
+    
     TInt initializedCount( iServicePluginHandler.PluginCount( 
             CCSCEngServicePluginHandler::EInitialized ) );
-     
+    
     TBool canceled( EFalse );
     TServicePluginInfo pluginInfo;
-     
+    
+    iUid = aUid;
+    
     if ( KNullUid != aUid ) 
         {
         for ( TInt i( 0 ) ; i < initializedCount ; i++ )
             {            
             pluginInfo = iServicePluginHandler.ItemFromPluginInfoArray( i );
-             
+            
             if ( aUid == pluginInfo.iPluginsUid && !pluginInfo.iProvisioned )
                 {                
                 iStartupHandler.ResetUid( CCSCEngStartupHandler::EPluginUid );
-                 
+                
                 iOfferedPluginUids.Append( pluginInfo.iPluginsUid );
-                            
-                CCSCNoteUtilities::TCSCNoteType 
-                    type = CCSCNoteUtilities::ECSCConfigureServiceQuery;
-                                                     
-                if ( CCSCNoteUtilities::ShowCommonQueryL( 
-                    type, pluginInfo.iProviderName ) )
-                    {        
-                    iServicePluginHandler.DoProvisioningL( 
-                        pluginInfo.iPluginsUid, KCSCServiceViewId );
-                    }
-                else
-                    {                    
-                    canceled = ETrue;
-                    }
+                
+                iPluginInfo = pluginInfo;
+                
+                iNextPluginIndex = i;
+                
+                delete iEngTimer;
+                iEngTimer = NULL;
+                iEngTimer = CCSCEngTimer::NewL( *this );
+                
+                iEngTimer->StartTimer( CCSCEngTimer::ENoteDelayTimer );
+                
+                break;
                 }
             }   
-         
+        
         }
     else
         {
         for ( TInt j( 0 ) ; j < initializedCount ; j++ )
             {            
             pluginInfo = iServicePluginHandler.ItemFromPluginInfoArray( j );                      
-             
+            
             if ( !pluginInfo.iProvisioned )
                 {   
                 iOfferedPluginUids.Append( pluginInfo.iPluginsUid );
-                                  
-                CCSCNoteUtilities::TCSCNoteType type = 
-                    CCSCNoteUtilities::ECSCConfigureServiceQuery;
-                                                           
-                if ( CCSCNoteUtilities::ShowCommonQueryL( 
-                    type, pluginInfo.iProviderName ) )
-                    {        
-                    iServicePluginHandler.DoProvisioningL( 
-                        pluginInfo.iPluginsUid, KCSCServiceViewId );
-                    }
-                else
-                    {                    
-                    canceled = ETrue;
-                    }
+                
+                iPluginInfo = pluginInfo;
+                
+                iNextPluginIndex = j;
+                
+                delete iEngTimer;
+                iEngTimer = NULL;
+                iEngTimer = CCSCEngTimer::NewL( *this );
+
+                iEngTimer->StartTimer( CCSCEngTimer::ENoteDelayTimer );
+                
+                break;
                 }
             }
         }
-     
-    return canceled;     
+    
+    return canceled;
     }
 
 
@@ -790,12 +770,10 @@
             {
             // launched from active idle
             iStartupHandler.SetStartedFromHomescreen( ETrue );
-            ExecuteStartupActionsL( EFalse, ETrue );
             }
         else
             {
             iStartupHandler.SetStartedFromHomescreen( EFalse );
-            ExecuteStartupActionsL();
             }
         }
 
@@ -824,4 +802,59 @@
     
     CSCDEBUG( "CCSCServiceView::DoDeactivate - end" );
     }
+	
+	
+// ---------------------------------------------------------------------------
+// From class MCSCEngTimerObserver.
+// CCSCServiceView::TimerExpired
+// ---------------------------------------------------------------------------
+//
+void CCSCServiceView::TimerExpired()
+    {
+    CSCDEBUG( "CCSCServiceView::TimerExpired - begin" );
     
+    iStartupHandler.ResetUid( CCSCEngStartupHandler::EPluginUid );
+    iOfferedPluginUids.Append( iPluginInfo.iPluginsUid );
+    
+    CCSCNoteUtilities::TCSCNoteType 
+        type = CCSCNoteUtilities::ECSCConfigureServiceQuery;
+    
+    if ( CCSCNoteUtilities::ShowCommonQueryL( 
+       type, iPluginInfo.iProviderName ) )
+       {        
+       iServicePluginHandler.DoProvisioningL( 
+               iPluginInfo.iPluginsUid, KCSCServiceViewId );
+       }
+   
+    iNextPluginIndex++;
+    TInt pluginCount = iServicePluginHandler.PluginCount( 
+            CCSCEngServicePluginHandler::EInitialized );
+    
+    for ( ; iNextPluginIndex < pluginCount; iNextPluginIndex++ )
+        {
+        CSCDEBUG2( "CCSCServiceView::TimerExpired -iNextPluginIndex = %d",
+            iNextPluginIndex );
+        
+        iPluginInfo =
+            iServicePluginHandler.ItemFromPluginInfoArray( iNextPluginIndex );
+        
+        if ( KNullUid != iUid )
+            {
+            if ( iUid == iPluginInfo.iPluginsUid && !iPluginInfo.iProvisioned )
+                {
+                iEngTimer->StartTimer( CCSCEngTimer::ENoteDelayTimer );
+                break;
+                }
+            }
+        else
+            {
+            if ( !iPluginInfo.iProvisioned )
+                {
+                iEngTimer->StartTimer( CCSCEngTimer::ENoteDelayTimer );
+                break;
+                }
+            }
+        }
+    CSCDEBUG( "CCSCServiceView::TimerExpired - end" );
+    }
+	
--- a/commsconfig/cscengine/inc/cscengtimer.h	Tue Feb 02 00:05:57 2010 +0200
+++ b/commsconfig/cscengine/inc/cscengtimer.h	Fri Feb 19 22:44:34 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-2010 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"
@@ -40,7 +40,8 @@
          */
         enum TTimerType
             {
-            EConnectionMonitoringTimer = 0
+            EConnectionMonitoringTimer = 0,
+            ENoteDelayTimer
             };
     
         /**
--- a/commsconfig/cscengine/src/cscengtimer.cpp	Tue Feb 02 00:05:57 2010 +0200
+++ b/commsconfig/cscengine/src/cscengtimer.cpp	Fri Feb 19 22:44:34 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2007 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-2010 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"
@@ -21,6 +21,7 @@
 #include "mcscengtimerobserver.h"
 
 const TInt KWaitConnectionToClose = 5000000; // 5 seconds
+const TInt KWaitNoteDelayTime = 20000; // 20 ms
 
 // ======== MEMBER FUNCTIONS ========
 
@@ -92,6 +93,10 @@
         {
         CTimer::After( KWaitConnectionToClose );
         }
+    else if ( ENoteDelayTimer == aTimerType )
+        {
+        CTimer::After( KWaitNoteDelayTime );
+        }
     else
         {
         error = KErrArgument;
--- a/sipvoipprovider/src/svpemergencysession.cpp	Tue Feb 02 00:05:57 2010 +0200
+++ b/sipvoipprovider/src/svpemergencysession.cpp	Fri Feb 19 22:44:34 2010 +0200
@@ -453,6 +453,11 @@
         TRAP_IGNORE( StartTimerL( 
             KSVPTerminatingTime, KSVPRemoteEndDiedExpired ) )
         }
+    else if ( CMceMediaStream::EStreaming == aStream.State() )
+        {
+        SVPDEBUG1("CSVPEmergencySession::StreamStateChanged() - EStreaming")
+        StopTimer( KSVPRemoteEndDiedExpired );
+        }
     }
 
 // ---------------------------------------------------------------------------
--- a/sipvoipprovider/src/svpsessionbase.cpp	Tue Feb 02 00:05:57 2010 +0200
+++ b/sipvoipprovider/src/svpsessionbase.cpp	Fri Feb 19 22:44:34 2010 +0200
@@ -3099,6 +3099,43 @@
     delete iSession;
     iSession = aUpdatedSession;
 
+	// lets check should mic be muted 
+    const RPointerArray<CMceMediaStream>& streamsArray = iSession->Streams(); 
+    const TInt streamCount( streamsArray.Count() );
+    if ( streamCount && iMuted )
+        {
+        SVPDEBUG1( "CSVPSessionBase::SetUpdatedSession Mic should be muted" )
+        
+        if ( IsMobileOriginated() ) 
+            {
+            for ( TInt i = 0; i < streamCount; i++ )
+                {
+                if ( streamsArray[i]->Source()->IsEnabled() )
+                    {
+                    SVPDEBUG1( "CSVPSessionBase::SetUpdatedSession Mic is not muted" )
+                    SVPDEBUG1( " -> disable mic" )
+                    streamsArray[i]->Source()->DisableL();
+                    }
+                else 
+                    {
+                    SVPDEBUG1( "CSVPSessionBase::SetUpdatedSession Mic is already" )
+                    SVPDEBUG1( " muted -> no need to disable mic" )
+                    }
+                }
+            }
+        else
+            {
+            // mute mic source
+            for ( TInt i = 0; i < streamCount; i++ )
+                {
+                if ( streamsArray[i]->BoundStreamL().Source()->IsEnabled() )
+                    {
+                    streamsArray[i]->BoundStreamL().Source()->DisableL();
+                    }
+                }
+            }
+        }
+
     // Update changed session also to the transfercontroller
     if ( iTransferController )
         {
--- a/sipvoipprovider/svphold/src/svpholdconnectedstate.cpp	Tue Feb 02 00:05:57 2010 +0200
+++ b/sipvoipprovider/svphold/src/svpholdconnectedstate.cpp	Fri Feb 19 22:44:34 2010 +0200
@@ -211,7 +211,6 @@
         // Not hold request
         SVPDEBUG1( "CSVPHoldConnectedState::RemoteSessionHoldL:");
         SVPDEBUG1( "Not hold request" );
-        
         User::Leave( KErrSVPHoldNotHoldRequest );
         }
     
--- a/voipplugins/voipadapters/cpvoipadapter/src/CWPVoIPItem.cpp	Tue Feb 02 00:05:57 2010 +0200
+++ b/voipplugins/voipadapters/cpvoipadapter/src/CWPVoIPItem.cpp	Fri Feb 19 22:44:34 2010 +0200
@@ -1591,11 +1591,137 @@
 
         TUint32 snapId( 0 );
         err = sipManagedProf->GetParameter( KSIPSnapId, snapId );
+                
         if ( KErrNone == err )
             {
             iSnapId = snapId;
             iSnapIdSet = ETrue;
             }
+        else if ( KErrNotFound == err )
+            {
+            TUint32 iapId( 0 );
+            err = sipManagedProf->GetParameter( KSIPAccessPointId, iapId );
+            
+            if ( KErrNone == err )
+                {
+                // Copy connection method to default SNAP
+                RCmManagerExt cmManager;
+                CleanupClosePushL( cmManager );
+                cmManager.OpenL();
+                
+                TCmDefConnValue defConn;
+                cmManager.ReadDefConnL( defConn );
+                iSnapId = defConn.iId;  
+                iSnapIdSet = ETrue;
+                
+                RCmDestinationExt defaultSnap;
+                CleanupClosePushL( defaultSnap );
+                defaultSnap = cmManager.DestinationL( iSnapId );
+                
+                RCmConnectionMethodExt connection = 
+                    cmManager.ConnectionMethodL( iapId );
+                CleanupClosePushL( connection );
+                
+                // Get connection name
+                HBufC* connectionName = 
+                    connection.GetStringAttributeL( CMManager::ECmName );
+                CleanupStack::PushL( connectionName );   
+                
+                RBuf parsedConnectionName;
+                CleanupClosePushL( parsedConnectionName );
+                parsedConnectionName.CreateL( connectionName->Des().Length() );
+                
+                // Parse possible unique number from end of connection
+                // method name. accesspoint(xx) --> accesspoint
+                TInt pos = connectionName->Des().Locate( '(' );
+                if ( KErrNotFound != pos )
+                    {
+                    parsedConnectionName.Copy( 
+                        connectionName->Des().Left( pos ) );
+                    }
+                else
+                    {
+                    parsedConnectionName.Copy( 
+                        connectionName->Des() );
+                    }  
+                
+                // Check if connection method already exists in default snap
+                TBool matchFound( EFalse );
+                TInt conMethodCount = defaultSnap.ConnectionMethodCount();
+                
+                for ( TInt i( 0 ) ; 
+                    i < conMethodCount && matchFound == 0; i ++ )
+                    {
+                    RCmConnectionMethodExt cm = 
+                        defaultSnap.ConnectionMethodL( i );
+                    CleanupClosePushL( cm );
+                        
+                    HBufC* cmName = 
+                        cm.GetStringAttributeL( CMManager::ECmName );
+                    CleanupStack::PushL( cmName );    
+   
+                    RBuf parsedCmName;
+                    CleanupClosePushL( parsedCmName );
+                    parsedCmName.CreateL( cmName->Des().Length() );
+                    
+                    // Parse possible unique number from end of connection
+                    // method name. accesspoint(xx) --> accesspoint
+                    TInt pos = cmName->Des().Locate( '(' );
+                    if ( KErrNotFound != pos )
+                        {
+                        parsedCmName.Copy( cmName->Des().Left( pos ) );
+                        }
+                    else
+                        {
+                        parsedCmName.Copy( cmName->Des() );
+                        }   
+                    
+                    // Compare connection method names
+                    if ( parsedConnectionName.Compare( parsedCmName ) == 0 )
+                        {
+                        matchFound = ETrue;
+                        }
+
+                    CleanupStack::PopAndDestroy( &parsedCmName );
+                    CleanupStack::PopAndDestroy( cmName );
+                    CleanupStack::PopAndDestroy( &cm );
+                    }
+                
+                CleanupStack::PopAndDestroy( &parsedConnectionName );
+                CleanupStack::PopAndDestroy( connectionName );
+                
+                // Add copy only if not already exists with same name
+                if ( !matchFound )
+                    {
+                    defaultSnap.AddConnectionMethodL( 
+                        connection.CreateCopyL() );
+                    }
+                
+                // Change seamlessness level for linked WLAN IAP so that
+                // roaming is allowed without asking it from the user.
+                TUint32 bearerType = connection.GetIntAttributeL( 
+                    CMManager::ECmBearerType );
+                
+                if ( KUidWlanBearerType == bearerType )
+                    {
+                    connection.SetIntAttributeL( 
+                        CMManager::ECmSeamlessnessLevel, 
+                        CMManager::ESeamlessnessShowprogress );
+                    }
+                
+                defaultSnap.UpdateL();
+                
+                CleanupStack::PopAndDestroy( &connection );
+                CleanupStack::PopAndDestroy( &defaultSnap );
+                CleanupStack::PopAndDestroy( &cmManager );
+
+                // Update sip profile to use default snap
+                sipManagedProf->SetParameter( KSIPAccessPointId, (TUint32)0 );
+                sipManagedProf->SetParameter( KSIPSnapId, iSnapId );
+                sipReg->SaveL( *sipManagedProf );
+                }
+            }
+        
         CleanupStack::PopAndDestroy( sipManagedProf ); // CS:3
         CleanupStack::Pop( sipProf ); // CS:2
         sipProf = NULL;