--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/email/mail/PluginSrc/MailHtmlView/CLoadAttachedMessages.cpp Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,121 @@
+/*
+* 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 attached messages
+*
+*/
+
+
+
+// INCLUDE FILES
+#include "MailLog.h"
+#include "MailUtils.h"
+#include "CLoadAttachedMessages.h"
+#include <MMailAppUiInterface.h>
+#include <CMailMessage.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+/// messages
+// -----------------------------------------------------------------------------
+// CLoadAttachedMessages::MessageLoadingL
+// -----------------------------------------------------------------------------
+//
+void CLoadAttachedMessages::MessageLoadingL(TInt aStatus, CMailMessage& aMessage)
+ {
+ if( aStatus == CMailMessage::EAttachedMessagesReady )
+ {
+ 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 );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CLoadAttachedMessages::CLoadAttachedMessages
+// -----------------------------------------------------------------------------
+//
+CLoadAttachedMessages::CLoadAttachedMessages( MMailAppUiInterface* aAppUI )
+ {
+ iAppUI = aAppUI;
+ }
+
+// -----------------------------------------------------------------------------
+// CLoadAttachedMessages::~CLoadAttachedMessages
+// -----------------------------------------------------------------------------
+//
+CLoadAttachedMessages::~CLoadAttachedMessages()
+ {
+ // request is cancelled by state machine.
+ }
+
+// -----------------------------------------------------------------------------
+// CLoadAttachedMessages::NextStateL
+// -----------------------------------------------------------------------------
+//
+MLoadState* CLoadAttachedMessages::NextStateL()
+ {
+ return NULL; // last state
+ }
+
+// -----------------------------------------------------------------------------
+// CLoadAttachedMessages::MakeRequestL
+// -----------------------------------------------------------------------------
+//
+void CLoadAttachedMessages::MakeRequestL(
+ TRequestStatus& aStatus,
+ CMailMessage& aMessage )
+ {
+ iLoadStatus = &aStatus;
+ aMessage.LoadAttachedMessagesL( *this );
+ aStatus = KRequestPending;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CLoadAttachedMessages::AddAttachmentsToAppUiL
+// -----------------------------------------------------------------------------
+//
+void CLoadAttachedMessages::AddAttachmentsToAppUiL( CMailMessage& aMessage )
+ {
+ const CMsvEntrySelection& selection = aMessage.Selection();
+ for ( TInt i=0; i<selection.Count(); ++i )
+ {
+ TMsvId entryID = selection[i];
+ TMsvId service;
+ TMsvEntry tEntry;
+ TInt retVal = aMessage.Session()->GetEntry(
+ entryID, service, tEntry );
+ if ( retVal == KErrNone )
+ {
+ _LIT8(KMessageMimeType, "message/rfc822");
+ CMsvAttachment* message = CMsvAttachment::NewL(
+ CMsvAttachment::EMsvMessageEntry );
+ CleanupStack::PushL( message );
+ message->SetSize( tEntry.iSize );
+ message->SetMimeTypeL( KMessageMimeType );
+ message->SetAttachmentNameL( tEntry.iDescription );
+ message->SetComplete( tEntry.Complete() );
+ message->SetId( entryID );
+ iAppUI->AddAttachmentL( *message, EFalse );
+ CleanupStack::PopAndDestroy(); //message
+ }
+ }
+ }
+
+// End of File