emailuis/emailui/src/ncsemailaddressobject.cpp
changeset 0 8466d47a6819
--- /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
+