meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrncsemailaddressobject.cpp
changeset 0 8466d47a6819
child 16 4ce476e64c59
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrncsemailaddressobject.cpp	Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,268 @@
+/*
+* Copyright (c) 2007-2009 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
+*
+*/
+
+
+//  CLASS HEADER
+#include "emailtrace.h"
+#include "cesmrncsemailaddressobject.h"
+
+// Unnamed namespace for local definitions
+namespace{
+
+// Extra space needed when generating display name and address
+const TInt KExtraSpace = 3;
+_LIT(KEmptySpace, " ");
+_LIT(KDotAndEmptySpace, ", ");
+
+}//namespace
+
+// ======== MEMBER FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CESMRNcsEmailAddressObject::NewL
+// ---------------------------------------------------------------------------
+//
+CESMRNcsEmailAddressObject* CESMRNcsEmailAddressObject::NewL( TBool aUserAdded )
+    {
+    FUNC_LOG;
+    CESMRNcsEmailAddressObject* self = new( ELeave ) CESMRNcsEmailAddressObject( aUserAdded );
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CESMRNcsEmailAddressObject::NewL
+// ---------------------------------------------------------------------------
+//
+CESMRNcsEmailAddressObject* CESMRNcsEmailAddressObject::NewL(
+    const CESMRNcsEmailAddressObject& aAddress )
+    {
+    FUNC_LOG;
+    CESMRNcsEmailAddressObject* self = new( ELeave ) CESMRNcsEmailAddressObject( ETrue );
+    CleanupStack::PushL( self );
+    self->ConstructL( aAddress );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CESMRNcsEmailAddressObject::NewL
+// ---------------------------------------------------------------------------
+//
+CESMRNcsEmailAddressObject* CESMRNcsEmailAddressObject::NewL(
+    const TDesC& aDisplayName,
+    const TDesC& aEmailAddress )
+    {
+    FUNC_LOG;
+    CESMRNcsEmailAddressObject* self = new( ELeave ) CESMRNcsEmailAddressObject( ETrue );
+    CleanupStack::PushL( self );
+    self->ConstructL( aDisplayName, aEmailAddress );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CESMRNcsEmailAddressObject::~CESMRNcsEmailAddressObject
+// ---------------------------------------------------------------------------
+//
+CESMRNcsEmailAddressObject::~CESMRNcsEmailAddressObject()
+    {
+    FUNC_LOG;
+    delete iEmailAddress;
+    delete iDisplayName;
+    delete iFormattedAddress;
+    }
+
+// ---------------------------------------------------------------------------
+// CESMRNcsEmailAddressObject::CESMRNcsEmailAddressObject
+// ---------------------------------------------------------------------------
+//
+CESMRNcsEmailAddressObject::CESMRNcsEmailAddressObject( TBool aUserAdded )
+    : iDirtyFlag( ETrue ), iUserAdded( aUserAdded)
+    {
+    FUNC_LOG;
+    //do nothing
+    }
+
+// ---------------------------------------------------------------------------
+// CESMRNcsEmailAddressObject::NewL
+// ---------------------------------------------------------------------------
+//
+void CESMRNcsEmailAddressObject::ConstructL()
+    {
+    FUNC_LOG;
+    iEmailAddress = HBufC::NewL( 0 );
+    iDisplayName = HBufC::NewL( 0 );
+    iFormattedAddress = HBufC::NewL( 0 );
+    }
+
+// ---------------------------------------------------------------------------
+// CESMRNcsEmailAddressObject::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CESMRNcsEmailAddressObject::ConstructL(
+    const CESMRNcsEmailAddressObject& aAddress )
+    {
+    FUNC_LOG;
+    ConstructL( aAddress.DisplayName(), aAddress.EmailAddress() );
+    }
+
+// ---------------------------------------------------------------------------
+// CESMRNcsEmailAddressObject::ConstructL
+// ---------------------------------------------------------------------------
+//
+void CESMRNcsEmailAddressObject::ConstructL(
+    const TDesC& aDisplayName,
+    const TDesC& aEmailAddress )
+    {
+    FUNC_LOG;
+    iEmailAddress = aEmailAddress.AllocL();
+    iDisplayName = aDisplayName.AllocL();
+    iFormattedAddress = HBufC::NewL( 0 );
+    }
+
+// ---------------------------------------------------------------------------
+// CESMRNcsEmailAddressObject::SetEmailAddressL
+// ---------------------------------------------------------------------------
+//
+void CESMRNcsEmailAddressObject::SetEmailAddressL( const TDesC& aEmailAddress )
+    {
+    FUNC_LOG;
+    HBufC* buf = aEmailAddress.AllocL();
+    delete iEmailAddress;
+    iEmailAddress = buf;
+
+    TPtr ptr = iEmailAddress->Des();
+    ptr.Trim();
+
+    iDirtyFlag = ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CESMRNcsEmailAddressObject::SetDisplayNameL
+// ---------------------------------------------------------------------------
+//
+void CESMRNcsEmailAddressObject::SetDisplayNameL(
+    const TDesC& aGivenName,
+    const TDesC& aFamilyName )
+    {
+    FUNC_LOG;
+    TInt len = aGivenName.Length() + aFamilyName.Length() + KExtraSpace;
+    delete iDisplayName;
+    iDisplayName = NULL;
+    iDisplayName = HBufC::NewL( len );
+    TPtr ptr = iDisplayName->Des();
+    ptr.Append( aFamilyName );
+    ptr.Append( KDotAndEmptySpace );
+    ptr.Append( aGivenName );
+
+    iDirtyFlag = ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CESMRNcsEmailAddressObject::SetDisplayNameL
+// ---------------------------------------------------------------------------
+//
+void CESMRNcsEmailAddressObject::SetDisplayNameL( const TDesC& aName )
+    {
+    FUNC_LOG;
+    HBufC* buf = aName.AllocL();
+    delete iDisplayName;
+    iDisplayName = buf;
+
+    TPtr ptr = iEmailAddress->Des();
+    ptr.Trim();
+
+    iDirtyFlag = ETrue;
+    }
+
+// ---------------------------------------------------------------------------
+// CESMRNcsEmailAddressObject::FormattedAddressL
+// ---------------------------------------------------------------------------
+//
+const TDesC& CESMRNcsEmailAddressObject::FormattedAddressL()
+    {
+    FUNC_LOG;
+    if( iDirtyFlag )
+        {
+        GenerateFormattedAddressL(); //codescanner::leave
+        iDirtyFlag = EFalse;
+        }
+
+    return *iFormattedAddress;
+    }
+
+// ---------------------------------------------------------------------------
+// CESMRNcsEmailAddressObject::IsIdnaCompliantAddress
+// ---------------------------------------------------------------------------
+//
+TBool CESMRNcsEmailAddressObject::IsIdnaCompliantAddress()
+    {
+    FUNC_LOG;
+    return EFalse;
+    }
+
+// ---------------------------------------------------------------------------
+// CESMRNcsEmailAddressObject::GenerateFormattedAddressL
+// ---------------------------------------------------------------------------
+//
+void CESMRNcsEmailAddressObject::GenerateFormattedAddressL()
+    {
+    FUNC_LOG;
+    TInt length = 0;
+
+    TInt dispNameLength = iDisplayName->Length();
+    TInt emailLength = iEmailAddress->Length();
+
+    if( dispNameLength > 0 )
+        {
+        length += dispNameLength;
+        length += KExtraSpace; // for the delimeters ->
+                               // format is "Forname Surname <Forname.Surname(at)dot.com>"
+        }
+
+    length += emailLength;
+
+    HBufC* buf = HBufC::NewLC( length );
+    TPtr ptr = buf->Des();
+
+    if( dispNameLength > 0 )
+        {
+        ptr.Append( *iDisplayName );
+        ptr.Append( KEmptySpace ); // add one white space
+        _LIT(KLeft, "<");
+        ptr.Append( KLeft );
+        }
+
+    ptr.Append( *iEmailAddress );
+
+    if( dispNameLength > 0 )
+        {
+        _LIT(KRight, ">");
+        ptr.Append( KRight );
+        }
+
+    delete iFormattedAddress;
+    iFormattedAddress = buf;
+
+    CleanupStack::Pop( buf );
+    }
+
+// End of file
+