diff -r 65a3ef1d5bd0 -r f742655b05bf voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlpresencehandler.cpp --- a/voipplugins/voipadapters/voipxmlprovisioning/voipxmlprocessor/src/voipxmlpresencehandler.cpp Thu Aug 19 09:45:22 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,259 +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: Presence handler for VoIP XML processor -* -*/ - - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "voipxmlutils.h" -#include "voipxmlpresencehandler.h" -#include "voipxmlprocessorlogger.h" -#include "voipxmlprocessordefaults.h" - -// --------------------------------------------------------------------------- -// Default constructor. -// --------------------------------------------------------------------------- -// -CVoipXmlPresenceHandler::CVoipXmlPresenceHandler() - { - } - -// --------------------------------------------------------------------------- -// Constructor. -// --------------------------------------------------------------------------- -// -CVoipXmlPresenceHandler* CVoipXmlPresenceHandler::NewL() - { - CVoipXmlPresenceHandler* self = new ( ELeave ) CVoipXmlPresenceHandler; - CleanupStack::PushL( self ); - self->ConstructL(); - CleanupStack::Pop( self ); - return self; - } - -// --------------------------------------------------------------------------- -// Constructor. -// --------------------------------------------------------------------------- -// -void CVoipXmlPresenceHandler::ConstructL() - { - iProfile.iObjectSize = KMaxObjectSize; - iProfile.iPublicationInt = KPublishInterval; - } - -// --------------------------------------------------------------------------- -// Destructor. -// --------------------------------------------------------------------------- -// -CVoipXmlPresenceHandler::~CVoipXmlPresenceHandler() - { - } - -// --------------------------------------------------------------------------- -// Sets Presence setting. -// --------------------------------------------------------------------------- -// -void CVoipXmlPresenceHandler::SetSetting( TInt aParam, const TDesC& aValue ) - { - // Ignore too long descriptors. - if ( KMaxNodeValueLength < aValue.Length() ) - { - return; - } - - TInt intVal( KErrNotFound ); - switch ( aParam ) - { - case EName: - { - TBuf name( KNullDesC ); - name.Copy( aValue ); - TRAPD( err, CreateProviderNameL( name ) ); - if ( KErrNone == err ) - { - iProfile.iSetName.Copy( name ); - iSettingsSet = ETrue; - } - break; - } - case EMaxObjectSize: - { - if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intVal )) - { - iProfile.iObjectSize = intVal; - iSettingsSet = ETrue; - } - break; - } - case EPublishInterval: - { - if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intVal )) - { - iProfile.iPublicationInt = intVal; - iSettingsSet = ETrue; - } - break; - } - case EMaxSubscriptions: - { - if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intVal )) - { - iProfile.iMaxSubscriptions = intVal; - iSettingsSet = ETrue; - } - break; - } - case EMaxContacts: - { - if ( KErrNone == VoipXmlUtils::DesToInt( aValue, intVal )) - { - iProfile.iMaxContactsInList = intVal; - iSettingsSet = ETrue; - } - break; - } - case EDomainSyntax: - { - iProfile.iDomainSyntax.Copy( aValue ); - iSettingsSet = ETrue; - break; - } - default: - break; - } - } - -// --------------------------------------------------------------------------- -// Stores settings to 'Presence registry', i.e. creates a new Presence set. -// --------------------------------------------------------------------------- -// -TInt CVoipXmlPresenceHandler::StoreSettings() - { - if ( !iSettingsSet ) - { - // No settings to be stored => method not supported. - return KErrNotSupported; - } - iProfile.iStatusOfProps = EPresSettingOpened; - TRAPD( err, iProfileId = PresSettingsApi::CreateSetL( iProfile )); - if ( KErrNone != err ) - { - err = KErrCompletion; - } - return err; - } - -// --------------------------------------------------------------------------- -// Returns the profile ID if the profile saved in StoreSettings. -// --------------------------------------------------------------------------- -// -TUint32 CVoipXmlPresenceHandler::SettingsId() - { - return iProfileId; - } - -// --------------------------------------------------------------------------- -// Links other settings to presence profile. -// --------------------------------------------------------------------------- -// -void CVoipXmlPresenceHandler::LinkSettings( TInt aType, TUint32 aSettingsId ) - { - switch ( aType ) - { - case ESip: - iProfile.iSipProfile = aSettingsId; - break; - case EXdm: - iProfile.iXDMSetting = aSettingsId; - break; - default: - break; - } - } - -// --------------------------------------------------------------------------- -// Finalizes profile, i.e. stores the profile with linkage information. -// --------------------------------------------------------------------------- -// -TInt CVoipXmlPresenceHandler::FinalizeSettings() - { - TInt err1( KErrNone ); - TRAPD( err2, err1 = PresSettingsApi::UpdateSetL( iProfile, iProfileId )); - if ( KErrNone != err1 || KErrNone != err2 ) - { - err1 = KErrGeneral; - } - return err1; - } - -// --------------------------------------------------------------------------- -// Checks for duplicate named Presence profiles. Renames if same. -// --------------------------------------------------------------------------- -// -void CVoipXmlPresenceHandler::CreateProviderNameL( TDes& aName ) - { - DBG_PRINT( "CVoipXmlPresenceHandler::CreateProviderNameL begin" ); - - const TInt maxModifyLength = - KMaxNodeNameLength - KMaxProfileNameAppendLength; - RArray settingIds; - CleanupClosePushL( settingIds ); // CS:1 - // CS:2 - CDesCArray* names = PresSettingsApi::GetAllSetsNamesLC( settingIds ); - - HBufC* newName = HBufC::NewLC( KMaxNodeNameLength ); // CS:3 - newName->Des().Copy( aName.Left( maxModifyLength ) ); - const TInt count( names->MdcaCount() ); - 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 counter = 0; counter < count; counter++ ) - { - TBuf loadedName; - loadedName.Copy( names->MdcaPoint( counter )); - 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() ); - counter = 0; - i++; - if ( KMaxProfileNames < i ) - { - User::Leave( KErrBadName ); - } - } - } - aName.Copy( newName->Des() ); - // newName, names, &settingIds - CleanupStack::PopAndDestroy( 3, &settingIds ); - DBG_PRINT( "CVoipXmlPresenceHandler::CreateProviderNameL end" ); - } - -// End of file.