# HG changeset patch # User Dremov Kirill (Nokia-D-MSW/Tampere) # Date 1282200322 -10800 # Node ID 65a3ef1d5bd0c7f762de758b133ee38edc2a87a0 # Parent 8c9c07ad8b6bda2e4d5377a92d98e0af642fc7c7 Revision: 201031 Kit: 201033 diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 callcontinuity/rom/vcc.iby --- 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 -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 diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 callcontinuity/rom/vccresources.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 diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 commsconfig/cscapplicationui/data/csc.rss --- 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 }; } diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 commsconfig/cscengine/src/cscengcchhandler.cpp --- 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 ); diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 commsconfig/cscsettingsui/inc/cscsettingsuimaincontainer.h --- 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. diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 commsconfig/cscsettingsui/inc/cscsettingsuimainview.h --- 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. diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 commsconfig/cscsettingsui/src/cscsettingsuimaincontainer.cpp --- 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; } // --------------------------------------------------------------------------- diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 commsconfig/cscsettingsui/src/cscsettingsuimainview.cpp --- 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() ); } } diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 commsconfig/help/data/xhtml.zip Binary file commsconfig/help/data/xhtml.zip has changed diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 commsconfig/help/rom/cscapplicationuihelps_variant.iby --- 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 diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 commsconfig/rom/csc.iby --- 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) diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 commsconfig/rom/cscresources.iby --- 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) diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 convergedconnectionhandler/cchclientapi/cchuinotif/group/cchuinotif.mmp --- 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 diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 convergedconnectionhandler/cchclientapi/cchuinotif/inc/cchuinotifierimpl.h --- 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 // for dialog types #include +#include #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& 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 ) }; diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 convergedconnectionhandler/cchclientapi/cchuinotif/src/cchuinotifierimpl.cpp --- 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 #include #include +#include +#include #include // 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 entries; + + CleanupStack::PushL( TCleanupItem ( ResetAndDestroy, &entries ) ); //CS + cRCSEProfileRegistry->FindByServiceIdL( iServiceId, entries ); if( entries.Count() ) { - ret = CRCSEProfileEntry::EOn == entries[ 0 ]->iAllowVoIPoverWCDMA; + RArray 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* array = + reinterpret_cast*>( 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*/ ) + { + } diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 convergedconnectionhandler/rom/cch.iby --- 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 diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 convergedconnectionhandler/rom/cchresources.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 diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 iptel_plat/cch_client_api/inc/cchclient.h --- 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 #include -#include "CCHServer.h" -#include "CCHClientServer.h" +#include "cchserver.h" +#include "cchclientserver.h" // CONSTANTS // None diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 iptel_plat/cch_client_api/inc/cchclientserver.h --- 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 -#include +#include #include // CONSTANTS const TUint KCCHMaxServiceNameLength = 64; @@ -203,7 +203,7 @@ TFixedArray iSubservices; }; -#include "CCHClientServer.inl" +#include "cchclientserver.inl" #endif // T_CCHCLIENTSERVER_H diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 iptel_plat/cch_server_api/inc/cchservice.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 #include -#include "CCHServiceObserver.h" +#include "cchserviceobserver.h" // CONSTANTS @@ -235,7 +235,7 @@ }; -#include "CCHService.inl" +#include "cchservice.inl" #endif // C_CCHSERVICE_H diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 iptel_plat/cch_server_api/inc/cchservice.inl --- 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 diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 richcallsettingsengine/rcse2/rom/rcse2.iby --- 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 diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 richcallsettingsengine/rcse2/src/crcseaudiocodecentry.cpp --- 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; diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 sipvoipprovider/inc/svpconsts.h --- 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 diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 sipvoipprovider/src/svpcontroller.cpp --- 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++; } } diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 sipvoipprovider/src/svpsessionbase.cpp --- 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 ); diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 sipvoipprovider/src/svpsslogcall.cpp --- 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"); } diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 sipvoipprovider/svphold/src/svpholdcontroller.cpp --- 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 ) diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 sipvoipprovider/svptransfer/src/svptransferstatecontext.cpp --- 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; } diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/accountcreationplugin/engine/src/acphttphandler.cpp --- 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() ); diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/accountcreationplugin/rom/accountcreationplugin.iby --- 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 diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/accountcreationplugin/rom/accountcreationpluginresources.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 -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 diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/ipapputils/rom/ipapputils.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 diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/ipapputils/voipeventlog/rom/voipeventlog.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 diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/sipconnectionprovider/inc/scpdefs.h --- 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) }; diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/sipconnectionprovider/inc/scpsettinghandler.h --- 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: /** diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/sipconnectionprovider/inc/scpsipconnection.h --- 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; diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/sipconnectionprovider/inc/scpsubservicestate.h --- 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 */ diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/sipconnectionprovider/ipvoicemailengine/rom/ipvoicemailengine.iby --- 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 -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 diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/sipconnectionprovider/ipvoicemailengine/rom/ipvoicemailengine_resources.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=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 diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/sipconnectionprovider/rom/sipconnectionprovider.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__ diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/sipconnectionprovider/src/scppresencehandler.cpp --- 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 ) { diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/sipconnectionprovider/src/scpservicemanager.cpp --- 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 ); } } diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/sipconnectionprovider/src/scpsettinghandler.cpp --- 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 #include #include -#include -#include +#include +#include #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 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 // ----------------------------------------------------------------------------- // diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/sipconnectionprovider/src/scpsipconnection.cpp --- 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 // ----------------------------------------------------------------------------- // diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/sipconnectionprovider/src/scpsubservice.cpp --- 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 ); diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/sipconnectionprovider/src/scpsubservicestate.cpp --- 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 // ----------------------------------------------------------------------------- // diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/sipconnectionprovider/src/scpvoiphandler.cpp --- 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 -#include #include #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 ); } diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/voipadapters/cpgenvoipsettings/rom/wpgeneralvoipsettingsadapterresources.iby --- 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 -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__ diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/voipadapters/cpgenvoipsettings/src/cwpgeneralvoipsettingsadapter.cpp --- 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 #include #include -#include +#include #include #include #include diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/voipadapters/cpvoipadapter/rom/wpvoipadapterresources.iby --- 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 -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__ diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/voipadapters/cpvoipadapter/src/CWPVoIPAdapter.cpp --- 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 #include #include -#include +#include #include // Adapter utils #include // RDesWriteStream #include diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/voipadapters/cpvoipadapter/src/CWPVoIPItem.cpp --- 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 -#include +#include #include #include // TInetAddr, TSockAddr #include @@ -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 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( 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( 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; diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/voipadapters/dmvoipadapter/inc/nsmldmvoipadapter.h --- 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 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__ diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/voipadapters/dmvoipadapter/src/nsmldmvoipadapter.cpp --- 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(); diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/voipadapters/provisioningfile/rom/provisioningfile.iby --- 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 diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/voipadapters/voipxmlprovisioning/provisioningappui/Src/VoIPProvisioningAppUi.cpp --- 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 #include #include -#include +#include #include #include // RApaLsSession #include diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/voipadapters/voipxmlprovisioning/rom/voipxmlprovisioning.iby --- 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 - 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 ) diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/inc/voipxmlprocessordefaults.h --- 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; diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/inc/voipxmlsiphandler.h --- 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: diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/rom/provisioningapi.iby --- 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 #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 diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmliaphandler.cpp --- 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 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 } diff -r 8c9c07ad8b6b -r 65a3ef1d5bd0 voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlsiphandler.cpp --- 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;