voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlvoiphandler.cpp
branchRCL_3
changeset 21 f742655b05bf
parent 20 65a3ef1d5bd0
child 22 d38647835c2e
--- a/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlvoiphandler.cpp	Thu Aug 19 09:45:22 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1311 +0,0 @@
-/*
-* Copyright (c) 2009-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"
-* which accompanies this distribution, and is available
-* at the URL "http://www.eclipse.org/legal/epl-v10.html".
-*
-* Initial Contributors:
-* Nokia Corporation - initial contribution.
-*
-* Contributors:
-*
-* Description:  VoIP settings handler
-*
-*/
-
-
-#include <crcseaudiocodecregistry.h>
-#include <crcseprofileregistry.h>
-#include <spsettings.h>
-#include <spproperty.h>
-#include <spdefinitions.h>
-#include <sipmanagedprofile.h>
-#include <sipmanagedprofileregistry.h>
-#include <cipappphoneutils.h>           // SIP User-Agent header info.
-#include <cipapputilsaddressresolver.h> // SIP User-Agent header info.
-#include <pathinfo.h>                   // For getting phone rom root path.
-#include <cvimpstsettingsstore.h>       // For IM tone path
-#include <settingsinternalcrkeys.h>     // For default service.
-#include <centralrepository.h>          // For default service.
-
-#include "voipxmlvoiphandler.h"
-#include "voipxmlprocessorlogger.h"
-#include "voipxmlprocessordefaults.h"
-#include "voipxmlutils.h"
-
-const TInt32 KCCHPresenceSubServicePlugId = 0x1027545A;
-// IM related constants.
-const TUint32 KIMSubServicePluginId = 0x1027545A;
-const TUint32 KIMLaunchUid          = 0x200255D0;
-const TInt    KIMSettingsId         = 1;
-// Default IM message tone
-_LIT( KDefaultTone,       "Message 2.aac" );
-// Brand related constants.
-const TInt KBrandVersion = 1;
-
-// ---------------------------------------------------------------------------
-// Default constructor.
-// ---------------------------------------------------------------------------
-//
-CVoipXmlVoipHandler::CVoipXmlVoipHandler()
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// ConstructL
-// ---------------------------------------------------------------------------
-//
-void CVoipXmlVoipHandler::ConstructL()
-    {
-    DBG_PRINT( "CVoipXmlVoipHandler::ConstructL begin" );
-    iRegistry      = CRCSEProfileRegistry::NewL();
-    iCodecRegistry = CRCSEAudioCodecRegistry::NewL();
-    iEntry         = CRCSEProfileEntry::NewL();
-    ResetTempCodec();
-    ResetTempSpSettings();
-    iSettingsSet = EFalse;
-    DBG_PRINT( "CVoipXmlVoipHandler::ConstructL end" );
-    }
-
-// ---------------------------------------------------------------------------
-// NewL
-// ---------------------------------------------------------------------------
-//
-CVoipXmlVoipHandler* CVoipXmlVoipHandler::NewL()
-    {
-    DBG_PRINT( "CVoipXmlVoipHandler::NewL begin" );
-    CVoipXmlVoipHandler* self = new ( ELeave ) CVoipXmlVoipHandler;
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop( self );
-    DBG_PRINT( "CVoipXmlVoipHandler::NewL end" );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// Destructor
-// ---------------------------------------------------------------------------
-//
-CVoipXmlVoipHandler::~CVoipXmlVoipHandler()
-    {
-    DBG_PRINT( "CVoipXmlVoipHandler::~CVoipXmlVoipHandler begin" );
-    delete iRegistry;
-    delete iCodecRegistry;
-    delete iEntry;
-    ResetTempCodec( ETrue );
-    ResetTempSpSettings();
-    DBG_PRINT( "CVoipXmlVoipHandler::~CVoipXmlVoipHandler end" );
-    }
-
-// ---------------------------------------------------------------------------
-// Sets VoIP setting.
-// ---------------------------------------------------------------------------
-//
-void CVoipXmlVoipHandler::SetSetting( TInt aType, TInt aParam, 
-    const TDesC& aValue )
-    {
-    // Ignore too long descriptors.
-    if ( KMaxNodeValueLength < aValue.Length() )
-        {
-        return;
-        }
-
-    switch ( aType )
-        {
-        case EVoip:
-            TRAP_IGNORE( SetCoreSettingL( aParam, aValue ) );
-            break;
-        case ECodec:
-            TRAP_IGNORE( SetCodecSettingL( aParam, aValue ) );
-            break;
-        case EVmbx:
-            TRAP_IGNORE( SetVmbxSettingL( aParam, aValue ) );
-            break;
-        default:
-            break;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Stores settings to RCSE.
-// ---------------------------------------------------------------------------
-//
-TInt CVoipXmlVoipHandler::StoreSettings()
-    {
-    TInt err( KErrNone );
-    TBool ok( ETrue );
-
-    if ( !iSettingsSet )
-        {
-        // No settings to be stored => method not supported.
-        err = KErrNotSupported;
-        ok = EFalse;
-        }
-    else
-        {
-        TUint32 profileId( KErrNone );
-        // Add default codec set if no codecs defined.
-        if ( 0 == iEntry->iPreferredCodecs.Count() )
-            {
-            TRAP_IGNORE( AddDefaultCodecsL() );
-            }
-        TRAP( err, profileId = iRegistry->AddL( *iEntry ) );
-        if ( KErrNone == err )
-            {
-            // Adding profile entry to registry OK. Let's load the profile
-            // from registry so that we'll get all the values registry has
-            // added to the entry (AddL takes entry as const reference).
-            TRAP_IGNORE( iRegistry->FindL( profileId, *iEntry ) );
-            iServiceId = iEntry->iServiceProviderId;
-            }
-        else
-            {
-            err = KErrCompletion;
-            ok = EFalse;
-            }
-        }
-    if ( !ok )
-        {
-        const TInt count = iEntry->iPreferredCodecs.Count();
-        for ( TInt counter = 0; counter < count; counter++ )
-            {
-            TRAP_IGNORE( iCodecRegistry->DeleteL( 
-                iEntry->iPreferredCodecs[counter] ) );
-            }
-        }
-    return err;
-    }
-
-// ---------------------------------------------------------------------------
-// Returns the service ID.
-// ---------------------------------------------------------------------------
-//
-TUint32 CVoipXmlVoipHandler::SettingsId()
-    {
-    return iServiceId;
-    }
-
-// ---------------------------------------------------------------------------
-// Sets a codec to RCSE and resets the temp codec.
-// ---------------------------------------------------------------------------
-//
-void CVoipXmlVoipHandler::SettingsEnd( TInt aType )
-    {
-    if ( ECodec == aType )
-        {
-        TRAP_IGNORE( SetCodecToRcseL() );
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Saves linkage information.
-// ---------------------------------------------------------------------------
-//
-void CVoipXmlVoipHandler::LinkSettings( TInt aType, TUint32 aSettingsId )
-    {
-    switch ( aType )
-        {
-        case ESip:
-            {
-            TRAP_IGNORE( SetSipInfoL( aSettingsId ) );
-            break;
-            }
-        case EPresence:
-            {
-            iPresenceId = aSettingsId;
-            break;
-            }
-        case EDestination:
-            {
-            iDestinationId = aSettingsId;
-            break;
-            }
-        default:
-            break;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Finalizes settings saving.
-// ---------------------------------------------------------------------------
-//
-TInt CVoipXmlVoipHandler::FinalizeSettings()
-    {
-    TInt err( KErrNone );
-    TRAP( err, SetSpSettingsL() );
-    if ( KErrNone != err )
-        {
-        // ParamHandler is only intrested in KErrNone and KErrCompletion.
-        err = KErrCompletion;
-        }
-    if ( iDefault )
-        {
-        TRAP_IGNORE( SetAsDefaultL() );
-        }
-    return err;
-    }
-
-// ---------------------------------------------------------------------------
-// Returns the service tab ID of this VoIP service.
-// ---------------------------------------------------------------------------
-//
-TUint32 CVoipXmlVoipHandler::ServiceTabIdL()
-    {
-    DBG_PRINT( "CVoipXmlVoipHandler::ServiceTabIdL begin" );
-    TInt tabId( KErrNone );
-    CSPSettings* spSettings = CSPSettings::NewLC(); // CS:1
-    CSPProperty* property = CSPProperty::NewLC(); // CS:2
-    TInt err = spSettings->FindPropertyL( 
-        iServiceId, EPropertyContactViewId, *property );
-    User::LeaveIfError( property->GetValue( tabId ) );
-    CleanupStack::PopAndDestroy( 2, spSettings ); // CS:0
-    DBG_PRINT2( "CVoipXmlVoipHandler::ServiceTabIdL end (return %d)", tabId );
-    return (TUint32)tabId;
-    }
-
-// ---------------------------------------------------------------------------
-// From class MSIPProfileRegistryObserver.
-// ---------------------------------------------------------------------------
-//
-void CVoipXmlVoipHandler::ProfileRegistryEventOccurred( 
-    TUint32 /*aSIPProfileId*/, TEvent /*aEvent*/ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// From class MSIPProfileRegistryObserver. 
-// ---------------------------------------------------------------------------
-//
-void CVoipXmlVoipHandler::ProfileRegistryErrorOccurred( 
-    TUint32 /*aSIPProfileId*/, TInt /*aError*/ )
-    {
-    }
-
-// ---------------------------------------------------------------------------
-// Sets VoIP core setting to temporary storage.
-// ---------------------------------------------------------------------------
-//
-void CVoipXmlVoipHandler::SetCoreSettingL( TInt aParam, const TDesC& aValue )
-    {
-    TInt intValue( KErrNotFound );
-    switch ( aParam )
-        {
-        case EName:
-            {
-            TBuf<KMaxNodeValueLength> name( KNullDesC );
-            name.Copy( aValue );
-            TRAP_IGNORE( ValidateProfileNameL( name ) );
-            iEntry->iProviderName.Copy( name );
-            iEntry->iSettingsName.Copy( name );
-            iSettingsSet = ETrue;
-            break;
-            }
-        case EStartPort:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iEntry->iStartMediaPort = intValue;
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case EEndPort:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iEntry->iEndMediaPort = intValue;
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case EMediaQos:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iEntry->iMediaQOS = intValue;
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case EDtmfInband:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                TEntryOnOff value;
-                if ( !intValue )
-                    {
-                    value = CRCSEProfileEntry::EOff;
-                    }
-                else if ( KNotSet == intValue )
-                    {
-                    value = CRCSEProfileEntry::EOONotSet;
-                    }
-                else
-                    {
-                    value = CRCSEProfileEntry::EOn;
-                    }
-                iEntry->iInbandDTMF = value;
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case EDtmfOutband:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                TEntryOnOff value;
-                if ( !intValue )
-                    {
-                    value = CRCSEProfileEntry::EOff;
-                    }
-                else if ( KErrNotFound == intValue )
-                    {
-                    value = CRCSEProfileEntry::EOONotSet;
-                    }
-                else
-                    {
-                    value = CRCSEProfileEntry::EOn;
-                    }
-                iEntry->iOutbandDTMF = value;
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case ESecureCallPreference:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iEntry->iSecureCallPreference = intValue;
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case EAllowVoipOverWcdma:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                TEntryOnOff value;
-                if ( !intValue )
-                    {
-                    value = CRCSEProfileEntry::EOff;
-                    }
-                else if ( KErrNotFound == intValue )
-                    {
-                    value = CRCSEProfileEntry::EOONotSet;
-                    }
-                else
-                    {
-                    value = CRCSEProfileEntry::EOn;
-                    }
-                iEntry->iAllowVoIPoverWCDMA = value;
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case ERtcp:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iEntry->iRTCP = intValue;
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case EUserAgentHeaderTerminalType:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iEntry->iSIPVoIPUAHTerminalType = intValue;
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case EUserAgentHeaderWlanMac:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iEntry->iSIPVoIPUAHeaderWLANMAC = intValue;
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case EUserAgentHeaderFreeString:
-            {
-            if ( KMaxSettingsLength32 >= aValue.Length() )
-                {
-                iEntry->iSIPVoIPUAHeaderString.Copy( aValue );
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case ECallerIdDigits:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iEntry->iMeanCountOfVoIPDigits = intValue;
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case EIgnoreDomainPart:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iEntry->iIgnoreAddrDomainPart = intValue;
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case EAutoAcceptBuddyRequests:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iSpSettings.iAutoAcceptBuddies = (TBool)intValue;
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case EAddUserPhone:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                TEntryOnOff value;
-                if ( !intValue )
-                    {
-                    value = CRCSEProfileEntry::EOff;
-                    }
-                else if ( KErrNotFound == intValue )
-                    {
-                    value = CRCSEProfileEntry::EOONotSet;
-                    }
-                else
-                    {
-                    value = CRCSEProfileEntry::EOn;
-                    }
-                iEntry->iUserPhoneUriParameter = value;
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case EProviderUrl:
-            {
-            if ( !iSpSettings.iProviderUrl )
-                {
-                iSpSettings.iProviderUrl = aValue.AllocL();
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case EMinSessionInterval:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iEntry->iSIPMinSE = intValue;
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case ESessionInterval:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iEntry->iSIPSessionExpires = intValue;
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case EBrandingUri:
-            {
-            if ( !iSpSettings.iBrandingUri )
-                {
-                iSpSettings.iBrandingUri = aValue.AllocL();
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case EAutoEnable:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iSpSettings.iAutoEnable = (TBool)intValue;
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case EEnableSipIm:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iSpSettings.iEnableSipIm = (TBool)intValue;
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case EBrandId:
-            {
-            if ( !iSpSettings.iBrandId )
-                {
-                iSpSettings.iBrandId = aValue.AllocL();
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        case EDefault:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iDefault = (TBool)intValue;
-                iSettingsSet = ETrue;
-                }
-            break;
-            }
-        default:
-            break;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Sets codec setting to temporary storage.
-// ---------------------------------------------------------------------------
-//
-void CVoipXmlVoipHandler::SetCodecSettingL( TInt aParam, const TDesC& aValue )
-    {
-    TInt intValue;
-    switch ( aParam )
-        {
-        // Codec parameters
-        case EName:
-            {
-            if ( iCurrentCodec.iName )
-                {
-                break;
-                }
-            TBuf<KMaxNodeValueLength> value;
-            value.Copy( aValue );
-            value.UpperCase();
-            if ( 0 == value.Compare( KILbc ) )
-                {
-                value.Copy( KAudioCodeciLBC );
-                }
-            iCurrentCodec.iName = value.AllocL();
-            break;
-            }
-        case EJitterBuffer:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iCurrentCodec.iJitterBuffer = intValue;
-                }
-            break;
-            }
-        case EOctetAlign:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                if ( !intValue )
-                    {
-                    iCurrentCodec.iOctetAlign = CRCSEAudioCodecEntry::EOff;
-                    }
-                else if ( KErrNotFound == intValue )
-                    {
-                    iCurrentCodec.iOctetAlign = 
-                        CRCSEAudioCodecEntry::EOONotSet;
-                    }
-                else
-                    {
-                    iCurrentCodec.iOctetAlign = CRCSEAudioCodecEntry::EOn;
-                    }
-                }
-            break;
-            }
-        case EPTime:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iCurrentCodec.iPtime = intValue;
-                }
-            break;
-            }
-        case EMaxPTime:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iCurrentCodec.iMaxPtime = intValue;
-                }
-            break;
-            }
-        case EModeSet:
-            {
-            TBuf<KMaxNodeNameLength> string;
-            string.Copy( aValue );
-            while ( string.Length() )
-                {
-                TInt offset = string.Locate( KComma );
-                TBuf<KMaxNodeNameLength> helpString( KNullDesC );
-                if ( KErrNotFound == offset )
-                    {
-                    if ( KErrNone == VoipXmlUtils::DesToInt( 
-                        string, intValue ) )
-                        {
-                        iCurrentCodec.iModeSet.AppendL( intValue );
-                        }
-                    string.Zero();
-                    }
-                else if ( !offset )
-                    {
-                    string.Delete( 0, 1 );
-                    }
-                else
-                    {
-                    helpString.Copy( string.Left( offset ) );
-                    if ( KErrNone == VoipXmlUtils::DesToInt( helpString,
-                        intValue ) )
-                        {
-                        iCurrentCodec.iModeSet.AppendL( intValue );
-                        }
-                    offset++;
-                    string.Delete( 0, offset );
-                    }
-                }
-            break;
-            }
-        case EModeChangePeriod:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iCurrentCodec.iModeChangePeriod = intValue;
-                }
-            break;
-            }
-        case EModeChangeNeighbor:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                if ( !intValue )
-                    {
-                    iCurrentCodec.iModeChangeNeighbor = 
-                        CRCSEAudioCodecEntry::EOff;
-                    }
-                else if ( KErrNotFound == intValue )
-                    {
-                    iCurrentCodec.iModeChangeNeighbor = 
-                        CRCSEAudioCodecEntry::EOONotSet;
-                    }
-                else
-                    {
-                    iCurrentCodec.iModeChangeNeighbor = 
-                        CRCSEAudioCodecEntry::EOn;
-                    }
-                }
-            break;
-            }
-        case EMaxRed:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iCurrentCodec.iMaxRed = intValue;
-                }
-            break;
-            }
-        case EVad:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                if ( !intValue )
-                    {
-                    iCurrentCodec.iVad = CRCSEAudioCodecEntry::EOff;
-                    }
-                else if ( KErrNotFound == intValue )
-                    {
-                    iCurrentCodec.iVad = CRCSEAudioCodecEntry::EOONotSet;
-                    }
-                else
-                    {
-                    iCurrentCodec.iVad = CRCSEAudioCodecEntry::EOn;
-                    }
-                }
-            break;
-            }
-        case EAnnexb:
-            {
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                if ( !intValue )
-                    {
-                    iCurrentCodec.iAnnexb = CRCSEAudioCodecEntry::EOff;
-                    }
-                else if ( KErrNotFound == intValue )
-                    {
-                    iCurrentCodec.iAnnexb = CRCSEAudioCodecEntry::EOONotSet;
-                    }
-                else
-                    {
-                    iCurrentCodec.iAnnexb = CRCSEAudioCodecEntry::EOn;
-                    }
-                }
-            break;
-            }
-        default:
-            break;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Sets voice mailbox setting to temporary storage.
-// ---------------------------------------------------------------------------
-//
-void CVoipXmlVoipHandler::SetVmbxSettingL( TInt aParam, const TDesC& aValue )
-    {
-    switch ( aParam )
-        {
-        case EMwiUri:
-            {
-            if ( !iSpSettings.iMwiUri )
-                {
-                iSpSettings.iMwiUri = aValue.AllocL();
-                }
-            break;
-            }
-        case EListeningUri:
-            {
-            if ( !iSpSettings.iListeningUri )
-                {
-                iSpSettings.iListeningUri = aValue.AllocL();
-                }
-            break;
-            }
-        case EReSubscribeInterval:
-            {
-            TInt intValue;
-            if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intValue ) )
-                {
-                iSpSettings.iResubrcribe = intValue;
-                }
-            break;
-            }
-        default:
-            break;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Checks if name is unique and modifies if needed.
-// ---------------------------------------------------------------------------
-//
-void CVoipXmlVoipHandler::ValidateProfileNameL( TDes& aName )
-    {
-    const TInt maxModifyLength = 
-        KMaxSettingsNameLength - KMaxProfileNameAppendLength;
-
-    RArray<TUint32> voipIds;
-    CleanupClosePushL( voipIds ); // CS:1
-    iRegistry->GetAllIdsL( voipIds );
-
-    const TInt count( voipIds.Count() );
-
-    HBufC* newName = HBufC::NewLC( KMaxSettingsNameLength ); // CS:2
-    newName->Des().Copy( aName.Left( maxModifyLength ) );
-
-    TUint i( 1 ); // Add number to the name if name already in use.
-
-    // Go through each profile and see if the name of the new profile    
-    // matches one of the existing names. If it does change it and
-    // check the new name again.
-    for ( TInt index = 0; index < count; index++ )
-        {
-        CRCSEProfileEntry* profile = CRCSEProfileEntry::NewLC(); // CS:3
-        TBuf<KMaxSettingsNameLength> loadedName;
-        iRegistry->FindL( voipIds[index], *profile );
-        loadedName.Copy( profile->iSettingsName );
-        if ( 0 == newName->Des().Compare( loadedName ) )
-            {
-            // If the name is changed we need to begin the comparison
-            // again from the first profile.
-            newName->Des().Copy( aName.Left( maxModifyLength ) );
-            newName->Des().Append( KOpenParenthesis() );
-            newName->Des().AppendNum( i );
-            newName->Des().Append( KClosedParenthesis() );  
-            index = 0;
-            i++;
-            if ( KMaxProfileNames < i )
-                {
-                User::Leave( KErrBadName );
-                }
-            }
-        CleanupStack::PopAndDestroy( profile ); // CS:2
-        }
-    
-    aName.Copy( *newName );
-
-    // newName, &voipIds
-    CleanupStack::PopAndDestroy( 2, &voipIds ); // CS:0
-    }
-
-// ---------------------------------------------------------------------------
-// Sets temporary codec to RCSE.
-// ---------------------------------------------------------------------------
-//
-void CVoipXmlVoipHandler::SetCodecToRcseL()
-    {
-    // Nameless codecs are not supported.
-    if ( !iCurrentCodec.iName )
-        {
-        ResetTempCodec();
-        return;
-        }
-
-    CRCSEAudioCodecEntry* entry = CRCSEAudioCodecEntry::NewLC();
-    // First set default values...
-    entry->SetDefaultCodecValueSet( iCurrentCodec.iName->Des() );
-    // ...and then replace them with the ones defined in settings XML.
-    if ( KErrNotFound != iCurrentCodec.iJitterBuffer )
-        {
-        entry->iJitterBufferSize = iCurrentCodec.iJitterBuffer;
-        }
-    if ( KErrNotFound != iCurrentCodec.iPtime )
-        {
-        entry->iPtime = iCurrentCodec.iPtime;
-        }
-    if ( KErrNotFound != iCurrentCodec.iMaxPtime )
-        {
-        entry->iMaxptime = iCurrentCodec.iMaxPtime;
-        }
-    if ( CRCSEAudioCodecEntry::EOONotSet != iCurrentCodec.iOctetAlign )
-        {
-        entry->iOctetAlign = iCurrentCodec.iOctetAlign;
-        }
-    if ( CRCSEAudioCodecEntry::EOONotSet != 
-        iCurrentCodec.iModeChangeNeighbor )
-        {
-        entry->iModeChangeNeighbor = iCurrentCodec.iModeChangeNeighbor;
-        }
-    if ( KErrNotFound != iCurrentCodec.iModeChangePeriod )
-        {
-        entry->iModeChangePeriod = iCurrentCodec.iModeChangePeriod;
-        }
-    if ( KErrNotFound != iCurrentCodec.iMaxRed )
-        {
-        entry->iMaxRed = iCurrentCodec.iMaxRed;
-        }
-    if ( CRCSEAudioCodecEntry::EOONotSet != iCurrentCodec.iVad )
-        {
-        entry->iVAD = iCurrentCodec.iVad;
-        }
-    if ( CRCSEAudioCodecEntry::EOONotSet != iCurrentCodec.iAnnexb )
-        {
-        entry->iAnnexb = iCurrentCodec.iAnnexb;
-        }
-    if ( iCurrentCodec.iModeSet.Count() )
-        {
-        entry->iModeSet.Reset();
-        const TInt count = iCurrentCodec.iModeSet.Count();
-        for ( TInt counter = 0; counter < count; counter++ )
-            {
-            entry->iModeSet.AppendL( iCurrentCodec.iModeSet[counter] );
-            }
-        }
-
-    TUint32 codecId = iCodecRegistry->AddL( *entry );
-    CleanupStack::PopAndDestroy( entry );
-    iEntry->iPreferredCodecs.AppendL( codecId );
-    ResetTempCodec();
-    }
-
-// ---------------------------------------------------------------------------
-// Resets temporary codec settings.
-// ---------------------------------------------------------------------------
-//
-void CVoipXmlVoipHandler::ResetTempCodec( TBool aCloseArray )
-    {
-    if ( iCurrentCodec.iName )
-        {
-        delete iCurrentCodec.iName;
-        iCurrentCodec.iName = NULL;
-        }
-    iCurrentCodec.iJitterBuffer       = KErrNotFound;
-    iCurrentCodec.iOctetAlign         = CRCSEAudioCodecEntry::EOONotSet;
-    iCurrentCodec.iPtime              = KErrNotFound;
-    iCurrentCodec.iMaxPtime           = KErrNotFound;
-    iCurrentCodec.iModeChangePeriod   = KErrNotFound;
-    iCurrentCodec.iModeChangeNeighbor = CRCSEAudioCodecEntry::EOONotSet;
-    iCurrentCodec.iMaxRed             = KErrNotFound;
-    iCurrentCodec.iVad                = CRCSEAudioCodecEntry::EOONotSet;
-    iCurrentCodec.iAnnexb             = CRCSEAudioCodecEntry::EOONotSet;
-    iCurrentCodec.iModeSet.Reset();
-    if ( aCloseArray )
-        {
-        iCurrentCodec.iModeSet.Close();
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Resets temporary service provider settings.
-// ---------------------------------------------------------------------------
-//
-void CVoipXmlVoipHandler::ResetTempSpSettings()
-    {
-    iSpSettings.iAutoAcceptBuddies = EFalse;
-    iSpSettings.iAutoEnable        = EFalse;
-    iSpSettings.iResubrcribe = KDefaultResubscribe;
-    if ( iSpSettings.iBrandingUri )
-        {
-        delete iSpSettings.iBrandingUri;
-        iSpSettings.iBrandingUri = NULL;
-        }
-    if ( iSpSettings.iListeningUri )
-        {
-        delete iSpSettings.iListeningUri;
-        iSpSettings.iListeningUri = NULL;
-        }
-    if ( iSpSettings.iMwiUri )
-        {
-        delete iSpSettings.iMwiUri;
-        iSpSettings.iMwiUri = NULL;
-        }
-    if ( iSpSettings.iProviderUrl )
-        {
-        delete iSpSettings.iProviderUrl;
-        iSpSettings.iProviderUrl = NULL;
-        }
-    if ( iSpSettings.iBrandId )
-        {
-        delete iSpSettings.iBrandId;
-        iSpSettings.iBrandId = NULL;
-        }
-    }
-
-// ---------------------------------------------------------------------------
-// Sets SIP related VoIP settings.
-// ---------------------------------------------------------------------------
-//
-void CVoipXmlVoipHandler::SetSipInfoL( TUint32 aSipId )
-    {
-    // First set SIP information to RCSE so that
-    // an entry in service table will be created.
-    TSettingIds settingIds;
-    settingIds.iProfileType = CRCSEProfileEntry::EProtocolSIP; // SIP.
-    settingIds.iProfileId = aSipId;
-    // Never reference to profile specific settings.
-    settingIds.iProfileSpecificSettingId = KNotSet;
-    iEntry->iIds.AppendL( settingIds );
-    iRegistry->UpdateL( iEntry->iId, *iEntry );
-
-    // After update, we'll need to load the profile again from registry
-    // so that we'll get all the values registry has added to the entry
-    // (UpdateL takes entry as const reference).
-    TUint32 profileId = iEntry->iId;
-    iRegistry->FindL( profileId, *iEntry );
-    iServiceId = iEntry->iServiceProviderId;
-
-    // Compile and set User-Agent header.
-    CSIPManagedProfileRegistry* sipReg = CSIPManagedProfileRegistry::NewLC( 
-        *this ); // CS:1
-    CSIPManagedProfile* sipProf = static_cast<CSIPManagedProfile*>( 
-        sipReg->ProfileL( aSipId ) );
-
-    if ( sipProf )
-        {
-        CleanupStack::PushL( sipProf ); // CS:2
-
-        TBuf8<KMaxUserAgentHeaderLength> userAgentString( KNullDesC8 );
-
-        if ( iEntry->iSIPVoIPUAHTerminalType || 
-            iEntry->iSIPVoIPUAHeaderWLANMAC || 
-            iEntry->iSIPVoIPUAHeaderString.Length() != 0 )
-            {
-            // Set this to be an user-agent param.
-            userAgentString.Append( KUserAgent );
-            userAgentString.Append( KColon );
-            userAgentString.Append( KSpace );
-
-            // Set terminal type if eanbled.
-            if ( iEntry->iSIPVoIPUAHTerminalType )
-                {
-                CIpAppPhoneUtils* util = CIpAppPhoneUtils::NewLC(); // CS:3
-                TBuf<KMaxTerminalTypeLength> terminalType( KNullDesC );
-                util->GetTerminalTypeL( terminalType );
-                userAgentString.Append( terminalType );
-                userAgentString.Append( KSpace );
-                CleanupStack::PopAndDestroy( util ); // CS:2
-                }
-
-            // Set WLAN MAC address if enabled.
-            if ( iEntry->iSIPVoIPUAHeaderWLANMAC )
-                {
-                CIPAppUtilsAddressResolver* resolver = 
-                    CIPAppUtilsAddressResolver::NewLC(); // CS:3
-                _LIT8( KFormatType, "-" );
-                TBuf8<KMaxWlanMacAddressLength> wlanMACAddress( KNullDesC8 );
-                resolver->GetWlanMACAddress( wlanMACAddress, KFormatType );
-                userAgentString.Append( wlanMACAddress );
-                userAgentString.Append( KSpace );
-                CleanupStack::PopAndDestroy( resolver ); // CS:2
-                }
-
-            // Set free string if enabled.
-            if ( iEntry->iSIPVoIPUAHeaderString.Length() )
-                {
-                userAgentString.Append( iEntry->iSIPVoIPUAHeaderString );
-                }
-            }
-
-        // Set new user agent header data to profile.
-        CDesC8ArrayFlat* array = new ( ELeave ) 
-            CDesC8ArrayFlat( KUserAgentHeaderDataArrayInitSize );
-        CleanupStack::PushL( array ); // CS:3
-        array->AppendL( userAgentString );
-        sipProf->SetParameter( KSIPHeaders, *array );
-        sipReg->SaveL( *sipProf );
-        // array, profile
-        CleanupStack::PopAndDestroy( 2, sipProf ); // CS:1
-        }
-    CleanupStack::PopAndDestroy( sipReg ); // CS:0
-    }
-
-// ---------------------------------------------------------------------------
-// Sets SPSettings to service table.
-// ---------------------------------------------------------------------------
-//
-void CVoipXmlVoipHandler::SetSpSettingsL()
-    {
-    TInt serviceId = iEntry->iServiceProviderId;
-    if ( 0 == serviceId || !iEntry->iIds.Count() )
-        {
-        return;
-        }
-    CSPSettings* spSettings = CSPSettings::NewLC(); // CS:1
-    CSPProperty* property = CSPProperty::NewLC(); // CS:2
-
-    // ==============================
-    // Voice mailbox settings.
-    // ==============================
-    //
-
-    TBool vmbx( EFalse );
-
-    // Set MWI URI if present.
-    //lint -e{960} No need for else statement here
-    if ( iSpSettings.iMwiUri )
-        {
-        property->SetName( ESubPropertyVMBXMWIAddress );
-        property->SetValue( iSpSettings.iMwiUri->Des() );
-        spSettings->AddOrUpdatePropertyL( serviceId, *property );
-        // Set the same value to Listening URI if it has no value.
-        if ( !iSpSettings.iListeningUri )
-            {
-            iSpSettings.iListeningUri = iSpSettings.iMwiUri->Des().AllocL();
-            }
-        vmbx = ETrue;
-        }
-    // If there is no MWI URI but listening URI is present, set it as MWI URI.
-    else if ( iSpSettings.iListeningUri )
-        {
-        property->SetName( ESubPropertyVMBXMWIAddress );
-        property->SetValue( iSpSettings.iListeningUri->Des() );
-        spSettings->AddOrUpdatePropertyL( serviceId, *property );
-        vmbx = ETrue;
-        }
-
-    // Set Listening URI if present. This is a separate statement since 
-    // the Listening URI may have been configured when setting MWI URI.
-    if ( iSpSettings.iListeningUri )
-        {
-        property->SetName( ESubPropertyVMBXListenAddress );
-        property->SetValue( iSpSettings.iListeningUri->Des() );
-        spSettings->AddOrUpdatePropertyL( serviceId, *property );
-        vmbx = ETrue;
-        }
-
-    if ( vmbx )
-        {
-        property->SetName( ESubPropertyVMBXMWISubscribeInterval );
-        property->SetValue( iSpSettings.iResubrcribe );
-        spSettings->AddOrUpdatePropertyL( serviceId, *property );
-
-        property->SetName( ESubPropertyVMBXSettingsId );
-        property->SetValue( iEntry->iIds[0].iProfileId );
-        spSettings->AddOrUpdatePropertyL( serviceId, *property );
-        }
-
-    // ==============================
-    // "Core" Service Provider Settings.
-    // ==============================
-    //
-
-    if ( iSpSettings.iProviderUrl )
-        {
-        property->SetName( EPropertyServiceBookmarkUri );
-        property->SetValue( iSpSettings.iProviderUrl->Des() );
-        spSettings->AddOrUpdatePropertyL( serviceId, *property );
-        }
-
-    if ( iSpSettings.iBrandingUri )
-        {
-        property->SetName( ESubPropertyVoIPBrandDataUri );
-        property->SetValue( iSpSettings.iBrandingUri->Des() );
-        spSettings->AddOrUpdatePropertyL( serviceId, *property );
-        }
-
-    if ( iPresenceId )
-        {
-        property->SetName( ESubPropertyPresenceSettingsId );
-        property->SetValue( iPresenceId );
-        spSettings->AddOrUpdatePropertyL( serviceId, *property );
-
-        // Converged Connection Handler (CCH) Presence Subservice plug-in UID
-        property->SetName( EPropertyPresenceSubServicePluginId );
-        property->SetValue( KCCHPresenceSubServicePlugId );
-        spSettings->AddOrUpdatePropertyL( serviceId, *property );
-
-        // SIP IM enabled
-        if ( iSpSettings.iEnableSipIm )
-            {
-            // Set IM as enabled.
-            property->SetName( ESubPropertyIMEnabled );
-            property->SetValue( EOn );
-            spSettings->AddOrUpdatePropertyL( serviceId, *property );
-            // Set IM launch UID.
-            property->SetName( ESubPropertyIMLaunchUid );
-            property->SetValue( KIMLaunchUid );
-            spSettings->AddOrUpdatePropertyL( serviceId, *property );
-            // The value only needs to be different from 0,
-            // no-one actually uses it.
-            property->SetName( ESubPropertyIMSettingsId );
-            property->SetValue( KIMSettingsId );
-            spSettings->AddOrUpdatePropertyL( serviceId, *property );
-            // Set IM plugin UID.
-            property->SetName( EPropertyIMSubServicePluginId );
-            property->SetValue( KIMSubServicePluginId );
-            spSettings->AddOrUpdatePropertyL( serviceId, *property );
-            // Set default IM tone.
-            TFileName toneFile;
-            toneFile.Copy( PathInfo::RomRootPath() );
-            toneFile.Append( PathInfo::DigitalSoundsPath() );
-            toneFile.Append( KDefaultTone );
-            MVIMPSTSettingsStore* vimpStSettings =
-                CVIMPSTSettingsStore::NewLC(); // CS:3
-            vimpStSettings->SetL( serviceId,
-                EServiceToneFileName, toneFile );
-            // Pop vimpStSettings (can't use M object as argument).
-            CleanupStack::PopAndDestroy(); // CS:2
-            }
-        }
-
-    if ( iSpSettings.iAutoAcceptBuddies )
-        {
-        property->SetName( ESubPropertyPresenceRequestPreference );
-        property->SetValue( EOn );
-        spSettings->AddOrUpdatePropertyL( serviceId, *property );
-        }
-
-    if ( iDestinationId )
-        {
-        property->SetName( ESubPropertyVoIPPreferredSNAPId );
-        property->SetValue( iDestinationId );
-        spSettings->AddOrUpdatePropertyL( serviceId, *property );
-        if ( iSpSettings.iEnableSipIm )
-            {
-            property->SetName( ESubPropertyIMPreferredSNAPId );
-            property->SetValue( iDestinationId );
-            spSettings->AddOrUpdatePropertyL( serviceId, *property );
-            }
-        }
-
-    if ( iSpSettings.iBrandId )
-        {
-        // Brand version.
-        property->SetName( EPropertyBrandVersion );
-        property->SetValue( KBrandVersion );
-        spSettings->AddOrUpdatePropertyL( serviceId, *property );
-        // Brand language.
-        property->SetName( EPropertyBrandLanguage );
-        property->SetValue( ELangInternationalEnglish );
-        spSettings->AddOrUpdatePropertyL( serviceId, *property );
-        // Brand ID.
-        property->SetName( EPropertyBrandId );
-        property->SetValue( iSpSettings.iBrandId->Des() );
-        spSettings->AddOrUpdatePropertyL( serviceId, *property );
-        }
-
-    if ( iSpSettings.iAutoEnable )
-        {
-        property->SetName( ESubPropertyVoIPEnabled );
-        property->SetValue( EOn );
-        spSettings->AddOrUpdatePropertyL( serviceId, *property );
-        // Also set voicemailbox on if it's defined.
-        if ( vmbx )
-            {
-            property->SetName( ESubPropertyVMBXEnabled );
-            property->SetValue( EOn );
-            spSettings->AddOrUpdatePropertyL( serviceId, *property );
-            }
-        // Also set presence on if there is a presence link.
-        if ( iPresenceId )
-            {
-            property->SetName( ESubPropertyPresenceEnabled );
-            property->SetValue( EOn );
-            spSettings->AddOrUpdatePropertyL( serviceId, *property );
-            }
-        }
-
-    // property, spSettings
-    CleanupStack::PopAndDestroy( 2, spSettings ); // CS:0
-    }
-
-// ---------------------------------------------------------------------------
-// Creates default codecs.
-// ---------------------------------------------------------------------------
-//
-void CVoipXmlVoipHandler::AddDefaultCodecsL()
-    {
-    CRCSEAudioCodecEntry* codec = CRCSEAudioCodecEntry::NewLC();
-
-    TUint32 codecId( KErrNone );
-
-    codec->SetDefaultCodecValueSet( KAudioCodecAMRWB() );
-    codecId = iCodecRegistry->AddL( *codec );
-    iEntry->iPreferredCodecs.AppendL( codecId );
-
-    codec->SetDefaultCodecValueSet( KAudioCodecAMR() );
-    codecId = iCodecRegistry->AddL( *codec );
-    iEntry->iPreferredCodecs.AppendL( codecId );
-
-    codec->SetDefaultCodecValueSet( KAudioCodecPCMU() );
-    codecId = iCodecRegistry->AddL( *codec );
-    iEntry->iPreferredCodecs.AppendL( codecId );
-
-    codec->SetDefaultCodecValueSet( KAudioCodecPCMA() );
-    codecId = iCodecRegistry->AddL( *codec );
-    iEntry->iPreferredCodecs.AppendL( codecId );
-
-    codec->SetDefaultCodecValueSet( KAudioCodeciLBC() );
-    codecId = iCodecRegistry->AddL( *codec );
-    iEntry->iPreferredCodecs.AppendL( codecId );
-
-    codec->SetDefaultCodecValueSet( KAudioCodecG729() );
-    codecId = iCodecRegistry->AddL( *codec );
-    iEntry->iPreferredCodecs.AppendL( codecId );
-
-    codec->SetDefaultCodecValueSet( KAudioCodecCN() );
-    codecId = iCodecRegistry->AddL( *codec );
-    iEntry->iPreferredCodecs.AppendL( codecId );
-
-    CleanupStack::PopAndDestroy( codec );
-    }
-
-// ---------------------------------------------------------------------------
-// Sets the service as default service and preferred telephony as PS.
-// ---------------------------------------------------------------------------
-//
-void CVoipXmlVoipHandler::SetAsDefaultL()
-    {
-    // Set the preferred service ID and preferred telephony as PS.
-    CRepository* repository = CRepository::NewL( KCRUidRichCallSettings );
-    repository->Set( KRCSPSPreferredService, (TInt)iServiceId );
-    repository->Set( KRCSEPreferredTelephony, 1 );
-    delete repository;
-    }
-
-//  End of File