email/mail/ViewerSrc/cmsgmailviewerreplytomatcher.cpp
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/mail/ViewerSrc/cmsgmailviewerreplytomatcher.cpp	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,118 @@
+/*
+* 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 reply to address matcher.
+*
+*/
+
+
+#include "cmsgmailviewerreplytomatcher.h"
+#include "cmsgmailviewercontactmatcher.h"
+#include "MsgMailViewerAppUi.h"
+
+#include <e32std.h>
+#include <MsgAddressControl.h>
+#include <SenduiMtmUids.h>
+
+// ---------------------------------------------------------------------------
+// CMsgMailViewerReplyToMatcher
+// ---------------------------------------------------------------------------
+//
+CMsgMailViewerReplyToMatcher::CMsgMailViewerReplyToMatcher(
+		CMsgMailViewerAppUi& aAppUi, CMsgMailViewerContactMatcher& aMatcher)
+    :iContactMacther(aMatcher), 
+    iAppUi(aAppUi)
+    {
+    
+    }
+
+// ---------------------------------------------------------------------------
+// NewL
+// ---------------------------------------------------------------------------
+//
+CMsgMailViewerReplyToMatcher* CMsgMailViewerReplyToMatcher::NewL(
+		CMsgMailViewerAppUi& aAppUi, CMsgMailViewerContactMatcher& aMatcher)
+    {
+    CMsgMailViewerReplyToMatcher* self =
+        new( ELeave ) CMsgMailViewerReplyToMatcher(aAppUi, aMatcher);
+    
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// ~CMsgMailViewerReplyToMatcher
+// ---------------------------------------------------------------------------
+//
+CMsgMailViewerReplyToMatcher::~CMsgMailViewerReplyToMatcher()
+    {
+    delete iData;
+    delete iName;
+    } 
+
+
+//----------------------------------------------------------------------------
+//  AddressMatchCallbackL()
+//----------------------------------------------------------------------------
+TInt CMsgMailViewerReplyToMatcher::AddressMatchCallbackL(TAny* aAny)	// CSI: 40 # We must return 
+																		// the integer value although this 
+																		// is a leaving method.
+	{
+	static_cast<CMsgMailViewerReplyToMatcher*>(aAny)->NotifyMatchingReadyL();	
+	return 0; // one-time TCallBack call
+	}
+	
+//----------------------------------------------------------------------------
+//  NotifyMatchingReadyL()
+//----------------------------------------------------------------------------
+void CMsgMailViewerReplyToMatcher::NotifyMatchingReadyL()
+    {
+    //Get data which user has selected from contact matcher.
+    iData = iContactMacther.GetDataL();
+    
+    if( iData )
+        {
+        //Get name for contact.
+        iName = iContactMacther.GetNameL();
+        iAppUi.DoReplyViaL(iSendingMtmUid, iData, iName);
+        }
+    else
+        {
+        iAppUi.DoReplyViaL(iSendingMtmUid, NULL, NULL);
+        }
+    }
+    
+        
+//----------------------------------------------------------------------------
+//  CheckMatchesL()
+//----------------------------------------------------------------------------
+void CMsgMailViewerReplyToMatcher::CheckMatchesL(TUid aMtmUid, CMsgRecipientArray* aRecs)
+    {
+    iSendingMtmUid = aMtmUid;
+    
+    if ( aRecs )
+        {
+        TInt count( aRecs->Count() );
+        
+        if(count > 0)
+            {
+            //We can only have one from-adderess
+            iContactMacther.FindContactL(*aRecs->At(0)->Address(), 
+            		CMsgMailViewerContactMatcher::EMsgToContact, 
+            		TCallBack(AddressMatchCallbackL, this));    
+            }
+        else
+            {
+            User::Leave(KErrNotFound);
+            }
+        }
+    }