107 } |
107 } |
108 |
108 |
109 return selector; |
109 return selector; |
110 } |
110 } |
111 |
111 |
112 CVPbkFieldTypeSelector* BuildFilterL( |
112 /** |
|
113 * Builds contact view filter based on selected address select type. |
|
114 * |
|
115 * @param aType Address select type. |
|
116 * @param aFieldTypeList Master field type list. |
|
117 * @param aShowEmailInSendMsg Indicates whether email fields are valid |
|
118 * for message sending purposes (UniEditor). |
|
119 * @return Contact view filter. |
|
120 */ |
|
121 CVPbkFieldTypeSelector* BuildViewFilterL( |
113 TAiwAddressSelectType aType, |
122 TAiwAddressSelectType aType, |
114 const MVPbkFieldTypeList& aFieldTypeList ) |
123 const MVPbkFieldTypeList& aFieldTypeList, |
|
124 TBool aShowEmailInSendMsg ) |
115 { |
125 { |
116 CVPbkFieldTypeSelector* selector = NULL; |
126 CVPbkFieldTypeSelector* selector = NULL; |
117 |
127 |
118 switch( aType ) |
128 switch( aType ) |
119 { |
129 { |
120 case EAiwMMSSelect: |
130 case EAiwMMSSelect: |
121 { |
131 { |
122 selector = VPbkFieldTypeSelectorFactory:: |
132 // Do not use VPbkFieldTypeSelectorFactory's EUniEditorSelector |
123 BuildContactActionTypeSelectorL( |
133 // filter here, as it's performance is not good. |
124 VPbkFieldTypeSelectorFactory::EUniEditorSelector, |
134 // For view filtering needs, we need to use a fast filter. |
|
135 if ( aShowEmailInSendMsg ) |
|
136 { |
|
137 selector = VPbkFieldTypeSelectorFactory::BuildFieldTypeSelectorL |
|
138 ( VPbkFieldTypeSelectorFactory::EMmsAddressSelector, |
125 aFieldTypeList ); |
139 aFieldTypeList ); |
|
140 } |
|
141 else |
|
142 { |
|
143 selector = VPbkFieldTypeSelectorFactory::BuildFieldTypeSelectorL |
|
144 ( VPbkFieldTypeSelectorFactory::EPhoneNumberSelector, |
|
145 aFieldTypeList ); |
|
146 } |
126 break; |
147 break; |
127 } |
148 } |
128 case EAiwEMailSelect: |
149 case EAiwEMailSelect: |
129 { |
150 { |
130 selector = VPbkFieldTypeSelectorFactory:: |
151 selector = VPbkFieldTypeSelectorFactory:: |
266 } |
289 } |
267 // Phonebook specific filters take prefference over the |
290 // Phonebook specific filters take prefference over the |
268 // filter specified by client |
291 // filter specified by client |
269 else |
292 else |
270 { |
293 { |
271 iContactViewFilter = BuildFilterL( iAddressSelectType, |
294 iContactViewFilter = BuildViewFilterL( iAddressSelectType, |
272 appUi.ApplicationServices().ContactManager().FieldTypes() ); |
295 appUi.ApplicationServices().ContactManager().FieldTypes(), |
|
296 appUi.ApplicationServices().LocallyVariatedFeatureEnabled |
|
297 ( EVPbkLVShowEmailInSendMsg ) ); |
273 |
298 |
274 // Filter specified by client |
299 // Filter specified by client |
275 if ( iContactViewFilter == NULL ) |
300 if ( iContactViewFilter == NULL ) |
276 { |
301 { |
277 iContactViewFilter = dataRetriever.GetContactViewFilterL |
302 iContactViewFilter = dataRetriever.GetContactViewFilterL |