--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/emailui/src/ncsemailaddressobject.cpp Thu Dec 17 08:39:21 2009 +0200
@@ -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 <name.lastnamemiumaudot.com>"
+ 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
+