diff -r d189ee25cf9d -r 3533d4323edc emailuis/emailui/src/ncsemailaddressobject.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/emailui/src/ncsemailaddressobject.cpp Wed Sep 01 12:28:57 2010 +0100 @@ -0,0 +1,209 @@ +/* +* Copyright (c) 2007 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: Implementation of the MNcsEmailAddressObject +* +*/ + + +// INCLUDES +#include "emailtrace.h" +#include "ncsemailaddressobject.h" +#include "ncsconstants.h" + + +// CONSTRUCTION AND DESTRUCTION + +CNcsEmailAddressObject* CNcsEmailAddressObject::NewL( TBool aUserAdded ) + { + FUNC_LOG; + CNcsEmailAddressObject* self = new( ELeave ) CNcsEmailAddressObject( aUserAdded ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +CNcsEmailAddressObject* CNcsEmailAddressObject::NewL( + const CNcsEmailAddressObject& aAddress ) + { + FUNC_LOG; + CNcsEmailAddressObject* self = new( ELeave ) CNcsEmailAddressObject( aAddress ); + CleanupStack::PushL( self ); + self->ConstructL( aAddress ); + CleanupStack::Pop( self ); + return self; + } + +CNcsEmailAddressObject* CNcsEmailAddressObject::NewL( + const TDesC& aDisplayName, + const TDesC& aEmailAddress ) + { + FUNC_LOG; + CNcsEmailAddressObject* self = new( ELeave ) CNcsEmailAddressObject( ETrue ); + CleanupStack::PushL( self ); + self->ConstructL( aDisplayName, aEmailAddress ); + CleanupStack::Pop( self ); + return self; + } + +CNcsEmailAddressObject::~CNcsEmailAddressObject() + { + FUNC_LOG; + delete iEmailAddress; + delete iDisplayName; + delete iFormattedAddress; + } + +CNcsEmailAddressObject::CNcsEmailAddressObject( TBool aUserAdded ) + : iDirtyFlag( ETrue ), + iUserAdded( aUserAdded ), + iDisplayFull( EFalse ) + { + FUNC_LOG; + } + +CNcsEmailAddressObject::CNcsEmailAddressObject( const CNcsEmailAddressObject& aAddress ) + : iDirtyFlag( ETrue ), + iUserAdded( aAddress.IsUserAdded() ), + iDisplayFull( aAddress.DisplayFull() ) + { + FUNC_LOG; + } + +void CNcsEmailAddressObject::ConstructL() + { + FUNC_LOG; + iEmailAddress = HBufC::NewL( 0 ); + iDisplayName = HBufC::NewL( 0 ); + iFormattedAddress = HBufC::NewL( 0 ); + } + +void CNcsEmailAddressObject::ConstructL( + const CNcsEmailAddressObject& aAddress ) + { + FUNC_LOG; + ConstructL( aAddress.DisplayName(), aAddress.EmailAddress() ); + } + +void CNcsEmailAddressObject::ConstructL( + const TDesC& aDisplayName, + const TDesC& aEmailAddress ) + { + FUNC_LOG; + iEmailAddress = aEmailAddress.AllocL(); + TPtr ptr = iEmailAddress->Des(); + ptr.Trim(); + + iDisplayName = aDisplayName.AllocL(); + + iFormattedAddress = HBufC::NewL( 0 ); + } + + +// METHODS + +void CNcsEmailAddressObject::SetEmailAddressL( const TDesC& aEmailAddress ) + { + FUNC_LOG; + HBufC* buf = aEmailAddress.AllocL(); + delete iEmailAddress; + iEmailAddress = buf; + + TPtr ptr = iEmailAddress->Des(); + ptr.Trim(); + + iDirtyFlag = ETrue; + } + +void CNcsEmailAddressObject::SetDisplayNameL( + const TDesC& aGivenName, + const TDesC& aFamilyName ) + { + FUNC_LOG; + TInt len = aGivenName.Length() + aFamilyName.Length() + KLastNameFirstNameSeparator().Length(); + delete iDisplayName; + iDisplayName = NULL; + iDisplayName = HBufC::NewL( len ); + TPtr ptr = iDisplayName->Des(); + ptr.Append( aFamilyName ); + ptr.Append( KLastNameFirstNameSeparator ); + ptr.Append( aGivenName ); + + iDirtyFlag = ETrue; + } + +void CNcsEmailAddressObject::SetDisplayNameL( const TDesC& aName ) + { + FUNC_LOG; + HBufC* buf = aName.AllocL(); + delete iDisplayName; + iDisplayName = buf; + + TPtr ptr = iEmailAddress->Des(); + ptr.Trim(); + + iDirtyFlag = ETrue; + } + +const TDesC& CNcsEmailAddressObject::FormattedAddressL() + { + FUNC_LOG; + if( iDirtyFlag ) + { + GenerateFormattedAddressL(); + iDirtyFlag = EFalse; + } + + return *iFormattedAddress; + } + +void CNcsEmailAddressObject::GenerateFormattedAddressL() + { + FUNC_LOG; + TInt length = 0; + HBufC* buf = NULL; + + TInt dispNameLength = iDisplayName->Length(); + TInt emailLength = iEmailAddress->Length(); + + if( dispNameLength > 0 ) + { + // format is "Name Lastname " + length = dispNameLength + emailLength + + KSpace().Length() + + KEmailAddressDecorationHead().Length() + + KEmailAddressDecorationTail().Length() + + KEmailAddressSeparator().Length(); + + buf = HBufC::NewL( length ); + TPtr ptr = buf->Des(); + + ptr.Append( *iDisplayName ); + ptr.Append( KSpace ); + ptr.Append( KEmailAddressDecorationHead ); + ptr.Append( *iEmailAddress ); + ptr.Append( KEmailAddressDecorationTail ); + ptr.Append( KEmailAddressSeparator ); + } + else + { + buf = iEmailAddress->AllocL(); + } + + delete iFormattedAddress; + iFormattedAddress = buf; + } + +// End of file +