diff -r a3a1ae9acec6 -r da5135c61bad meetingrequest/mrcmailremoteattachmentplugin/src/cmrcmailremoteattachmentpluginattinfofetcher.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/meetingrequest/mrcmailremoteattachmentplugin/src/cmrcmailremoteattachmentpluginattinfofetcher.cpp Wed Mar 31 21:08:33 2010 +0300 @@ -0,0 +1,156 @@ +/* + * Copyright (c) 2007-2009 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: + * + */ + +#include "cmrcmailremoteattachmentpluginattinfofetcher.h" +#include "tmrcmailremoteattachmentpluginurlparser.h" +#include "mcalremoteattachmentinfo.h" +#include "mcalremoteattachment.h" +#include "cfsmailclient.h" +#include "emailtrace.h" + +#include + +// Unnamed namespace for local definitions +namespace { // namespace::codescanner + +} // namespace + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CMRCmailRemoteAttachmentPluginAttinfoFetcher::CMRCmailRemoteAttachmentPluginAttinfoFetcher +// --------------------------------------------------------------------------- +// +CMRCmailRemoteAttachmentPluginAttinfoFetcher::CMRCmailRemoteAttachmentPluginAttinfoFetcher( + CFSMailClient& aMailClient ) +: iMailClient( aMailClient ) + { + FUNC_LOG; + } + + +// --------------------------------------------------------------------------- +// CMRCmailRemoteAttachmentPluginAttinfoFetcher::~CMRCmailRemoteAttachmentPluginAttinfoFetcher +// --------------------------------------------------------------------------- +// +CMRCmailRemoteAttachmentPluginAttinfoFetcher::~CMRCmailRemoteAttachmentPluginAttinfoFetcher() + { + FUNC_LOG; + } + +// --------------------------------------------------------------------------- +// CMRCmailRemoteAttachmentPluginAttinfoFetcher::NewL +// --------------------------------------------------------------------------- +// +CMRCmailRemoteAttachmentPluginAttinfoFetcher* + CMRCmailRemoteAttachmentPluginAttinfoFetcher::NewL( + CFSMailClient& aMailClient ) + { + FUNC_LOG; + + CMRCmailRemoteAttachmentPluginAttinfoFetcher* self = + new (ELeave) CMRCmailRemoteAttachmentPluginAttinfoFetcher( + aMailClient ); + + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// CMRCmailRemoteAttachmentPluginAttinfoFetcher::ConstructL +// --------------------------------------------------------------------------- +// +void CMRCmailRemoteAttachmentPluginAttinfoFetcher::ConstructL() + { + FUNC_LOG; + } + +// --------------------------------------------------------------------------- +// CMRCmailRemoteAttachmentPluginAttinfoFetcher::FetchAttachmentInformationL +// --------------------------------------------------------------------------- +// +void CMRCmailRemoteAttachmentPluginAttinfoFetcher::FetchAttachmentInformationL( + MCalRemoteAttachmentInfo& aAttachmentInfo, + MDesCArray& aAttachmentUrlArray ) + { + FUNC_LOG; + + TInt attachmentInfoCount( aAttachmentUrlArray.MdcaCount() ); + + for ( TInt i(0); i < attachmentInfoCount; ++i ) + { + TMRCMailRemoteAttachmentPluginURLParser mailIdParser; + + TPtrC uri( aAttachmentUrlArray.MdcaPoint(i) ); + + TInt err = mailIdParser.Parse( uri ); + User::LeaveIfError( err ); + + AddAttachmentInformationL( mailIdParser, uri, aAttachmentInfo ); + } + + + } + +// --------------------------------------------------------------------------- +// CMRCmailRemoteAttachmentPluginAttinfoFetcher::FetchAttachmentInformationL +// --------------------------------------------------------------------------- +// +void CMRCmailRemoteAttachmentPluginAttinfoFetcher::AddAttachmentInformationL( + TMRCMailRemoteAttachmentPluginURLParser& aParser, + const TDesC& aUri, + MCalRemoteAttachmentInfo& aAttachmentInfo ) + { + FUNC_LOG; + + // Fetch message + CFSMailMessage* message = iMailClient.GetMessageByUidL( + aParser.iMailboxUid, + aParser.iFolderUid, + aParser.iMessageUid, + EFSMsgDataStructure ); + + CleanupStack::PushL( message ); + + CFSMailMessagePart* attachment = + message->ChildPartL( aParser.iMessagepartUid ); + CleanupStack::PushL( attachment ); + + TPtrC attachmentName( attachment->AttachmentNameL() ); + TInt attachmentSize( attachment->ContentSize() ); + + MCalRemoteAttachment::TCalRemoteAttachmentState attachmentState( + MCalRemoteAttachment::EAttachmentStateNotDownloaded ); + + if ( EFSFull == attachment->FetchLoadState() ) + { + attachmentState = MCalRemoteAttachment::EAttachmentStateDownloaded; + } + + aAttachmentInfo.AddAttachmentInfoL( + aUri, + attachmentName, + attachmentSize, + attachmentState ); + + CleanupStack::PopAndDestroy( attachment ); + CleanupStack::PopAndDestroy( message ); + } + +// EOF