diff -r 000000000000 -r 094583676ce7 wvsettings20/IMPSSrc/CIMPSSAPSettingsBody.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wvsettings20/IMPSSrc/CIMPSSAPSettingsBody.cpp Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,876 @@ +/* +* Copyright (c) 2005 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: SAP settings container body. +* +*/ + +// INCLUDE FILES +#include "CIMPSSAPSettingsBody.h" +#include "CIMPSSAPKeyValuePair.h" +#include "IMPSSAPProtectionHandler.h" +#include "IMPSSAPSerializer.h" +#include "IMPSSAPSettingsStorePanics.h" + +#include +#include + +// ================= LOCAL FUNCTIONS ======================= + + +// ----------------------------------------------------------------------------- +// ReleaseBuffer() +// Deletes given buffer and sets the pointer NULL. +// +// @param aBuffer The buffer to delete. +// ----------------------------------------------------------------------------- +// +void ReleaseBuffer( HBufC*& aBuffer ) + { + delete aBuffer; + aBuffer = NULL; + } + + +// ----------------------------------------------------------------------------- +// DoGet() +// Returns given buffer or KNullDesC if the buffer was NULL.. +// +// @param aBuffer The buffer to get. +// ----------------------------------------------------------------------------- +// +const TDesC& DoGet( const HBufC* const & aBuffer ) + { + if ( aBuffer ) + { + return *aBuffer; + } + return KNullDesC; + } + + +// ================= MEMBER FUNCTIONS ======================= + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::NewL() +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +CIMPSSAPSettingsBody* CIMPSSAPSettingsBody::NewL() + { + CIMPSSAPSettingsBody* self = new ( ELeave ) CIMPSSAPSettingsBody; + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); + return self; + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::~CIMPSSAPSettingsBody() +// Destructor +// ----------------------------------------------------------------------------- +// +CIMPSSAPSettingsBody::~CIMPSSAPSettingsBody() + { + delete iClientId; + delete iSAPName; + delete iSAPAddress; + delete iSAPUserId; + delete iSAPUserPassword; + delete iHTTPProxyAddress; + delete iHTTPProxyUserId; + delete iHTTPProxyUserPassword; + delete iServerAuthenticationName; + delete iServerAuthenticationPassword; + delete iServerAcceptedContentType; + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::CIMPSSAPSettingsBody() +// C++ default constructor can NOT contain any code, that +// might leave. +// ----------------------------------------------------------------------------- +// +CIMPSSAPSettingsBody::CIMPSSAPSettingsBody() + { + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::ConstructL) +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::ConstructL() + { + } + + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::ObjectID() +// From generic object interface. +// ----------------------------------------------------------------------------- +// +TIMPSSapObjectID CIMPSSAPSettingsBody::ObjectID() const + { + return EIMPSSapObjSapSettings; + } + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::ObjectVersion() +// From generic object interface. +// ----------------------------------------------------------------------------- +// +TInt CIMPSSAPSettingsBody::ObjectVersion() const + { + return KIMPSSapObjVersionInitial; + } + + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::ExternalizeVersionDataL() +// From generic object interface. +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::ExternalizeVersionDataL( TInt aVersion, + RWriteStream& aStream ) const + { + switch ( aVersion ) + { + case KIMPSSapObjVersionInitial: + { + //ID's + aStream.WriteInt32L( iAccessGroup ); + + aStream.WriteUint32L( iUID ); + + aStream.WriteUint32L( iAP ); + IMPSSAPSerializer::ExternalizeBufferL( iClientId, aStream ); + + aStream.WriteUint32L( iProtection ); + aStream.WriteUint32L( iLoginCount ); + + //Address + IMPSSAPSerializer::ExternalizeBufferL( iSAPName, aStream ); + aStream.WriteInt32L( iSAPPort ); + IMPSSAPSerializer::ExternalizeBufferL( iSAPAddress, aStream ); + IMPSSAPSerializer::ExternalizeBufferL( iSAPUserId, aStream ); + IMPSSAPSerializer::ExternalizeBufferL( iSAPUserPassword, aStream ); + + //Proxy + IMPSSAPSerializer::ExternalizeBufferL( iHTTPProxyAddress, aStream ); + aStream.WriteInt32L( iHTTPProxyPort ); + IMPSSAPSerializer::ExternalizeBufferL( iHTTPProxyUserId, aStream ); + IMPSSAPSerializer::ExternalizeBufferL( iHTTPProxyUserPassword, aStream ); + + // High level services + + aStream.WriteInt32L( iHighLevelServices ); + + aStream.WriteInt32L( iAuthorizationMode ); + + // Server specific + IMPSSAPSerializer::ExternalizeBufferL( iServerAuthenticationName, aStream ); + IMPSSAPSerializer::ExternalizeBufferL( iServerAuthenticationPassword, aStream ); + IMPSSAPSerializer::ExternalizeBufferL( iServerAcceptedContentType, aStream ); + + break; + } + + default: + { + //Unknown version ID in externalization + Panic( EIMPSSetStoreUnknownObjectVersionExternalize ); + break; + } + }; + } + + + + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::InternalizeVersionDataL() +// From generic object interface. +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::InternalizeVersionDataL( TInt aVersion, + RReadStream& aStream ) + { + Reset(); + switch ( aVersion ) + { + case KIMPSSapObjVersionInitial: + { + + //IDs + iAccessGroup = static_cast( aStream.ReadUint32L() ); + + iUID = aStream.ReadUint32L(); + + iAP = aStream.ReadUint32L(); + iClientId = IMPSSAPSerializer::InternalizeBufferL( aStream ); + iDynamicDataSize += IMPSSAPSerializer::BufferSizeInBytes( iClientId ); + + iProtection = static_cast ( aStream.ReadUint32L() ); + IMPSSAPProtectionHandler::ChechkIsProperProtectionLevelL( iProtection ); + + iLoginCount = aStream.ReadUint32L(); + + //Address + iSAPName = IMPSSAPSerializer::InternalizeBufferL( aStream ); + iDynamicDataSize += IMPSSAPSerializer::BufferSizeInBytes( iSAPName ); + + iSAPPort = aStream.ReadInt32L(); + iSAPAddress = IMPSSAPSerializer::InternalizeBufferL( aStream ); + iDynamicDataSize += IMPSSAPSerializer::BufferSizeInBytes( iSAPAddress ); + + iSAPUserId = IMPSSAPSerializer::InternalizeBufferL( aStream ); + iDynamicDataSize += IMPSSAPSerializer::BufferSizeInBytes( iSAPUserId ); + + iSAPUserPassword = IMPSSAPSerializer::InternalizeBufferL( aStream ); + iDynamicDataSize += IMPSSAPSerializer::BufferSizeInBytes( iSAPUserPassword ); + + //Proxy + iHTTPProxyAddress = IMPSSAPSerializer::InternalizeBufferL( aStream ); + iDynamicDataSize += IMPSSAPSerializer::BufferSizeInBytes( iHTTPProxyAddress ); + iHTTPProxyPort = aStream.ReadInt32L(); + iHTTPProxyUserId = IMPSSAPSerializer::InternalizeBufferL( aStream ); + iDynamicDataSize += IMPSSAPSerializer::BufferSizeInBytes( iHTTPProxyUserId ); + iHTTPProxyUserPassword = IMPSSAPSerializer::InternalizeBufferL( aStream ); + iDynamicDataSize += IMPSSAPSerializer::BufferSizeInBytes( iHTTPProxyUserPassword ); + + //High level services + iHighLevelServices = aStream.ReadInt32L(); + + //Authorization mode + iAuthorizationMode = aStream.ReadInt32L(); + + //Server specific + iServerAuthenticationName = IMPSSAPSerializer::InternalizeBufferL( aStream ); + iDynamicDataSize += IMPSSAPSerializer::BufferSizeInBytes( iServerAuthenticationName ); + iServerAuthenticationPassword = IMPSSAPSerializer::InternalizeBufferL( aStream ); + iDynamicDataSize += IMPSSAPSerializer::BufferSizeInBytes( iServerAuthenticationPassword ); + iServerAcceptedContentType = IMPSSAPSerializer::InternalizeBufferL( aStream ); + iDynamicDataSize += IMPSSAPSerializer::BufferSizeInBytes( iServerAcceptedContentType ); + + break; + } + + default: + { + //Unknown version ID in internalization. + Panic( EIMPSSetStoreUnknownObjectVersionInternalize ); + break; + } + }; + } + + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::DataSize() +// From generic object interface. +// ----------------------------------------------------------------------------- +// +TInt CIMPSSAPSettingsBody::DataSize() const + { + /* + Integers/enums + - iUID + - iAP + - iProtection + - iLoginCount + - iSAPPort + - iHTTPProxyPort + - iHighLevelServices + - iAccessGroup + - iAuthorizationMode + + Buffer lengths + - iClientID + - iSAPName + - iSAPAddress + - iSAPUserId + - iSAPUserPassword + - iHTTPProxyAddress + - iHTTPProxyUserId + - iHTTPProxyUserPassword + - iServerAuthenticationName + - iServerAuthenticationPassword + - iServerAcceptedContentType + + ==> (9+11) * 4 bytes ==> 160 bytes + */ + + return iDynamicDataSize + 160; + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::Reset() +// From generic object interface. +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::Reset() + { + iDynamicDataSize = 0; + iUID = 0; + + iAP = 0; + ReleaseBuffer( iClientId ); + + iProtection = ESAPNoProtection; + iLoginCount = 0; + + ReleaseBuffer( iSAPName ); + iSAPPort = 0; + ReleaseBuffer( iSAPAddress ); + ReleaseBuffer( iSAPUserId ); + ReleaseBuffer( iSAPUserPassword ); + + ReleaseBuffer( iHTTPProxyAddress ); + iHTTPProxyPort = 0; + ReleaseBuffer( iHTTPProxyUserId ); + ReleaseBuffer( iHTTPProxyUserPassword ); + iHighLevelServices = 0; + ReleaseBuffer( iServerAuthenticationName ); + ReleaseBuffer( iServerAuthenticationPassword ); + ReleaseBuffer( iServerAcceptedContentType ); + iAccessGroup = EIMPSNoAccessGroup; + iAuthorizationMode = EIMPSAuthModeUnspecified; + } + + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::Uid() +// ----------------------------------------------------------------------------- +// +TUint32 CIMPSSAPSettingsBody::Uid() const + { + return iUID; + } + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SAPName() +// ----------------------------------------------------------------------------- +// +const TDesC& CIMPSSAPSettingsBody::SAPName() const + { + return DoGet( iSAPName ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SAPAddress() +// ----------------------------------------------------------------------------- +// +const TDesC& CIMPSSAPSettingsBody::SAPAddress() const + { + return DoGet( iSAPAddress ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SAPPort() +// ----------------------------------------------------------------------------- +// +TInt32 CIMPSSAPSettingsBody::SAPPort() const + { + return iSAPPort; + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SAPUserId() +// ----------------------------------------------------------------------------- +// +const TDesC& CIMPSSAPSettingsBody::SAPUserId() const + { + return DoGet( iSAPUserId ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SAPUserPassword() +// ----------------------------------------------------------------------------- +// +const TDesC& CIMPSSAPSettingsBody::SAPUserPassword() const + { + return DoGet( iSAPUserPassword ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::HTTPProxyAddress() +// ----------------------------------------------------------------------------- +// +const TDesC& CIMPSSAPSettingsBody::HTTPProxyAddress() const + { + return DoGet( iHTTPProxyAddress ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::HTTPProxyPort() +// ----------------------------------------------------------------------------- +// +TInt32 CIMPSSAPSettingsBody::HTTPProxyPort() const + { + return iHTTPProxyPort; + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::HTTPProxyUserId() +// ----------------------------------------------------------------------------- +// +const TDesC& CIMPSSAPSettingsBody::HTTPProxyUserId() const + { + return DoGet( iHTTPProxyUserId ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::HTTPProxyUserPassword() +// ----------------------------------------------------------------------------- +// +const TDesC& CIMPSSAPSettingsBody::HTTPProxyUserPassword() const + { + return DoGet( iHTTPProxyUserPassword ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::AccessPoint() +// ----------------------------------------------------------------------------- +// +TUint32 CIMPSSAPSettingsBody::AccessPoint() const + { + return iAP; + } + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::ClientId() +// ----------------------------------------------------------------------------- +// +const TDesC& CIMPSSAPSettingsBody::ClientId() const + { + return DoGet( iClientId ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::HighLevelServices() +// ----------------------------------------------------------------------------- +// +TUint32 CIMPSSAPSettingsBody::HighLevelServices() const + { + return iHighLevelServices; + } + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::ServerAuthenticationName() +// ----------------------------------------------------------------------------- +// +const TDesC& CIMPSSAPSettingsBody::ServerAuthenticationName() const + { + return DoGet( iServerAuthenticationName ); + } + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::ServerAuthenticationPassword() +// ----------------------------------------------------------------------------- +// +const TDesC& CIMPSSAPSettingsBody::ServerAuthenticationPassword() const + { + return DoGet( iServerAuthenticationPassword ); + } + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::ServerAcceptedContentType() +// ----------------------------------------------------------------------------- +// +const TDesC& CIMPSSAPSettingsBody::ServerAcceptedContentType() const + { + return DoGet( iServerAcceptedContentType ); + } + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::AccessGroup() +// ----------------------------------------------------------------------------- +// +TIMPSAccessGroup CIMPSSAPSettingsBody::AccessGroup() const + { + return iAccessGroup; + } + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::AuthorizationMode() +// ----------------------------------------------------------------------------- +// +TUint32 CIMPSSAPSettingsBody::AuthorizationMode() const + { + return iAuthorizationMode; + } + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SetSAPNameL() +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::SetSAPNameL( const TDesC& aName ) + { + DoSetBufferL( iSAPName, aName, EOperationSetSAPName, EFalse ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SetSAPAddressL() +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::SetSAPAddressL( const TDesC& aAddress ) + { + DoSetBufferL( iSAPAddress, aAddress, EOperationSetSAPAddress, ETrue ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SetSAPPort() +// ----------------------------------------------------------------------------- +// +TInt CIMPSSAPSettingsBody::SetSAPPort( TInt32 aPort ) + { + return DoSetNumber( iSAPPort, aPort, EOperationSetSAPPort, ETrue ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SetSAPUserIdL() +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::SetSAPUserIdL( const TDesC& aUserId ) + { + DoSetBufferL( iSAPUserId, aUserId, EOperationSetSAPUserId, ETrue ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SetSAPUserPasswordL() +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::SetSAPUserPasswordL( const TDesC& aPassword ) + { + DoSetBufferL( iSAPUserPassword, aPassword, EOperationSetSAPUserPassword, ETrue ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SetHTTPProxyAddressL() +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::SetHTTPProxyAddressL( const TDesC& aAddress ) + { + DoSetBufferL( iHTTPProxyAddress, aAddress, EOperationSetHTTPProxyAddress, ETrue ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SetHTTPProxyPort() +// ----------------------------------------------------------------------------- +// +TInt CIMPSSAPSettingsBody::SetHTTPProxyPort( TInt32 aPort ) + { + return DoSetNumber( iHTTPProxyPort, aPort, EOperationSetHTTPProxyPort, ETrue ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SetHTTPProxyUserIdL() +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::SetHTTPProxyUserIdL( const TDesC& aUserId ) + { + DoSetBufferL( iHTTPProxyUserId, aUserId, EOperationSetHTTPProxyUserId, ETrue ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SetHTTPProxyUserPasswordL() +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::SetHTTPProxyUserPasswordL( const TDesC& aPassword ) + { + DoSetBufferL( iHTTPProxyUserPassword, aPassword, EOperationSetHTTPProxyUserPassword, ETrue ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SetAccessPoint() +// ----------------------------------------------------------------------------- +// +TInt CIMPSSAPSettingsBody::SetAccessPoint( TUint32 aAP ) + { + return DoSetNumber( iAP, aAP, EOperationSetAP, ETrue ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SetClientIdL() +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::SetClientIdL( const TDesC& aClientId ) + { + DoSetBufferL( iClientId, aClientId, EOperationSetClientId, ETrue ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SetHighLevelServices() +// ----------------------------------------------------------------------------- +// +TInt CIMPSSAPSettingsBody::SetHighLevelServices( TUint32 aHighLevelServices ) + { + return DoSetNumber( iHighLevelServices, aHighLevelServices, EOperationSetHighLevelServices, ETrue ); + } + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SetServerAuthenticationNameL() +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::SetServerAuthenticationNameL( const TDesC& aServerAuthenticationName ) + { + DoSetBufferL( iServerAuthenticationName, aServerAuthenticationName, EOperationSetServerAuthenticationName, ETrue ); + } + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SetServerAuthenticationPasswordL() +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::SetServerAuthenticationPasswordL( const TDesC& aServerAuthenticationPassword ) + { + DoSetBufferL( iServerAuthenticationPassword, aServerAuthenticationPassword, EOperationSetServerAuthenticationPassword, ETrue ); + } + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SetServerAcceptedContentTypeL() +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::SetServerAcceptedContentTypeL( const TDesC& aServerAcceptedContentType ) + { + DoSetBufferL( iServerAcceptedContentType, aServerAcceptedContentType, EOperationSetServerAcceptedContentType, ETrue ); + } + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::SetAuthorizationMode() +// ----------------------------------------------------------------------------- +// + +TInt CIMPSSAPSettingsBody::SetAuthorizationMode( TUint32 aMode ) + { + return DoSetNumber( iAuthorizationMode, aMode, EOperationSetAuthorizationMode, ETrue ); + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::ProtectL() +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::ProtectL( TIMPSSAPProtection aProtection ) + { + IMPSSAPProtectionHandler::ValidateOperationL( iProtection, EOperationSetProtection ); + IMPSSAPProtectionHandler::ChechkIsProperProtectionLevelL( aProtection ); + iProtection = aProtection; + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::Protection() +// ----------------------------------------------------------------------------- +// +TIMPSSAPProtection CIMPSSAPSettingsBody::Protection() const + { + return iProtection; + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::IncreaseLoginCount() +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::IncreaseLoginCount() + { + iLoginCount++; + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::LoginCount() +// ----------------------------------------------------------------------------- +// +TUint32 CIMPSSAPSettingsBody::LoginCount() const + { + return iLoginCount; + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::EqualConnectionSettings() +// ----------------------------------------------------------------------------- +// +TBool CIMPSSAPSettingsBody::EqualConnectionSettings( const CIMPSSAPSettingsBody& aOther ) const + { + TInt result; + + result = iSAPAddress && iSAPAddress->Compare( aOther.SAPAddress() ); + result |= iHTTPProxyAddress && iHTTPProxyAddress->Compare( aOther.HTTPProxyAddress() ); + result |= !( iSAPPort == aOther.SAPPort() ); + result |= !( iHTTPProxyPort == aOther.HTTPProxyPort() ); + + return !result; + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::EqualUserSettings() +// ----------------------------------------------------------------------------- +// +TBool CIMPSSAPSettingsBody::EqualUserSettings( const CIMPSSAPSettingsBody& aOther ) const + { + TInt result; + + result = iSAPUserId && iSAPUserId->Compare( aOther.SAPUserId() ); + result |= iSAPUserPassword && iSAPUserPassword->Compare( aOther.SAPUserPassword() ); + result |= iHTTPProxyUserId && iHTTPProxyUserId->Compare( aOther.HTTPProxyUserId() ); + result |= iHTTPProxyUserPassword && iHTTPProxyUserPassword->Compare( aOther.HTTPProxyUserPassword() ); + + return !result; + } + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::DoSetLoginCount() +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::DoSetLoginCount( TUint32 aLoginCount ) + { + iLoginCount = aLoginCount; + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::DoResetLoginCount() +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::DoResetLoginCount() + { + iLoginCount = 0; + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::DoResetProtection() +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::DoResetProtection() + { + iProtection = ESAPNoProtection; + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::DoSetUid() +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::DoSetUid( TUint32 aUid ) + { + iUID = aUid; + } + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettings::DoSetAccessGroup() +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::DoSetAccessGroup( TIMPSAccessGroup aGroup ) + { + iAccessGroup = aGroup; + } + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::DoSetBufferL() +// ----------------------------------------------------------------------------- +// +void CIMPSSAPSettingsBody::DoSetBufferL( HBufC*& aPtr, const TDesC& aData, TInt aOperation, TBool aAffectsToLoginCount ) + { + IMPSSAPProtectionHandler::ValidateOperationL( iProtection, aOperation ); + + HBufC* tmp = aData.AllocL(); //alloc first the new data + + if ( aAffectsToLoginCount ) + { + if ( !aPtr || + ( aPtr && ( aPtr->Compare( aData ) != 0 ) ) ) + { + iLoginCount = 0; + } + } + + //calculate dynamic data size change + iDynamicDataSize -= IMPSSAPSerializer::BufferSizeInBytes( aPtr ); + iDynamicDataSize += IMPSSAPSerializer::BufferSizeInBytes( tmp ); + + //assign the new value + delete aPtr; + aPtr = tmp; + } + + +// ----------------------------------------------------------------------------- +// CIMPSSAPSettingsBody::DoSetNumber() +// ----------------------------------------------------------------------------- +// +template< class T > +TInt CIMPSSAPSettingsBody::DoSetNumber( T& aOldData, + T aData, + TInt aOperation, + TBool aAffectsToLoginCount ) + { + TInt err = IMPSSAPProtectionHandler::ValidateOperation( iProtection, aOperation ); + if ( err != KErrNone ) + { + return err; + } + + if ( aAffectsToLoginCount ) + { + if ( aOldData != aData ) + { + iLoginCount = 0; + } + } + + aOldData = aData; + + return KErrNone; + } + + + + +// End of File + +