email/mail/PluginSrc/MailPlainView/MailLoadStateInline.cpp
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/mail/PluginSrc/MailPlainView/MailLoadStateInline.cpp	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,145 @@
+/*
+* 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:  State machine for message loading 
+*
+*/
+
+
+
+// INCLUDE FILES
+#include 	"MailLog.h"
+#include 	"MailUtils.h"
+#include    "MailLoadStateInline.h"
+#include    "MailLoadStateMessageAttachment.h"
+#include 	"MailLoadStateMachine.h"
+#include 	"MsgMailViewerHtmlConv.h"
+#include 	<MailPlainView.rsg>
+#include    <MMailAppUiInterface.h>
+#include    <CMailMessage.h>
+#include 	<StringLoader.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+/// images
+// -----------------------------------------------------------------------------
+// CLoadInlineImages::MessageLoadingL
+// -----------------------------------------------------------------------------
+//	
+void CLoadInlineImages::MessageLoadingL( TInt aStatus, CMailMessage& aMessage )
+	{
+	if( aStatus == CMailMessage::ELinkedFileReady ) 
+		{
+		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 );		
+		}		
+	}
+
+// -----------------------------------------------------------------------------
+// CLoadInlineImages::CLoadInlineImages
+// -----------------------------------------------------------------------------
+//
+CLoadInlineImages::CLoadInlineImages( 
+	MMailAppUiInterface* aAppUI, 
+	MStateMachine& aStateMachine )
+	{
+	iAppUI = aAppUI;
+	iStateMachine = &aStateMachine;
+	}
+
+// -----------------------------------------------------------------------------
+// CLoadInlineImages::~CLoadInlineImages
+// -----------------------------------------------------------------------------
+//
+CLoadInlineImages::~CLoadInlineImages()
+	{
+	}
+
+// -----------------------------------------------------------------------------
+// CLoadInlineImages::NextStateL
+// -----------------------------------------------------------------------------
+//
+MLoadState* CLoadInlineImages::NextStateL()
+	{
+	RPointerArray<HBufC>* array = iStateMachine->GetIdArray();
+	if ( array && array->Count() )
+		{
+		return new( ELeave ) CLoadInlineImages( iAppUI, *iStateMachine );
+		}
+	return new( ELeave ) CLoadAttachedMessages( iAppUI );
+	}
+
+// -----------------------------------------------------------------------------
+// CLoadInlineImages::MakeRequestL
+// -----------------------------------------------------------------------------
+//
+void CLoadInlineImages::MakeRequestL( 
+	TRequestStatus& aStatus,
+	CMailMessage& aMessage )
+	{
+	iLoadStatus = &aStatus;
+	RPointerArray<HBufC>* array = iStateMachine->GetIdArray();
+	if ( array && array->Count() )
+		{
+        HBufC* item = (*array)[0];
+        //LOG1( "CLoadInlineImages::MakeRequestL inlineIdArray: %S", &*item );
+        aMessage.LoadLinkedHtmlContentL(
+    		KNullDesC(), 
+    		*item, 
+    		*this );
+		delete item;
+		array->Remove(0); // remove item pointer from array    		
+    	aStatus = KRequestPending;
+		}
+	else
+		{
+		// Nothing to do, so complete immediately
+		aStatus = KRequestPending;
+		TRequestStatus* observer = iLoadStatus;
+		User::RequestComplete( observer, KErrNone );
+		}	
+	}
+
+// -----------------------------------------------------------------------------
+// CLoadInlineImages::AddAttachmentsToAppUiL
+// -----------------------------------------------------------------------------
+//
+void CLoadInlineImages::AddAttachmentsToAppUiL( CMailMessage& aMessage )
+    {    	
+	RFile linkedHtml = aMessage.LinkedHtmlContent();
+	if ( linkedHtml.SubSessionHandle() != 0 )
+		{
+		CleanupClosePushL( linkedHtml );		
+		CMsvAttachment* message = CMsvAttachment::NewL( 
+					CMsvAttachment::EMsvFile ); 
+		CleanupStack::PushL( message );				
+		TInt contentSize(0);
+		linkedHtml.Size( contentSize );
+		message->SetSize( contentSize );
+		TFileName fileName;
+		linkedHtml.Name( fileName );
+		message->SetAttachmentNameL( fileName );
+		message->SetComplete( ETrue );
+		message->SetId( aMessage.LinkedHtmlId() );
+		iAppUI->AddAttachmentL( *message, EFalse );			
+        CleanupStack::PopAndDestroy(2);					// CSI: 47 # message, linkedHtml
+		}	
+    }
+	
+//  End of File