--- /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 <e32base.h> // CBase
+#include <AiwCommon.h> // 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