Revision: 201031 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Thu, 19 Aug 2010 09:45:22 +0300
branchRCL_3
changeset 20 65a3ef1d5bd0
parent 18 8c9c07ad8b6b
child 21 f742655b05bf
Revision: 201031 Kit: 201033
callcontinuity/rom/vcc.iby
callcontinuity/rom/vccresources.iby
commsconfig/cscapplicationui/data/csc.rss
commsconfig/cscengine/src/cscengcchhandler.cpp
commsconfig/cscsettingsui/inc/cscsettingsuimaincontainer.h
commsconfig/cscsettingsui/inc/cscsettingsuimainview.h
commsconfig/cscsettingsui/src/cscsettingsuimaincontainer.cpp
commsconfig/cscsettingsui/src/cscsettingsuimainview.cpp
commsconfig/help/data/xhtml.zip
commsconfig/help/rom/cscapplicationuihelps_variant.iby
commsconfig/rom/csc.iby
commsconfig/rom/cscresources.iby
convergedconnectionhandler/cchclientapi/cchuinotif/group/cchuinotif.mmp
convergedconnectionhandler/cchclientapi/cchuinotif/inc/cchuinotifierimpl.h
convergedconnectionhandler/cchclientapi/cchuinotif/src/cchuinotifierimpl.cpp
convergedconnectionhandler/rom/cch.iby
convergedconnectionhandler/rom/cchresources.iby
iptel_plat/cch_client_api/inc/cchclient.h
iptel_plat/cch_client_api/inc/cchclientserver.h
iptel_plat/cch_server_api/inc/cchservice.h
iptel_plat/cch_server_api/inc/cchservice.inl
richcallsettingsengine/rcse2/rom/rcse2.iby
richcallsettingsengine/rcse2/src/crcseaudiocodecentry.cpp
sipvoipprovider/inc/svpconsts.h
sipvoipprovider/src/svpcontroller.cpp
sipvoipprovider/src/svpsessionbase.cpp
sipvoipprovider/src/svpsslogcall.cpp
sipvoipprovider/svphold/src/svpholdcontroller.cpp
sipvoipprovider/svptransfer/src/svptransferstatecontext.cpp
voipplugins/accountcreationplugin/engine/src/acphttphandler.cpp
voipplugins/accountcreationplugin/rom/accountcreationplugin.iby
voipplugins/accountcreationplugin/rom/accountcreationpluginresources.iby
voipplugins/ipapputils/rom/ipapputils.iby
voipplugins/ipapputils/voipeventlog/rom/voipeventlog.iby
voipplugins/sipconnectionprovider/inc/scpdefs.h
voipplugins/sipconnectionprovider/inc/scpsettinghandler.h
voipplugins/sipconnectionprovider/inc/scpsipconnection.h
voipplugins/sipconnectionprovider/inc/scpsubservicestate.h
voipplugins/sipconnectionprovider/ipvoicemailengine/rom/ipvoicemailengine.iby
voipplugins/sipconnectionprovider/ipvoicemailengine/rom/ipvoicemailengine_resources.iby
voipplugins/sipconnectionprovider/rom/sipconnectionprovider.iby
voipplugins/sipconnectionprovider/src/scppresencehandler.cpp
voipplugins/sipconnectionprovider/src/scpservicemanager.cpp
voipplugins/sipconnectionprovider/src/scpsettinghandler.cpp
voipplugins/sipconnectionprovider/src/scpsipconnection.cpp
voipplugins/sipconnectionprovider/src/scpsubservice.cpp
voipplugins/sipconnectionprovider/src/scpsubservicestate.cpp
voipplugins/sipconnectionprovider/src/scpvoiphandler.cpp
voipplugins/voipadapters/cpgenvoipsettings/rom/wpgeneralvoipsettingsadapterresources.iby
voipplugins/voipadapters/cpgenvoipsettings/src/cwpgeneralvoipsettingsadapter.cpp
voipplugins/voipadapters/cpvoipadapter/rom/wpvoipadapterresources.iby
voipplugins/voipadapters/cpvoipadapter/src/CWPVoIPAdapter.cpp
voipplugins/voipadapters/cpvoipadapter/src/CWPVoIPItem.cpp
voipplugins/voipadapters/dmvoipadapter/inc/nsmldmvoipadapter.h
voipplugins/voipadapters/dmvoipadapter/src/nsmldmvoipadapter.cpp
voipplugins/voipadapters/provisioningfile/rom/provisioningfile.iby
voipplugins/voipadapters/voipxmlprovisioning/provisioningappui/Src/VoIPProvisioningAppUi.cpp
voipplugins/voipadapters/voipxmlprovisioning/rom/voipxmlprovisioning.iby
voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/inc/voipxmlprocessordefaults.h
voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/inc/voipxmlsiphandler.h
voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/rom/provisioningapi.iby
voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmliaphandler.cpp
voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlsiphandler.cpp
--- a/callcontinuity/rom/vcc.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/callcontinuity/rom/vcc.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -22,9 +22,9 @@
 
 #include <data_caging_paths_for_iby.hrh>
 
-file=ABI_DIR\BUILD_DIR\vccutils.dll 			SHARED_LIB_DIR\vccutils.dll
+file=ABI_DIR/BUILD_DIR/vccutils.dll 			SHARED_LIB_DIR/vccutils.dll
 // Stub sis
-data=ZSYSTEM\install\vcc_stub.sis 			System\Install\vcc_stub.sis
+data=ZSYSTEM/install/vcc_stub.sis 			System/Install/vcc_stub.sis
 
 // wpvccprovisioning
 ECOM_PLUGIN(wpvccadapter.dll,wpvccadapter.rsc)
@@ -33,10 +33,10 @@
 ECOM_PLUGIN(nsmldmvccadapter.dll,nsmldmvccadapter.rsc)
 
 // vcchotrigger
-file=ABI_DIR\BUILD_DIR\vcchotrigger.dll        		SHARED_LIB_DIR\vcchotrigger.dll
+file=ABI_DIR/BUILD_DIR/vcchotrigger.dll        		SHARED_LIB_DIR/vcchotrigger.dll
 
 ECOM_PLUGIN( vccperformer.dll, vccperformer.rsc )
 
-file=ABI_DIR\BUILD_DIR\vccuipropertyhandler.dll     	SHARED_LIB_DIR\vccuipropertyhandler.dll
+file=ABI_DIR/BUILD_DIR/vccuipropertyhandler.dll     	SHARED_LIB_DIR/vccuipropertyhandler.dll
 
 #endif // VCC_IBY
--- a/callcontinuity/rom/vccresources.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/callcontinuity/rom/vccresources.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -20,6 +20,6 @@
 #define VCCRESOURCES_IBY
 
 // wpvccprovisioning
-data=DATAZ_\RESOURCE_FILES_DIR\wpvccadapterrsc.rsc    RESOURCE_FILES_DIR\wpvccadapterrsc.rsc
+data=DATAZ_/RESOURCE_FILES_DIR/wpvccadapterrsc.rsc    RESOURCE_FILES_DIR/wpvccadapterrsc.rsc
 
 #endif // VCCRESOURCES_IBY
\ No newline at end of file
--- a/commsconfig/cscapplicationui/data/csc.rss	Mon Jun 21 15:29:21 2010 +0300
+++ b/commsconfig/cscapplicationui/data/csc.rss	Thu Aug 19 09:45:22 2010 +0300
@@ -307,10 +307,10 @@
         caption = qtn_set_folder_conn_service_configurator;
 #ifdef __SCALABLE_ICONS
         number_of_icons = 1;
-        icon_file = "\\resource\\apps\\csc_aif.mif";        
+        icon_file = "//resource//apps//csc_aif.mif";        
 #else
         number_of_icons = 2;
-        icon_file = "\\resource\\apps\\csc_aif.mbm";        
+        icon_file = "//resource//apps//csc_aif.mbm";        
 #endif // __SCALABLE_ICONS
         };
     }
--- a/commsconfig/cscengine/src/cscengcchhandler.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/commsconfig/cscengine/src/cscengcchhandler.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -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"
@@ -140,9 +140,10 @@
 EXPORT_C void CCSCEngCCHHandler::SupportedSubServicesL( 
     TInt aServiceId, TSupportedSubServices& aSupSubServices )
     {
+    // Create new cch client for access the latest service info data.
     CCchService* service = 
-               iCchClientApi->GetService( aServiceId );
-        
+        CCch::NewLC()->GetService( aServiceId );
+
     TBool supported( EFalse );
     
     if ( service )
@@ -159,7 +160,9 @@
         service->IsSupported( ECCHVMBxSub, supported );
         aSupSubServices.iVmbx = supported;
         }
-        
+    
+    CleanupStack::PopAndDestroy(); // cch
+    
     CSCENGDEBUG2( 
             "CCSCEngCCHHandler::SupportedSubServicesL VoIP=%d", 
                 aSupSubServices.iVoIP );
--- a/commsconfig/cscsettingsui/inc/cscsettingsuimaincontainer.h	Mon Jun 21 15:29:21 2010 +0300
+++ b/commsconfig/cscsettingsui/inc/cscsettingsuimaincontainer.h	Thu Aug 19 09:45:22 2010 +0300
@@ -133,7 +133,7 @@
      *
      * @since S60 v5.2
      */
-    void DeleteServiceL();
+    TBool DeleteServiceL();
 
     /**
      * Launches cleanup plugin to remove settings.
--- a/commsconfig/cscsettingsui/inc/cscsettingsuimainview.h	Mon Jun 21 15:29:21 2010 +0300
+++ b/commsconfig/cscsettingsui/inc/cscsettingsuimainview.h	Thu Aug 19 09:45:22 2010 +0300
@@ -178,7 +178,7 @@
      *
      * @since S60 v5.0
      */
