diff -r 000000000000 -r e686773b3f54 phonebookengines/VirtualPhonebook/VPbkSimStore/inc/CFindView.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/phonebookengines/VirtualPhonebook/VPbkSimStore/inc/CFindView.h Tue Feb 02 10:12:17 2010 +0200 @@ -0,0 +1,121 @@ +/* +* Copyright (c) 2006-2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Sim store contact view implementation. +* +*/ + + +#ifndef VPBKSIMSTORE_CFINDVIEW_H +#define VPBKSIMSTORE_CFINDVIEW_H + +// INCLUDES +#include "CFindViewBase.h" + +#include + +// FORWARD DECLARATIONS +class CVPbkContactFindPolicy; +class MVPbkSimStoreOperation; +class RFs; + +namespace VPbkSimStore { + +class CContactView; + +NONSHARABLE_CLASS( CFindView ): public CFindViewBase, + public MVPbkSimViewFindObserver + { + public: // Constructor and destructor + + /** + * Creates a new instance of this class. + * + * @param aFindStrings + * @param aAllContactsView + * @param aExternalViewObserver + * @param aAlwaysIncludedContacts + * @param aRFs + * @return A new instance of this class. + */ + static CFindView* NewLC( + const MDesCArray& aFindStrings, + CContactView& aAllContactsView, + MVPbkContactViewObserver& aExternalViewObserver, + const MVPbkContactBookmarkCollection* aAlwaysIncludedContacts, + RFs& aRFs ); + /** + * Destructor. + */ + ~CFindView(); + + private: // From MVPbkContactViewObserver + void ContactViewReady( MVPbkContactViewBase& aView ); + void ContactViewReadyForFiltering( + MParentViewForFiltering& aView ); + + private: // From CFindViewBase + void MatchL( RPointerArray& aMatchedContacts ); + void DoContactAddedToViewL( + MVPbkContactViewBase& aView, + TInt aIndex, + const MVPbkContactLink& aContactLink, + RPointerArray& aMatchedContacts ); + + private: // From MVPbkSimViewFindObserver + void ViewFindCompleted( MVPbkSimCntView& aSimCntView, + const RVPbkStreamedIntArray& aSimIndexArray ); + void ViewFindError( MVPbkSimCntView& aSimCntView, TInt aError ); + + private: // From MVPbkContactViewFiltering + void UpdateFilterL( + const MDesCArray& aFindWords, + const MVPbkContactBookmarkCollection* aAlwaysIncludedContacts ); + TBool IsNativeMatchingRequestActive(); + + private: // From MAlwaysIncludedContacts + TBool IsContactAlwaysIncluded( const CViewContact& aContact ) const; + + private: // Implementation + CFindView( CContactView& aContactView ); + void ConstructL( const MDesCArray& aFindStrings, + MVPbkContactViewObserver& aExternalViewObserver, + const MVPbkContactBookmarkCollection* aAlwaysIncludedContacts, + RFs& aRFs ); + void SetAlwaysIncludedContactsL( + const MVPbkContactBookmarkCollection* aAlwaysIncludedContacts ); + void ViewFindCompletedL( MVPbkSimCntView& aSimCntView, + const RVPbkStreamedIntArray& aSimIndexArray ); + void MatchContactL( const CViewContact& aViewContact, + RPointerArray& aMatchedContacts ); + void RemoveFromMatchArrayIfFound( const CViewContact& aViewContact ); + TBool IsSIMMatchL( const CViewContact& aContact, + TInt& aMatchArrayIndex ) const; + TInt FindFromMatchArray( const CViewContact& aContact ) const; + + private: // Data + /// Own: Contact matching operation + MVPbkSimStoreOperation* iFindOperation; + /// Own: the find policy + CVPbkContactFindPolicy* iFindPolicy; + /// Own: always included contacts + RArray iAlwaysIncluded; + /// Own: match results (SIM indexes) from native view + RArray iSIMMatchedContacts; + }; + +} // namespace VPbkSimStore + +#endif // VPBKSIMSTORE_CFINDVIEW_H + +// End of File