diff -r 000000000000 -r 72b543305e3a email/mail/ViewerSrc/cmsgmailviewercontactmatcher.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/mail/ViewerSrc/cmsgmailviewercontactmatcher.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,144 @@ +/* +* Copyright (c) 2006 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: Mail viewer contact matcher. +* +*/ + +#ifndef C_CMSGMAILVIEWERCONTACTMATCHER_H +#define C_CMSGMAILVIEWERCONTACTMATCHER_H + +#include // CBase +#include // MAiwNotifyCallback + +class CContactMatcher; +class CVPbkContactLinkArray; +class MVPbkStoreContact; +class TAiwSingleItemSelectionDataV3; +class CAiwServiceHandler; +class CVPbkFieldTypeSelector; +class CAknWaitDialog; + +/** + * Mail Viewer contact matcher. + * Finds possible phonenumber for mail address from phonebook + * + * @lib none + * @since S60 v3.2 + */ +NONSHARABLE_CLASS(CMsgMailViewerContactMatcher) +: public CActive, MAiwNotifyCallback + { + +public: + enum TPurpose + { + EPurposeNone, // uninitialized + ECallToContact, + EMsgToContact + }; + +public: + + /** + * NewL + * @since S60 v3.2 + * @param aServiceHandler for attaching AIW interest + * @return self + */ + static CMsgMailViewerContactMatcher* NewL( + CAiwServiceHandler& aServiceHandler ); + + + ~CMsgMailViewerContactMatcher(); + + /** + * Search contacts that have specified email address. + * @param aMailAddress searched email address. + * @param aPurpose determines which fields are used in matching + * @param aCallBack call-back function to call when match is ready + * @since S60 v3.2 + */ + void FindContactL( const TDesC& aMailAddress, + TPurpose aPurpose, + TCallBack aCallBack ); + + /** + * Method to read match result, may be called after clients callback method + * is called. Returns NULL if no match is found. + * @return match result, ownership is transferred to caller + */ + HBufC* GetDataL() const; + + + /** + * Method to read name of match result, may be called after clients callback method + * is called. Returns NULL if no name is found. + * @return match name, ownership is transferred to caller + */ + HBufC* GetNameL() const; + +private: // From CActive + void DoCancel(); + void RunL(); + TInt RunError( TInt aError ); + + // From MAiwNotifyCallback + TInt HandleNotifyL( TInt aCmdId, + TInt aEventId, + CAiwGenericParamList& aEventParamList, + const CAiwGenericParamList& aInParamList ); + +private: // implementation + + void DeleteExcessMatches( CVPbkContactLinkArray& aLinks ) const; + + CVPbkFieldTypeSelector* CreateFilterLC( TPurpose aPurpose ) const; + + TAiwSingleItemSelectionDataV3 SelectionData( + TPurpose aPurpose, + CVPbkFieldTypeSelector& aFilter ) const; + + void ExecuteSingleItemFetchL( TAiwSingleItemSelectionDataV3 aData, + const CVPbkContactLinkArray& aLinks ); + +private: + + CMsgMailViewerContactMatcher( CAiwServiceHandler& aServiceHandler ); + void ConstructL(); + +private: // data + + /// AIW service handler reference + CAiwServiceHandler& iServiceHandler; + + TPurpose iPurpose; + + TCallBack iCallBack; + + /// Own: contact matcher + CContactMatcher* iContactMatcher; + + /// Own: contact link array + CVPbkContactLinkArray* iContactLinks; + + /// Own: + CVPbkContactLinkArray* iChangedLinks; + + /// Own, but self-destructing + CAknWaitDialog* iWaitDialog; + + CIdle* iIdle; + }; + +#endif // C_CMSGMAILVIEWERCONTACTMATCHER_H