-    void HandleReturnToPreviousViewL();
+    void HandleReturnToPreviousViewL( TBool aViewBack = ETrue );
 
     /**
      * Handles exist from settingsui.
--- a/commsconfig/cscsettingsui/src/cscsettingsuimaincontainer.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/commsconfig/cscsettingsui/src/cscsettingsuimaincontainer.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -872,12 +872,13 @@
 // Deletes service.
 // ---------------------------------------------------------------------------
 //
-void CCSCSettingsUiMainContainer::DeleteServiceL()
+TBool CCSCSettingsUiMainContainer::DeleteServiceL()
     {
     CSCSETUIDEBUG( "CCSCSettingsUiMainContainer::DeleteServiceL - begin" );
 
     // Show confirmation query for service deletion.
     // Create confirmation query dialog.
+    TBool isDelete( EFalse );
     HBufC* string = NULL;
     CAknQueryDialog* query = 
         new( ELeave ) CAknQueryDialog( CAknQueryDialog::ENoTone );
@@ -902,9 +903,11 @@
             iModel.SettingsHandler().DeleteServiceL( 
                 iModel.CurrentSPEntryId() );
             }
+        isDelete = ETrue;
         }
 
     CSCSETUIDEBUG( "CCSCSettingsUiMainContainer::DeleteServiceL - end" );
+    return isDelete;
     }
 
 // ---------------------------------------------------------------------------
--- a/commsconfig/cscsettingsui/src/cscsettingsuimainview.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/commsconfig/cscsettingsui/src/cscsettingsuimainview.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -139,7 +139,7 @@
 
 // ---------------------------------------------------------------------------
 // CCSCSettingsUiMainView::UpdateSoftkeysL
-// Processes situation when it´s notified that softkeys need to be changed.
+// Processes situation when it�s notified that softkeys need to be changed.
 // ---------------------------------------------------------------------------
 //
 void CCSCSettingsUiMainView::UpdateSoftkeysL( )
@@ -261,9 +261,8 @@
         case ECSCSettingsUiDelete:
             {
             CSCSETUIDEBUG( "    HandleCommandL - delete service" );
-            iContainer->DeleteServiceL();
-            iDeleted = ETrue;
-            HandleReturnToPreviousViewL();
+            iDeleted = iContainer->DeleteServiceL();
+            HandleReturnToPreviousViewL( EFalse );
             break;
             }
         case EEikCmdExit:
@@ -873,7 +872,7 @@
 // Handles returning to previous view where settingsui was launced.
 // ---------------------------------------------------------------------------
 //
-void CCSCSettingsUiMainView::HandleReturnToPreviousViewL()
+void CCSCSettingsUiMainView::HandleReturnToPreviousViewL( TBool aViewBack )
     {
     CSCSETUIDEBUG( 
         "CCSCSettingsUiMainView::HandleReturnToPreviousViewL - IN" );
@@ -887,14 +886,9 @@
             tabview.iUid = iModel.SettingsHandler().ServiceTabViewIdL( 
             iModel.CurrentSPEntryId() ) )
 
-        if ( iDeleted && KCSCServiceViewId != iModel.ReturnViewId() )
-            {
-            TVwsViewId idleId;
-            AknDef::GetPhoneIdleViewId( idleId );
-            ActivateViewL( idleId );
-            AppUi()->HandleCommandL( EEikCmdExit );
-            }
-        else if ( tabview.iUid == iModel.ReturnViewId().iUid )
+        // Launched from phonebookview.
+        // Press Back button, return PhoneBookTabView.
+        if ( aViewBack && tabview.iUid == iModel.ReturnViewId().iUid )
             {
             RxSPViewServices viewServices;
             TInt err = viewServices.Activate( 
@@ -905,10 +899,34 @@
 
             AppUi()->HandleCommandL( EEikCmdExit );
             }
+        
+        if ( iDeleted && KCSCServiceViewId != iModel.ReturnViewId() )
+            {
+            // Launched from phonebookview.
+            // Press Ok button, return homescreen.
+            TVwsViewId idleId;
+            AknDef::GetPhoneIdleViewId( idleId );
+            ActivateViewL( idleId );
+            AppUi()->HandleCommandL( EEikCmdExit );
+            }
+        else if( !iDeleted && KCSCServiceViewId != iModel.ReturnViewId() )
+            {
+            // Launched from phonebookview.
+            // Press cancel button, return current view.
+            TUid curview = Id();
+            AppUi()->ActivateLocalViewL( curview );
+            }
+        else if( !aViewBack && !iDeleted && KCSCServiceViewId == iModel.ReturnViewId() )
+            {
+            // Launched from service view.
+            // Press cancel button, return current view.
+            TUid curview = Id();
+            AppUi()->ActivateLocalViewL( curview );
+            }
         else
             {
-            // Not deleted or launched from service tab,
-            // activate previous view.
+            // Launched from service view.
+            // Press Back button or Press Delete button, activate previous view.
             AppUi()->ActivateLocalViewL( iModel.ReturnViewId() );
             }
         }
Binary file commsconfig/help/data/xhtml.zip has changed
--- a/commsconfig/help/rom/cscapplicationuihelps_variant.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/commsconfig/help/rom/cscapplicationuihelps_variant.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -2,10 +2,10 @@
 #define __CSCHELPS_VARIANT_IBY__
 
 #if defined(FF_S60_HELPS_IN_USE)
-    data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x1020E566\contents.zip, RESOURCE_FILES_DIR\xhtml\%02d\0x1020E566\contents.zip)
-    data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x1020E566\index.xml, RESOURCE_FILES_DIR\xhtml\%02d\0x1020E566\index.xml)
-    data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x1020E566\keywords.xml, RESOURCE_FILES_DIR\xhtml\%02d\0x1020E566\keywords.xml)
-    data=LOCALISE(DATAZ_\resource\xhtml\%02d\0x1020E566\meta.xml, RESOURCE_FILES_DIR\xhtml\%02d\0x1020E566\meta.xml)
+    data=LOCALISE(DATAZ_/resource/xhtml/%02d/0x1020E566/contents.zip, RESOURCE_FILES_DIR/xhtml/%02d/0x1020E566/contents.zip)
+    data=LOCALISE(DATAZ_/resource/xhtml/%02d/0x1020E566/index.xml, RESOURCE_FILES_DIR/xhtml/%02d/0x1020E566/index.xml)
+    data=LOCALISE(DATAZ_/resource/xhtml/%02d/0x1020E566/keywords.xml, RESOURCE_FILES_DIR/xhtml/%02d/0x1020E566/keywords.xml)
+    data=LOCALISE(DATAZ_/resource/xhtml/%02d/0x1020E566/meta.xml, RESOURCE_FILES_DIR/xhtml/%02d/0x1020E566/meta.xml)
 #endif
 
 #endif
\ No newline at end of file
--- a/commsconfig/rom/csc.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/commsconfig/rom/csc.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -22,15 +22,15 @@
 #define CSC_IBY__
 
 
-    file=ABI_DIR\BUILD_DIR\cscengine.dll      SHARED_LIB_DIR\cscengine.dll
-    file=ABI_DIR\BUILD_DIR\cscsettingsui.dll  SHARED_LIB_DIR\cscsettingsui.dll
+    file=ABI_DIR/BUILD_DIR/cscengine.dll      SHARED_LIB_DIR/cscengine.dll
+    file=ABI_DIR/BUILD_DIR/cscsettingsui.dll  SHARED_LIB_DIR/cscsettingsui.dll
 
-    DATA=DATAZ_\RESOURCE_FILES_DIR\cscengine.rsc RESOURCE_FILES_DIR\cscengine.rsc
+    DATA=DATAZ_/RESOURCE_FILES_DIR/cscengine.rsc RESOURCE_FILES_DIR/cscengine.rsc
 
     ECOM_PLUGIN( cscgsplugin.dll,2001E639.rsc )
 
 		// stub SIS, provides support for SIS upgrading
-		data=ZSYSTEM\install\commsconfig_stub.sis    System\Install\commsconfig_stub.sis
+		data=ZSYSTEM/install/commsconfig_stub.sis    System/Install/commsconfig_stub.sis
     ECOM_PLUGIN( cscsipvoipcleanupplugin.dll,2000B007.rsc )
 
     SCALABLE_IMAGE(APP_BITMAP_DIR,APP_BITMAP_DIR,CSC)
--- a/commsconfig/rom/cscresources.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/commsconfig/rom/cscresources.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -22,8 +22,8 @@
 #define CSCRESOURCES_IBY
 
 
-DATA=DATAZ_\RESOURCE_FILES_DIR\cscsettingsui.rsc	RESOURCE_FILES_DIR\cscsettingsui.rsc
-DATA=DATAZ_\RESOURCE_FILES_DIR\cscgspluginrsc.rsc   RESOURCE_FILES_DIR\cscgspluginrsc.rsc
+DATA=DATAZ_/RESOURCE_FILES_DIR/cscsettingsui.rsc	RESOURCE_FILES_DIR/cscsettingsui.rsc
+DATA=DATAZ_/RESOURCE_FILES_DIR/cscgspluginrsc.rsc   RESOURCE_FILES_DIR/cscgspluginrsc.rsc
 
 S60_APP_RESOURCE(CSC)
 S60_APP_CAPTION(CSC)
--- a/convergedconnectionhandler/cchclientapi/cchuinotif/group/cchuinotif.mmp	Mon Jun 21 15:29:21 2010 +0300
+++ b/convergedconnectionhandler/cchclientapi/cchuinotif/group/cchuinotif.mmp	Thu Aug 19 09:45:22 2010 +0300
@@ -69,6 +69,7 @@
 LIBRARY                 bsclient.lib
 LIBRARY                 cmmanager.lib
 LIBRARY                 commonengine.lib
+LIBRARY                 sipprofilecli.lib
 LIBRARY                 centralrepository.lib
 LIBRARY                 aknnotifierwrapper.lib
 LIBRARY                 serviceprovidersettings.lib
--- a/convergedconnectionhandler/cchclientapi/cchuinotif/inc/cchuinotifierimpl.h	Mon Jun 21 15:29:21 2010 +0300
+++ b/convergedconnectionhandler/cchclientapi/cchuinotif/inc/cchuinotifierimpl.h	Thu Aug 19 09:45:22 2010 +0300
@@ -21,11 +21,14 @@
 
 #include <cchuiobserver.h> // for dialog types
 #include <AknQueryDialog.h>
+#include <sipprofileregistryobserver.h>
 
 #include "cchuinotifier.h" // Base class
 #include "cchuicommon.hrh"
 #include "cchuicallstateobserver.h"
 
+class CSIPManagedProfile;
+class CSIPManagedProfileRegistry;
 class CCchUiPluginBrandingHandler;
 class CCchUiCallStateListener;
 
@@ -40,7 +43,8 @@
  *  @since S60 5.0
  */
 NONSHARABLE_CLASS( CCCHUiNotifierImpl ): public CCCHUiNotifierBase,
-                                         public MCchUiCallStateObserver
+                                         public MCchUiCallStateObserver,
+                                         public MSIPProfileRegistryObserver
     {
 public:
     
@@ -285,6 +289,14 @@
      */
     TUint32 InternetGprsApsMissingFromServiceSnapL(
         CDesCArray& aIaps, RArray<TUint32>& aIapIds ) const;
+
+    /**
+     * For deleting RPointerArray in case of leave.
+     *
+     * @since S60 5.0
+     * @param aPointerArray for pointer array to be deleted
+     */
+     static void ResetAndDestroy( TAny* aPointerArray );
     
 // from base class CCCHUiNotifierBase
 
@@ -328,6 +340,34 @@
      */
     void RunL();
     
+    
+    // from base class MSIPProfileRegistryObserver
+      
+    /** 
+     * From MSIPProfileRegistryObserver 
+     * SIP profile information event.
+     *
+     * @since S60 v3.0
+     * @param aProfileId is id for profile
+     * @param aEvent type of information event
+     */
+    void ProfileRegistryEventOccurred(
+        TUint32 aSIPProfileId, 
+        TEvent aEvent );
+
+          
+    /**
+     * From MSIPProfileRegistryObserver
+     * An asynchronous error has occurred related to SIP profile.
+     *
+     * @since S60 v3.0
+     * @param aSIPProfileId the id of failed profile 
+     * @param aError a error code
+     */
+     void ProfileRegistryErrorOccurred(
+         TUint32 aSIPProfileId,
+         TInt aError );
+    
 public:
 
 // from base class MCchUiCallStateObserver
@@ -373,6 +413,12 @@
      * Current connection IAP ID.
      */
     TUint iCurrentConnectionIapId;
+
+    /*
+     * Handle to SIP managed profile registry.
+     * Own.
+     */
+    CSIPManagedProfileRegistry* iSipProfileRegistry;
     
     CCHUI_UNIT_TEST( T_CchUiNotifierImpl )
     };
