email/mail/PluginSrc/MailPlainView/CMailMessagePlainView.cpp
changeset 0 72b543305e3a
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email/mail/PluginSrc/MailPlainView/CMailMessagePlainView.cpp	Thu Dec 17 08:44:11 2009 +0200
@@ -0,0 +1,210 @@
+/*
+* Copyright (c) 2002-2006 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:  Mail message plain view
+*
+*/
+
+
+// INCLUDE FILES
+#include 	"MailLog.h"
+#include 	"MailUtils.h"
+#include    "CMailMessagePlainView.h"
+#include 	"MailLoadStateMachine.h"
+#include    "mailmessageutils.h"
+#include 	<MailPlainView.rsg>
+#include    <MMailAppUiInterface.h>
+#include    <CMailMessage.h>
+#include    <SenduiMtmUids.h>
+#include    <miutset.h>
+#include    <MsgEditor.hrh> // Control types
+#include 	<avkon.hrh>
+#include 	<akntabgrp.h>
+#include 	<aknnavide.h>
+#include 	<StringLoader.h>
+
+// CONSTANTS
+_LIT(KMailPlainViewResourceFile, "z:MailPlainView.rsc");
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CMailMessagePlainView::CMailMessagePlainView
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CMailMessagePlainView::CMailMessagePlainView() {}
+
+// -----------------------------------------------------------------------------
+// CWPEmailAdapter::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CMailMessagePlainView* CMailMessagePlainView::NewL()
+	{
+	CMailMessagePlainView* self = new(ELeave) CMailMessagePlainView; 
+	return self;
+	}
+
+// Destructor
+CMailMessagePlainView::~CMailMessagePlainView()
+    {
+    delete iLoadStateMachine;
+    }
+
+// -----------------------------------------------------------------------------
+// CMailMessagePlainView::DynInitOptionsMenuL
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+void CMailMessagePlainView::DynInitMenuPaneL(
+    TInt /*aResourceId*/,CEikMenuPane* /*aMenuPane*/)
+    {    }
+
+// -----------------------------------------------------------------------------
+// CMailMessagePlainView::HandleCommandL
+// -----------------------------------------------------------------------------
+//
+TBool CMailMessagePlainView::HandleCommandL(TInt /*aCommand*/)
+    {
+    return EFalse;
+    }
+
+// -----------------------------------------------------------------------------
+// CMailMessagePlainView::HandleKeyEventL
+// -----------------------------------------------------------------------------
+//
+TKeyResponse CMailMessagePlainView::HandleKeyEventL(
+    const TKeyEvent& /*aKeyEvent*/,
+    TEventCode /*aType*/)
+    {
+    return EKeyWasNotConsumed;
+    }
+
+// -----------------------------------------------------------------------------
+// CMailMessagePlainView::MessageLoadL
+// -----------------------------------------------------------------------------
+//
+void CMailMessagePlainView::MessageLoadL(
+	TInt /*aState*/, CMailMessage& /*aMessage*/)
+    {
+    // Deside here if this message belongs to this plugin.
+    // Do nothing. (PlainView plug-in "can" show all messages)
+    }
+
+// -----------------------------------------------------------------------------
+// CMailMessagePlainView::ViewMessageL
+// -----------------------------------------------------------------------------
+//
+void CMailMessagePlainView::ViewMessageL(CMailMessage& aMessage, 
+    MMailAppUiInterface& aUICallBack, TUint& aParams)
+    {
+    iAppUI = &aUICallBack;          
+    // ref to message header
+    CImHeader* header = aMessage.MessageHeader();
+    SetHeaderControlTextL(aMessage, *header);    
+    SetBodyControlTextL(aMessage);
+    delete iLoadStateMachine;
+    iLoadStateMachine = NULL;    
+	iLoadStateMachine = CLoadStateMachine::NewL( 
+			iAppUI, 
+			aMessage );
+	iLoadStateMachine->StartL();		
+    aParams |= EMailUseDefaultNaviPane; 
+    }
+// -----------------------------------------------------------------------------
+// CMailMessagePlainView::ResourceFile
+// -----------------------------------------------------------------------------
+//
+const TDesC& CMailMessagePlainView::ResourceFile()
+	{
+	return KMailPlainViewResourceFile;
+	}
+
+// -----------------------------------------------------------------------------
+// CMailMessagePlainView::AddCcAndBccConstrolsL
+// -----------------------------------------------------------------------------
+//
+void CMailMessagePlainView::AddCcAndBccConstrolsL( CImHeader& aHeader )
+    {
+    CDesCArray& ccRecipients = aHeader.CcRecipients();
+    if (ccRecipients.Count())
+    	{
+    	iAppUI->AddControlL(EMsgComponentIdCc);
+    	iAppUI->SetAddressFieldTextL(
+            EMsgComponentIdCc, 
+            ccRecipients);
+    	}
+
+    CDesCArray& bccRecipients = aHeader.BccRecipients();
+    if (bccRecipients.Count())
+    	{
+    	iAppUI->AddControlL(EMsgComponentIdBcc);
+    	iAppUI->SetAddressFieldTextL(
+            EMsgComponentIdBcc, 
+            bccRecipients);
+    	}    
+    }
+
+// -----------------------------------------------------------------------------
+// CMailMessagePlainView::SetBodyControlTextL
+// -----------------------------------------------------------------------------
+//
+void CMailMessagePlainView::SetBodyControlTextL(CMailMessage& aMessage)
+    {
+	// HTML body is set by iLoadStateMachine
+	if ( !aMessage.MessageEntry().MHTMLEmail() )
+		{
+		iAppUI->SetBodyTextL(*aMessage.MessageBody());
+        iAppUI->ViewMessageComplete();
+		}
+    }
+
+// -----------------------------------------------------------------------------
+// CMailMessagePlainView::SetHeaderControlTextL
+// -----------------------------------------------------------------------------
+//
+void CMailMessagePlainView::SetHeaderControlTextL(
+    CMailMessage& aMessage, CImHeader& aHeader)
+    {
+    if ( MailMessageUtils::IsOutgoingL( aMessage ) )
+        {
+	    CDesCArray& toRecipients = aHeader.ToRecipients();
+	    if (toRecipients.Count())
+	    	{
+	    	iAppUI->AddControlL(EMsgComponentIdTo);
+	    	iAppUI->SetAddressFieldTextL(
+            	EMsgComponentIdTo, 
+            	toRecipients);
+	    	}
+	    AddCcAndBccConstrolsL( aHeader );	        
+        }
+    else
+        {
+        HBufC* from = aHeader.From().AllocLC();
+    	if ( from->Length()	)
+    		{
+    		iAppUI->AddControlL(EMsgComponentIdFrom);
+    		iAppUI->SetAddressFieldTextL(
+            	EMsgComponentIdFrom, 
+            	*from);
+    		}    	
+    	CleanupStack::PopAndDestroy(); // from
+        }
+
+    iAppUI->AddControlL(EMsgComponentIdSubject);
+    iAppUI->SetSubjectL(aHeader.Subject());
+    }
+    
+//  End of File