diff -r 8871b09be73b -r 24062c24fe38 phoneuis/easydialing/src/easydialingplugin.cpp --- a/phoneuis/easydialing/src/easydialingplugin.cpp Fri Feb 19 22:50:26 2010 +0200 +++ b/phoneuis/easydialing/src/easydialingplugin.cpp Fri Mar 12 15:42:40 2010 +0200 @@ -24,6 +24,7 @@ #include "easydialingcenreplistener.h" #include "easydialingcontactdatamanager.h" #include "easydialingutils.h" +#include "easydialingcommands.hrh" #include // AVKON and drawing header files @@ -183,6 +184,10 @@ // Set contact store observer to listen to contact store events. iContactManager->ContactStoresL().OpenAllL( *this ); + iContactDataManager = new (ELeave) CEasyDialingContactDataManager(iContactManager); + iContactDataManager->ConstructL(); + iContactDataManager->SetObserver(this); + PERF_MEASURE_START InitPredictiveContactSearchL(); @@ -206,10 +211,6 @@ iContactLauncher = static_cast( any ); iCenrepListener = CEasyDialingCenrepListener::NewL(this); - - iContactDataManager = new (ELeave) CEasyDialingContactDataManager(iContactManager); - iContactDataManager->ConstructL(); - iContactDataManager->SetObserver(this); iContactorService = CEDContactorService::NewL( this ); @@ -388,6 +389,8 @@ contact_fields.Append(R_VPBK_FIELD_TYPE_COMPANYNAME); } + SetSortOrderL( iContactDataManager->NameOrder() ); + // Create and fill ps settings object. CPsSettings* ps_settings = CPsSettings::NewL(); CleanupStack::PushL(ps_settings); @@ -407,6 +410,32 @@ } // ----------------------------------------------------------------------------- +// GetContactFields +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::SetSortOrderL( CEasyDialingContactDataManager::TNameOrder aNameOrder ) + { + RArray fields; + CleanupClosePushL( fields ); + if ( aNameOrder == CEasyDialingContactDataManager::EFirstnameLastname ) + { + fields.Append(R_VPBK_FIELD_TYPE_FIRSTNAME); + fields.Append(R_VPBK_FIELD_TYPE_LASTNAME); + } + else + { + fields.Append(R_VPBK_FIELD_TYPE_LASTNAME); + fields.Append(R_VPBK_FIELD_TYPE_FIRSTNAME); + } + if ( iCompanyNamePCSIndex != KErrNotFound ) + { + fields.Append(R_VPBK_FIELD_TYPE_COMPANYNAME); + } + iPredictiveContactSearchHandler->ChangeSortOrderL( *iContactDataStores[0], fields ); + CleanupStack::PopAndDestroy(); //fields + } + +// ----------------------------------------------------------------------------- // OfferKeyEventL // Check the received keypad event and performs user // actions related to it. @@ -752,6 +781,19 @@ } // ----------------------------------------------------------------------------- +// NameOrderChanged +// From MContactDataManagerObserver +// ----------------------------------------------------------------------------- +// +void CEasyDialingPlugin::NameOrderChanged() + { + if ( iPredictiveContactSearchHandler ) + { + TRAP_IGNORE( SetSortOrderL( iContactDataManager->NameOrder() ) ); + } + } + +// ----------------------------------------------------------------------------- // InformContactorEvent // From MEDContactorObserver // ----------------------------------------------------------------------------- @@ -805,7 +847,7 @@ { return; } - + iDiscardCompletingSearches = EFalse; iNewSearchNeeded = EFalse; @@ -968,10 +1010,7 @@ if ( numberOfPCSMatches > 0 ) { // retrieve the name order before adding - CPbkContactEngine* pbkEngine = CPbkContactEngine::NewL(); - CleanupStack::PushL( pbkEngine ); - CPbkContactEngine::TPbkNameOrder nameOrder = pbkEngine->NameDisplayOrderL(); - CleanupStack::PopAndDestroy( pbkEngine ); + CEasyDialingContactDataManager::TNameOrder nameOrder = iContactDataManager->NameOrder(); // map results to old contact match data for( TInt i = 0; i < numberOfPCSMatches; i++ ) @@ -995,7 +1034,7 @@ TInt numberOfFavs( iContactDataManager->NumberOfFavsL() ); TBuf results; - for ( TInt i = 0; i < numberOfFavs; i++ ) + for ( TInt i = numberOfFavs - 1; i >= 0; i-- ) { // check if this fav matches the search HBufC* favContactString = iContactDataManager->FavContactStringLC( i, nameOrder ); @@ -1169,7 +1208,8 @@ // // ----------------------------------------------------------------------------- // -HBufC* CEasyDialingPlugin::CreateContactStringLC( CPsClientData* aResult, CPbkContactEngine::TPbkNameOrder aNameOrder ) +HBufC* CEasyDialingPlugin::CreateContactStringLC( CPsClientData* aResult, + CEasyDialingContactDataManager::TNameOrder aNameOrder ) { TPtr firstName = aResult->Data( iFirstNamePCSIndex )->Des(); TPtr lastName = aResult->Data( iLastNamePCSIndex )->Des(); @@ -1441,7 +1481,7 @@ // Not only Number Entry is removed but also closes down number selection popup in case it happens to be open. iContactorService->CancelService(); - ret = ETrue; + ret = ETrue; break; default: @@ -1607,7 +1647,9 @@ return; } - CEDContactorService::TCSParameter param( selector, *contact8, 0, *fullName ); + CEDContactorService::TCSParameter param( selector, *contact8, + CEDContactorService::TCSParameter::EEnableDefaults, + *fullName ); iContactorService->ExecuteServiceL( param );