--- a/convergedconnectionhandler/cchclientapi/cchuinotif/src/cchuinotifierimpl.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/convergedconnectionhandler/cchclientapi/cchuinotif/src/cchuinotifierimpl.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -26,6 +26,8 @@
 #include <cenrepnotifyhandler.h>
 #include <ctsydomainpskeys.h>
 #include <crcseprofileregistry.h>
+#include <sipprofile.h>
+#include <sipmanagedprofileregistry.h>
 #include <AknNotiferAppServerApplication.h>  // Application Key enable/disable
 
 #include "cchuilogger.h"
@@ -35,6 +37,7 @@
 #include "cchuinotifconnectionhandler.h"
 #include "cchuicallstatelistener.h"
 
+const TUint32 KBearerSettingWlanOnly = 1;
 
 // ======== MEMBER FUNCTIONS ========
 
@@ -55,6 +58,7 @@
     {
     CCCHUiNotifierBase::ConstructL();
     iCallStateListener = CCchUiCallStateListener::NewL( *this );
+    iSipProfileRegistry = CSIPManagedProfileRegistry::NewL( *this );
     }
 
 CCCHUiNotifierImpl::~CCCHUiNotifierImpl()
@@ -1104,21 +1108,69 @@
     {
     CCHUIDEBUG( "CCCHUiNotifierImpl::IsVoIPOverWCDMAAllowed - IN" );
     
+    TBool allowed( EFalse );
     CRCSEProfileRegistry* cRCSEProfileRegistry;
     cRCSEProfileRegistry = CRCSEProfileRegistry::NewLC();
-    TBool ret = EFalse;
+    
     RPointerArray<CRCSEProfileEntry> entries;
+   
+    CleanupStack::PushL( TCleanupItem ( ResetAndDestroy, &entries ) );  //CS
+ 
     cRCSEProfileRegistry->FindByServiceIdL( iServiceId, entries );
     if( entries.Count() )
         {
-        ret = CRCSEProfileEntry::EOn == entries[ 0 ]->iAllowVoIPoverWCDMA;
+        RArray<TSettingIds> settingIdArray;
+        CleanupClosePushL( settingIdArray );    // CS 3
+        settingIdArray = entries[ 0 ]->iIds;
+        TInt sipProfileId( KErrNotFound );
+        for ( TUint i( 0 ) ; i < settingIdArray.Count() ; i++ )
+            {
+            if ( settingIdArray[ i ].iProfileType == 
+                CRCSEProfileEntry::EProtocolSIP )
+                {
+                sipProfileId = settingIdArray[ i ].iProfileId;
+                }
+            }
+        TUint32 bearerSetting( KErrNone );
+        if ( KErrNotFound != sipProfileId )
+            {
+            CSIPProfile* profile = 
+                iSipProfileRegistry->ProfileL( sipProfileId );
+            CleanupStack::PushL( profile ); // CS 4
+            User::LeaveIfError( 
+                profile->GetParameter( KBearerType, bearerSetting ) );
+            if ( KBearerSettingWlanOnly != bearerSetting )
+                {
+                allowed = ETrue;
+                }
+            CleanupStack::PopAndDestroy( profile ); // CS 3
+            }
+        CleanupStack::Pop( &settingIdArray ); // CS 2
         }
     
-    entries.ResetAndDestroy();
-    entries.Close();
-    CleanupStack::PopAndDestroy(); //cRCSEProfileRegistry
+    CleanupStack::PopAndDestroy( &entries ); // clItem    CS 1
+    
+    CleanupStack::PopAndDestroy(); //cRCSEProfileRegistry   CS 0
     
-    return ret;
+    return allowed;
+    }
+
+// ---------------------------------------------------------------------------
+// For deleting RPointerArray in case of leave
+// ---------------------------------------------------------------------------
+//
+void CCCHUiNotifierImpl::ResetAndDestroy( TAny* aPointerArray )
+    {
+    CCHUIDEBUG( "CCCHUiNotifierImpl::ResetAndDestroy - IN" );
+    if ( aPointerArray )
+        {
+        RPointerArray<CRCSEProfileEntry>* array =
+            reinterpret_cast<RPointerArray<CRCSEProfileEntry>*>( aPointerArray );
+        TInt i = array->Count();
+        array->ResetAndDestroy();
+        array->Close();
+        }
+    CCHUIDEBUG( "CCCHUiNotifierImpl::ResetAndDestroy - OUT" );
     }
 
 // ---------------------------------------------------------------------------
@@ -1272,3 +1324,24 @@
     
     CCHUIDEBUG( "CCCHUiNotifierImpl::CallStateChangedL - End" );
     }
+
+// ---------------------------------------------------------------------------
+// From class MSIPProfileRegistryObserver.
+// ---------------------------------------------------------------------------
+//
+void CCCHUiNotifierImpl::ProfileRegistryEventOccurred( 
+    TUint32 /*aSIPProfileId*/, 
+    TEvent /*aEvent*/ )
+    {
+    }
+
+
+// ---------------------------------------------------------------------------
+// From class MSIPProfileRegistryObserver.
+// ---------------------------------------------------------------------------
+//
+void CCCHUiNotifierImpl::ProfileRegistryErrorOccurred(
+    TUint32 /*aSIPProfileId*/,
+    TInt /*aError*/ )
+    {
+    }
--- a/convergedconnectionhandler/rom/cch.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/convergedconnectionhandler/rom/cch.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -21,15 +21,15 @@
 
 
 //Server EXE
-file=ABI_DIR\BUILD_DIR\CCHServer.exe    PROGRAMS_DIR\CCHServer.exe
+file=ABI_DIR/BUILD_DIR/CCHServer.exe    PROGRAMS_DIR/CCHServer.exe
 
 //Client DLL
-file=ABI_DIR\BUILD_DIR\CCHClient.dll   SHARED_LIB_DIR\CCHClient.dll
+file=ABI_DIR/BUILD_DIR/CCHClient.dll   SHARED_LIB_DIR/CCHClient.dll
 
-file=ABI_DIR\BUILD_DIR\cch.dll				 SHARED_LIB_DIR\cch.dll
+file=ABI_DIR/BUILD_DIR/cch.dll				 SHARED_LIB_DIR/cch.dll
 
 // CCH UI components
 ECOM_PLUGIN(cchuinotifwrapper.dll,	1020E567.RSC)
-file=ABI_DIR\BUILD_DIR\cchuinotif.dll      SHARED_LIB_DIR\cchuinotif.dll
+file=ABI_DIR/BUILD_DIR/cchuinotif.dll      SHARED_LIB_DIR/cchuinotif.dll
 
 #endif // CCH_IBY
--- a/convergedconnectionhandler/rom/cchresources.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/convergedconnectionhandler/rom/cchresources.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -19,9 +19,9 @@
 #ifndef CCHRESOURCES_IBY
 #define CCHRESOURCES_IBY
 
-data=\epoc32\data\Z\Resource\apps\cch.RSC         resource\apps\cch.RSC
+data=/epoc32/data/Z/Resource/apps/cch.RSC         resource/apps/cch.RSC
 
 // CCH UI localized resources
-data=\epoc32\data\Z\Resource\apps\cchuinotif.rsc         resource\apps\cchuinotif.rsc
+data=/epoc32/data/Z/Resource/apps/cchuinotif.rsc         resource/apps/cchuinotif.rsc
 
 #endif // CCHRESOURCES_IBY
\ No newline at end of file
--- a/iptel_plat/cch_client_api/inc/cchclient.h	Mon Jun 21 15:29:21 2010 +0300
+++ b/iptel_plat/cch_client_api/inc/cchclient.h	Thu Aug 19 09:45:22 2010 +0300
@@ -23,8 +23,8 @@
 #include <e32std.h>
 #include <e32base.h>
 
-#include "CCHServer.h"
-#include "CCHClientServer.h"
+#include "cchserver.h"
+#include "cchclientserver.h"
 
 // CONSTANTS
 // None
--- a/iptel_plat/cch_client_api/inc/cchclientserver.h	Mon Jun 21 15:29:21 2010 +0300
+++ b/iptel_plat/cch_client_api/inc/cchclientserver.h	Thu Aug 19 09:45:22 2010 +0300
@@ -22,7 +22,7 @@
 
 // INCLUDES
 #include <e32base.h>
-#include <CchError.h>
+#include <ccherror.h>
 #include <cchtypes.h>
 // CONSTANTS
 const TUint KCCHMaxServiceNameLength  = 64; 
@@ -203,7 +203,7 @@
     TFixedArray<TCCHSubservice, KCCHMaxSubservicesCount>    iSubservices;
     };
 
-#include "CCHClientServer.inl"
+#include "cchclientserver.inl"
 
 #endif // T_CCHCLIENTSERVER_H
 
--- a/iptel_plat/cch_server_api/inc/cchservice.h	Mon Jun 21 15:29:21 2010 +0300
+++ b/iptel_plat/cch_server_api/inc/cchservice.h	Thu Aug 19 09:45:22 2010 +0300
@@ -25,7 +25,7 @@
 #include <ecom/ecom.h>
 #include <cchclientserver.h>
 
-#include "CCHServiceObserver.h"
+#include "cchserviceobserver.h"
 
 
 // CONSTANTS
@@ -235,7 +235,7 @@
     
     };
 
-#include "CCHService.inl"
+#include "cchservice.inl"
 
 #endif // C_CCHSERVICE_H
 
--- a/iptel_plat/cch_server_api/inc/cchservice.inl	Mon Jun 21 15:29:21 2010 +0300
+++ b/iptel_plat/cch_server_api/inc/cchservice.inl	Thu Aug 19 09:45:22 2010 +0300
@@ -20,7 +20,7 @@
 #define CCHSERVICE_INL
 
 //INCLUDES
-#include "CCHServiceObserver.h"
+#include "cchserviceobserver.h"
 
 // ---------------------------------------------------------------------------
 // CCchService::CCchService 
--- a/richcallsettingsengine/rcse2/rom/rcse2.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/richcallsettingsengine/rcse2/rom/rcse2.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -20,9 +20,9 @@
 #define RCSE_IBY
 
 
