email/mail/PluginSrc/MailHtmlView/CLoadAttachedMessages.cpp
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/mail/PluginSrc/MailHtmlView/CLoadAttachedMessages.cpp	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,121 @@
+/*
+* Copyright (c) 2002-2004 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:  Loads attached messages
+*
+*/
+
+
+
+// INCLUDE FILES
+#include 	"MailLog.h"
+#include 	"MailUtils.h"
+#include    "CLoadAttachedMessages.h"
+#include    <MMailAppUiInterface.h>
+#include    <CMailMessage.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+/// messages
+// -----------------------------------------------------------------------------
+// CLoadAttachedMessages::MessageLoadingL
+// -----------------------------------------------------------------------------
+//	
+void CLoadAttachedMessages::MessageLoadingL(TInt aStatus, CMailMessage& aMessage)
+	{
+	if( aStatus == CMailMessage::EAttachedMessagesReady ) 
+		{
+		TRAPD( err, AddAttachmentsToAppUiL( aMessage ) );
+		
+		// Complete observer regardless of result
+		TRequestStatus* observer = iLoadStatus;
+		User::RequestComplete( observer, err );
+		
+		// Then leave this method if error occurred
+		User::LeaveIfError( err );
+		}
+	}
+
+// -----------------------------------------------------------------------------
+// CLoadAttachedMessages::CLoadAttachedMessages
+// -----------------------------------------------------------------------------
+//	
+CLoadAttachedMessages::CLoadAttachedMessages( MMailAppUiInterface* aAppUI )
+	{
+	iAppUI = aAppUI;
+	}
+
+// -----------------------------------------------------------------------------
+// CLoadAttachedMessages::~CLoadAttachedMessages
+// -----------------------------------------------------------------------------
+//	
+CLoadAttachedMessages::~CLoadAttachedMessages()
+	{
+	// request is cancelled by state machine.
+	}
+
+// -----------------------------------------------------------------------------
+// CLoadAttachedMessages::NextStateL
+// -----------------------------------------------------------------------------
+//	
+MLoadState* CLoadAttachedMessages::NextStateL()
+	{
+	return NULL; // last state
+	}
+
+// -----------------------------------------------------------------------------
+// CLoadAttachedMessages::MakeRequestL
+// -----------------------------------------------------------------------------
+//		
+void CLoadAttachedMessages::MakeRequestL( 
+	TRequestStatus& aStatus,
+	CMailMessage& aMessage )
+	{
+	iLoadStatus = &aStatus;
+	aMessage.LoadAttachedMessagesL( *this );
+	aStatus = KRequestPending;
+	}
+
+
+// -----------------------------------------------------------------------------
+// CLoadAttachedMessages::AddAttachmentsToAppUiL
+// -----------------------------------------------------------------------------
+//		
+void CLoadAttachedMessages::AddAttachmentsToAppUiL( CMailMessage& aMessage )
+    {
+	const CMsvEntrySelection& selection = aMessage.Selection();
+	for ( TInt i=0; i<selection.Count(); ++i ) 
+		{
+		TMsvId entryID =  selection[i];
+		TMsvId service;
+		TMsvEntry tEntry;
+		TInt retVal = aMessage.Session()->GetEntry( 
+			entryID, service, tEntry );
+		if ( retVal == KErrNone ) 
+			{
+			_LIT8(KMessageMimeType, "message/rfc822");	    				
+			CMsvAttachment* message = CMsvAttachment::NewL( 
+				CMsvAttachment::EMsvMessageEntry ); 
+			CleanupStack::PushL( message );
+			message->SetSize( tEntry.iSize );
+			message->SetMimeTypeL( KMessageMimeType );
+			message->SetAttachmentNameL( tEntry.iDescription );
+			message->SetComplete( tEntry.Complete() );
+			message->SetId( entryID );
+			iAppUI->AddAttachmentL( *message, EFalse );
+			CleanupStack::PopAndDestroy(); //message
+			}
+		}    
+    }
+    
+//  End of File