diff -r a3a1ae9acec6 -r da5135c61bad meetingrequest/mrcmailremoteattachmentplugin/src/cmrcmailremoteattachmentplugin.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/meetingrequest/mrcmailremoteattachmentplugin/src/cmrcmailremoteattachmentplugin.cpp Wed Mar 31 21:08:33 2010 +0300 @@ -0,0 +1,137 @@ +/* +* 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 "cmrcmailremoteattachmentplugin.h" +#include "cmrcmailremoteattachmentpluginattinfofetcher.h" +#include "cfsmailclient.h" +#include "mcalremoteattachmentinfo.h" +#include "cmrcmailremoteattachmentplugindownloader.h" +#include "mcalremoteattachment.h" + +#include "emailtrace.h" + +#include +#include + +// Unnamed namespace for local definitions +namespace { // namespace::codescanner + +} // namespace + +// ======== MEMBER FUNCTIONS ======== + +// --------------------------------------------------------------------------- +// CMRCmailRemoteAttachmentPlugin::CMRCmailRemoteAttachmentPlugin +// --------------------------------------------------------------------------- +// +CMRCmailRemoteAttachmentPlugin::CMRCmailRemoteAttachmentPlugin() + { + FUNC_LOG; + } + +// --------------------------------------------------------------------------- +// CMRCmailRemoteAttachmentPlugin::~CMRCmailRemoteAttachmentPlugin +// --------------------------------------------------------------------------- +// +CMRCmailRemoteAttachmentPlugin::~CMRCmailRemoteAttachmentPlugin() + { + FUNC_LOG; + + delete iAttinfoFetcher; + + if ( iMailClient ) + { + // DEcrement mail client reference count + iMailClient->Close(); + iMailClient = NULL; + } + } + +// --------------------------------------------------------------------------- +// CMRCmailRemoteAttachmentPlugin::NewL +// --------------------------------------------------------------------------- +// +CMRCmailRemoteAttachmentPlugin* CMRCmailRemoteAttachmentPlugin::NewL() + { + FUNC_LOG; + + CMRCmailRemoteAttachmentPlugin* self = + new (ELeave) CMRCmailRemoteAttachmentPlugin; + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// --------------------------------------------------------------------------- +// CMRCmailRemoteAttachmentPlugin::ConstructL +// --------------------------------------------------------------------------- +// +void CMRCmailRemoteAttachmentPlugin::ConstructL() + { + FUNC_LOG; + + iMailClient = CFSMailClient::NewL(); + + iAttinfoFetcher = + CMRCmailRemoteAttachmentPluginAttinfoFetcher::NewL( + *iMailClient ); + } + +// --------------------------------------------------------------------------- +// CMRCmailRemoteAttachmentPlugin::AttachmentInfo +// --------------------------------------------------------------------------- +// +void CMRCmailRemoteAttachmentPlugin::AttachmentInfo( + MCalRemoteAttachmentInfo& aAttachmentInfo, + MDesCArray& aAttachmentUrlArray ) const + { + FUNC_LOG; + + TRAP_IGNORE( iAttinfoFetcher->FetchAttachmentInformationL( + aAttachmentInfo, + aAttachmentUrlArray ) ) + } + +// --------------------------------------------------------------------------- +// CMRCmailRemoteAttachmentPlugin::DownloadAttachmentsL +// --------------------------------------------------------------------------- +// +void CMRCmailRemoteAttachmentPlugin::DownloadAttachmentsL( + const RPointerArray& aAttachments, + RPointerArray& aOperations, + MCalRemoteAttachmentOperationObserver& aObserver ) + { + FUNC_LOG; + + TInt attachmentCount( aAttachments.Count() ); + aOperations.ReserveL( attachmentCount ); + for ( TInt i(0); i < attachmentCount; ++i ) + { + CMRCmailRemoteAttachmentDownloader* downloadCommand = + CMRCmailRemoteAttachmentDownloader::NewL( + *iMailClient, + aObserver, + aAttachments[i]->AttachmentIdentifier() ); + + // Ownership transferred + aOperations.AppendL( downloadCommand ); + } + } + +// EOF +