--- /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