--- /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