email/mail/PluginSrc/MailPlainView/CLoadAttachments.cpp
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/mail/PluginSrc/MailPlainView/CLoadAttachments.cpp	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,137 @@
+/*
+* 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 "CLoadAttachments.h"
+#include "MailLog.h"
+#include "MailUtils.h"
+#include "MailLoadStateMachine.h"
+#include <MailPlainView.rsg>
+#include <MMailAppUiInterface.h>
+#include <CMailMessage.h>
+#include <mmsvattachmentmanager.h>
+#include <StringLoader.h>
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+/// messages
+// -----------------------------------------------------------------------------
+// CLoadAttachments::MessageLoadingL
+// -----------------------------------------------------------------------------
+//	
+void CLoadAttachments::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 ) );
+        LOG1("CLoadAttachments::MessageLoadingL AddAttachmentsToAppUiL: err=%d", err );
+        
+		//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 );
+		}
+	}
+
+// -----------------------------------------------------------------------------
+// CLoadAttachments::CLoadAttachments
+// -----------------------------------------------------------------------------
+//	
+CLoadAttachments::CLoadAttachments( MMailAppUiInterface* aAppUI )
+	{
+	iAppUI = aAppUI;
+	}
+
+// -----------------------------------------------------------------------------
+// CLoadAttachments::~CLoadAttachments
+// -----------------------------------------------------------------------------
+//	
+CLoadAttachments::~CLoadAttachments()
+	{
+	
+	}
+
+// -----------------------------------------------------------------------------
+// CLoadAttachments::NextStateL
+// -----------------------------------------------------------------------------
+//	
+MLoadState* CLoadAttachments::NextStateL()
+	{
+	return NULL;
+	}
+
+// -----------------------------------------------------------------------------
+// CLoadAttachments::MakeRequestL
+// -----------------------------------------------------------------------------
+//		
+void CLoadAttachments::MakeRequestL( 
+	TRequestStatus& aStatus,
+	CMailMessage& aMessage )
+	{
+	iLoadStatus = &aStatus;
+	aMessage.LoadAttachmentsL( *this );
+	aStatus = KRequestPending;
+	}
+
+// -----------------------------------------------------------------------------
+// CLoadAttachments::AddAttachmentsToAppUiL
+// -----------------------------------------------------------------------------
+//		
+void CLoadAttachments::AddAttachmentsToAppUiL( MMsvAttachmentManager& aManager )
+    {
+	LOG1("CLoadAttachments::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("CLoadAttachments::AddAttachmentsToAppUiL iteration: %d", index);
+		CMsvAttachment* info = aManager.GetAttachmentInfoL( index );
+		CleanupStack::PushL( info );
+#ifdef MAIL_ENABLE_LOGGING
+        LOG("CLoadAttachments::AddAttachmentsToAppUiL Attachment info:");
+		LOG1("CLoadAttachments::AddAttachmentsToAppUiL ID  : 0x%x", info->Id() );
+        TPtrC name( info->AttachmentName() );
+		LOG1("CLoadAttachments::AddAttachmentsToAppUiL Name: '%S'", &name );
+        TPtrC path( info->FilePath() );
+        LOG1("CLoadAttachments::AddAttachmentsToAppUiL Path: '%S'", &path );
+        HBufC* mime = HBufC::NewLC( info->MimeType().Length() );
+        mime->Des().Copy( info->MimeType() );
+        LOG1("CLoadAttachments::AddAttachmentsToAppUiL Mime: '%S'", mime );
+        CleanupStack::PopAndDestroy( mime );
+#endif
+		LOG("CLoadAttachments::AddAttachmentsToAppUiL adding atta");
+		iAppUI->AddAttachmentL( *info, ETrue );
+		LOG("CLoadAttachments::AddAttachmentsToAppUiL atta added");
+		
+		CleanupStack::PopAndDestroy( info );
+		}    
+    }
+
+//  End of File