diff -r 5586b4d2ec3e -r 0d28c1c5b6dd phonebookui/Phonebook2/ServerApplication/src/CPbk2ItemFetcher.cpp --- a/phonebookui/Phonebook2/ServerApplication/src/CPbk2ItemFetcher.cpp Wed Apr 14 15:45:35 2010 +0300 +++ b/phonebookui/Phonebook2/ServerApplication/src/CPbk2ItemFetcher.cpp Tue Apr 27 16:23:35 2010 +0300 @@ -109,9 +109,19 @@ return selector; } -CVPbkFieldTypeSelector* BuildFilterL( +/** + * Builds contact view filter based on selected address select type. + * + * @param aType Address select type. + * @param aFieldTypeList Master field type list. + * @param aShowEmailInSendMsg Indicates whether email fields are valid + * for message sending purposes (UniEditor). + * @return Contact view filter. + */ +CVPbkFieldTypeSelector* BuildViewFilterL( TAiwAddressSelectType aType, - const MVPbkFieldTypeList& aFieldTypeList ) + const MVPbkFieldTypeList& aFieldTypeList, + TBool aShowEmailInSendMsg ) { CVPbkFieldTypeSelector* selector = NULL; @@ -119,10 +129,21 @@ { case EAiwMMSSelect: { - selector = VPbkFieldTypeSelectorFactory:: - BuildContactActionTypeSelectorL( - VPbkFieldTypeSelectorFactory::EUniEditorSelector, + // Do not use VPbkFieldTypeSelectorFactory's EUniEditorSelector + // filter here, as it's performance is not good. + // For view filtering needs, we need to use a fast filter. + if ( aShowEmailInSendMsg ) + { + selector = VPbkFieldTypeSelectorFactory::BuildFieldTypeSelectorL + ( VPbkFieldTypeSelectorFactory::EMmsAddressSelector, aFieldTypeList ); + } + else + { + selector = VPbkFieldTypeSelectorFactory::BuildFieldTypeSelectorL + ( VPbkFieldTypeSelectorFactory::EPhoneNumberSelector, + aFieldTypeList ); + } break; } case EAiwEMailSelect: @@ -147,10 +168,12 @@ BuildContactActionTypeSelectorL( VPbkFieldTypeSelectorFactory::EVOIPCallSelector, aFieldTypeList ); + break; } - break; default: + { break; + } } return selector; @@ -268,8 +291,10 @@ // filter specified by client else { - iContactViewFilter = BuildFilterL( iAddressSelectType, - appUi.ApplicationServices().ContactManager().FieldTypes() ); + iContactViewFilter = BuildViewFilterL( iAddressSelectType, + appUi.ApplicationServices().ContactManager().FieldTypes(), + appUi.ApplicationServices().LocallyVariatedFeatureEnabled + ( EVPbkLVShowEmailInSendMsg ) ); // Filter specified by client if ( iContactViewFilter == NULL )