diff -r ebe688cedc25 -r 7fdbb852d323 email/mail/PluginSrc/MailHtmlView/CHtmlLoadAttachments.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/email/mail/PluginSrc/MailHtmlView/CHtmlLoadAttachments.cpp Wed Sep 01 12:31:54 2010 +0100 @@ -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 +#include +#include +#include + +// ============================ 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