diff -r 000000000000 -r 72b543305e3a email/mail/PluginSrc/MailPlainView/MailLoadStateInline.cpp --- /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 +#include +#include +#include + +// ============================ 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* 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* 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