diff -r 000000000000 -r 8466d47a6819 emailuis/emailui/src/FreestyleEmailUiCLSItem.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/emailui/src/FreestyleEmailUiCLSItem.cpp Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,241 @@ +/* +* 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: CLS list item class implementation +* +*/ + + + +#include "emailtrace.h" +#include + +#include "FreestyleEmailUiCLSItem.h" // CFSEmailUiClsItem +#include "ncsconstants.h" + +// ================= MEMBER FUNCTIONS ========================================== +// ----------------------------------------------------------------------------- +// CFSEmailUiClsItem::NewL +// ----------------------------------------------------------------------------- +CFSEmailUiClsItem* CFSEmailUiClsItem::NewL() + { + FUNC_LOG; + CFSEmailUiClsItem* object = CFSEmailUiClsItem::NewLC(); + CleanupStack::Pop( object ); + return object; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiClsItem::NewLC +// ----------------------------------------------------------------------------- +CFSEmailUiClsItem* CFSEmailUiClsItem::NewLC() + { + FUNC_LOG; + CFSEmailUiClsItem* object = new (ELeave) CFSEmailUiClsItem(); + CleanupStack::PushL( object ); + object->ConstructL(); + return object; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiClsItem::~CFSEmailUiClsItem +// ----------------------------------------------------------------------------- +CFSEmailUiClsItem::~CFSEmailUiClsItem() + { + FUNC_LOG; + delete iDisplayName; + delete iEMailAddress; + delete iFullText; + delete iLink; + + iHighlights.Close(); + } + +// ----------------------------------------------------------------------------- +// Creates a copy of the CLS item. +// ----------------------------------------------------------------------------- +CFSEmailUiClsItem* CFSEmailUiClsItem::CloneLC() const + { + FUNC_LOG; + CFSEmailUiClsItem* clone = CFSEmailUiClsItem::NewLC(); + clone->SetDisplayNameL( DisplayName() ); + clone->SetEmailAddressL( EmailAddress() ); + if ( ContactLink() ) + { + clone->SetContactLinkL( *ContactLink() ); + } + clone->SetHighlights( Highlights() ); + clone->SetIsMruItem( IsMruItem() ); + clone->SetMultipleEmails( MultipleEmails() ); + return clone; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiClsItem::SetDisplayNameL +// ----------------------------------------------------------------------------- +void CFSEmailUiClsItem::SetDisplayNameL( const TDesC& aDisplayName ) + { + FUNC_LOG; + delete iDisplayName; + iDisplayName = NULL; + iDisplayName = aDisplayName.AllocL(); + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiClsItem::SetEmailAddressL +// ----------------------------------------------------------------------------- +void CFSEmailUiClsItem::SetEmailAddressL( const TDesC& aEmailAddress ) + { + FUNC_LOG; + delete iEMailAddress; + iEMailAddress = NULL; + iEMailAddress = aEmailAddress.AllocL(); + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiClsItem::SetContactId +// ----------------------------------------------------------------------------- +void CFSEmailUiClsItem::SetContactLinkL( const MVPbkContactLink& aLink ) + { + FUNC_LOG; + MVPbkContactLink* copyLink = aLink.CloneLC(); + CleanupStack::Pop(); + iLink = copyLink; + } + +void CFSEmailUiClsItem::SetIsMruItem( TBool aIsMruItem ) + { + FUNC_LOG; + iIsMruItem = aIsMruItem; + } + +void CFSEmailUiClsItem::SetMultipleEmails( TBool ETrue ) + { + FUNC_LOG; + iMultipleEmails = ETrue; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiClsItem::Highlights +// ----------------------------------------------------------------------------- +const RArray& CFSEmailUiClsItem::Highlights() const + { + return iHighlights; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiClsItem::DisplayName +// ----------------------------------------------------------------------------- +const TDesC& CFSEmailUiClsItem::DisplayName() const + { + FUNC_LOG; + return *iDisplayName; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiClsItem::EmailAddress +// ----------------------------------------------------------------------------- +const TDesC& CFSEmailUiClsItem::EmailAddress() const + { + FUNC_LOG; + return *iEMailAddress; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiClsItem::FullText +// ----------------------------------------------------------------------------- +const TDesC& CFSEmailUiClsItem::FullTextL() + { + FUNC_LOG; + delete iFullText; + iFullText = NULL; + iFullText = HBufC::NewL( iDisplayName->Length() + + KSpace().Length() + + iEMailAddress->Length() ); + + // don't add space if there is no display name + if( iDisplayName->CompareC( KNullDesC ) != 0 ) + { + iFullText->Des().Append( *iDisplayName ); + iFullText->Des().Append( KSpace ); + } + iFullText->Des().Append( *iEMailAddress ); + return *iFullText; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiClsItem::ContactItemId +// ----------------------------------------------------------------------------- +MVPbkContactLink* CFSEmailUiClsItem::ContactLink() const + { + FUNC_LOG; + return iLink; + } + +TBool CFSEmailUiClsItem::IsMruItem() const + { + FUNC_LOG; + return iIsMruItem; + } + +TBool CFSEmailUiClsItem::MultipleEmails() const + { + FUNC_LOG; + return iMultipleEmails; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiClsItem::CFSEmailUiClsItem +// ----------------------------------------------------------------------------- +CFSEmailUiClsItem::CFSEmailUiClsItem() + : iMultipleEmails( EFalse ), iLink( NULL ) + { + FUNC_LOG; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiClsItem::ConstructL +// ----------------------------------------------------------------------------- +void CFSEmailUiClsItem::ConstructL() + { + FUNC_LOG; + iDisplayName = KNullDesC().AllocL(); + iEMailAddress = KNullDesC().AllocL(); + } + +TInt CompareHighlightElements( TPsMatchLocation const& aElement, TPsMatchLocation const& aElement2) +{ + return aElement.index - aElement2.index; +} + +void CFSEmailUiClsItem::SetHighlights( const RArray& aHighlights ) + { + FUNC_LOG; + iHighlights.Reset(); + + // Convert right->left to left->right, this eases the visualisation + for ( TInt i=0; i highlightSortOrder( &CompareHighlightElements ); + iHighlights.Sort(highlightSortOrder); + } +