email/mail/PluginSrc/MailHtmlView/CHtmlLoadAttachments.cpp
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/mail/PluginSrc/MailHtmlView/CHtmlLoadAttachments.cpp	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,127 @@
+/*
+* 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 message attachments 
+*
+*/
+
+
+
+// INCLUDE FILES
+#include    "CHtmlLoadAttachments.h"
+#include 	"MailLog.h"
+#include 	"MailUtils.h"
+#include 	"CLoadAttachedMessages.h"
+#include    <MMailAppUiInterface.h>
+#include    <CMailMessage.h>
+#include    <MMsvAttachmentManager.h>
+#include 	<stringloader.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+/// messages
+// -----------------------------------------------------------------------------
+// CHtmlLoadAttachments::MessageLoadingL
+// -----------------------------------------------------------------------------
+//	
+void CHtmlLoadAttachments::MessageLoadingL(TInt aStatus, CMailMessage& aMessage)
+	{
+	if( aStatus == CMailMessage::EAttachmentsReady ) 
+		{
+		//Tell that loading of attachments has started
+		iAppUI->StartWaitNoteL();
+
+	    MMsvAttachmentManager& manager = aMessage.AttachmentManager();		
+        TRAPD( err, AddAttachmentsToAppUiL( manager ) );
+        
+		//Tell that loading of attachments has ended
+		iAppUI->StopWaitNote();
+		
+		// Complete observer regardless of result
+		TRequestStatus* observer = iLoadStatus;
+		User::RequestComplete( observer, err );
+		
+		// Then leave this method if error occurred
+		User::LeaveIfError( err );
+		}
+	}
+
+// -----------------------------------------------------------------------------
+// CHtmlLoadAttachments::CHtmlLoadAttachments
+// -----------------------------------------------------------------------------
+//	
+CHtmlLoadAttachments::CHtmlLoadAttachments( MMailAppUiInterface* aAppUI )
+	{
+	iAppUI = aAppUI;
+	}
+
+// -----------------------------------------------------------------------------
+// CHtmlLoadAttachments::~CHtmlLoadAttachments
+// -----------------------------------------------------------------------------
+//	
+CHtmlLoadAttachments::~CHtmlLoadAttachments()
+	{
+	
+	}
+
+// -----------------------------------------------------------------------------
+// CHtmlLoadAttachments::NextStateL
+// -----------------------------------------------------------------------------
+//	
+MLoadState* CHtmlLoadAttachments::NextStateL()
+	{
+	return new(ELeave) CLoadAttachedMessages( iAppUI );
+	}
+
+// -----------------------------------------------------------------------------
+// CHtmlLoadAttachments::MakeRequestL
+// -----------------------------------------------------------------------------
+//		
+void CHtmlLoadAttachments::MakeRequestL( 
+	TRequestStatus& aStatus,
+	CMailMessage& aMessage )
+	{
+	iLoadStatus = &aStatus;
+	aMessage.LoadAttachmentsL( *this );
+	aStatus = KRequestPending;
+	}
+
+
+// -----------------------------------------------------------------------------
+// CHtmlLoadAttachments::AddAttachmentsToAppUiL
+// -----------------------------------------------------------------------------
+//		
+void CHtmlLoadAttachments::AddAttachmentsToAppUiL(
+    MMsvAttachmentManager& aManager )
+    {
+	LOG1("CHtmlLoadAttachments::AddAttachmentsToAppUiL attachmentCount:%d", 
+	     aManager.AttachmentCount());
+
+	//It is possible that aManager.AttachmentCount() changes while we are in 
+	//this loop. That is why latest count is checked every round.
+	for ( TInt index(0); index < aManager.AttachmentCount(); ++index ) 
+		{ 
+		LOG1("CHtmlLoadAttachments::AddAttachmentsToAppUiL iteration: %d",
+		     index);
+		CMsvAttachment* info = aManager.GetAttachmentInfoL( index );
+		CleanupStack::PushL( info );
+		
+		LOG("CHtmlLoadAttachments::AddAttachmentsToAppUiL adding atta");
+		iAppUI->AddAttachmentL( *info, ETrue );
+		LOG("CHtmlLoadAttachments::AddAttachmentsToAppUiL atta added");
+		
+		CleanupStack::PopAndDestroy( info );
+		}    
+    }
+    
+//  End of File