-file=ABI_DIR\BUILD_DIR\RCSE.dll SHARED_LIB_DIR\RCSE.dll
-data=ZPRIVATE\100012a5\policy\10202869.SPD PRIVATE\100012a5\policy\10202869.SPD
-data=ZPRIVATE\10202869\backup_registration.xml private\10202869\backup_registration.xml
+file=ABI_DIR/BUILD_DIR/RCSE.dll SHARED_LIB_DIR/RCSE.dll
+data=ZPRIVATE/100012a5/policy/10202869.SPD PRIVATE/100012a5/policy/10202869.SPD
+data=ZPRIVATE/10202869/backup_registration.xml private/10202869/backup_registration.xml
 
 
 #endif // RCSE_IBY
--- a/richcallsettingsengine/rcse2/src/crcseaudiocodecentry.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/richcallsettingsengine/rcse2/src/crcseaudiocodecentry.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -268,7 +268,7 @@
         iJitterBufferSize         = KRCSEDefaultJitterBufferSize;
         iOctetAlign               = EOff;
         iModeSet.Reset();
-        iModeChangePeriod         = 2;
+        iModeChangePeriod         = KNotSet;
         iModeChangeNeighbor       = EOn;
         iPtime                    = 20;
         iMaxptime                 = KRCSEDefaultMaxptime;
--- a/sipvoipprovider/inc/svpconsts.h	Mon Jun 21 15:29:21 2010 +0300
+++ b/sipvoipprovider/inc/svpconsts.h	Thu Aug 19 09:45:22 2010 +0300
@@ -116,6 +116,7 @@
 _LIT( KSVPRightBracketMark2, ">" );
 _LIT8( KSVPAuthidentity, "?X-Sipx-Authidentity=");
 _LIT8( KSVPAuthidentity2, "?X-sipX-Authidentity=");
+_LIT8( KSVPAuthidentity3, "&X-sipX-Authidentity=");
 
 // uri length
 const TUint KSVPMaxUriLength = 100;
@@ -222,7 +223,7 @@
 _LIT8( KSVPSubsStateTerminated,   "Subscription-State: terminated;reason=noresource");
 
 _LIT( KSVPS60,"S60" );
-_LIT( KSVPCopyright, "©" );
+_LIT( KSVPCopyright, "?" );
 _LIT(KSVPSalesModelFileName, "\\resource\\versions\\model.txt");
 
 // Emergency constants
--- a/sipvoipprovider/src/svpcontroller.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/sipvoipprovider/src/svpcontroller.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -1401,7 +1401,7 @@
         
         // disable rtp source and speaker sink so that audio is not on
         // before session is up signalling-wise
-        for ( TInt i = 0; i < streams.Count(); i++ )
+        for ( TInt i = 0; i < streams.Count(); )
             {
             SVPDEBUG1( "CSVPController::IncomingSessionHandlerL disabling" );
             
@@ -1428,6 +1428,8 @@
             
                 SVPAudioUtility::DisableSpeakerSinkL( stream1->Sinks() );
                 SVPAudioUtility::DisableMicSourceL( *stream1 );
+                //remove all streams that not audio stream
+                i++;
                 }
             }
             
--- a/sipvoipprovider/src/svpsessionbase.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/sipvoipprovider/src/svpsessionbase.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -1524,7 +1524,8 @@
     TBool bothStreamsDisabled ( ETrue );
     TRAP_IGNORE( bothStreamsDisabled = IsBothStreamsDisabledL() );
     if ( bothStreamsDisabled &&
-         CMceSession::EEstablished == aStream.Session()->State() )
+         CMceSession::EEstablished == aStream.Session()->State() && 
+         IsErrorInULandDLFirstTime() )
         {
         SetErrorInULandDLFirstTime( EFalse ); 
         TRAP_IGNORE( StartTimerL( KSVPICMPErrorTime, KSVPICMPErrorTimerExpired ) )
@@ -3103,6 +3104,15 @@
     SVPDEBUG1( "CSVPSessionBase::UpdateFailed In" )
     SVPDEBUG2( "CSVPSessionBase::UpdateFailed aStatusCode=%d", aStatusCode )
     
+    // Check if MCE Session has changed
+    if ( &Session() != &aSession )
+        {
+        // And if, then update to the current session
+        SVPDEBUG1( "CSVPSessionBase::UpdateFailed - update MCE Session" )
+        delete iSession;
+        iSession = &aSession;
+        }
+    
     if ( iHoldController )
         {
         iHoldController->RequestFailed( aSession, aStatusCode, *this );
--- a/sipvoipprovider/src/svpsslogcall.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/sipvoipprovider/src/svpsslogcall.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -321,9 +321,11 @@
     TTime eventTime;
     eventTime.UniversalTime();
     iLogEvent->SetTime(eventTime);
-    iLogClient->AddEvent(*iLogEvent, iStatus);
-
-    SetActive();
+    if( !IsActive() )
+        {
+        iLogClient->AddEvent(*iLogEvent, iStatus);
+        SetActive();
+        }
 	SVPDEBUG1("CSVPSSLogCall::HandleCallLoggingL, Exit");
     }
 
--- a/sipvoipprovider/svphold/src/svpholdcontroller.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/sipvoipprovider/svphold/src/svpholdcontroller.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2006-2008 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2006-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"
@@ -372,6 +372,17 @@
             iContext->CrossOver( EFalse );
             }
         }
+    
+    if ( 0 == aStatusCode && ESVPEstablishing == HoldState() )
+        {
+        SVPDEBUG1( "CSVPHoldController::RequestFailed - status 0 received" )
+        
+        iReinviteCrossover = EFalse;
+        iContext->CrossOver( EFalse );
+        
+        SVPDEBUG1( "CSVPHoldController::RequestFailed - set status code 400" )
+        aStatusCode = KSVPBadRequestVal;
+        }
 
     TInt err = KErrNone;
     if ( iReinviteCrossover )
--- a/sipvoipprovider/svptransfer/src/svptransferstatecontext.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/sipvoipprovider/svptransfer/src/svptransferstatecontext.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -436,6 +436,16 @@
         CleanupStack::Pop( 1 ); // string, ReAlloc possible
         CleanupStack::PushL( string );
         }
+    // Check "?X-Sipx-Authidentity=" and remove text after it if exists
+    position = CheckAuthidentity( *string );
+
+    if ( KErrNotFound != position )
+        {
+        // "?X-Sipx-Authidentity=" found
+        CutStringFromPosition( string, position );
+        CleanupStack::Pop( 1 ); // string, ReAlloc possible
+        CleanupStack::PushL( string );
+        }
     
     // Check ">" and remove text after it if exists
     position = CheckRightBracket( *string );
@@ -759,6 +769,11 @@
         returnValue = aUri.Find( KSVPAuthidentity2 );
         SVPDEBUG2( "CSVPTransferStateContext::CheckAuthidentity second return: %d", returnValue )
         }
+    if ( returnValue == KErrNotFound )
+        {
+        returnValue = aUri.Find( KSVPAuthidentity3 );
+        SVPDEBUG2( "CSVPTransferStateContext::CheckAuthidentity third return: %d", returnValue )
+        }
     return returnValue;
     }
 
--- a/voipplugins/accountcreationplugin/engine/src/acphttphandler.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/accountcreationplugin/engine/src/acphttphandler.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -495,7 +495,7 @@
                 iConnectionOpen = EFalse;
                 iSession.Close();
                 iConnection.Close();
-                
+                iSocketServer.Close();
                 // Reopen session.
                 iSession.OpenL();
                 }
@@ -521,7 +521,7 @@
     iConnectionOpen = EFalse;
     iSession.Close();
     iConnection.Close();
-    
+    iSocketServer.Close();
     // Reopen session.
     TRAP_IGNORE( iSession.OpenL() );
     
--- a/voipplugins/accountcreationplugin/rom/accountcreationplugin.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/accountcreationplugin/rom/accountcreationplugin.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -19,8 +19,8 @@
 #ifndef ACCOUNTCREATIONPLUGIN_IBY
 #define ACCOUNTCREATIONPLUGIN_IBY
 
-file=ABI_DIR\BUILD_DIR\accountcreationengine.dll SHARED_LIB_DIR\accountcreationengine.dll
+file=ABI_DIR/BUILD_DIR/accountcreationengine.dll SHARED_LIB_DIR/accountcreationengine.dll
 ECOM_PLUGIN( accountcreationplugin.dll, 1020E56D.rsc )
-data=DATAZ_\APP_BITMAP_DIR\acpicons.mif APP_BITMAP_DIR\acpicons.mif
+data=DATAZ_/APP_BITMAP_DIR/acpicons.mif APP_BITMAP_DIR/acpicons.mif
 
 #endif ACCOUNTCREATIONPLUGIN_IBY
--- a/voipplugins/accountcreationplugin/rom/accountcreationpluginresources.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/accountcreationplugin/rom/accountcreationpluginresources.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -20,6 +20,6 @@
 
 #include <bldvariant.hrh>
 
-data=DATAZ_\RESOURCE_FILES_DIR\accountcreationplugin.rsc RESOURCE_FILES_DIR\accountcreationplugin.rsc
+data=DATAZ_/RESOURCE_FILES_DIR/accountcreationplugin.rsc RESOURCE_FILES_DIR/accountcreationplugin.rsc
 
 #endif // ACCOUNTCREATIONPLUGINRESOURCES_IBY
--- a/voipplugins/ipapputils/rom/ipapputils.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/ipapputils/rom/ipapputils.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -19,7 +19,7 @@
 #ifndef IPAPPUTILS_IBY
 #define IPAPPUTILS_IBY
 
-file=ABI_DIR\BUILD_DIR\ipapputils.dll  SHARED_LIB_DIR\ipapputils.dll
+file=ABI_DIR/BUILD_DIR/ipapputils.dll  SHARED_LIB_DIR/ipapputils.dll
 
 
 #endif // IPAPPUTILS_IBY
--- a/voipplugins/ipapputils/voipeventlog/rom/voipeventlog.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/ipapputils/voipeventlog/rom/voipeventlog.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -19,7 +19,7 @@
 #ifndef VOIPEVENTLOG_IBY
 #define VOIPEVENTLOG_IBY
 
-file=ABI_DIR\BUILD_DIR\voipeventlog.dll  SHARED_LIB_DIR\voipeventlog.dll
+file=ABI_DIR/BUILD_DIR/voipeventlog.dll  SHARED_LIB_DIR/voipeventlog.dll
 
 #endif // VOIPEVENTLOG_IBY
 
--- a/voipplugins/sipconnectionprovider/inc/scpdefs.h	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/sipconnectionprovider/inc/scpdefs.h	Thu Aug 19 09:45:22 2010 +0300
@@ -31,11 +31,9 @@
     EScpDeregistered,           // = CSIPProfileRegistry::EventOccurred(EDeregistered)
     EScpRegistrationFailed,     // = CSIPProfileRegistry::ErrorOccurred(-34)
     EScpInvalidSettings,        // = CSIPProfileRegistry::ErrorOccurred(-6)
