messagingappbase/msgavkon/muiu_internal/servicesinternal/inc/MuiuContactAddressMatcher.h
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/messagingappbase/msgavkon/muiu_internal/servicesinternal/inc/MuiuContactAddressMatcher.h Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,143 @@
+/*
+* 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: Searches contact using email address as search filter from address books.
+*
+*/
+
+
+#ifndef MUIUCONTACTADDRESSMATCHER_H
+#define MUIUCONTACTADDRESSMATCHER_H
+
+#include <e32base.h> // CBase
+#include <AiwCommon.h> // MAiwNotifyCallback
+
+class CContactMatcher;
+class CVPbkContactLinkArray;
+class MVPbkStoreContact;
+class TAiwSingleItemSelectionDataV3;
+class CAiwServiceHandler;
+class CVPbkFieldTypeSelector;
+class CAknWaitDialog;
+class CEikonEnv;
+
+/**
+ * Find outs contact by using email address as search filter.
+ * The API searches for first contact mathing the address.
+ * Other contacts are ignored. If contact has several addresses (phone numbers),
+ * AIW is used to let user select address, which will be used.
+ *
+ * @lib muiu_internal.lib
+ * @since S60 v3.2
+ */
+class CMuiuContactAddressMatcher
+: public CActive, MAiwNotifyCallback
+ {
+
+public:
+
+ /**
+ * NewL
+ * @since S60 v3.2
+ * @param aServiceHandler for attaching AIW interest
+ * @return self
+ */
+ static CMuiuContactAddressMatcher* NewL(
+ CEikonEnv& aEikonEnv);
+
+ virtual ~CMuiuContactAddressMatcher();
+
+ /**
+ * Search contact that have specified email address.
+ * @param aMailAddress searched email address.
+ * @param aCallBack call-back function to call when match is ready
+ * @return ETrue, address was email address: search begins.
+ * aCallBack will be called.
+ * EFalse, address was either phone number of empty.
+ * aCallback will not called
+ * @since S60 v3.2
+ */
+ TBool FindContactL( const TDesC& aMailAddress,
+ TCallBack aCallBack );
+
+ /**
+ * Method to read phone number of matched contact, may be called
+ * after clients callback method is called. Returns NULL if address was not found.
+ * @return match result, ownership is transferred to caller
+ * @since S60 v3.2
+ */
+ HBufC* GetAddressL() const;
+
+ /**
+ * Method to read contact name of matched contact, may be called
+ * after clients callback method is called. Returns NULL if address was not found.
+ * @return match name, ownership is transferred to caller
+ * @since S60 v3.2
+ */
+ 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 DeleteExcessMatchesL( CVPbkContactLinkArray& aLinks ) const;
+
+ CVPbkFieldTypeSelector* CreateFilterLC( ) const;
+
+ TAiwSingleItemSelectionDataV3 SelectionData(
+ CVPbkFieldTypeSelector& aFilter ) const;
+
+ void ExecuteSingleItemFetchL( TAiwSingleItemSelectionDataV3 aData,
+ const CVPbkContactLinkArray& aLinks );
+
+private:
+
+ CMuiuContactAddressMatcher( CEikonEnv& aEikonEnv );
+ void ConstructL();
+
+private: // data
+
+ /// AIW service handler reference
+ CAiwServiceHandler* iServiceHandler;
+
+ TCallBack iCallBack;
+
+ /// Own: contact matcher
+ CContactMatcher* iContactMatcher;
+
+ /// Own: contact link array
+ CVPbkContactLinkArray* iContactLinks;
+
+ /// Own:
+ CVPbkContactLinkArray* iChangedLinks;
+
+ /// Own, but self-destructing
+ CAknWaitDialog* iWaitDialog;
+
+ CIdle* iIdle;
+
+ CEikonEnv& iEikEnv;
+ // 'handle' to muiu_internal.rsc esourse file
+ TInt iResourceOffset;
+ };
+
+#endif // MUIUCONTACTADDRESSMATCHER_H