phonebookui/Phonebook2/ServerApplication/src/CPbk2ItemFetcher.cpp
branchRCL_3
changeset 9 0d28c1c5b6dd
parent 0 e686773b3f54
child 17 2666d9724c76
--- 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 )