-    EScpBandwidthLimited,       // = ENWNetworkModeGsm
     EScpAuthenticationFailed,   // = KErrSIPForbidden
     EScpRoaming,                // = MSipProfileAlrObserver::EMigrationStarted
     EScpRegistrationCanceled,   // = CSIPProfileRegistry::ErrorOccurred(-3)
-    EScpBearerNotSupported,     // = RCSE parameter iAllowVoIPoverWCDMA
     EScpRegistrationPending     // = XIMP Bind / VMBX Subscribe(-11)
     };
 
--- a/voipplugins/sipconnectionprovider/inc/scpsettinghandler.h	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/sipconnectionprovider/inc/scpsettinghandler.h	Thu Aug 19 09:45:22 2010 +0300
@@ -139,14 +139,7 @@
      * @return TInt length of free string.
      */
     TInt UahStringLengthL( TUint32 aServiceId ) const;
-     
-    /**
-     * Checks is service's VoIP subservice allowed to use WCDMA.
-     * @param aServiceId service id
-     * @return ETrue if allowed to use VoIP over 3G, otherwise EFalse.
-     */
-    TBool IsVoIPOverWcdmaAllowedL( TUint32 aServiceId ) const;
-    
+         
 private: 
 
     /**
--- a/voipplugins/sipconnectionprovider/inc/scpsipconnection.h	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/sipconnectionprovider/inc/scpsipconnection.h	Thu Aug 19 09:45:22 2010 +0300
@@ -266,6 +266,17 @@
      * @return ETrue if available
      */
     TBool IsIapConnectionAvailable( TInt aIapId ) const;
+    
+    /**
+     * Gets bearer filttering setting used by sip profile.
+     * 0 --> Not Specified.
+     * 1 --> WLAN Bearer Only.
+     * 2 --> Cellular Data Bearer Only.
+     * @param aBearerFilttering bearer filttering setting
+     * 
+     * @return KErrNone if succeed.
+     */
+    TInt BearerFiltteringSetting( TUint32& aBearerFilttering ) const;
 
 #ifdef _DEBUG
     void GetInfo( TDes& aInfo ) const;
--- a/voipplugins/sipconnectionprovider/inc/scpsubservicestate.h	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/sipconnectionprovider/inc/scpsubservicestate.h	Thu Aug 19 09:45:22 2010 +0300
@@ -99,12 +99,6 @@
     virtual void ServiceDisconnected( CScpSubService& aSubService ) const;
 
     /**
-     * Bandwidth limited
-     * @param aSubService Sub service
-     */
-    virtual void BandwidthLimited( CScpSubService& aSubService ) const;
-
-    /**
      * Authentication failed
      * @param aSubService Sub service
      */
@@ -123,12 +117,6 @@
     virtual void ServiceConnectionCanceled( CScpSubService& aSubService ) const;
     
     /**
-     * Bearer is not supported
-     * @param aSubService Sub service
-     */
-    virtual void BearerNotSupported( CScpSubService& aSubService ) const;
-    
-    /**
      * Registration pending
      * @param aSubService Sub service
      */
--- a/voipplugins/sipconnectionprovider/ipvoicemailengine/rom/ipvoicemailengine.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/sipconnectionprovider/ipvoicemailengine/rom/ipvoicemailengine.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -21,6 +21,6 @@
     
 #include <data_caging_paths_for_iby.hrh>
     
-file=ABI_DIR\BUILD_DIR\ipvoicemailengine.dll          SHARED_LIB_DIR\ipvoicemailengine.dll
+file=ABI_DIR/BUILD_DIR/ipvoicemailengine.dll          SHARED_LIB_DIR/ipvoicemailengine.dll
 
 #endif // IPVOICEMAILENGINE_IBY
--- a/voipplugins/sipconnectionprovider/ipvoicemailengine/rom/ipvoicemailengine_resources.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/sipconnectionprovider/ipvoicemailengine/rom/ipvoicemailengine_resources.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -21,6 +21,6 @@
 
 #include <data_caging_paths_for_iby.hrh>
     
-data=DATAZ_\RESOURCE_FILES_DIR\ipvoicemailengine.rsc     RESOURCE_FILES_DIR\ipvoicemailengine.rsc
+data=DATAZ_/RESOURCE_FILES_DIR/ipvoicemailengine.rsc     RESOURCE_FILES_DIR/ipvoicemailengine.rsc
 
 #endif // IPVOICEMAILENGINE_RESOURCES_IBY
--- a/voipplugins/sipconnectionprovider/rom/sipconnectionprovider.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/sipconnectionprovider/rom/sipconnectionprovider.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -22,6 +22,6 @@
 #define __SIPCONNECTIONPROVIDER_IBY__
 
 ECOM_PLUGIN( sipconnectionprovider.dll, 1027545B.rsc )
-//data=ZSYSTEM\install\sipconnectionprovider_stub.sis System\Install\sipconnectionprovider_stub.sis
+//data=ZSYSTEM/install/sipconnectionprovider_stub.sis System/Install/sipconnectionprovider_stub.sis
 
 #endif // __SIPCONNECTIONPROVIDER_IBY__
