TBool CAnsPhoneAppUi::LookupTelNumber(TDes& aName,const TDesC& aNumber)
{
CContactDatabase* contactsDB=CContactDatabase::OpenL();
CleanupStack::PushL(contactsDB);
CContactIdArray* iContactIds=NULL;
CContactItemFieldDef* findFields=new CContactItemFieldDef();
CleanupStack::PushL(findFields);
findFields->AppendL(KUidContactFieldPhoneNumber);
//search the phonenumber field with the keyword;
iContactIds=contactsDB->FindLC(aNumber,findFields);
TBool find=EFalse;
for (TInt i=0; i<iContactIds->Count(); i++ ) {
CContactItem * p_item = contactsDB->ReadContactL( (*iContactIds)[i]
);
CleanupStack::PushL(p_item);
TInt i_name = p_item->CardFields().Find(KUidContactFieldGivenName);
TInt i_fname = p_item->CardFields().Find(KUidContactFieldFamilyName);
TInt i_phone = p_item->CardFields().Find(KUidContactFieldPhoneNumber);
if(i_name != KErrNotFound || i_fname != KErrNotFound)
{
TPtrC16 p_str_name = p_item->CardFields()
[i_name].TextStorage()->Text();
TPtrC16 p_str_fname = p_item->CardFields()
[i_fname].TextStorage()->Text();
aName.Copy(p_str_fname);
aName.Append(p_str_name);
find = ETrue ;
}else
{
aName.Zero();
find = EFalse;
}
CleanupStack::Pop(p_item);
contactsDB->CloseContactL((*iContactIds)[i] );
if (find) break;
}
CleanupStack::PopAndDestroy(3);
return find;
}