diff -r 2828b4d142c0 -r 4ae315f230bc phonebookengines/VirtualPhonebook/VPbkEng/src/CVPbkFindView.cpp --- a/phonebookengines/VirtualPhonebook/VPbkEng/src/CVPbkFindView.cpp Tue May 11 16:00:21 2010 +0300 +++ b/phonebookengines/VirtualPhonebook/VPbkEng/src/CVPbkFindView.cpp Tue May 25 12:26:45 2010 +0300 @@ -14,8 +14,7 @@ * Description: Filtered contact view * */ - - +#include #include "CVPbkFindView.h" #include #include @@ -24,14 +23,13 @@ #include #include -#include -#include #include #include #include #include #include + #include namespace { @@ -108,16 +106,20 @@ SetAlwaysIncludedContactsL( aAlwaysIncludedContacts ); - // Create contact find policy - iContactFindPolicy = CVPbkContactFindPolicy::NewL(); - CVPbkContactNameConstructionPolicy::TParam param( *iMasterFieldTypeList ); - iNameConstructionPolicy = - CVPbkContactNameConstructionPolicy::NewL( param ); - - //Create field type list - iFieldTypeRefsList = CVPbkFieldTypeRefsList::NewL(); - + CEikonEnv* eikonEnv = CEikonEnv::Static(); + + if ( eikonEnv ) + { + CVPbkContactFindPolicy::TParam param = + CVPbkContactFindPolicy::TParam( + *iMasterFieldTypeList, + eikonEnv->FsSession() ); + + // Create contact find policy + iContactFindPolicy = CVPbkContactFindPolicy::NewL( param ); + } + iBaseView.AddObserverL(*this); VPBK_DEBUG_PRINT(VPBK_DEBUG_STRING @@ -154,8 +156,6 @@ iBaseView.RemoveObserver(*this); iObservers.Close(); delete iFindStrings; - delete iFieldTypeRefsList; - delete iNameConstructionPolicy; delete iContactFindPolicy; delete iAsyncOperation; } @@ -464,14 +464,12 @@ const MVPbkViewContact& contact = iBaseView.ContactAtL( i ); TBool match( ETrue ); - const TInt countStrings( iFindStrings->MdcaCount() ); - for ( TInt j(0); j < countStrings; ++j ) + + if ( iContactFindPolicy && + !iContactFindPolicy->MatchContactNameL( *iFindStrings, contact )) { - if ( !ContactMatchRefineL( contact, iFindStrings->MdcaPoint( j ) ) ) - { - match = EFalse; - } - } + match = EFalse; + } if ( match && iContactMapping.FindInOrder( i ) == KErrNotFound ) { @@ -618,47 +616,6 @@ SendViewErrorEventToObservers( res, EFalse ); } } - -// -------------------------------------------------------------------------- -// CVPbkFindView::ContactMatchRefineL -// -------------------------------------------------------------------------- -// -TBool CVPbkFindView::ContactMatchRefineL( - const MVPbkViewContact& aViewContact, - TPtrC aFindWord ) - { - TBool match( EFalse ); - iFieldTypeRefsList->Reset(); - - // Create iterator - MVPbkBaseContactFieldIterator* iterator = - iNameConstructionPolicy->NameConstructionFieldsLC( - aViewContact.Fields(), - *iFieldTypeRefsList ); - - // Loop iterator - while ( iterator->HasNext() ) - { - const MVPbkBaseContactField* field = iterator->Next(); - - // Check field's type - if ( field->FieldData().DataType() == EVPbkFieldStorageTypeText ) - { - const MVPbkContactFieldTextData& data = - MVPbkContactFieldTextData::Cast( field->FieldData() ); - - // Match refine - if ( iContactFindPolicy->MatchRefineL( data.Text(), aFindWord ) ) - { - match = ETrue; - break; - } - } - } - CleanupStack::PopAndDestroy( 1 ); //iterator - - return match; - } // -------------------------------------------------------------------------- // CVPbkFindView::SetFindStringsL