--- a/voipplugins/sipconnectionprovider/src/scppresencehandler.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/sipconnectionprovider/src/scppresencehandler.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -244,6 +244,17 @@
     if ( iSubService.SipProfileId() == aProfileId &&
         iSubService.EnableRequestedState() != CScpSubService::EScpNoRequest )
         {
+        if ( EScpDeregistered == aEvent && 
+             iSubService.EnableRequestedState() == CScpSubService::EScpEnabled )
+            {
+            SCPLOGSTRING( "CScpPresenceHandler - EScpDeregistered -> unbind" );
+            TRAPD( err, HandleDeregistrationL( EFalse ) ); 
+            if ( KErrNotReady == err )
+                {
+                SCPLOGSTRING( "CScpPresenceHandler - EScpDeregistered -> not ready: unbind" );
+                TRAP_IGNORE( ServerUnBindL() );
+                }
+            }
         //if network lost, unbind context
         if ( EScpNetworkLost == aEvent )
             {
--- a/voipplugins/sipconnectionprovider/src/scpservicemanager.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/sipconnectionprovider/src/scpservicemanager.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -36,6 +36,8 @@
 const TInt KDomainMaxLength = 255;
 const TInt KTempBufMaxLength = 255;
 
+const TUint32 KBearerWlanOnly = 1;
+
 #ifdef _DEBUG
 const TInt KDebugInfoMaxLength = 255;
 #endif
@@ -1022,21 +1024,25 @@
 //
 void CScpServiceManager::CheckRestrictedConnectionsL( TUint aServiceId )
     {
-    if ( !iSettingHandler->IsVoIPOverWcdmaAllowedL( aServiceId ) )
-        {
-        SCPLOGSTRING( "CScpServiceManager::CheckRestrictedConnectionsL WCDMA not allowed" );
-        
-        TBool sipConnectionCreated( EFalse );
-        CScpSipConnection* sipConnection = GetSipConnectionL( 
+    TBool sipConnectionCreated( EFalse );
+    CScpSipConnection* sipConnection = GetSipConnectionL( 
                                                     aServiceId,
                                                     ECCHVoIPSub, 
                                                     sipConnectionCreated );
         
-        if( sipConnectionCreated )
-            {
-            CleanupStack::PushL( sipConnection );
-            }
+    if( sipConnectionCreated )
+        {
+        CleanupStack::PushL( sipConnection );
+        }
+    // Check bearer filttering setting from sip
+    TUint32 bearerFilttering( 0 );
+    TInt err = sipConnection->BearerFiltteringSetting( bearerFilttering );
         
+    SCPLOGSTRING2( "CScpServiceManager::CheckAvailableConnectionsL bearerFilttering = %d", bearerFilttering );
+    
+    if ( ( KErrNone == err ) && ( KBearerWlanOnly == bearerFilttering ) )
+        {
+        SCPLOGSTRING( "CScpServiceManager::CheckAvailableConnectionsL WLAN only" );
         TUint32 snapId( KErrNone );
         sipConnection->GetSnap( snapId );
         
@@ -1089,10 +1095,7 @@
         CleanupStack::PopAndDestroy( &cmm );
         CleanupStack::PopAndDestroy( &iaps );
         
-        if( sipConnectionCreated )
-            {
-            CleanupStack::PopAndDestroy( sipConnection );
-            }
+        
         
         if ( !available && wlanIapFound )
             {
@@ -1103,6 +1106,11 @@
             {
             User::Leave( KCCHErrorAccessPointNotDefined );
             }
+        } 
+    
+    if( sipConnectionCreated )
+        {
+        CleanupStack::PopAndDestroy( sipConnection );
         }
     }
     
--- a/voipplugins/sipconnectionprovider/src/scpsettinghandler.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/sipconnectionprovider/src/scpsettinghandler.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -22,8 +22,8 @@
 #include <spproperty.h>
 #include <spsettingsvoiputils.h>
 #include <pressettingsapi.h>
-#include <xdmsettingsapi.h>
-#include <xdmsettingscollection.h>
+#include <XdmSettingsApi.h>
+#include <XdmSettingsCollection.h>
 
 #include "scpsettinghandler.h"
 #include "scpservice.h"
@@ -1010,41 +1010,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// CScpSettingHandler::IsVoIPOverWcdmaAllowedL
-// -----------------------------------------------------------------------------
-//
-TBool CScpSettingHandler::IsVoIPOverWcdmaAllowedL( 
-    TUint32 aServiceId ) const
-    {
-    SCPLOGSTRING( "CScpSettingHandler::IsVoIPOverWcdmaAllowedL IN" );
-
-    TBool response( EFalse );
-    RPointerArray<CRCSEProfileEntry> entries;
-
-    // Push entries to cleanup stack
-    CleanupStack::PushL( TCleanupItem( TScpUtility::ResetAndDestroyEntries, 
-                                       &entries ) );
-
-    iRcseProfileRegistry->FindByServiceIdL( aServiceId, entries );
-    
-    if ( entries.Count() )
-        {            
-        response = CRCSEProfileEntry::EOn == entries[ 0 ]->iAllowVoIPoverWCDMA;
-        }
-    else
-        {
-        User::Leave( KErrNotFound );
-        }
-    
-    CleanupStack::PopAndDestroy( &entries );
-    
-    SCPLOGSTRING2( 
-        "CScpSettingHandler::IsVoIPOverWcdmaAllowedL : allowed : %d OUT", 
-            response );
-    return response;
-    }
-
-// -----------------------------------------------------------------------------
 // CScpSettingHandler::UpdateImSettingsL
 // -----------------------------------------------------------------------------
 //
--- a/voipplugins/sipconnectionprovider/src/scpsipconnection.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/sipconnectionprovider/src/scpsipconnection.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -1103,6 +1103,17 @@
     }
 
 // -----------------------------------------------------------------------------
+// CScpSipConnection::BearerFiltteringSetting
+// -----------------------------------------------------------------------------
+//
+TInt CScpSipConnection::BearerFiltteringSetting(
+    TUint32& aBearerFilttering ) const
+    {
+    SCPLOGSTRING2( "CScpSipConnection[0x%x]::BearerFiltteringSetting - IN", this );
+    return iSipProfile->GetParameter( KBearerType, aBearerFilttering );
+    }
+
+// -----------------------------------------------------------------------------
 // CScpSipConnection::ConnectionStateChanged
 // -----------------------------------------------------------------------------
 //
--- a/voipplugins/sipconnectionprovider/src/scpsubservice.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/sipconnectionprovider/src/scpsubservice.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -647,12 +647,6 @@
             }
             break;
 
-        case EScpBandwidthLimited:
-            {
-            iSubServiceState->BandwidthLimited( *this );
-            }
-            break;
-
         case EScpAuthenticationFailed:
             {
             iSubServiceState->AuthenticationFailed( *this );
@@ -671,13 +665,7 @@
             iSubServiceState->ServiceConnectionCanceled( *this );
             }
             break;
-            
-        case EScpBearerNotSupported:
-            {
-            iSubServiceState->BearerNotSupported( *this );
-            }
-            break;
-            
+                        
         case EScpRegistrationPending:
             {
             iSubServiceState->RegistrationPending( *this );
--- a/voipplugins/sipconnectionprovider/src/scpsubservicestate.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/sipconnectionprovider/src/scpsubservicestate.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -125,15 +125,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// TScpSubServiceState::BandwidthLimited
-// -----------------------------------------------------------------------------
-//
-void TScpSubServiceState::BandwidthLimited( CScpSubService& /*aSubService*/ ) const
-    {
-    SCPLOGSTRING( "TScpSubServiceState::BandwidthLimited" );
-    }
-
-// -----------------------------------------------------------------------------
 // TScpSubServiceState::AuthenticationFailed
 // -----------------------------------------------------------------------------
 //
@@ -161,15 +152,6 @@
     }
 
 // -----------------------------------------------------------------------------
-// TScpSubServiceState::BearerNotSupported
-// -----------------------------------------------------------------------------
-//
-void TScpSubServiceState::BearerNotSupported( CScpSubService& /*aSubService*/ ) const 
-    {
-    SCPLOGSTRING( "TScpSubServiceState::BearerNotSupported" );
-    }
-
-// -----------------------------------------------------------------------------
 // TScpSubServiceState::RegistrationPending
 // -----------------------------------------------------------------------------
 //
--- a/voipplugins/sipconnectionprovider/src/scpvoiphandler.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/sipconnectionprovider/src/scpvoiphandler.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -17,7 +17,6 @@
 
 
 #include <e32property.h>
-#include <networkhandlingdomainpskeys.h>
 #include <spdefinitions.h>
 #include "scpvoiphandler.h"
 #include "scpprofilehandler.h"
@@ -27,7 +26,6 @@
 #include "scpsettinghandler.h"
 #include "scpsipconnection.h"
 #include "scputility.h"
-#include "scppropertynotifier.h"
 #include "csipclientresolverutils.h"
 
 // : These need to be in some common header
@@ -53,8 +51,6 @@
     SCPLOGSTRING2( "CScpVoipHandler[0x%x]::ConstructL", this );
     
     BaseConstructL();
-    iNetworkMode = CScpPropertyNotifier::NewL( KPSUidNetworkInfo, 
-        KNWTelephonyNetworkMode, *this ) ;
     iSipClientResolver = CSipClientResolverUtils::NewL();
     }
 
@@ -82,7 +78,6 @@
     {
     SCPLOGSTRING2( "CScpVoipHandler[0x%x]::~CScpVoipHandler", this );
     delete iSipClientResolver;
-    delete iNetworkMode;
     }
 
 // -----------------------------------------------------------------------------
@@ -198,13 +193,11 @@
                                                 TScpConnectionEvent aEvent )
     {
     SCPLOGSTRING4( "CScpVoipHandler[0x%x]::HandleSipConnectionEvent id: %d event: %d",
-                   this, aProfileId, aEvent );
+        this, aProfileId, aEvent );
 
     if( iSubService.SipProfileId() == aProfileId &&
         iSubService.EnableRequestedState() != CScpSubService::EScpNoRequest )
         {
-        // When in 2G mode with GPRS iap we are enabled but can't
-        // create or receive any VoIP calls
         if( aEvent == EScpRegistered &&
             iSubService.EnableRequestedState() == CScpSubService::EScpEnabled )
             {
@@ -212,40 +205,11 @@
             contactHeaderUser.CleanupClosePushL();
             GetSipProfileContactHeaderUserL( contactHeaderUser );
             
-            HBufC* string = HBufC::NewLC(contactHeaderUser.Length());
-            string->Des().Copy(contactHeaderUser);
-         
-            SCPLOGSTRING2( "CScpVoipHandler::HandleSipConnectionEventL(), contactHeaderUser %S", string );
+            SCPLOGSTRING( "HandleSipConnectionEventL -> register client" );
             
-            CleanupStack::PopAndDestroy(string);
-
-            TInt networkMode = KErrNotFound;
-            TInt result = iNetworkMode->GetValue( networkMode );
-
-            if( result == KErrNone &&
-                networkMode == ENWNetworkModeGsm &&
-                iSubService.GetIapType() == EScpGprs )
-                {
-                aEvent = EScpBandwidthLimited;    
-                iSipClientResolver->UnRegisterClientWithUserL( 
-                    GetCallProviderImplementationUidL(), contactHeaderUser );
-                }
-            else if ( KErrNone == result &&
-                EScpGprs == iSubService.GetIapType() &&
-                !iSubService.ServiceStorage().SettingsHandler().IsVoIPOverWcdmaAllowedL( iSubService.SubServiceId() ) )
-                {
-                aEvent = EScpBearerNotSupported;
-                SCPLOGSTRING( "CScpVoipHandler::HandleSipConnectionEventL(), VoIP over 3G not allowed" );
-                iSipClientResolver->UnRegisterClientWithUserL( 
-                    GetCallProviderImplementationUidL(), contactHeaderUser );
-                }
-            else
-                {
-                iSipClientResolver->RegisterClientWithUserL( 
-                    GetCallProviderImplementationUidL(), contactHeaderUser, KResolver );
-                SCPLOGSTRING( "CScpVoipHandler::HandleSipConnectionEventL(), client resolver" );
-                }
-
+            iSipClientResolver->RegisterClientWithUserL( 
+                GetCallProviderImplementationUidL(), contactHeaderUser, KResolver );
+            
             CleanupStack::PopAndDestroy( &contactHeaderUser );
             }
 
--- a/voipplugins/voipadapters/cpgenvoipsettings/rom/wpgeneralvoipsettingsadapterresources.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/voipadapters/cpgenvoipsettings/rom/wpgeneralvoipsettingsadapterresources.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -21,6 +21,6 @@
 
 #include <bldvariant.hrh>
 
-data=DATAZ_\RESOURCE_FILES_DIR\wpgeneralvoipsettingsadapter.rsc       RESOURCE_FILES_DIR\wpgeneralvoipsettingsadapter.rsc
+data=DATAZ_/RESOURCE_FILES_DIR/wpgeneralvoipsettingsadapter.rsc       RESOURCE_FILES_DIR/wpgeneralvoipsettingsadapter.rsc
 
 #endif // __WPGENERALVOIPSETTINGSADAPTERRESOURCES_IBY__
--- a/voipplugins/voipadapters/cpgenvoipsettings/src/cwpgeneralvoipsettingsadapter.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/voipadapters/cpgenvoipsettings/src/cwpgeneralvoipsettingsadapter.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -20,7 +20,7 @@
 #include <CWPAdapter.h>
 #include <CWPCharacteristic.h>
 #include <CWPParameter.h>
-#include <WPGeneralVoIPSettingsAdapter.rsg>
+#include <wpgeneralvoipsettingsadapter.rsg>
 #include <bldvariant.hrh>
 #include <commdb.h>
 #include <e32des8.h>
--- a/voipplugins/voipadapters/cpvoipadapter/rom/wpvoipadapterresources.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/voipadapters/cpvoipadapter/rom/wpvoipadapterresources.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -21,6 +21,6 @@
 
 #include <bldvariant.hrh>
 
-data=DATAZ_\RESOURCE_FILES_DIR\wpvoipadapter.rsc        RESOURCE_FILES_DIR\wpvoipadapter.rsc
+data=DATAZ_/RESOURCE_FILES_DIR/wpvoipadapter.rsc        RESOURCE_FILES_DIR/wpvoipadapter.rsc
 
 #endif // __WPVOIPADAPTERRESOURCES_IBY__
--- a/voipplugins/voipadapters/cpvoipadapter/src/CWPVoIPAdapter.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/voipadapters/cpvoipadapter/src/CWPVoIPAdapter.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -21,7 +21,7 @@
 #include <CWPAdapter.h>
 #include <CWPCharacteristic.h>
 #include <CWPParameter.h>
-#include <WPVoIPAdapter.rsg>
+#include <wpvoipadapter.rsg>
 #include <WPAdapterUtil.h> // Adapter utils
 #include <s32mem.h>        // RDesWriteStream
 #include <s32strm.h>
--- a/voipplugins/voipadapters/cpvoipadapter/src/CWPVoIPItem.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/voipadapters/cpvoipadapter/src/CWPVoIPItem.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -18,7 +18,7 @@
 
 // INCLUDE FILES
 #include <e32std.h>
-#include    <WPVoIPAdapter.rsg>
+#include    <wpvoipadapter.rsg>
 #include    <charconv.h>
 #include    <in_sock.h>                // TInetAddr, TSockAddr
 #include    <crcseprofileentry.h>
@@ -73,6 +73,11 @@
 const TUint32 KIMLaunchUid          = 0x200255D0;
 const TInt    KIMSettingsId         = 1;
 
+// Bearer related constants
+const TUint32 KBearerNotSpecified = 0;
+const TUint32 KBearerWlanOnly = 1;
+const TUint32 KBearerCellularOnly = 2;
+
 // Following lines are for enabling debug prints.
 #ifdef _DEBUG
 #define DBG_PRINT(p) RDebug::Print(_L(p))
@@ -877,9 +882,22 @@
             priorityArray.Append( iCodecs[codecIndex]->iPriorityIndex );
             }
         priorityArray.Sort();
+        
+        //delete possible duplicate priority index
+        for ( TInt index = 0; index < priorityArray.Count()-1; ++index )
+            {
+            TInt tmpIndex = index + 1; 
+            while ( tmpIndex < priorityArray.Count() &&
+                    priorityArray[tmpIndex] == priorityArray[index] )
+                {
+                priorityArray.Remove( tmpIndex );
+                }
+            }
+
         RPointerArray<CWPVoIPCodec> tmpArray;
 
-        for ( TInt priorityIndex = 0; priorityIndex < numberOfCodecs; 
+        TInt numberOfPriority = priorityArray.Count();
+        for ( TInt priorityIndex = 0; priorityIndex < numberOfPriority; 
             priorityIndex++ )
             {
             for ( TInt codecIndex = 0; codecIndex < numberOfCodecs; 
@@ -992,13 +1010,6 @@
         cRCSEProfileEntry->iVoIPPluginUID = iVoIPPluginUid;
         }
 
-    // AllowVoIPOverWCDMA
-    if ( KNotSet != iAllowVoIPOverWCDMA )
-        {
-        cRCSEProfileEntry->iAllowVoIPoverWCDMA = 
-            static_cast<VoIPProfileEntry::TOnOff>( iAllowVoIPOverWCDMA );
-        }
-
     // VoIPDigits
     if ( KNotSet != iVoIPDigits )
         {
@@ -1569,6 +1580,7 @@
         CleanupStack::PushL( sipManagedProf ); // CS:4
         sipManagedProf->SetParameter( KSIPSnapId, iSnapId );
         sipManagedProf->SetParameter( KSIPAccessPointId, (TUint32)0 );
+        DBG_PRINT2( "CWPVoIPItem::SavingFinalizedL - SNAP ID (1): %d", iSnapId );
         sipReg->SaveL( *sipManagedProf );
         CleanupStack::PopAndDestroy( sipManagedProf ); // CS:3
         CleanupStack::Pop( sipProf ); // CS:2
@@ -1718,6 +1730,7 @@
                 // Update sip profile to use default snap
                 sipManagedProf->SetParameter( KSIPAccessPointId, (TUint32)0 );
                 sipManagedProf->SetParameter( KSIPSnapId, iSnapId );
+                DBG_PRINT2( "CWPVoIPItem::SavingFinalizedL - SNAP ID (2): %d", iSnapId );
                 sipReg->SaveL( *sipManagedProf );
                 }
             }
@@ -1727,6 +1740,7 @@
         sipProf = NULL;
         // sipReg, sipObs
         CleanupStack::PopAndDestroy( 2, sipObs ); // CS:0
+        sipReg = NULL;
         }
 
     if ( iSnapIdSet )
@@ -1772,6 +1786,51 @@
     DBG_PRINT( "CWPVoIPItem::SavingFinalizedL - \
         Service provider entry updated" );
 
+    DBG_PRINT2( "CWPVoIPItem::SavingFinalizedL - \
+        set allow VoIP over wcdma iAlowVoIPOverWCDMA=%d", iAllowVoIPOverWCDMA );
+    
+    //***********************
+    // Allow VoIP over WCDMA
+    //***********************
+    CSIPProfileRegistryObserver* sipObs = 
+        CSIPProfileRegistryObserver::NewLC(); // CS:1
+    CSIPManagedProfileRegistry* sipReg =
+        CSIPManagedProfileRegistry::NewLC( *sipObs ); // CS:2
+    CSIPProfile* sipProf = NULL;
+    sipProf = sipReg->ProfileL( iSipId );
+    CleanupStack::PushL( sipProf ); // CS:3
+    CSIPManagedProfile* sipManagedProf = 
+        static_cast<CSIPManagedProfile*>( sipProf );
+    CleanupStack::PushL( sipManagedProf ); // CS:4
+        
+    if ( iAllowVoIPOverWCDMA == 1 )
+        {
+        DBG_PRINT( "CWPVoIPItem::SavingFinalizedL - \
+          set bearer not specified" );
+    
+        // If VoIP is allowed over wcdma set bearer type to sip as 
+        // not specified.
+        sipManagedProf->SetParameter( KBearerType, KBearerNotSpecified );
+        }
+    else
+        {
+        DBG_PRINT( "CWPVoIPItem::SavingFinalizedL - \
+            set bearer setting wlan only" );
+    
+        // If not allowed set bearer type to sip as wlan only
+        sipManagedProf->SetParameter( KBearerType, KBearerWlanOnly );
+        }
+    
+    sipReg->SaveL( *sipManagedProf );   
+    CleanupStack::PopAndDestroy( sipManagedProf ); // CS:3
+    CleanupStack::Pop( sipProf ); // CS:2
+    sipProf = NULL;
+    // sipReg, sipObs
+    CleanupStack::PopAndDestroy( 2, sipObs ); // CS:0
+    
+    DBG_PRINT( "CWPVoIPItem::SavingFinalizedL - \
+      bearer settings set" );
+
     // property, spEntry spSettings, cRCSEProfileEntry, cRCSEProfileRegistry
     CleanupStack::PopAndDestroy( 5, cRCSEProfileRegistry ); // CS:0
     iSipIdSet = EFalse;
--- a/voipplugins/voipadapters/dmvoipadapter/inc/nsmldmvoipadapter.h	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/voipadapters/dmvoipadapter/inc/nsmldmvoipadapter.h	Thu Aug 19 09:45:22 2010 +0300
@@ -623,6 +623,22 @@
          * Array for service provider settings.
          */
         RPointerArray<CDMVoIPSPSettings> iSPSettings;
+
+        /**
+         * the temporary string used to fetch profile id 
+         */
+        HBufC8* iTempProfileIdObject;
+
+        /**
+         * flag which indicates whether the profile type is set or not
+         */
+        TBool iIsProfileTypeSet;
+        
+        /**
+         * flag which indicates whether the AllowVoIPOverWCDMA flag is 
+         * modified or not
+         */
+        TBool iAllowVoIPOverWCDMAModified;
     };
 
 #endif // __NSMLDMVOIPADAPTER_H__
