CPbkContactEngine* pbkContactEngine;
pbkContactEngine = CPbkContactEngine::NewL();
CleanupDeletePushL(pbkContactEngine);
RPbkViewResourceFile phonebookResource( *(CEikonEnv::Static()) );
if ( !phonebookResource.IsOpen())
{
phonebookResource.OpenL();
}
// Add searching array to parameters
CContactDatabase::TContactViewFilter filter(CContactDatabase::EPhonable);
CPbkMultipleEntryFetchDlg::TParams params;
// CPbkSingleEntryFetchDlg::TParams params;
params.iContactView = &pbkContactEngine->FilteredContactsViewL( filter );
// Launch fetching dialog
CPbkMultipleEntryFetchDlg* fetchDlg = CPbkMultipleEntryFetchDlg::NewL( params, *pbkContactEngine );
// CPbkSingleEntryFetchDlg* fetchDlg = CPbkSingleEntryFetchDlg::NewL( params/*, *pbkContactEngine*/ );
fetchDlg->SetMopParent( aMopParent );
TInt okPressed = fetchDlg->ExecuteLD();
CleanupStack::PushL( params.iMarkedEntries );
if ( okPressed )
{
TInt paramCount = params.iMarkedEntries->Count();
// Get the selected contacts id array
// if (paramCount > 0)
// {
// const TContactItemId cid = ( *params.iMarkedEntries )[0];
//
// // Open the selected contact using Phonebook engine,
// // choose correct number (launch list query if needed)
// CPbkContactItem* pbkItem = pbkContactEngine->ReadContactLC( cid );
// TPtrC tempAddress;
//
// CPbkPhoneNumberSelect* selectDlg = new (ELeave) CPbkPhoneNumberSelect( );
// CPbkPhoneNumberSelect::TParams params2(*pbkItem);
//
// if (selectDlg->ExecuteLD(params2))
// {
// TPtrC smsNumber = params2.SelectedField()->Text();
// if (smsNumber.Length() > 0)
// SetContactTextL(&smsNumber);
// }
//
// CleanupStack::PopAndDestroy(1); // pbkItem
// }
CDesCArray *numList = new (ELeave) CDesCArrayFlat(3);
CleanupDeletePushL(numList);
for ( TInt i = 0; i < paramCount; ++i )
{
const TContactItemId cid = ( *params.iMarkedEntries )[i];
// Open the selected contact using Phonebook engine,
// choose correct number (launch list query if needed)
CPbkContactItem* pbkItem = pbkContactEngine->ReadContactLC( cid );
// TPtrC tempAddress;
CPbkPhoneNumberSelect* selectDlg = new (ELeave) CPbkPhoneNumberSelect( );
CPbkPhoneNumberSelect::TParams params2(*pbkItem);
if (selectDlg->ExecuteLD(params2))
{
TPtrC smsNumber = params2.SelectedField()->Text();
if (smsNumber.Length() > 0)
numList->AppendL(smsNumber);
}
// tempAddress.Set( selectDlg->ExecuteLD(*pbkItem, pbkItem->DefaultSmsField(), ETrue) );
CleanupStack::PopAndDestroy(1); // pbkItem
}
TInt count = numList->MdcaCount();
if (count > 0)
{
CDesCArray *numList2 = GetContactListL();
CleanupDeletePushL(numList2);
if (numList2 != NULL && numList2->MdcaCount()>0)
{
TInt count2 = numList2->MdcaCount();
for(TInt i=0; i<count; i++)
{
TBool bFound = EFalse;
TPtrC ptrItem = numList->MdcaPoint(i);
for(TInt j=0; j<count2; j++)
{
TPtrC ptrItem2 = numList2->MdcaPoint(j);
if (ptrItem.Compare(ptrItem2) == 0)
{
bFound = ETrue;
break;
}
}
if (!bFound)
numList2->AppendL(ptrItem);
}
SetContactListL(numList2);
}
else
SetContactListL(numList);
CleanupStack::PopAndDestroy(numList2);
}
CleanupStack::PopAndDestroy(numList);
}
CleanupStack::PopAndDestroy(); // iMarkedEntries
/*
TInt okPressed = fetchDlg->ExecuteLD();
if ( okPressed )
{
const TContactItemId cid = params.iSelectedEntry;
// Open the selected contact using Phonebook engine,
// choose correct number (launch list query if needed)
CPbkContactItem* pbkItem = pbkContactEngine->ReadContactLC( cid );
TPtrC tempAddress;
CPbkPhoneNumberSelect* selectDlg = new (ELeave) CPbkPhoneNumberSelect( );
CPbkPhoneNumberSelect::TParams params2(*pbkItem);
if (selectDlg->ExecuteLD(params2))
{
TPtrC smsNumber = params2.SelectedField()->Text();
if (smsNumber.Length() > 0)
SetContactTextL(smsNumber);
}
CleanupStack::PopAndDestroy(1); // pbkItem
}
*/
phonebookResource.Close(); // Close the phonebook view
CleanupStack::PopAndDestroy(pbkContactEngine);