diff -r 000000000000 -r e6b17d312c8b ximpfw/presence/srcpresencedatamodel/presenceinfo/presenceinfofieldvaluebinaryimp.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ximpfw/presence/srcpresencedatamodel/presenceinfo/presenceinfofieldvaluebinaryimp.cpp Thu Dec 17 08:54:49 2009 +0200 @@ -0,0 +1,198 @@ +/* +* Copyright (c) 2006 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: MPresenceInfoFieldValueText API object implementation. + * +*/ + + +#include "presenceinfofieldvaluebinaryimp.h" +#include "presenceinfofieldvaluebinary.h" +#include "ximprbufhelpers.h" +#include "ximpobjecthelpers.h" + +// ============================ MEMBER FUNCTIONS ============================= + +// --------------------------------------------------------------------------- +// CPresenceInfoFieldValueBinaryImp::NewLC() +// --------------------------------------------------------------------------- +// +EXPORT_C CPresenceInfoFieldValueBinaryImp* CPresenceInfoFieldValueBinaryImp::NewLC( + TInt aMaxLength /* = NPresenceInfo::KPrValueLengthUnlimited */ + ) + { + CPresenceInfoFieldValueBinaryImp* self = new ( ELeave ) CPresenceInfoFieldValueBinaryImp( aMaxLength ); + CleanupStack::PushL( self ); + self->ConstructL(); + return self; + } + +// --------------------------------------------------------------------------- +// CPresenceInfoFieldValueBinaryImp::NewFromStreamLC() +// --------------------------------------------------------------------------- +// +XIMPIMP_IMPLEMENT_DATAOBJ_NEWFROMSTREAM( CPresenceInfoFieldValueBinaryImp ) + +// --------------------------------------------------------------------------- +// Implement supported interface access. +// --------------------------------------------------------------------------- +// +XIMPIMP_IF_BASE_GET_INTERFACE_BEGIN( CPresenceInfoFieldValueBinaryImp, MPresenceInfoFieldValueBinary ) + XIMPIMP_IF_BASE_GET_CLASS( CXIMPApiDataObjBase, this ) +XIMPIMP_IF_BASE_GET_INTERFACE_END() +XIMPIMP_IF_BASE_GET_CONST_INTERFACE_BEGIN( CPresenceInfoFieldValueBinaryImp, MPresenceInfoFieldValueBinary ) + XIMPIMP_IF_BASE_GET_CONST_CLASS( CXIMPApiDataObjBase, this ) +XIMPIMP_IF_BASE_GET_INTERFACE_END() + +// --------------------------------------------------------------------------- +// CPresenceInfoFieldValueBinaryImp::~CPresenceInfoFieldValueBinaryImp() +// --------------------------------------------------------------------------- +// +CPresenceInfoFieldValueBinaryImp::~CPresenceInfoFieldValueBinaryImp() + { + iValue.Close(); + iMimeType.Close(); + } + +// --------------------------------------------------------------------------- +// CPresenceInfoFieldValueBinaryImp::CPresenceInfoFieldValueBinaryImp() +// --------------------------------------------------------------------------- +// +CPresenceInfoFieldValueBinaryImp::CPresenceInfoFieldValueBinaryImp( + TInt aMaxLength ) + { + iMaxLength = aMaxLength; + } + +// --------------------------------------------------------------------------- +// CPresenceInfoFieldValueBinaryImp::CPresenceInfoFieldValueBinaryImp() +// --------------------------------------------------------------------------- +// +CPresenceInfoFieldValueBinaryImp::CPresenceInfoFieldValueBinaryImp() + { + // nothing + } + +// --------------------------------------------------------------------------- +// CPresenceInfoFieldValueBinaryImp::ConstructL() +// --------------------------------------------------------------------------- +// +void CPresenceInfoFieldValueBinaryImp::ConstructL() + { + // always allocate a 0-length here, then in the setter enforce + // the maximal length + iValue.CreateL( 0 ); + iMimeType.CreateL( 0 ); + } + +// --------------------------------------------------------------------------- +// CPresenceInfoFieldValueBinaryImp::ExternalizeL() +// --------------------------------------------------------------------------- +// +void CPresenceInfoFieldValueBinaryImp::ExternalizeL( RWriteStream& aStream ) const + { + XIMPRBuf8Helper::ExternalizeL( iValue, aStream ); + XIMPRBuf8Helper::ExternalizeL( iMimeType, aStream ); + aStream.WriteInt32L( iMaxLength ); + } + +// --------------------------------------------------------------------------- +// CPresenceInfoFieldValueBinaryImp::InternalizeL() +// --------------------------------------------------------------------------- +// +EXPORT_C void CPresenceInfoFieldValueBinaryImp::InternalizeL( RReadStream& aStream ) + { + XIMPRBuf8Helper::InternalizeL( iValue, aStream ); + XIMPRBuf8Helper::InternalizeL( iMimeType, aStream ); + iMaxLength = aStream.ReadInt32L(); + } + +// --------------------------------------------------------------------------- +// CPresenceInfoFieldValueBinaryImp::EqualsContent() +// --------------------------------------------------------------------------- +// +TBool CPresenceInfoFieldValueBinaryImp::EqualsContent( + const CXIMPApiDataObjBase& aOtherInstance ) const + { + const CPresenceInfoFieldValueBinaryImp* tmp = + TXIMPGetImpClassOrPanic< const CPresenceInfoFieldValueBinaryImp >::From( + aOtherInstance.Base() ); + + TBool same = ETrue; + TBool x; + x = 0 == iValue.Compare( tmp->iValue ); + same &= x; + + x = 0 == iMimeType.Compare( tmp->iMimeType ); + same &= x; + + x = iMaxLength == tmp->iMaxLength; + same &= x; + + return same; + } + +// --------------------------------------------------------------------------- +// CPresenceInfoFieldValueBinaryImp::MaxLength() +// --------------------------------------------------------------------------- +// +TInt CPresenceInfoFieldValueBinaryImp::MaxLength() const + { + return iMaxLength; + } + +// --------------------------------------------------------------------------- +// CPresenceInfoFieldValueBinaryImp::BinaryValue() +// --------------------------------------------------------------------------- +// +TPtrC8 CPresenceInfoFieldValueBinaryImp::BinaryValue() const + { + return iValue; + } + +// --------------------------------------------------------------------------- +// CPresenceInfoFieldValueBinaryImp::MimeType() +// --------------------------------------------------------------------------- +// +const TPtrC8 CPresenceInfoFieldValueBinaryImp::MimeType() const + { + return iMimeType; + } + +// --------------------------------------------------------------------------- +// CPresenceInfoFieldValueBinaryImp::SetBinaryValueL() +// --------------------------------------------------------------------------- +// +void CPresenceInfoFieldValueBinaryImp::SetBinaryValueL( const TDesC8& aValue ) + { + // maximal length might be enforced + User::LeaveIfError( ( iMaxLength != NPresenceInfo::KValueLengthUnlimited ) && + ( iMaxLength < aValue.Length() ) ? KErrOverflow : KErrNone ); + + HBufC8* tmp = aValue.AllocL(); + iValue.Close(); + iValue.Assign( tmp ); + } + +// --------------------------------------------------------------------------- +// CPresenceInfoFieldValueBinaryImp::SetMimeTypeL +// --------------------------------------------------------------------------- +// +void CPresenceInfoFieldValueBinaryImp::SetMimeTypeL( const TDesC8& aValue ) + { + HBufC8* tmp = aValue.AllocL(); + iMimeType.Close(); + iMimeType.Assign( tmp ); + } + +// End of file