--- a/voipplugins/voipadapters/dmvoipadapter/src/nsmldmvoipadapter.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/voipadapters/dmvoipadapter/src/nsmldmvoipadapter.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -242,6 +242,11 @@
 // Default IM message tone
 _LIT( KDefaultTone,       "Message 2.aac" );
 
+// Bearer related constants
+const TUint32 KBearerNotSpecified = 0;
+const TUint32 KBearerWlanOnly = 1;
+const TUint32 KBearerCellularOnly = 2;
+
 // ---------------------------------------------------------------------------
 // CNSmlDmVoIPAdapter::ConstructL
 // Symbian 2nd phase constructor can leave.
@@ -302,7 +307,7 @@
         {
         delete iCRCSEProfile; 
         }
-
+    delete iTempProfileIdObject;
     iProfileModifs.Close();
     iCodecModifs.Close();
 
@@ -1268,6 +1273,7 @@
             {
             retValue = CSmlDmAdapter::EInvalidObject;   
             }
+        iAllowVoIPOverWCDMAModified = ETrue; 
         }
     // VoIP/x/VoIPDigits
     else if ( KNSmlDMVoIPVoIPDigits() == uriSeg )
@@ -1831,11 +1837,56 @@
             {
             iProfileEntries[iProfileID]->iIds[DesToInt( 
                 LastURISeg( aLUID ).Right( 10 ))].iProfileType = 0;
+            // If the profile id is not saved and the string to fetch it is only temporaly stored,
+            // the profile id will be fetched from previously-stored member value and set as well 
+            // when saveing the profiletype.
+            if( iTempProfileIdObject )
+                {
+                TUint32 profileId = SetSipRefL( *iTempProfileIdObject ); 
+                if ( profileId > 0 )
+                    {
+                    // Set profileId to settingsids.
+                    iProfileEntries[iProfileID]->
+                        iIds[DesToInt( LastURISeg( aLUID ).Right( 10 ))].
+                        iProfileId = profileId;
+                    retValue = CSmlDmAdapter::EOk;
+                    }
+                else
+                    {
+                    retValue = CSmlDmAdapter::EInvalidObject;
+                    }       
+                } 
+            iIsProfileTypeSet = ETrue;
+            delete iTempProfileIdObject;
+            iTempProfileIdObject = NULL;
             }
         else if ( KNSmlDMVoIPProfileTypeSCCP() == aObject )
             {
             iProfileEntries[iProfileID]->iIds[DesToInt( 
                 LastURISeg( aLUID ).Right( 10 ))].iProfileType = 1;
+            // If the profile id is not saved and the string to fetch it is only temporaly stored,
+            // the profile id will be fetched from previously-stored member value and set as well 
+            // when saveing the profiletype.
+            if( iTempProfileIdObject )
+                {
+                TUint32 profileId = SetSccpRefL( *iTempProfileIdObject ); 
+                // profileId can be zero
+                if ( profileId > 0 || 0 == profileId )
+                    {
+                    // set profileId to settingsids
+                    iProfileEntries[iProfileID]->iIds[DesToInt( 
+                        LastURISeg( aLUID ).Right( 10 ))].
+                        iProfileId = profileId;
+                    retValue = CSmlDmAdapter::EOk;
+                    }
+                else
+                    {
+                    retValue = CSmlDmAdapter::EInvalidObject;
+                    }
+                }
+            iIsProfileTypeSet = ETrue;
+            delete iTempProfileIdObject;
+            iTempProfileIdObject = NULL;       
             }
         else
             {
@@ -1883,6 +1934,17 @@
                 retValue = CSmlDmAdapter::EInvalidObject;
                 }
             }
