diff -r 4697dfb2d7ad -r 238255e8b033 messagingapp/msgappfw/server/src/ccsconversationcontact.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingapp/msgappfw/server/src/ccsconversationcontact.cpp Fri Apr 16 14:56:15 2010 +0300 @@ -0,0 +1,278 @@ +/* +* 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: This shall hold all the contact data associated with a +* conversation like name, numbers and contact link . + * +*/ + + +// SYSTEM INCLUDE FILES +#include + +// USER INCLUDE FILES +#include "ccsconversation.h" +#include "ccsconversationcontact.h" +#include "ccsdebug.h" + +// ============================== MEMBER FUNCTIONS ============================ + +// ---------------------------------------------------------------------------- +// CCsConversationContact::CCsConversationContact +// Default constructor +// ---------------------------------------------------------------------------- +CCsConversationContact::CCsConversationContact() + { + } + +// ---------------------------------------------------------------------------- +// CCsConversationContact::ConstructL +// Two phase construction +// ---------------------------------------------------------------------------- +void +CCsConversationContact::ConstructL() + { + iFirstName = NULL; + iLastName = NULL; + iNickName = NULL; + iContactId = KErrNotFound; + iPhoneNumberList = new (ELeave) RPointerArray (); + } + +// ---------------------------------------------------------------------------- +// CCsConversationContact::NewL +// Two Phase constructor +// ---------------------------------------------------------------------------- +CCsConversationContact* +CCsConversationContact::NewL() + { + CCsConversationContact* self = new (ELeave) CCsConversationContact(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop(self); + return self; + } + +// ---------------------------------------------------------------------------- +// CCsConversationContact::~CCsConversationContact +// Destructor +// ---------------------------------------------------------------------------- +CCsConversationContact::~CCsConversationContact() + { + if(iFirstName) + { + delete iFirstName; + iFirstName = NULL; + } + + if(iLastName) + { + delete iLastName; + iLastName = NULL; + } + + if(iNickName) + { + delete iNickName; + iNickName = NULL; + } + + if (iPhoneNumberList) + { + iPhoneNumberList->ResetAndDestroy(); + iPhoneNumberList->Close(); + delete iPhoneNumberList; + iPhoneNumberList = NULL; + } + } + +// ---------------------------------------------------------------------------- +// CCsConversationContact::GetFirstName +// get the first name of the conversation +// ---------------------------------------------------------------------------- +HBufC* +CCsConversationContact::GetFirstName() const + { + return iFirstName; + } + +// ---------------------------------------------------------------------------- +// CCsConversationContact::GetLastName +// get the last name of the conversation +// ---------------------------------------------------------------------------- +HBufC* +CCsConversationContact::GetLastName() const + { + return iLastName; + } + +// ---------------------------------------------------------------------------- +// CCsConversationContact::GetNickName +// get the nick name of the conversation +// ---------------------------------------------------------------------------- +HBufC* +CCsConversationContact::GetNickName() const + { + return iNickName; + } + +// ---------------------------------------------------------------------------- +// CCsConversationContact::SetFirstNameL +// Sets the first name of the conversation +// ---------------------------------------------------------------------------- +void +CCsConversationContact::SetFirstNameL( + const TDesC& aFirstName) + { + if( &aFirstName ) + { + TRAPD(error, iFirstName = aFirstName.AllocL()); + if(error != KErrNone) + { + // handle error + // call panic + PRINT1 ( _L("CCsConversationContact::SetFirstNameL - Error:%d"), + error ); + } + } + } + +// ---------------------------------------------------------------------------- +// CCsConversationContact::SetLastNameL +// Sets the first name of the conversation +// ---------------------------------------------------------------------------- +void +CCsConversationContact::SetLastNameL( + const TDesC& aLastName) + { + if( &aLastName ) + { + TRAPD(error, iLastName = aLastName.AllocL()); + if(error != KErrNone) + { + // handle error + // call panic + PRINT1 ( _L("CCsConversationContact::SetLastNameL - Error:%d"), + error ); + } + } + } + +// ---------------------------------------------------------------------------- +// CCsConversationContact::SetNickNameL +// Sets the first name of the conversation +// ---------------------------------------------------------------------------- +void +CCsConversationContact::SetNickNameL( + const TDesC& aNickName) + { + if( &aNickName ) + { + TRAPD(error, iNickName = aNickName.AllocL()); + if(error != KErrNone) + { + // handle error + // call panic + PRINT1 ( _L("CCsConversationContact::SetNickNameL - Error:%d"), + error ); + } + } + } +// ---------------------------------------------------------------------------- +// CCsConversationContact::GetContactId +// get the phonebook Contact Id link for the conversation +// ---------------------------------------------------------------------------- +TInt32 +CCsConversationContact::GetContactId() const + { + return iContactId; + } + +// ---------------------------------------------------------------------------- +// CCsConversationContact::SetContactLink +// Sets the phonebook Contact Id for the conversation +// ---------------------------------------------------------------------------- +void +CCsConversationContact::SetContactId( + TInt32 aContactId) + { + iContactId = aContactId; + } + +// ---------------------------------------------------------------------------- +// CCsConversationContact::AddPhoneNumber +// Sets the phone number inside contact list +// ---------------------------------------------------------------------------- +void +CCsConversationContact::AddPhoneNumberL( + TDesC& aPhoneNumber) + { + HBufC* phoneNumber = aPhoneNumber.AllocL(); + iPhoneNumberList->AppendL(phoneNumber); + } + +// ---------------------------------------------------------------------------- +// CCsConversationContact::GetPhoneNumberList +// Returns a list of associated phone numbers +// ---------------------------------------------------------------------------- +void +CCsConversationContact::GetPhoneNumberList( + RPointerArray& aPhoneNumbers) + { + for ( int index = 0; index < iPhoneNumberList->Count(); index++ ) + { + HBufC* value = (*iPhoneNumberList)[index]; + aPhoneNumbers.Append(value); + } + } + +// ---------------------------------------------------------------------------- +// CCsConversationContact::MatchPhoneNumber +// Check if the input phone number (aPhoneNumber) is associated with this +// contact. Compares for aNumDigits. +// ---------------------------------------------------------------------------- +TBool +CCsConversationContact::MatchPhoneNumber( + TDesC& aPhoneNumber, TInt aNumDigits) const + { + if (aPhoneNumber.Length() == 0) + { + return EFalse; + } + + TInt useDigits = aNumDigits; + + // Check if phone number is an email address + TImMessageField email; + if ( email.ValidInternetEmailAddress(aPhoneNumber) ) + { + useDigits = aPhoneNumber.Length(); + } + + TInt count = iPhoneNumberList->Count(); + for ( TInt i = 0 ; i < count; i++) + { + HBufC* pno = (*iPhoneNumberList)[i]; + + // Compare only last useDigits dgits of the number/ address + if (aPhoneNumber.Right(useDigits).CompareF(pno->Des(). + Right(useDigits)) == 0) + { + return ETrue; + } + } + return EFalse; + } + + +// EOF