locationsystemui/locationsysui/locutils/src/locrequestorutilsresolverimpl2.cpp
branchRCL_3
changeset 44 2b4ea9893b66
parent 42 02ba3f1733c6
child 45 6b6920c56e2f
--- a/locationsystemui/locationsysui/locutils/src/locrequestorutilsresolverimpl2.cpp	Thu Aug 19 10:20:18 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,782 +0,0 @@
-/*
-* Copyright (c) 2006 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:  Requestor utilities, supports privacy rules.
-*
-*/
-
-
-// INCLUDE FILES
-
-#include <e32base.h>
-#include <barsread.h>
-
-#include <lbs/epos_cposrequestor.h>
-#include <lbs/epos_cposservicerequestor.h>
-#include <lbs/epos_cposcontactrequestor.h>
-
-// Virtual Phonebook Engine API
-#include <CVPbkContactManager.h>
-#include <VPbkContactStoreUris.h>
-#include <CVPbkContactStoreUriArray.h>
-#include <TVPbkContactStoreUriPtr.h>
-#include <MVPbkContactLinkArray.h>
-#include <MVPbkContactOperationBase.h>
-#include <MVPbkContactLink.h>
-#include <MVPbkStoreContact.h>
-#include <TVPbkFieldVersitProperty.h>
-#include <VPbkFieldType.hrh>
-#include <MVPbkContactStoreList.h>
-#include <MVPbkContactStore.h>
-#include <TVPbkFieldTypeMapping.h>
-#include <CVPbkFieldTypeSelector.h>
-
-// Virtual Phonebook Presentation API
-#include <CPbk2StoreConfiguration.h>
-#include <Pbk2ContactNameFormatterFactory.h>
-#include <CPbk2SortOrderManager.h>
-#include <MPbk2ContactNameFormatter.h>
-#include <CVPbkFieldTypeRefsList.h>
-#include <MVPbkContactFieldData.h>
-
-#include <cntdef.h>
-
-#include "locrequestorutilsresolverimpl2.h"
-#include "locutilsdebug.h"
-#include "locfileutils.h"
-#include <locutils.rsg>
-
-// This is a non localisable resource file hence we can directly refer to the
-// file as .rsc and we don't need to use the BaflUtils to load this resource
-// file.
-_LIT(KLocUtilsRscFile, "\\resource\\locutils.rsc");
-// ============= CLocRequestorUtilsResolver MEMBER FUNCTIONS =================
-
-// ---------------------------------------------------------------------------
-// CLocRequestorUtilsResolver::NewL
-// 2 Phase Constructor
-// ---------------------------------------------------------------------------
-//
-EXPORT_C CLocRequestorUtilsResolver* CLocRequestorUtilsResolver::NewL()
-	{
-	CLocRequestorUtilsResolver* self = 
-							new(ELeave) CLocRequestorUtilsResolver();
-	CleanupStack::PushL(self);
-	self->ConstructL();
-	CleanupStack::Pop(self);
-    return self;
-	}
-
-// ---------------------------------------------------------------------------
-// destructor
-// ---------------------------------------------------------------------------
-//
-CLocRequestorUtilsResolver::~CLocRequestorUtilsResolver()
-	{
-    delete iCntsOperation;
-    delete iCntLinkArray;
-    delete iContact;
-    delete iPbkContactEngine;
-    delete iPbkSortManager;
-    delete iPbkCntFormatter;
-
-    iEnv->DeleteResourceFile( iResourceOffset );
-	}
-
-// ---------------------------------------------------------------------------
-// The method resolves requestors with the contact database
-// ---------------------------------------------------------------------------
-//
-EXPORT_C void CLocRequestorUtilsResolver::ProcessRequestorsL( 
-	RPointerArray<CPosRequestor>& aRequestors )
-	{
-    // The Contact Stores are all opened and setup for Search Operation
-    // Let us start with the first requestor now.
-	// The iCount member denotes the current requestor being processed.
-	// Initialise the value to zero.
-    iCount = 0;
-
-	iRequestors = &aRequestors;
-	// Initialize the state machine.
-	iState = KNoProcessing;
-	// Start the Active Object.
-	ScheduleAORun();
-	
-	iWait.Start();
-	}
-	
-// -----------------------------------------------------------------------------
-// CLocRequestorUtilsResolver::PhoneNumberAsName
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CLocRequestorUtilsResolver::PhoneNumberAsName(
-    const CPosRequestor& aRequestor )
-    {
-    if ( aRequestor.RequestorIdFormat() != CPosRequestor::EIdFormatPhoneNumber )
-        { // id is of some other format
-        return EFalse;
-        }
-    else
-    	{
-    	return ETrue;
-    	}
-    }
-
-// -----------------------------------------------------------------------------
-// CLocRequestorUtilsResolver::RequestorIdValid
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C TBool CLocRequestorUtilsResolver::RequestorIdValid(
-    const CPosRequestor& aRequestor )
-    {
-    TBool rc(ETrue);
-    if ( aRequestor.RequestorIdFormat() == CPosRequestor::EIdFormatUnknown )
-        {
-        rc = EFalse;
-        }
-    return rc;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLocRequestorUtilsResolver::RequestorNameL
-// (other items were commented in a header).
-// -----------------------------------------------------------------------------
-//
-EXPORT_C HBufC* CLocRequestorUtilsResolver::RequestorNameL(
-    const CPosRequestor& aRequestor )
-    {
-	return aRequestor.RequestorIdString().AllocL();
-    }
-
-
-// ---------------------------------------------------------------------------
-// This is the callback method triggered when contacts matching succeeds.
-// ---------------------------------------------------------------------------
-//
-void CLocRequestorUtilsResolver::FindCompleteL(MVPbkContactLinkArray* aResults)
-    {
-    iCntLinkArray = aResults;
-    // Set State to process the matched contacts
-   	iState = KMatchedContacts;
-    // Schedule to run the Active Object again.
-    ScheduleAORun();
-    }
-
-
-// ---------------------------------------------------------------------------
-// This is the callback method triggered when contacts matching fails
-// ---------------------------------------------------------------------------
-//
-void CLocRequestorUtilsResolver::FindFailed(TInt /*aError*/)
-    {
-    // Search in one of the contact stores failed.
-    // No operation to be done in this phase.
-    // All actions are done after the find is completed fully in 
-    // FindCompleteL
-    }
-
-// ---------------------------------------------------------------------------
-// This is the callback method triggered when retrieving contact details
-// from a Contact Link
-// ---------------------------------------------------------------------------
-//
-void CLocRequestorUtilsResolver::VPbkSingleContactOperationComplete(
-    MVPbkContactOperationBase& /*aOperation*/,
-    MVPbkStoreContact* aContact)
-    {
-    iContact = aContact;
-    // Set State to process the retrieved contacts Information.
-    iState = KRetrievedContactInfo;
-    // Schedule to run the Active Object again.
-    ScheduleAORun();
-    }
-
-
-// ---------------------------------------------------------------------------
-// This is the callback method triggered when there is an error in 
-// retrieving contact details from a Contact Link
-// ---------------------------------------------------------------------------
-//
-void CLocRequestorUtilsResolver::VPbkSingleContactOperationFailed(
-    MVPbkContactOperationBase& /*aOperation*/, 
-    TInt /*aError*/)
-    {
-    // In this case we cannot get the Contact card name.
-    // Hence the requestor detail cannot be updated.
-    // So let us move to the next state.
-    // The state machine takes care of *not* updating the requestor
-    // information.
-    // Set State to process the retrieved contacts Information.
-    iState = KRetrievedContactInfo;
-    // Schedule to run the Active Object again.
-    ScheduleAORun();
-    }
-
-
-// ---------------------------------------------------------------------------
-// This is the callback method triggered when closing / opening the
-// contacts stores.
-// ---------------------------------------------------------------------------
-//
-void CLocRequestorUtilsResolver::OpenComplete()
-    {
-    // Set State to Start Requestor resolving.
-    iState = KResolveRequestor;
-    // Schedule to run the Active Object again.
-    ScheduleAORun();
-    }
-
-
-// ---------------------------------------------------------------------------
-// This is the callback method triggered when closing / opening one
-// contact store.
-// ---------------------------------------------------------------------------
-//
-void CLocRequestorUtilsResolver::StoreReady(
-    MVPbkContactStore& /*aContactStore*/)
-    {
-    //Nothing to do here
-    }
-
-
-// ---------------------------------------------------------------------------
-// This is the callback method triggered when an opened contact store becomes
-// unavailable.
-// ---------------------------------------------------------------------------
-//
-void CLocRequestorUtilsResolver::StoreUnavailable(
-    MVPbkContactStore& /*aContactStore*/,
-    TInt /*aReason*/)
-    {
-    //Nothing to do here
-    }
-
-
-// ---------------------------------------------------------------------------
-// This is the callback method triggered when any event happens with the
-// opened contact stores.
-// ---------------------------------------------------------------------------
-//
-void CLocRequestorUtilsResolver::HandleStoreEventL(
-    MVPbkContactStore& /*aContactStore*/, 
-    TVPbkContactStoreEvent /*aStoreEvent*/)
-    {
-    // We don't worry about contact , group events with any contact store.
-    // Also backup / restore is taken care of in the verifier dialogs and
-    // so we don't need to worry about backup / restore events with this store
-    // as well.
-    // Hence no processing is needed here.
-    // Just overriden since the base class method is pure virtual.
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLocRequestorUtilsResolver::RunL
-// RunL runs the full state machine operations
-// -----------------------------------------------------------------------------
-//
-void CLocRequestorUtilsResolver::RunL()
-    {
-    // No need to check iStatus since this is a dummy Active Object and the
-    // asynchronous operation was completed locally.
-    switch( iState )
-        {
-        case KNoProcessing:
-            {
-            MVPbkContactStoreList& cntStoreList = 
-                            iPbkContactEngine->ContactStoresL();
-            cntStoreList.OpenAllL(*this);
-            }
-            break;
-
-        case KResolveRequestor:
-            {
-            TInt count = iRequestors->Count();
-            if ( iCount < count )
-                {
-                // Till there are more requestors to resolve continue this
-                // operation.
-               	ResolveRequestorNameL( *(*iRequestors)[iCount] );
-                }
-            else
-                {
-                // Set State to complete requestors resolving process.
-                iState = KResolvingCompleted;
-                ScheduleAORun();
-                }
-            }
-            break;
-
-        case KMatchedContacts:
-            {
-            // Once the Find operation is completed the control reaches here
-            // and the result is stored in iCntLinkArray
-            if ( iCntLinkArray && iCntLinkArray->Count() == 1 )
-                {
-                delete iCntsOperation;
-                iCntsOperation = NULL;
-
-                SetContactNameToRequestorL(0);
-                }
-            else
-                {
-                delete iCntsOperation;
-                delete iCntLinkArray;
-
-                iCntLinkArray = NULL;
-                iCntsOperation = NULL;
-
-                // There is no match or more than 1 match in contact stores.
-                // So no more operation to be done on this requestor.
-                // Move onto the next requestor and start resolving process again.
-                iCount++;
-                // Set State to Start Requestor resolving.
-            	iState = KResolveRequestor;
-                // Schedule to run the Active Object again.
-            	ScheduleAORun();
-                }
-            }
-            break;
-            
-        case KRetrievedContactInfo:
-            {
-            if ( iContact )
-                {
-                HBufC* name = 
-                    iPbkCntFormatter->GetContactTitleOrNullL(
-                        iContact->Fields(),
-                        MPbk2ContactNameFormatter::EUseSeparator);
-                if ( name )
-                    {
-                	CleanupStack::PushL(name);
-                	// Set the requestor Type as Generic Name otherwise clipping
-                	// would be done as if this is a number.
-                	// Number clipping is done from beginning while text clipping
-                	// is done from the end. Hence this is not trivial.
-                	(*iRequestors)[iCount]->SetRequestorIdL( 
-                	    CPosRequestor::EIdFormatGenericName,
-                		*name );
-                	CleanupStack::PopAndDestroy( name );
-                    }
-                }
-
-            // Delete all information related to the current requestor resolving 
-            // operation
-
-            delete iContact;
-            delete iCntLinkArray;
-            delete iCntsOperation;
-
-            iContact = NULL;
-            iCntLinkArray = NULL;
-            iCntsOperation = NULL;
-
-            // Start next requestor resolving operation.
-            iCount++;
-            iState = KResolveRequestor;
-            ScheduleAORun();
-            }
-            break;
-            
-        case KResolvingCompleted:
-            {
-            // All the handles regarding the requestor resolving namely iContact,
-            // iCntLinkArray and iCntsOperation have already been cleaned up.
-            // The only remaining item is the Contact Sotre handle.
-            MVPbkContactStoreList& cntStoreList = 
-                            iPbkContactEngine->ContactStoresL();
-            // Although CloseAll takes a handle to the observer of type 
-            // MVPbkContactStoreListObserver does not provide any callback mechanism.
-            // It merely uses it to match in the observer array and remove it from the
-            // array.
-            cntStoreList.CloseAll(*this);
-            CompleteRequest();
-            }
-            break;
-        }
-
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLocRequestorUtilsResolver::RunError
-// Handle RunL error cases.
-// -----------------------------------------------------------------------------
-//
-TInt CLocRequestorUtilsResolver::RunError(TInt /*aError*/)
-    {
-    switch ( iState )
-        {
-        case KNoProcessing:
-            // Leave occured while opening Contact Stores. Just complete the
-            // resolving request.
-            CompleteRequest();
-            break;
-        case KResolveRequestor:
-            // ResolvRequestorNameL caused the leave. So current requestor 
-            // cannot be resolved. 
-        case KMatchedContacts:
-            // RetrieveContactL caused a leave. Contact Name cannot be retrieved
-        case KRetrievedContactInfo:
-            // Settings the Requestor Id name failed.
-            delete iContact;
-            delete iCntLinkArray;
-            delete iCntsOperation;
-
-            iContact = NULL;
-            iCntLinkArray = NULL;
-            iCntsOperation = NULL;
-            //So just set requestor count to next and trigger
-            // the AO in the same state.
-            iCount++;
-            iState = KResolveRequestor;
-            ScheduleAORun();
-            break;
-        case KResolvingCompleted:
-            // Leave occured while opening Contact Stores. Just complete the
-            // resolving request.
-            CompleteRequest();
-            break;        
-        }
-    return KErrNone;
-    }
-
-
-// -----------------------------------------------------------------------------
-// CLocRequestorUtilsResolver::DoCancel
-// Handle Cancel operation.
-// -----------------------------------------------------------------------------
-//
-void CLocRequestorUtilsResolver::DoCancel()
-    {
-    //Nothing to be done here.
-    }
-
-// ---------------------------------------------------------------------------
-// CLocRequestorUtilsResolver::CLocRequestorUtilsResolver
-// C++ default constructor can NOT contain any code, that
-// might leave.
-// ---------------------------------------------------------------------------
-//
-CLocRequestorUtilsResolver::CLocRequestorUtilsResolver()
-    :CActive(EPriorityStandard)
-	{
-	CActiveScheduler::Add(this);
-	}
-
-// ---------------------------------------------------------------------------
-// CLocRequestorUtilsResolver::ConstructL
-// Symbian Second Phase COnstructor
-// ---------------------------------------------------------------------------
-//
-void CLocRequestorUtilsResolver::ConstructL()
-	{
-    iEnv = CEikonEnv::Static();
-    
-    // Retrieve the URI list of contact stores to be used for searching
-    CPbk2StoreConfiguration* cntStoreCfg = CPbk2StoreConfiguration::NewL();
-    CleanupStack::PushL(cntStoreCfg);
-
-    CVPbkContactStoreUriArray* uriArray = 
-        cntStoreCfg->SearchStoreConfigurationL();
-
-    CleanupStack::PushL(uriArray);
-
-    // Create the Virtual Phonebook Contact Manager class.
-    // This class provides Search functionality.
-	iPbkContactEngine = CVPbkContactManager::NewL(*uriArray);
-
-    // Contact Store Configuration and URI Array classes are not
-    // needed anymore.
-	CleanupStack::PopAndDestroy(2, cntStoreCfg);
-
-    // The Sort Manager is a parameter to the Contact Formatter Constructor
-    iPbkSortManager = 
-        CPbk2SortOrderManager::NewL(iPbkContactEngine->FieldTypes());
-    
-    // The Phonebook Formatter is a paramter to the Search method in the
-    // contact manager.
-    iPbkCntFormatter = 
-        Pbk2ContactNameFormatterFactory::CreateL(
-            iPbkContactEngine->FieldTypes(),
-            *iPbkSortManager);
-
-    TFileName* resourceFile = new( ELeave ) TFileName;
-    CleanupStack::PushL( resourceFile );
-
-    resourceFile->Append( KLocUtilsRscFile );
-
-    TFileName* dllDrive = new( ELeave ) TFileName;
-    CleanupStack::PushL( dllDrive );
-    Dll::FileName( *dllDrive );    
-
-    LocFileUtils::GetFileWithCorrectDriveL( *dllDrive, *resourceFile );
-    iResourceOffset = iEnv->AddResourceFileL( *resourceFile );
-    
-    CleanupStack::PopAndDestroy( 2, resourceFile );
-	}
-
-
-// ---------------------------------------------------------------------------
-// CLocRequestorUtilsResolver::ResolveRequestorNameL
-// ---------------------------------------------------------------------------
-//
-void CLocRequestorUtilsResolver::ResolveRequestorNameL(
-	CPosRequestor& aRequestor )
-	{
-    // There are 2 types of Requestors
-    // 1. Contact
-    // 2. Service and
-    // There are 9 types of Requestor id Formats
-    // 1. Generic Name
-    // 2. Phone Number
-    // 3. URL
-    // 4. E-mail
-    // 5. SIP URL
-    // 6. IMS Public Identity
-    // 7. MIN
-    // 8. MDN
-    // 9. Unknown
-    // The following are the different cases for resolving.
-
-    switch(aRequestor.RequestorIdFormat())
-    	{
-    	case CPosRequestor::EIdFormatGenericName:
-			// The requestor is identified by name.
-			// Hence there is no need to change the requestor String.
-			// So complete the resolving operation for this requestor.
-			iState = KResolveRequestor;
-			// Increment the count of resolved requestors.
-			iCount++;
-			ScheduleAORun();
-    		break;
-
-    	case CPosRequestor::EIdFormatPhoneNumber:
-    		ResolveRequestorByPhoneNumberL(aRequestor);
-    		break;
-
-    	case CPosRequestor::EIdFormatUrl:
-    	    {
-			// The requestor is identified by URL.
-			CVPbkFieldTypeRefsList* fieldTypeList = 
-			                        CVPbkFieldTypeRefsList::NewL();
-			CleanupStack::PushL(fieldTypeList);
-
-            const MVPbkFieldTypeList& fieldTypes =
-                iPbkContactEngine->FieldTypes();
-
-            // create last name field to the contact
-            TResourceReader reader;
-            iEnv->CreateResourceReaderLC(reader,
-                R_VPBK_URL_SELECTOR);
-            CVPbkFieldTypeSelector* urlSelector = 
-                CVPbkFieldTypeSelector::NewL(reader, fieldTypes);
-            CleanupStack::PushL(urlSelector);
-
-            for (TInt i = 0; i < fieldTypes.FieldTypeCount(); ++i)
-                {
-                const MVPbkFieldType& fieldType = fieldTypes.FieldTypeAt(i);
-                if (urlSelector->IsFieldTypeIncluded(fieldType))
-                    {
-        			fieldTypeList->AppendL(fieldType);
-                    break;
-                    }
-                }
-
-            // urlSelector, R_VPBK_URL_SELECTOR buffer 
-            CleanupStack::PopAndDestroy(2); 
-
-			ResolveRequestorByOtherFieldsL( aRequestor, fieldTypeList );
-			CleanupStack::PopAndDestroy(fieldTypeList);
-    	    }
-    		break;
-
-    	case CPosRequestor::EIdFormatEmail:
-            {
-			CVPbkFieldTypeRefsList* fieldTypeList = 
-			                        CVPbkFieldTypeRefsList::NewL();
-			CleanupStack::PushL(fieldTypeList);
-
-            const MVPbkFieldTypeList& fieldTypes =
-                iPbkContactEngine->FieldTypes();
-
-            // create last name field to the contact
-            TResourceReader reader;
-            iEnv->CreateResourceReaderLC(reader,
-                R_VPBK_EMAIL_SELECTOR);
-            CVPbkFieldTypeSelector* emailSelector = 
-                CVPbkFieldTypeSelector::NewL(reader, fieldTypes);
-            CleanupStack::PushL(emailSelector);
-
-            for (TInt i = 0; i < fieldTypes.FieldTypeCount(); ++i)
-                {
-                const MVPbkFieldType& fieldType = fieldTypes.FieldTypeAt(i);
-                if (emailSelector->IsFieldTypeIncluded(fieldType))
-                    {
-        			fieldTypeList->AppendL(fieldType);
-                    break;
-                    }
-                }
-
-            // emailSelector, R_VPBK_EMAIL_SELECTOR buffer 
-            CleanupStack::PopAndDestroy(2); 
-
-			ResolveRequestorByOtherFieldsL( aRequestor, fieldTypeList );
-			CleanupStack::PopAndDestroy(fieldTypeList);
-    	    }
-    		break;
-
-    	case CPosRequestor::EIdFormatSIPUrl:
-    	    {
-			CVPbkFieldTypeRefsList* fieldTypeList = 
-			                        CVPbkFieldTypeRefsList::NewL();
-			CleanupStack::PushL(fieldTypeList);
-
-            const MVPbkFieldTypeList& fieldTypes =
-                iPbkContactEngine->FieldTypes();
-
-            // create last name field to the contact
-            TResourceReader reader;
-            iEnv->CreateResourceReaderLC(reader,
-                R_VPBK_SIPURL_SELECTOR);
-            CVPbkFieldTypeSelector* sipUrlSelector = 
-                CVPbkFieldTypeSelector::NewL(reader, fieldTypes);
-            CleanupStack::PushL(sipUrlSelector);
-
-            for (TInt i = 0; i < fieldTypes.FieldTypeCount(); ++i)
-                {
-                const MVPbkFieldType& fieldType = fieldTypes.FieldTypeAt(i);
-                if (sipUrlSelector->IsFieldTypeIncluded(fieldType))
-                    {
-        			fieldTypeList->AppendL(fieldType);
-                    break;
-                    }
-                }
-
-            // sipUrlSelector, R_VPBK_SIPURL_SELECTOR buffer 
-            CleanupStack::PopAndDestroy(2); 
-
-			ResolveRequestorByOtherFieldsL( aRequestor, fieldTypeList );
-			CleanupStack::PopAndDestroy(fieldTypeList);
-    	    }
-    		break;
-
-    	case CPosRequestor::EIdFormatIMSPublicIdentity:
-    	case CPosRequestor::EIdFormatMIN:
-    	case CPosRequestor::EIdFormatMDN:
-    	// In this case we match by any field in the Contacts
-    	    {
-			const MVPbkFieldTypeList& gblFieldTypeList = 
-			                        iPbkContactEngine->FieldTypes();
-			
-			ResolveRequestorByOtherFieldsL( aRequestor, 
-			    const_cast<MVPbkFieldTypeList *>(&gblFieldTypeList) );
-    	    }
-    		break;
-    	
-    	default:
-			// If the requestor format is unknown then it won't be resolved.
-			// This case is for any future additions to the format types.
-    		// Nothing to do here as of now.
-			// So complete the resolving operation for this requestor.
-			iState = KResolveRequestor;
-			// Increment the count of resolved requestors.
-			iCount++;
-			ScheduleAORun();
-    		break;
-    	}
-	}
-
-
-// ---------------------------------------------------------------------------
-// CLocRequestorUtilsResolver::ResolveRequestorByPhoneNumberL
-// ---------------------------------------------------------------------------
-//
-void CLocRequestorUtilsResolver::ResolveRequestorByPhoneNumberL(
-	CPosRequestor& aRequestor )
-	{
-	
-	// The requestor is identified by Phone Number.
-    // Use the MatchPhoneNumberL of CPbkPhoneEngine
-	iCntsOperation = iPbkContactEngine->MatchPhoneNumberL(
-                            				aRequestor.RequestorIdString(),
-                            				KMaxPhoneMatchLength,
-                            				*this);
-	}
-
-	
-// ---------------------------------------------------------------------------
-// CLocRequestorUtilsResolver::ResolveRequestorByOtherFieldsL
-// Searches the Contacts Database Synchronously using the field and
-// information specified in the requestor.
-// ---------------------------------------------------------------------------
-//
-void CLocRequestorUtilsResolver::ResolveRequestorByOtherFieldsL(
-	CPosRequestor& aRequestor,
-	MVPbkFieldTypeList* aFieldTypeList)
-	{
-    // If the format is URL or E-mail etc then use FindL of CVPbkContactManager
-	iCntsOperation = iPbkContactEngine->FindL(aRequestor.RequestorIdString(),
-				                              *aFieldTypeList,
-				                              *this);
-	}
-
-
-// ---------------------------------------------------------------------------
-// CLocRequestorUtilsResolver::SetContactNameToRequestor
-// ---------------------------------------------------------------------------
-//
-
-void CLocRequestorUtilsResolver::SetContactNameToRequestorL(
-	TInt aCntLinkArrayIndex)
-	{
-    iCntsOperation = iPbkContactEngine->RetrieveContactL(
-                        iCntLinkArray->At(aCntLinkArrayIndex),
-                        *this);
-	}
-
-
-// ---------------------------------------------------------------------------
-// CLocRequestorUtilsResolver::ScheduleAORun
-// Schedule to Run this dummy Active Object once again.
-// ---------------------------------------------------------------------------
-//
-void CLocRequestorUtilsResolver::ScheduleAORun()
-    {
-    // This results in the RunL getting called.
-    if ( !IsActive() )
-        {
-        SetActive();
-        TRequestStatus* status = &iStatus;
-        User::RequestComplete(status, KErrNone);
-        }
-    }
-
-
-// ---------------------------------------------------------------------------
-// CLocRequestorUtilsResolver::ScheduleAORun
-// Schedule to Run this dummy Active Object once again.
-// ---------------------------------------------------------------------------
-//
-void CLocRequestorUtilsResolver::CompleteRequest()
-    {
-    // Stop the ActiveScheduler Wait Loop to complete the requestor resolving
-    // operation.
-	iWait.AsyncStop();
-    }
-
-
-//  End of File