+        // If the ProfileType has not been set yet,
+        // the string used to fetch ProfileId temporarily is stored to a member value. 
+        else if ( !iIsProfileTypeSet )
+            {
+            if( iTempProfileIdObject )
+            	{
+            	delete iTempProfileIdObject;
+            	iTempProfileIdObject = NULL;
+            	}
+                iTempProfileIdObject = aObject.AllocL();
+            }
         else
             {
             // no SCCP or SIP type found
@@ -2275,21 +2337,45 @@
     // VoIP/x/AllowVoIPOverWCDMA
     else if ( KNSmlDMVoIPAllowVoIPOverWCDMA() == uriSeg )
         {
-        if ( Entry::EOONotSet == iProfileEntries[iProfileID]->
-            iAllowVoIPoverWCDMA )
+        TInt sipProfileId(0);
+        TUint32 bearerFilttering(0);
+        
+        for ( TInt index = 0; index < iProfileEntries[iProfileID]->
+                iIds.Count(); index++ )
             {
-            segmentResult.Copy( KNSmlDMVoIPValueNotSet );
+            if ( iProfileEntries[iProfileID]->iIds[index].iProfileType == 0 )
+                {
+                sipProfileId = iProfileEntries[iProfileID]->
+                    iIds[index].iProfileId;
+                break;
+                }
             }
-        if ( Entry::EOn == iProfileEntries[iProfileID]->
-            iAllowVoIPoverWCDMA )
+        
+        CSIPProfile* sipProf = NULL;
+        CSIPProfileRegistryObserver* sipRegObs =
+            CSIPProfileRegistryObserver::NewLC(); // CS:1
+        CSIPManagedProfileRegistry* sipProfReg = 
+            CSIPManagedProfileRegistry::NewLC( *sipRegObs ); // CS:2
+        TRAPD( err, ( sipProf = sipProfReg->ProfileL( sipProfileId ) ) );
+        
+        if ( KErrNone == err )
+            {
+            User::LeaveIfError( sipProf->GetParameter( 
+                KBearerType, bearerFilttering ) );
+            }
+        
+        CleanupStack::PopAndDestroy( sipProfReg ); // CS:1
+        CleanupStack::PopAndDestroy( sipRegObs ); // CS:0
+        
+        if ( bearerFilttering == KBearerWlanOnly )
+            {
+            segmentResult.Copy( KNSmlDMVoIPValueFalse );
+            }
+        
+        else if ( bearerFilttering == KBearerNotSpecified )
             {
             segmentResult.Copy( KNSmlDMVoIPValueTrue );
             }
-        if ( Entry::EOff == iProfileEntries[iProfileID]->
-            iAllowVoIPoverWCDMA )
-            {
-            segmentResult.Copy( KNSmlDMVoIPValueFalse );
-            }
         }
     // VoIP/x/VoIPDigits
     else if ( KNSmlDMVoIPVoIPDigits() == uriSeg )
@@ -4288,13 +4374,14 @@
                 if ( ( 0 == iProfileEntries[counter]->
                     iIds[index].iProfileType ) 
                     && iProfileEntries[counter]->
-                        iIds[index].iProfileId > 1
+                        iIds[index].iProfileId > 0
                     && ( iProfileEntries[counter]->
                         iSIPVoIPUAHTerminalType ||
                         iProfileEntries[counter]->
                         iSIPVoIPUAHeaderWLANMAC ||
                         iProfileEntries[counter]->
-                        iSIPVoIPUAHeaderString.Length() > 0 ) )
+                        iSIPVoIPUAHeaderString.Length() > 0 ||
+                        iAllowVoIPOverWCDMAModified ) )
                     {
                     // Create objects that allow the creation of
                     // CSIPManagedProfile object.
@@ -4356,6 +4443,27 @@
                                 sipManProf->SetParameter( 
                                 KSIPHeaders, *uahArray ) );
                             }
+                        
+                        if ( iAllowVoIPOverWCDMAModified )
+                            {
+                            if ( iProfileEntries[iProfileID]->
+                                    iAllowVoIPoverWCDMA == 
+                                     CRCSEProfileEntry::EOn )
+                                {
+                                User::LeaveIfError( 
+                                    sipManProf->SetParameter( 
+                                    KBearerType, KBearerNotSpecified ) );
+                                }
+                            else if ( iProfileEntries[iProfileID]->
+                                         iAllowVoIPoverWCDMA ==
+                                         CRCSEProfileEntry::EOff )
+                                {
+                                User::LeaveIfError( 
+                                    sipManProf->SetParameter( 
+                                    KBearerType, KBearerWlanOnly ) );
+                                }
+                            iAllowVoIPOverWCDMAModified = EFalse;
+                            }
 
                         sipProfReg->SaveL( *sipManProf );
                         uahArray->Reset();
--- a/voipplugins/voipadapters/provisioningfile/rom/provisioningfile.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/voipadapters/provisioningfile/rom/provisioningfile.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -20,7 +20,7 @@
 #define PROVISIONINGFILE_IBY
 
 // File provisioning
-file=ABI_DIR\BUILD_DIR\ProvisioningFile.dll       SHARED_LIB_DIR\ProvisioningFile.dll
+file=ABI_DIR/BUILD_DIR/ProvisioningFile.dll       SHARED_LIB_DIR/ProvisioningFile.dll
 
 #endif // PROVISIONINGFILE_IBY
 
--- a/voipplugins/voipadapters/voipxmlprovisioning/provisioningappui/Src/VoIPProvisioningAppUi.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/voipadapters/voipxmlprovisioning/provisioningappui/Src/VoIPProvisioningAppUi.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -20,7 +20,7 @@
 #include <eikdoc.h>
 #include <StringLoader.h>
 #include <AknQueryDialog.h>
-#include <VoIPProvisioningApp.rsg>
+#include <voipprovisioningapp.rsg>
 #include <aknnotewrappers.h>
 #include <apgcli.h> // RApaLsSession
 #include <bautils.h>
--- a/voipplugins/voipadapters/voipxmlprovisioning/rom/voipxmlprovisioning.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/voipadapters/voipxmlprovisioning/rom/voipxmlprovisioning.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -22,7 +22,7 @@
 
 #include <data_caging_paths_for_iby.hrh>
 
-    file=ABI_DIR\BUILD_DIR\voipxmlprocessor.dll SHARED_LIB_DIR\voipxmlprocessor.dll
+    file=ABI_DIR/BUILD_DIR/voipxmlprocessor.dll SHARED_LIB_DIR/voipxmlprocessor.dll
 
     ECOM_PLUGIN( voipprovrec.dll, 20026FE1.rsc )
 
--- a/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/inc/voipxmlprocessordefaults.h	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/inc/voipxmlprocessordefaults.h	Thu Aug 19 09:45:22 2010 +0300
@@ -131,6 +131,8 @@
 
 // Other.
 const TInt KMaxNodeNameLength          = 32;
+const TInt KMaxDestinationNameLength   = 32;
+const TInt KSpaceForParenthesis        = 4;
 const TInt KMaxNodeValueLength         = 256;
 const TInt KMaxProfileNameAppendLength = 4; // e.g. (10) as in Provider(10)
 const TInt KMaxProfileNames            = 99;
@@ -161,6 +163,7 @@
 _LIT8( KColon,              ":" );
 _LIT8( KTcp,                "TCP" );
 _LIT8( KUdp,                "UDP" );
+_LIT8( KTls,                "TLS" );
 _LIT8( KUserAgent,          "User-Agent" );
 _LIT8( KSpace,              " " );
 const TInt KMaxTerminalTypeLength            = 64;
--- a/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/inc/voipxmlsiphandler.h	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/inc/voipxmlsiphandler.h	Thu Aug 19 09:45:22 2010 +0300
@@ -48,7 +48,8 @@
         {
         EAutomatic = 0,
         EUdp,
-        ETcp
+        ETcp,
+        ETls
         };
 public:
 
--- a/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/rom/provisioningapi.iby	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/rom/provisioningapi.iby	Thu Aug 19 09:45:22 2010 +0300
@@ -21,7 +21,7 @@
 #include <data_caging_paths_for_iby.hrh>
 
 #ifdef __VOIP
-    file=ABI_DIR\BUILD_DIR\provisioningapi.dll SHARED_LIB_DIR\provisioningapi.dll
+    file=ABI_DIR/BUILD_DIR/provisioningapi.dll SHARED_LIB_DIR/provisioningapi.dll
 #endif // __VOIP
 
 #endif // PROVISIONINGAPI_IBY
--- a/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmliaphandler.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmliaphandler.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -522,9 +522,16 @@
         // Get destination ID's for checking if name to be set is reserved.
         CleanupClosePushL( destinationIds ); // CS:3
         cmm.AllDestinationsL( destinationIds );
-        HBufC* newName = HBufC::NewLC( KMaxNodeNameLength ); // CS:4
-        newName->Des().Copy( iDestinationName->Des() );
-
+        HBufC* newName = HBufC::NewLC( KMaxDestinationNameLength + KSpaceForParenthesis ); // CS:4
+        if( iDestinationName->Des().Length() >= KMaxDestinationNameLength )
+            {
+            newName->Des().Copy( iDestinationName->Left( KMaxDestinationNameLength ) );
+            }
+        else
+            {
+            newName->Des().Copy( iDestinationName->Des() );
+            }
+        
         // Check that name is unique.
         const TInt destinationCount = destinationIds.Count();
         for ( TInt counter = 0; counter < destinationCount; counter++ )
@@ -538,7 +545,14 @@
                 {
                 // If the name is changed we need to begin the comparison
                 // again from the first profile.
-                newName->Des().Copy( iDestinationName->Des() );
+                if ( iDestinationName->Des().Length() >= KMaxDestinationNameLength )
+                    {
+                    newName->Des().Copy( iDestinationName->Left( KMaxDestinationNameLength ) );
+                    }
+                else
+                    {
+                    newName->Des().Copy( iDestinationName->Des() );
+                    }
                 newName->Des().Append( KOpenParenthesis() );
                 newName->Des().AppendNum( i );
                 newName->Des().Append( KClosedParenthesis() );  
@@ -571,6 +585,37 @@
         // &newDestination, newName, &destinationIds
         CleanupStack::PopAndDestroy( 3, &destinationIds ); // CS:2
         }
+    
+    // no destination name is defined.
+    else 
+        {
+        RArray<TUint32> destinationIds;
+        CleanupClosePushL( destinationIds ); // CS:3
+        cmm.AllDestinationsL( destinationIds );
+        const TInt count = destinationIds.Count();
+        for (TInt counter = 0; counter < count ; counter ++)     
+            {
+            RCmDestinationExt destination = cmm.DestinationL( destinationIds[counter] );
+            CleanupClosePushL( destination ); // CS:4
+            if ( destination.MetadataL(
+                    CMManager::ESnapMetadataPurpose) == CMManager::ESnapPurposeInternet )
+               {
+               const TInt cmCount = iapIds.Count();
+               for ( TInt i = 0; i < cmCount; i++ ) 
+                   {
+                   RCmConnectionMethodExt connection = cmm.ConnectionMethodL(iapIds[i] );
+                   CleanupClosePushL( connection );
+                   destination.AddConnectionMethodL(connection );
+                   CleanupStack::PopAndDestroy( &connection );
+               }
+           } 
+           destination.UpdateL();
+           CleanupStack::PopAndDestroy( &destination ); // CS:3
+           CleanupStack::PopAndDestroy( &destinationIds ); // CS:2
+           break;
+           }
+        }
+    
     // &iapIds, &cmm
     CleanupStack::PopAndDestroy( 2, &cmm ); // CS:0
     }
--- a/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlsiphandler.cpp	Mon Jun 21 15:29:21 2010 +0300
+++ b/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlsiphandler.cpp	Thu Aug 19 09:45:22 2010 +0300
@@ -383,6 +383,11 @@
         tempBuf.Append( KTransport() );
         tempBuf.Append( KTcp() );
         }
+    else if ( ETls == iProxyTransport )
+        {
+        tempBuf.Append( KTransport() );
+        tempBuf.Append( KTls() );
+        }
     if ( iLr )
         {
         tempBuf.Append( KLr() );
@@ -417,6 +422,11 @@
         tempBuf.Append( KTransport() );
         tempBuf.Append( KTcp() );
         }
+    else if ( ETls == iProxyTransport )
+        {
+        tempBuf.Append( KTransport() );
+        tempBuf.Append( KTls() );
+        }
     if ( iRegistrarUri->Des().MaxLength() >= 
         ( iRegistrarUri->Des().Length() + tempBuf.Length() ) )
         {
@@ -587,6 +597,10 @@
         {
         return ETcp;
         }
+    else if ( 0 == value.Compare( KTls() ) )
+        {
+        return ETls;
+        }
     else
         {
         return EAutomatic;