201021
authorhgs
Fri, 28 May 2010 13:56:43 +0300
changeset 43 99bcbff212ad
parent 42 139d4b7b2938
child 44 c2d07d913565
201021
emailservices/emailcommon/bwins/fsfwcommonlibu.def
emailservices/emailcommon/eabi/fsfwcommonlibu.def
emailservices/emailcommon/inc/CFSMailBox.h
emailservices/emailcommon/inc/CFSMailFolder.h
emailservices/emailcommon/inc/cmailboxstateext.h
emailservices/emailcommon/src/CFSMailAddress.cpp
emailservices/emailcommon/src/CFSMailBox.cpp
emailservices/emailcommon/src/CFSMailBoxBase.cpp
emailservices/emailcommon/src/CFSMailFolder.cpp
emailservices/emailcommon/src/CFSMailFolderBase.cpp
emailservices/emailcommon/src/CFSMailIterator.cpp
emailservices/emailcommon/src/CFSMailMessage.cpp
emailservices/emailcommon/src/CFSMailMessageBase.cpp
emailservices/emailcommon/src/CFSMailMessagePart.cpp
emailservices/emailcommon/src/CFSMailPluginData.cpp
emailservices/emailcommon/src/CFSMailRequestHandler.cpp
emailservices/emailcommon/src/CFSMailRequestObserver.cpp
emailservices/emailcommon/src/cemailextensionbase.cpp
emailservices/emailcommon/src/emailcalendarinfoimpl.cpp
emailservices/emailcommon/src/nmconverter.cpp
emailservices/emaildebug/inc/emailtrace.h
emailservices/emailframework/inc/CFSMailPlugin.h
emailservices/emailframework/inc/CFSMailPlugin.inl
emailservices/emailframework/src/CFSFWImplementation.cpp
emailservices/emailframework/src/CFSMailBrand.cpp
emailservices/emailframework/src/CFSMailBrandManagerImpl.cpp
emailservices/emailframework/src/CFSMailClient.cpp
emailservices/emailframework/src/CFSMailEventObserver.cpp
emailservices/emailframework/src/CFSMailPluginManager.cpp
emailservices/emailstore/base_plugin/src/baseplugindelayedops.cpp
emailservices/emailstore/base_plugin/src/nestedao.cpp
emailservices/emailstore/emailstore.pro
emailservices/emailstore/message_store/server/group/MessageStoreServer.mmp
emailservices/nmailagent/inc/nmmailagent.h
emailservices/nmailagent/nmailagent.pro
emailservices/nmailagent/src/main.cpp
emailservices/nmailagent/src/nmmailagent.cpp
emailservices/nmailagent/src/ssastartupwatcher.cpp
emailservices/nmailbase/inc/nmcommon.h
emailservices/nmailbase/src/nmaddress.cpp
emailservices/nmailbase/src/nmfolder.cpp
emailservices/nmailbase/src/nmmailbox.cpp
emailservices/nmailbase/src/nmmessage.cpp
emailservices/nmailbase/src/nmmessageenvelope.cpp
emailservices/nmailbase/src/nmmessagepart.cpp
emailservices/nmclientapi/inc/nmapimessagebody_p.h
emailservices/nmclientapi/inc/nmapiprivateheaders.h
emailservices/nmclientapi/src/nmapidatapluginfactory.cpp
emailservices/nmclientapi/src/nmapiemailaddress.cpp
emailservices/nmclientapi/src/nmapiemailservice.cpp
emailservices/nmclientapi/src/nmapiengine.cpp
emailservices/nmclientapi/src/nmapienvelopelisting.cpp
emailservices/nmclientapi/src/nmapienvelopelisting_p.cpp
emailservices/nmclientapi/src/nmapieventnotifier.cpp
emailservices/nmclientapi/src/nmapieventnotifier_p.cpp
emailservices/nmclientapi/src/nmapifolder.cpp
emailservices/nmclientapi/src/nmapifolderlisting.cpp
emailservices/nmclientapi/src/nmapifolderlisting_p.cpp
emailservices/nmclientapi/src/nmapimailbox.cpp
emailservices/nmclientapi/src/nmapimailboxlisting.cpp
emailservices/nmclientapi/src/nmapimailboxlisting_p.cpp
emailservices/nmclientapi/src/nmapimessagebody.cpp
emailservices/nmclientapi/src/nmapimessageenvelope.cpp
emailservices/nmclientapi/src/nmapimessagetask.cpp
emailservices/nmclientapi/src/nmapitypesconverter.cpp
emailservices/nmregister/inc/nmmailboxregisterinterface_p.h
emailservices/nmregister/nmregister.pro
emailservices/nmregister/rom/nmregister.iby
emailservices/nmregister/src/nmmailboxregisterinterface.cpp
emailservices/nmregister/src/nmmailboxregisterinterfaceplugin.cpp
emailservices/nmutilities/data/nmutilities.confml
emailservices/nmutilities/nmutilities.pro
emailservices/nmutilities/src/emailmailboxinfo.cpp
emailservices/nmutilities/src/emailmailboxinfo_p.cpp
emailuis/nmailcpplugin/src/nmsettingsplugin.cpp
emailuis/nmailui/conf/nmeditorview.docml
emailuis/nmailui/conf/nmmessagesearchlistview.docml
emailuis/nmailui/inc/nmapplication.h
emailuis/nmailui/inc/nmattachmentmanager.h
emailuis/nmailui/inc/nmattachmentpicker.h
emailuis/nmailui/inc/nmeditorcontent.h
emailuis/nmailui/inc/nmeditorheader.h
emailuis/nmailui/inc/nmeditortextdocument.h
emailuis/nmailui/inc/nmeditorview.h
emailuis/nmailui/inc/nmmessagelistview.h
emailuis/nmailui/inc/nmmessagesearchlistview.h
emailuis/nmailui/inc/nmrecipientfield.h
emailuis/nmailui/inc/nmuieffects.h
emailuis/nmailui/inc/nmuiheaders.h
emailuis/nmailui/inc/nmuriserviceinterface.h
emailuis/nmailui/inc/nmutilities.h
emailuis/nmailui/inc/nmviewerview.h
emailuis/nmailui/inc/nmviewerviewnetmanager.h
emailuis/nmailui/inc/nmviewerviewnetreply.h
emailuis/nmailui/inc/nmviewerwebview.h
emailuis/nmailui/nmailui.pro
emailuis/nmailui/service_conf.xml
emailuis/nmailui/src/main.cpp
emailuis/nmailui/src/nmapplication.cpp
emailuis/nmailui/src/nmattachmentlist.cpp
emailuis/nmailui/src/nmattachmentmanager.cpp
emailuis/nmailui/src/nmattachmentpicker.cpp
emailuis/nmailui/src/nmbaseview.cpp
emailuis/nmailui/src/nmeditorcontent.cpp
emailuis/nmailui/src/nmeditorheader.cpp
emailuis/nmailui/src/nmeditortextdocument.cpp
emailuis/nmailui/src/nmeditorview.cpp
emailuis/nmailui/src/nmmailboxlistview.cpp
emailuis/nmailui/src/nmmailboxlistviewitem.cpp
emailuis/nmailui/src/nmmailboxselectiondialog.cpp
emailuis/nmailui/src/nmmailboxserviceinterface.cpp
emailuis/nmailui/src/nmmessagelistview.cpp
emailuis/nmailui/src/nmmessagelistviewitem.cpp
emailuis/nmailui/src/nmmessagesearchlistview.cpp
emailuis/nmailui/src/nmrecipientfield.cpp
emailuis/nmailui/src/nmsendserviceinterface.cpp
emailuis/nmailui/src/nmuidocumentloader.cpp
emailuis/nmailui/src/nmuieffects.cpp
emailuis/nmailui/src/nmuiextensionmanager.cpp
emailuis/nmailui/src/nmuriserviceinterface.cpp
emailuis/nmailui/src/nmutilities.cpp
emailuis/nmailui/src/nmviewerheader.cpp
emailuis/nmailui/src/nmviewerserviceinterface.cpp
emailuis/nmailui/src/nmviewerview.cpp
emailuis/nmailui/src/nmviewerviewnetmanager.cpp
emailuis/nmailui/src/nmviewerviewnetreply.cpp
emailuis/nmailui/src/nmviewerwebview.cpp
emailuis/nmailui/translations/mail.qm
emailuis/nmailui/translations/mail.ts
emailuis/nmailuiengine/bwins/nmailuiengineu.def
emailuis/nmailuiengine/eabi/nmailuiengineu.def
emailuis/nmailuiengine/inc/nmdataplugininterface.h
emailuis/nmailuiengine/inc/nmmailboxlistmodel.h
emailuis/nmailuiengine/inc/nmmessagelistmodel.h
emailuis/nmailuiengine/inc/nmuiengine.h
emailuis/nmailuiengine/inc/nmuiengineheaders.h
emailuis/nmailuiengine/nmailuiengine.pro
emailuis/nmailuiengine/src/nmaddattachmentoperation.cpp
emailuis/nmailuiengine/src/nmbaseclientplugin.cpp
emailuis/nmailuiengine/src/nmdatamanager.cpp
emailuis/nmailuiengine/src/nmdatapluginfactory.cpp
emailuis/nmailuiengine/src/nmfolderlistmodel.cpp
emailuis/nmailuiengine/src/nmfoldermetadata.cpp
emailuis/nmailuiengine/src/nmicons.cpp
emailuis/nmailuiengine/src/nmmailboxlistmodel.cpp
emailuis/nmailuiengine/src/nmmailboxlistmodelitem.cpp
emailuis/nmailuiengine/src/nmmailboxmetadata.cpp
emailuis/nmailuiengine/src/nmmessagelistmodel.cpp
emailuis/nmailuiengine/src/nmmessagelistmodelitem.cpp
emailuis/nmailuiengine/src/nmoperation.cpp
emailuis/nmailuiengine/src/nmuiengine.cpp
emailuis/nmailuiwidgets/bwins/nmailuiwidgetsu.def
emailuis/nmailuiwidgets/eabi/nmailuiwidgetsu.def
emailuis/nmailuiwidgets/inc/nmailuiwidgetsheaders.h
emailuis/nmailuiwidgets/inc/nmattachmentlistitem.h
emailuis/nmailuiwidgets/inc/nmeditortextedit.h
emailuis/nmailuiwidgets/inc/nmrecipientlineedit.h
emailuis/nmailuiwidgets/nmailuiwidgets.pro
emailuis/nmailuiwidgets/src/nmattachmentlistitem.cpp
emailuis/nmailuiwidgets/src/nmattachmentlistwidget.cpp
emailuis/nmailuiwidgets/src/nmbaseviewscrollarea.cpp
emailuis/nmailuiwidgets/src/nmeditortextedit.cpp
emailuis/nmailuiwidgets/src/nmhtmllineedit.cpp
emailuis/nmailuiwidgets/src/nmrecipientlineedit.cpp
emailuis/nmailuiwidgetsplugin/src/nmailuiwidgetsplugin.cpp
emailuis/nmframeworkadapter/inc/nmframeworkadapter.h
emailuis/nmframeworkadapter/inc/nmframeworkadapterheaders.h
emailuis/nmframeworkadapter/inc/nmfwacheckoutboxoperation.h
emailuis/nmframeworkadapter/inc/nmfwaremovedraftmessageoperation.h
emailuis/nmframeworkadapter/nmframeworkadapter.pro
emailuis/nmframeworkadapter/src/nmframeworkadapter.cpp
emailuis/nmframeworkadapter/src/nmfwaaddattachmentsoperation.cpp
emailuis/nmframeworkadapter/src/nmfwacheckoutboxoperation.cpp
emailuis/nmframeworkadapter/src/nmfwaforwardmessagecreationoperation.cpp
emailuis/nmframeworkadapter/src/nmfwamessagecreationoperation.cpp
emailuis/nmframeworkadapter/src/nmfwamessagefetchingoperation.cpp
emailuis/nmframeworkadapter/src/nmfwamessagepartfetchingoperation.cpp
emailuis/nmframeworkadapter/src/nmfwamessagepartsfetchingoperation.cpp
emailuis/nmframeworkadapter/src/nmfwamessagesendingoperation.cpp
emailuis/nmframeworkadapter/src/nmfwaremoveattachmentoperation.cpp
emailuis/nmframeworkadapter/src/nmfwaremovedraftmessageoperation.cpp
emailuis/nmframeworkadapter/src/nmfwareplymessagecreationoperation.cpp
emailuis/nmframeworkadapter/src/nmfwastoreenvelopesoperation.cpp
emailuis/nmframeworkadapter/src/nmfwastoremessageoperation.cpp
emailuis/nmframeworkadapter/src/nmmailboxsearchobserver.cpp
emailuis/nmhswidget/conf/nmhswidgetmail.docml
emailuis/nmhswidget/conf/nmhswidgettitle.docml
emailuis/nmhswidget/inc/nmhswidgetemailrow.h
emailuis/nmhswidget/inc/nmhswidgettitlerow.h
emailuis/nmhswidget/nmhswidget.pro
emailuis/nmhswidget/src/nmhswidget.cpp
emailuis/nmhswidget/src/nmhswidgetdatetimeobserver.cpp
emailuis/nmhswidget/src/nmhswidgetdatetimeobserver_p.cpp
emailuis/nmhswidget/src/nmhswidgetemailengine.cpp
emailuis/nmhswidget/src/nmhswidgetemailrow.cpp
emailuis/nmhswidget/src/nmhswidgetplugin.cpp
emailuis/nmhswidget/src/nmhswidgettitlerow.cpp
emailuis/nmindicatorplugin/inc/nmindicator.h
emailuis/nmindicatorplugin/inc/nmindicatorplugin.h
emailuis/nmindicatorplugin/inc/nmsendingindicator.h
emailuis/nmindicatorplugin/inc/nmsyncindicator.h
emailuis/nmindicatorplugin/inc/nmunreadindicator.h
emailuis/nmindicatorplugin/nmindicatorplugin.pro
emailuis/nmindicatorplugin/src/nmindicator.cpp
emailuis/nmindicatorplugin/src/nmindicatorplugin.cpp
emailuis/nmindicatorplugin/src/nmsendingindicator.cpp
emailuis/nmindicatorplugin/src/nmsyncindicator.cpp
emailuis/nmindicatorplugin/src/nmunreadindicator.cpp
emailuis/nmsettingui/inc/nmsettingscommon.h
emailuis/nmsettingui/src/nmmailboxentryitem.cpp
emailuis/nmsettingui/src/nmmailboxselectionview.cpp
emailuis/nmsettingui/src/nmmailboxsettingsmanager.cpp
emailuis/nmsettingui/src/nmmailboxsettingview.cpp
emailuis/nmsettingui/src/nmsettingsformcustomitems.cpp
emailuis/nmsettingui/src/nmsettingsviewfactory.cpp
emailuis/nmsettingui/src/nmsettingsviewlauncher.cpp
inc/cmailboxstateext.h
ipsservices/ipssosaoplugin/inc/IpsSosAOImapPopLogic.h
ipsservices/ipssosaoplugin/src/IpsSosAOImapPopLogic.cpp
ipsservices/ipssosaoplugin/src/IpsSosAOMboxLogic.cpp
ipsservices/ipssosaoplugin/src/IpsSosAOSettingsHandler.cpp
ipsservices/ipssosplugin/inc/ipsplgdeleteoperation.h
ipsservices/ipssosplugin/inc/ipsplgheaders.h
ipsservices/ipssosplugin/inc/ipsplgonlineoperation.h
ipsservices/ipssosplugin/inc/ipsplgoperationwait.h
ipsservices/ipssosplugin/inc/ipsplgpop3connectop.h
ipsservices/ipssosplugin/inc/ipsplgsmtpservice.h
ipsservices/ipssosplugin/inc/ipsplgsosbaseplugin.h
ipsservices/ipssosplugin/ipssosplugin.pro
ipsservices/ipssosplugin/src/ipsplgdeleteoperation.cpp
ipsservices/ipssosplugin/src/ipsplgmsgmapper.cpp
ipsservices/ipssosplugin/src/ipsplgonlineoperation.cpp
ipsservices/ipssosplugin/src/ipsplgoperationwait.cpp
ipsservices/ipssosplugin/src/ipsplgpop3connectop.cpp
ipsservices/ipssosplugin/src/ipsplgpop3fetchoperation.cpp
ipsservices/ipssosplugin/src/ipsplgsmtpoperation.cpp
ipsservices/ipssosplugin/src/ipsplgsmtpservice.cpp
ipsservices/ipssosplugin/src/ipsplgsosbaseplugin.cpp
ipsservices/nmipssettings/inc/nmipsimap4settingsmanager.h
ipsservices/nmipssettings/inc/nmipspop3settingsmanager.h
ipsservices/nmipssettings/inc/nmipssettingitems.h
ipsservices/nmipssettings/inc/nmipssettingshelper.h
ipsservices/nmipssettings/inc/nmipssettingsmanagerbase.h
ipsservices/nmipssettings/inc/nmipssettingsplugin.h
ipsservices/nmipssettings/nmipssettings.pro
ipsservices/nmipssettings/src/nmipsimap4settingsmanager.cpp
ipsservices/nmipssettings/src/nmipspop3settingsmanager.cpp
ipsservices/nmipssettings/src/nmipssettingshelper.cpp
ipsservices/nmipssettings/src/nmipssettingsmanagerbase.cpp
ipsservices/nmipssettings/src/nmipssettingsmultiselectionitem.cpp
ipsservices/nmipssettings/src/nmipssettingsplugin.cpp
ipsservices/rom/FreestyleIpsServices.iby
--- a/emailservices/emailcommon/bwins/fsfwcommonlibu.def	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/bwins/fsfwcommonlibu.def	Fri May 28 13:56:43 2010 +0300
@@ -257,4 +257,5 @@
 	??_ECEmailExtension@@UAE@I@Z @ 256 NONAME ; CEmailExtension::~CEmailExtension(unsigned int)
 	?GetCCRecipients@CFSMailMessageBase@@QAE?AV?$RPointerArray@VCFSMailAddress@@@@XZ @ 257 NONAME ; class RPointerArray<class CFSMailAddress> CFSMailMessageBase::GetCCRecipients(void)
 	?NewL@CFSMailMessagePart@@SAPAV1@VTFSMailMsgId@@0@Z @ 258 NONAME ; class CFSMailMessagePart * CFSMailMessagePart::NewL(class TFSMailMsgId, class TFSMailMsgId)
+	?RemoveMessageL@CFSMailFolder@@QAEHVTFSMailMsgId@@AAVMFSMailRequestObserver@@@Z @ 259 NONAME ; int CFSMailFolder::RemoveMessageL(class TFSMailMsgId, class MFSMailRequestObserver &)
 
--- a/emailservices/emailcommon/eabi/fsfwcommonlibu.def	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/eabi/fsfwcommonlibu.def	Fri May 28 13:56:43 2010 +0300
@@ -292,4 +292,5 @@
 	_ZThn4_N15CFSMailIterator9PreviousLERK7TDesC16jR13RPointerArrayI14CFSMailMessageE @ 291 NONAME
 	_ZThn4_N15CFSMailIteratorD0Ev @ 292 NONAME
 	_ZThn4_N15CFSMailIteratorD1Ev @ 293 NONAME
+	_ZN13CFSMailFolder14RemoveMessageLE12TFSMailMsgIdR22MFSMailRequestObserver @ 294 NONAME
 
--- a/emailservices/emailcommon/inc/CFSMailBox.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/inc/CFSMailBox.h	Fri May 28 13:56:43 2010 +0300
@@ -158,7 +158,7 @@
      *
      * @param aOperationObserver Observer for the operation 
      * 
-     * @return id of the request, KErrNotSupported if the protocol plugin this
+     * @return id of the request, KErrFSMailPluginNotSupported if the protocol plugin this
      * instance is attached to does not support the async method.
      */
      IMPORT_C TInt CreateMessageToSendL( MFSMailRequestObserver& aOperationObserver );
--- a/emailservices/emailcommon/inc/CFSMailFolder.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/inc/CFSMailFolder.h	Fri May 28 13:56:43 2010 +0300
@@ -76,6 +76,20 @@
      */
      IMPORT_C void RemoveMessageL( const TFSMailMsgId aMessageId );
 
+     // <qmail>
+     /**
+      * removes given message from folder
+      *
+      * @param aMessageId id of message to be removed
+      * @param aObserver Observer for the operation completion
+      * 
+      * @return id of the request, KErrFSMailPluginNotSupported if the protocol plugin this
+      * instance is attached to does not support the async method.
+      */
+     IMPORT_C TInt RemoveMessageL( const TFSMailMsgId aMessageId,
+                                   MFSMailRequestObserver& aObserver );
+     // </qmail>
+     
     /**
      * lists subfolders contained by this folder
      *
--- a/emailservices/emailcommon/inc/cmailboxstateext.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/inc/cmailboxstateext.h	Fri May 28 13:56:43 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2009 - 2010 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"
@@ -11,7 +11,8 @@
 *
 * Contributors:
 *
-* Description:  Message extension interface
+* Description:  Mailbox state extension for notifying email protocol plugins
+*               about application state changes.
 *
 */
 
@@ -30,16 +31,21 @@
 class MEmailMailboxState
 {
 public:
+// <qmail>
     /**
     * Returns currently active folder and related mailbox that
     * is currently being used.
-    * @param aActiveMailboxId id of currently active mailbox 
+    * @param aActiveMailboxId id of currently active mailbox
+    * 
     * @param aActiveFolderId id of currently active mail folder
+    *        If aActiveFolderId.IsNullId() returns true there is no active
+    *        folder. This happens if e.g. email applications is closed. 
     * @return Symbian OS error code
     */
     virtual TInt GetActiveFolderId( 
         TFSMailMsgId& aActiveMailboxId,
         TFSMailMsgId& aActiveFolderId ) const = 0;
+// </qmail>    
 };
 
 /**
@@ -50,10 +56,21 @@
 public:
     
     /**
-     * Sets data provider interface
-     * @param aDataProvider data provider
+     * Sets data provider interface.
+     * @param aDataProvider data provider.
      */
     virtual void SetStateDataProvider( MEmailMailboxState* aDataProvider ) = 0;
+// <qmail>    
+    /**
+    * Notification that folder has changed in email application.
+    * @param aActiveMailboxId id of the mailbox container the folder
+    * @param aActiveFolderId currently active folder id or null id if
+    *        there's currently no active folder (e.g. application is closed)
+    */
+    virtual void NotifyActiveFolderChanged(
+        const TFSMailMsgId& aActiveMailboxId,
+        const TFSMailMsgId& aActiveFolderId) = 0;
+// </qmail>
 
 protected:    
     inline CMailboxStateExtension();
@@ -66,5 +83,5 @@
          CEmailExtension( KEmailMailboxStateExtensionUid )
     {
     }
-         
+
 #endif // CMAILBOXSTATEEXT_H
--- a/emailservices/emailcommon/src/CFSMailAddress.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/src/CFSMailAddress.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,10 +15,10 @@
 *
 */
 
+#include "emailtrace.h"
 
 //<cmail>
 #include <nmcommonheaders.h>
-#include "emailtrace.h"
 #include "CFSMailAddress.h"
 //</cmail>
 
@@ -32,7 +32,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailAddress* CFSMailAddress::NewLC()
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     CFSMailAddress* adr = new (ELeave) CFSMailAddress();
     CleanupStack::PushL(adr);
     adr->ConstructL();
@@ -44,7 +45,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailAddress* CFSMailAddress::NewL()
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     CFSMailAddress* adr =  CFSMailAddress::NewLC();
     CleanupStack::Pop(adr);
     return adr;
@@ -56,7 +58,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailAddress* CFSMailAddress::NewL( const NmAddress& aNmAddress )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     CFSMailAddress* adr = new (ELeave) CFSMailAddress();
     CleanupStack::PushL(adr);
     adr->ConstructL(aNmAddress);
@@ -70,7 +73,8 @@
 // -----------------------------------------------------------------------------
 void CFSMailAddress::ConstructL()
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     // Construction of shared data object
     iNmPrivateAddress = new NmAddressPrivate();
@@ -83,7 +87,8 @@
 // --------------------------------_--------------------------------------------
 void CFSMailAddress::ConstructL( const NmAddress& aNmAddress )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     // shared data object
     iNmPrivateAddress = aNmAddress.d;
 	}
@@ -94,7 +99,8 @@
 // -----------------------------------------------------------------------------
 CFSMailAddress::CFSMailAddress()
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
 // Unnecessary members initialization removed: iEmailAddress, iDisplayName
 // </qmail>
@@ -105,7 +111,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailAddress::~CFSMailAddress()
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
 // Unnecessary members destruction removed: iEmailAddress, iDisplayName
 // </qmail>
@@ -116,7 +123,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TDesC& CFSMailAddress::GetEmailAddress() const
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iEmailAddressPtr.Set(reinterpret_cast<const TUint16*> (iNmPrivateAddress->mAddress.utf16()),
         iNmPrivateAddress->mAddress.length());
@@ -129,7 +137,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailAddress::SetEmailAddress(const TDesC& aAddress)
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     QString qtEmailAddress = QString::fromUtf16(aAddress.Ptr(), aAddress.Length());
     iNmPrivateAddress->mAddress = qtEmailAddress;
@@ -141,7 +150,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TDesC& CFSMailAddress::GetDisplayName() const
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iDisplayNamePtr.Set(reinterpret_cast<const TUint16*> (iNmPrivateAddress->mDisplayName.utf16()),
         iNmPrivateAddress->mDisplayName.length());
@@ -154,7 +164,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailAddress::SetDisplayName(const TDesC& aDisplayName)
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     QString qtDisplayName = QString::fromUtf16(aDisplayName.Ptr(), aDisplayName.Length());
     iNmPrivateAddress->mDisplayName = qtDisplayName;
@@ -167,7 +178,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C NmAddress CFSMailAddress::GetNmAddress()
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     NmAddress nmAddress(iNmPrivateAddress);
     return nmAddress;
 	}
--- a/emailservices/emailcommon/src/CFSMailBox.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/src/CFSMailBox.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,11 +15,12 @@
 *
 */
 
+#include "emailtrace.h"
+
 // <qmail>
 #include <nmcommonheaders.h>
 // <//qmail>
 
-#include "emailtrace.h"
 #include <bamdesca.h>
 #include "CFSMailPlugin.h"
 #include "cmrcalendarinfoimpl.h"
@@ -39,11 +40,12 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailBox* CFSMailBox::NewLC(TFSMailMsgId aMailBoxId)
 {
-    FUNC_LOG;
-  CFSMailBox* api = new (ELeave) CFSMailBox();
-  CleanupStack:: PushL(api);
-  api->ConstructL(aMailBoxId);
-  return api;
+    NM_FUNCTION;
+    
+    CFSMailBox* api = new (ELeave) CFSMailBox();
+    CleanupStack:: PushL(api);
+    api->ConstructL(aMailBoxId);
+    return api;
 } 
 
 // -----------------------------------------------------------------------------
@@ -51,10 +53,11 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailBox* CFSMailBox::NewL(TFSMailMsgId aMailBoxId)
 {
-    FUNC_LOG;
-  CFSMailBox* api =  CFSMailBox::NewLC(aMailBoxId);
-  CleanupStack:: Pop(api);
-  return api;
+    NM_FUNCTION;
+    
+    CFSMailBox* api =  CFSMailBox::NewLC(aMailBoxId);
+    CleanupStack:: Pop(api);
+    return api;
 }
 
 // -----------------------------------------------------------------------------
@@ -62,7 +65,8 @@
 // -----------------------------------------------------------------------------
 CFSMailBox::CFSMailBox()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     // get requesthandler pointer
     iRequestHandler = static_cast<CFSMailRequestHandler*>(Dll::Tls());
 }
@@ -72,7 +76,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailBox::~CFSMailBox()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     iFolders.ResetAndDestroy();
 }
 
@@ -81,7 +86,8 @@
 // -----------------------------------------------------------------------------
 void CFSMailBox::ConstructL(TFSMailMsgId aMailBoxId)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     CFSMailBoxBase::ConstructL(aMailBoxId);
 // </qmail>
@@ -92,7 +98,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailBox::GoOnlineL()
     {
-    FUNC_LOG;
+    NM_FUNCTION;
     
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
         {
@@ -105,7 +111,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailBox::GoOfflineL()
     {
-    FUNC_LOG;
+    NM_FUNCTION;
     
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
         {
@@ -119,7 +125,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailBox::CancelSyncL()
     {
-    FUNC_LOG;
+    NM_FUNCTION;
     
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
         {
@@ -132,7 +138,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TFSProgress CFSMailBox::GetLastSyncStatusL()
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     TFSProgress progress;
     progress.iError = EFalse;
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
@@ -148,8 +155,8 @@
 EXPORT_C TInt CFSMailBox::RefreshNowL(
     MFSMailRequestObserver& aOperationObserver )
     {
-    FUNC_LOG;
-
+    NM_FUNCTION;
+    
     TFSPendingRequest request;
     request.iRequestId = 0;
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
@@ -166,16 +173,15 @@
             }
         }
     return request.iRequestId;
-
-   }
+    }
 
 // -----------------------------------------------------------------------------
 // CFSMailBox::RefreshNowL
 // -----------------------------------------------------------------------------
 EXPORT_C TInt CFSMailBox::RefreshNowL( )
     {
-    FUNC_LOG;
-
+    NM_FUNCTION;
+    
     TFSPendingRequest request;
     request.iRequestId = 0;
     MFSMailRequestObserver* observer = NULL;
@@ -193,16 +199,15 @@
             }
         }
     return request.iRequestId;
-
-   }
+    }
 
 // -----------------------------------------------------------------------------
 // CFSMailBox::CreateMessageToSend
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailMessage* CFSMailBox::CreateMessageToSend( )
 {
-    FUNC_LOG;
-
+    NM_FUNCTION;
+    
     CFSMailMessage* message = NULL;
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
         {
@@ -222,6 +227,8 @@
 EXPORT_C TInt CFSMailBox::CreateMessageToSendL(
         MFSMailRequestObserver& aOperationObserver )
     {
+    NM_FUNCTION;
+    
     TFSPendingRequest request;
     
     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() );
@@ -258,6 +265,8 @@
     RPointerArray<CFSMailMessage> &messages,
     MFSMailRequestObserver& aOperationObserver)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(aMailboxId);
     TFSPendingRequest request;
         
@@ -298,7 +307,8 @@
 EXPORT_C CFSMailMessage* CFSMailBox::CreateForwardMessage(  TFSMailMsgId aOriginalMessageId,
                                                             const TDesC& aHeaderDescriptor )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     CFSMailMessage* message = NULL;
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
         {
@@ -321,6 +331,8 @@
                         MFSMailRequestObserver& aOperationObserver,
                         const TDesC& aHeaderDescriptor )
     {
+    NM_FUNCTION;
+    
     TFSPendingRequest request;
     
     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() );
@@ -358,7 +370,8 @@
                                                          TBool aReplyToAll,
                                                          const TDesC& aHeaderDescriptor )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     CFSMailMessage* message = NULL;
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
         {
@@ -383,6 +396,8 @@
                                       MFSMailRequestObserver& aOperationObserver,
                                       const TDesC& aHeaderDescriptor )
 {
+    NM_FUNCTION;
+    
     TFSPendingRequest request;
     
     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() );
@@ -418,8 +433,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TFSMailMsgId CFSMailBox::GetStandardFolderId(TFSFolderType aFolderType)
 {
-    FUNC_LOG;
-
+    NM_FUNCTION;
+    
     TFSMailMsgId folderId;
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
         {
@@ -437,7 +452,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailBox::SendMessageL( CFSMailMessage& aMessage )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
         {
         // <qmail> Not activated yet.
@@ -457,7 +473,7 @@
         CFSMailMessage& aMessage,
         MFSMailRequestObserver& aOperationObserver )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
 
     TFSPendingRequest request;
 
@@ -501,8 +517,8 @@
 EXPORT_C void CFSMailBox::ListFolders(  TFSMailMsgId aFolder,
                                         RPointerArray<CFSMailFolder>& aFolderList)
 {
-    FUNC_LOG;
-
+    NM_FUNCTION;
+    
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
     {
         TRAPD(err, plugin->ListFoldersL(GetId(),aFolder,aFolderList));
@@ -518,6 +534,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C RPointerArray<CFSMailFolder>& CFSMailBox::ListFolders( )
 {   
+    NM_FUNCTION;
+    
     iFolders.ResetAndDestroy();
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
     {
@@ -536,7 +554,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TDesC& CFSMailBox::GetBrandingIdL( )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     return BrandingId();
 }
 
@@ -547,7 +566,8 @@
                                          const TFSMailMsgId aSourceFolderId, 
                                          const TFSMailMsgId aDestinationFolderId )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
         {
         plugin->MoveMessagesL(GetId(), aMessageIds, aSourceFolderId, aDestinationFolderId);
@@ -562,7 +582,8 @@
                                          const TFSMailMsgId aSourceFolderId, 
                                          const TFSMailMsgId aDestinationFolderId )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     TFSPendingRequest request;
     if( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() ) )
         {
@@ -588,7 +609,8 @@
                                          const TFSMailMsgId aSourceFolderId, 
                                          const TFSMailMsgId aDestinationFolderId )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
         {
         plugin->CopyMessagesL(GetId(), aMessageIds, aNewMessages,
@@ -604,8 +626,7 @@
                                    MFSMailBoxSearchObserver&   /*aSearchObserver*/,
                                    const RArray<TFSMailMsgId>  /*aFolderIds */ )
     {
-    FUNC_LOG;
-
+    NM_FUNCTION;
     }
     
 // -----------------------------------------------------------------------------
@@ -615,7 +636,8 @@
                                    const TFSMailSortCriteria& aSortCriteria,
                                    MFSMailBoxSearchObserver& aSearchObserver )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
         {
 
@@ -649,7 +671,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailBox::CancelSearch()
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
         {
         plugin->CancelSearch( GetId() );
@@ -661,7 +684,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailBox::ClearSearchResultCache()
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
         {
         plugin->ClearSearchResultCache( GetId() );
@@ -673,7 +697,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C MDesCArray* CFSMailBox::ListMrusL() const
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     MDesCArray* mruList(0);
     if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId() ) )
         {
@@ -688,7 +713,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TSSMailSyncState CFSMailBox::CurrentSyncState() const
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     TSSMailSyncState syncState(Idle);
     if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() ) )
         {
@@ -702,7 +728,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TBool CFSMailBox::HasCapability( const TFSMailBoxCapabilities aCapability ) const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     TBool capability = EFalse;
     if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() ) )
         {
@@ -720,7 +747,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TFSMailBoxStatus CFSMailBox::GetMailBoxStatus()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     TFSMailBoxStatus status(EFSMailBoxOffline);
     if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId() ) )
     {
@@ -734,7 +762,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailBox::SetCredentialsL( const TDesC& aUsername, const TDesC& aPassword )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId() ) )
         {
         plugin->SetCredentialsL( GetId(), aUsername, aPassword );
@@ -746,7 +775,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailBox::RemoveDownLoadedAttachmentsL()
     {
-    FUNC_LOG;
+    NM_FUNCTION;
     
     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() );
     if ( plugin )
@@ -767,7 +796,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TInt CFSMailBox::GetConnectionId( TUint32& aConnectionId )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     TInt rcode = KErrNotSupported;
     if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() ) )
         {
@@ -781,7 +811,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TInt CFSMailBox::IsConnectionAllowedWhenRoaming( TBool& aConnectionAllowed )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     TInt rcode = KErrNotSupported;
     if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() ) )
         {
@@ -795,7 +826,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailMessage* CFSMailBox::CreateMessageFromFileL( const RFile& aFile )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     CFSMailMessage* message = NULL;
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetId()))
     {
@@ -812,7 +844,7 @@
     const RPointerArray<CFSMailAddress>& aCCRecipients,
     const RPointerArray<CFSMailAddress>& aBCCRecipients ) const
     {
-    FUNC_LOG;
+    NM_FUNCTION;
     
     // First lets make a copy of the current mru list
     // whose content we can later alter as we wish
@@ -867,7 +899,8 @@
 // -----------------------------------------------------------------------------    
 CDesCArraySeg* CFSMailBox::CopyArrayL( MDesCArray& aArrayToBeCopied ) const
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     CDesCArraySeg* newArray = new (ELeave) CDesCArraySeg( 10 );
     CleanupStack::PushL( newArray );
     
@@ -890,7 +923,8 @@
     CDesCArraySeg& aMruList,
     const RPointerArray<CFSMailAddress>& aNewRecentlyUsedOnes ) const
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     TUint newCount( aNewRecentlyUsedOnes.Count() );
     TUint newIndexer( 0 );
     
@@ -931,7 +965,8 @@
                                          TDesC& searchedAddress,
                                          TInt& aPos ) const
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     // CDesCArray::Find() is not used here because there is
     // possibility that we have to go through the whole array
     // and return the index for one specific match. Find() returns
@@ -971,7 +1006,8 @@
 void CFSMailBox::AddAndRemoveExcessMruL( CDesCArraySeg& aMruList,
                                          CFSMailAddress& aToBeAdded ) const
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     if ( aMruList.Count() == KMaxMruEntries )
         {
         // Remove the oldest entry pair from the beginning
@@ -988,7 +1024,8 @@
                                       TInt aPosition,
                                       CFSMailAddress& aMostRecent ) const
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     // Position of the address is given so the possible display name is
     // in the previous slot. Delete both.
     aMruList.Delete( aPosition - 1, 2 );
@@ -1002,7 +1039,8 @@
 void CFSMailBox::AppendMruItemL( CDesCArraySeg& aMruList,
                                  CFSMailAddress& aToBeAppended ) const
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     // In the array, display name is always the first and then comes
     // the actual address.
     
@@ -1028,7 +1066,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailBox::ReleaseExtension( CEmailExtension* aExtension )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     // no specialized behaviour, call base class
     CExtendableEmail::ReleaseExtension( aExtension );
     }
@@ -1038,11 +1077,14 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CEmailExtension* CFSMailBox::ExtensionL( const TUid& aInterfaceUid )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     CEmailExtension* extension = NULL;
+// <qmail>
+    extension = CExtendableEmail::ExtensionL( aInterfaceUid );    
     if ( aInterfaceUid == KMailboxExtMrCalInfo )
         {
-        extension = CExtendableEmail::ExtensionL( aInterfaceUid );
+// </qmail>        
         if ( extension == NULL )
             {
             extension = new ( ELeave ) CMRCalendarInfoImpl();
--- a/emailservices/emailcommon/src/CFSMailBoxBase.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/src/CFSMailBoxBase.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,11 +15,12 @@
 *
 */
 
+#include "emailtrace.h"
+
 // <qmail>
 #include <nmcommonheaders.h>
 // </qmail>
 
-#include "emailtrace.h"
 #include "CFSMailBoxBase.h"
 // <qmail>
 #include "CFSMailAddress.h"
@@ -38,11 +39,12 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailBoxBase* CFSMailBoxBase::NewLC(TFSMailMsgId aMailBoxId)
 {
-    FUNC_LOG;
-  CFSMailBoxBase* api = new (ELeave) CFSMailBoxBase();
-  CleanupStack:: PushL(api);
-  api->ConstructL(aMailBoxId);
-  return api;
+    NM_FUNCTION;
+    
+    CFSMailBoxBase* api = new (ELeave) CFSMailBoxBase();
+    CleanupStack:: PushL(api);
+    api->ConstructL(aMailBoxId);
+    return api;
 } 
 
 // -----------------------------------------------------------------------------
@@ -50,10 +52,11 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailBoxBase* CFSMailBoxBase::NewL(TFSMailMsgId aMailBoxId)
 {
-    FUNC_LOG;
-  CFSMailBoxBase* api =  CFSMailBoxBase::NewLC(aMailBoxId);
-  CleanupStack:: Pop(api);
-  return api;
+    NM_FUNCTION;
+    
+    CFSMailBoxBase* api =  CFSMailBoxBase::NewLC(aMailBoxId);
+    CleanupStack:: Pop(api);
+    return api;
 }
 
 // -----------------------------------------------------------------------------
@@ -61,8 +64,7 @@
 // -----------------------------------------------------------------------------
 CFSMailBoxBase::CFSMailBoxBase() : CExtendableEmail()
 {
-    FUNC_LOG;
-	
+    NM_FUNCTION;
 }
 
 // -----------------------------------------------------------------------------
@@ -70,7 +72,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailBoxBase::~CFSMailBoxBase()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     if( iMailBoxName )
         {
   		delete iMailBoxName;
@@ -101,7 +104,8 @@
 // -----------------------------------------------------------------------------
 void CFSMailBoxBase::ConstructL(const TFSMailMsgId aMailBoxId)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail> Removed iMailboxId </qmail>
     // prepare null empty descriptor
     iMailBoxName = HBufC::NewL(1);
@@ -132,7 +136,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TFSMailMsgId CFSMailBoxBase::GetId() const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     return TFSMailMsgId(iNmPrivateMailbox->mId);
 // </qmail>
@@ -143,7 +148,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TDesC& CFSMailBoxBase::GetName()const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iTextPtr.Set( 
         reinterpret_cast<const TUint16*> (iNmPrivateMailbox->mName.utf16()),
@@ -157,7 +163,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailBoxBase::SetName( const TDesC& aMailBoxName )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     QString qtName = QString::fromUtf16(aMailBoxName.Ptr(), aMailBoxName.Length());
     // Fix from Cmail 9.2 rewritten with QString methods
@@ -174,7 +181,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TFSMailBoxStatus CFSMailBoxBase::GetStatus( ) const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	return EFSMailBoxOffline;
 }
 
@@ -183,8 +191,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailBoxBase::SetStatus( const TFSMailBoxStatus /*aStatus*/ )
 {
-    FUNC_LOG;
-	
+    NM_FUNCTION;
 }
 
 // -----------------------------------------------------------------------------
@@ -192,7 +199,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailBoxBase::GetRCLInfo(TUid& aProtocolUid, TUint& aAccountUid)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	aProtocolUid = iProtocolUid;
 	aAccountUid = iAccountUid;
 }
@@ -202,7 +210,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailBoxBase::SetRCLInfo(const TUid aProtocolUid, const TUint aAccountUid)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	iProtocolUid = aProtocolUid;
 	iAccountUid = aAccountUid;
 }
@@ -212,7 +221,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C const TUid CFSMailBoxBase::GetSettingsUid()
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	return iSettingsUid;
 	}
 
@@ -221,7 +231,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailBoxBase::SetSettingsUid(const TUid aUid)
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 		iSettingsUid = aUid;
 	}
 
@@ -230,7 +241,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C MMRInfoProcessor& CFSMailBoxBase::MRInfoProcessorL()
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	return *iMRInfoProcessor;
 	}
 
@@ -239,7 +251,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TBool CFSMailBoxBase::IsMRInfoProcessorSet()
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	if(iMRInfoProcessor)
 		{
 		return ETrue;
@@ -255,8 +268,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailBoxBase::SetMRInfoProcessorL(MMRInfoProcessor* aMRInfoProcessor)
 	{
-    FUNC_LOG;
-
+    NM_FUNCTION;
+    
 	if(iMRInfoProcessor)
 	{
 		delete iMRInfoProcessor;
@@ -269,7 +282,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailAddress& CFSMailBoxBase::OwnMailAddress( )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	return *iOwnMailAddress;
 }
 
@@ -278,7 +292,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailBoxBase::SetOwnMailAddressL( CFSMailAddress* aOwnMailAddress)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	if(iOwnMailAddress)
 		{
 		delete iOwnMailAddress;
@@ -309,7 +324,8 @@
 // -----------------------------------------------------------------------------
 TDesC& CFSMailBoxBase::BrandingId( )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     return *iBrId;
 }
 
@@ -321,6 +337,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C NmMailbox* CFSMailBoxBase::GetNmMailbox()
 {
+    NM_FUNCTION;
+    
     NmMailbox* nmmailbox = new NmMailbox(iNmPrivateMailbox);
     return nmmailbox;
 }
--- a/emailservices/emailcommon/src/CFSMailFolder.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/src/CFSMailFolder.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,12 +15,13 @@
 *
 */
 
+#include "emailtrace.h"
+
 // <qmail>
 #include <nmcommonheaders.h>
 // </qmail>
 
 //<cmail>
-#include "emailtrace.h"
 #include "CFSMailFolder.h"
 #include "CFSMailPlugin.h"
 //</cmail>
@@ -34,11 +35,12 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailFolder* CFSMailFolder::NewLC( TFSMailMsgId aFolderId )
 {
-    FUNC_LOG;
-  CFSMailFolder* api = new (ELeave) CFSMailFolder();
-  CleanupStack:: PushL(api);
-  api->ConstructL( aFolderId );
-  return api;
+    NM_FUNCTION;
+    
+    CFSMailFolder* api = new (ELeave) CFSMailFolder();
+    CleanupStack:: PushL(api);
+    api->ConstructL( aFolderId );
+    return api;
 } 
 
 // -----------------------------------------------------------------------------
@@ -46,10 +48,11 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailFolder* CFSMailFolder::NewL( TFSMailMsgId aFolderId )
 {
-    FUNC_LOG;
-  CFSMailFolder* api =  CFSMailFolder::NewLC( aFolderId );
-  CleanupStack:: Pop(api);
-  return api;
+    NM_FUNCTION;
+    
+    CFSMailFolder* api =  CFSMailFolder::NewLC( aFolderId );
+    CleanupStack:: Pop(api);
+    return api;
 }
 
 // -----------------------------------------------------------------------------
@@ -57,8 +60,7 @@
 // -----------------------------------------------------------------------------
 CFSMailFolder::CFSMailFolder()
 {
-    FUNC_LOG;
-
+    NM_FUNCTION;
 }
 
 // -----------------------------------------------------------------------------
@@ -66,7 +68,8 @@
 // -----------------------------------------------------------------------------
 void CFSMailFolder::ConstructL( TFSMailMsgId aFolderId )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     CFSMailFolderBase::ConstructL( aFolderId );
 // </qmail>
@@ -80,8 +83,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailFolder::~CFSMailFolder()
 {
-    FUNC_LOG;
-
+    NM_FUNCTION;
 }
 
 // -----------------------------------------------------------------------------
@@ -90,8 +92,8 @@
 EXPORT_C MFSMailIterator* CFSMailFolder::ListMessagesL( const TFSMailDetails aDetails,
         						const RArray<TFSMailSortCriteria>& aSorting)
 {
-    FUNC_LOG;
-
+    NM_FUNCTION;
+    
 	CFSMailIterator* iterator = NULL;
 	if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId()))
 		{
@@ -112,7 +114,8 @@
      							 				TFSMailDetails aDetails,
      							 				MFSMailRequestObserver& aObserver )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	// init asynchronous request
 	CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId());
     TFSPendingRequest request = 
@@ -150,7 +153,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailFolder::GetSubFoldersL(RPointerArray<CFSMailFolder>& aSubFolders)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId()))
 		{
 		TRAPD(err,plugin->ListFoldersL( GetMailBoxId(), GetFolderId(), aSubFolders));
@@ -166,7 +170,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailFolder::RemoveMessageL(TFSMailMsgId aMessage)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId()))
 		{
 		RArray<TFSMailMsgId> messages;
@@ -177,13 +182,60 @@
 		}
 }
 
+// <qmail>
+// -----------------------------------------------------------------------------
+// CFSMailFolder::RemoveMessageL
+// -----------------------------------------------------------------------------
+EXPORT_C TInt CFSMailFolder::RemoveMessageL(TFSMailMsgId aMessage,
+                                            MFSMailRequestObserver& aObserver)
+{
+    NM_FUNCTION;
+
+    // init asynchronous request
+    CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId());
+    TFSPendingRequest request = 
+        iRequestHandler->InitAsyncRequestL( GetFolderId().PluginId(), aObserver );
+
+    TInt err = KErrNone;
+    
+    if (plugin)
+        {
+        MFSMailRequestObserver* observer = request.iObserver;
+        
+        RArray<TFSMailMsgId> messages;
+        messages.Reset();
+        messages.Append(aMessage);
+        
+        TRAP(err,plugin->DeleteMessagesByUidL(
+            GetMailBoxId(),
+            GetFolderId(),
+            messages,
+            *observer,
+            request.iRequestId));
+        
+        messages.Close();
+        }
+    else 
+        {
+        err = KErrNotFound;        
+        }
+    
+    if(err != KErrNone)
+        {
+        iRequestHandler->CompleteRequest(request.iRequestId);
+        User::Leave(err);
+        }
+    return request.iRequestId;
+}
+// </qmail>
+
 // -----------------------------------------------------------------------------
 // CFSMailFolder::SupportsCopyFromL
 // -----------------------------------------------------------------------------
 EXPORT_C TBool CFSMailFolder::SupportsCopyFromL( TFSFolderType aFolderType )
 	{
-    FUNC_LOG;
-	
+    NM_FUNCTION;
+    
 	if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId()))
 		{
 		TFSMailBoxStatus onlineStatus = plugin->GetMailBoxStatus(GetMailBoxId());
@@ -216,8 +268,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TBool CFSMailFolder::SupportsMoveFromL( TFSFolderType aFolderType )
 	{
-    FUNC_LOG;
-
+    NM_FUNCTION;
+    
 	if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId()))
 		{
 		TFSMailBoxStatus onlineStatus = plugin->GetMailBoxStatus(GetMailBoxId());
@@ -250,7 +302,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailFolder::RemoveDownLoadedAttachmentsL()
     {
-    FUNC_LOG;
+    NM_FUNCTION;
     
     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetFolderId());
     if(plugin != NULL)
@@ -291,7 +343,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailFolder::ReleaseExtension( CEmailExtension* aExtension )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     // no specialized behaviour, call base class
     CExtendableEmail::ReleaseExtension( aExtension );
     }
@@ -301,7 +354,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CEmailExtension* CFSMailFolder::ExtensionL( const TUid& aInterfaceUid )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     return CExtendableEmail::ExtensionL( aInterfaceUid );
     }
 
--- a/emailservices/emailcommon/src/CFSMailFolderBase.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/src/CFSMailFolderBase.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,12 +15,12 @@
 *
 */
 
+#include "emailtrace.h"
+
 // <qmail>
 #include <nmcommonheaders.h>
 // </qmail>
 
-#include "emailtrace.h"
-
 // <qmail>
 #include "CFSMailFolderBase.h"
 #include "nmfolder.h"
@@ -32,7 +32,8 @@
 // -----------------------------------------------------------------------------
 CFSMailFolderBase::CFSMailFolderBase()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail> unnecessary iFolderName initialization removed </qmail>
 	iMoveOfflineBlocked.Reset();
 	iMoveOnlineBlocked.Reset();
@@ -45,7 +46,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailFolderBase::~CFSMailFolderBase()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail> unnecessary iFolderName destruction removed </qmail>
 	iMoveOfflineBlocked.Reset();
 	iMoveOnlineBlocked.Reset();
@@ -58,7 +60,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailFolderBase::ConstructL( TFSMailMsgId aFolderId )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iNmPrivateFolder = new NmFolderPrivate();
     iNmPrivateFolder->mFolderId = aFolderId.GetNmId();
@@ -70,11 +73,12 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailFolderBase* CFSMailFolderBase::NewLC( TFSMailMsgId aFolderId )
 {
-    FUNC_LOG;
-  CFSMailFolderBase* folder = new (ELeave) CFSMailFolderBase();
-  CleanupStack:: PushL(folder);
-  folder->ConstructL(aFolderId);
-  return folder;
+    NM_FUNCTION;
+    
+    CFSMailFolderBase* folder = new (ELeave) CFSMailFolderBase();
+    CleanupStack:: PushL(folder);
+    folder->ConstructL(aFolderId);
+    return folder;
 } 
 
 // -----------------------------------------------------------------------------
@@ -82,10 +86,11 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailFolderBase* CFSMailFolderBase::NewL(const TFSMailMsgId aFolderId)
 {
-    FUNC_LOG;
-  CFSMailFolderBase* folder =  CFSMailFolderBase::NewLC(aFolderId);
-  CleanupStack:: Pop(folder);
-  return folder;
+    NM_FUNCTION;
+    
+    CFSMailFolderBase* folder =  CFSMailFolderBase::NewLC(aFolderId);
+    CleanupStack:: Pop(folder);
+    return folder;
 }
 
 // -----------------------------------------------------------------------------
@@ -93,7 +98,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TFSMailMsgId CFSMailFolderBase::GetFolderId() const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
 	return TFSMailMsgId(iNmPrivateFolder->mFolderId);
 // </qmail>
@@ -105,7 +111,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TFSMailMsgId CFSMailFolderBase::GetParentFolderId() const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     return TFSMailMsgId(iNmPrivateFolder->mParentFolderId);
 // </qmail>
@@ -116,7 +123,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailFolderBase::SetParentFolderId(TFSMailMsgId aFolderId)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iNmPrivateFolder->mParentFolderId = aFolderId.GetNmId();
 // </qmail>
@@ -127,7 +135,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TFSMailMsgId CFSMailFolderBase::GetMailBoxId() const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
 	return TFSMailMsgId(iNmPrivateFolder->mMailboxId);
 // </qmail>
@@ -138,7 +147,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailFolderBase::SetMailBoxId(TFSMailMsgId aMailBoxId)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iNmPrivateFolder->mMailboxId = aMailBoxId.GetNmId();
 // </qmail>
@@ -150,7 +160,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TFSFolderType CFSMailFolderBase::GetFolderType() const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     return static_cast<TFSFolderType>(iNmPrivateFolder->mFolderType);
 // </qmail>
@@ -161,7 +172,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailFolderBase::SetFolderType(const TFSFolderType aFolderType)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iNmPrivateFolder->mFolderType = static_cast<NmFolderType>(aFolderType);
 // </qmail>
@@ -172,7 +184,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TDesC& CFSMailFolderBase::GetFolderName() const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iTextPtr.Set(
         reinterpret_cast<const TUint16*> (iNmPrivateFolder->mName.utf16()),
@@ -186,7 +199,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailFolderBase::SetFolderName(const TDesC& aFolderName)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     QString qtName = QString::fromUtf16(aFolderName.Ptr(), aFolderName.Length());
     iNmPrivateFolder->mName = qtName;
@@ -198,7 +212,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TUint CFSMailFolderBase::GetMessageCount() const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     return (TUint)iNmPrivateFolder->mMessageCount;
 // </qmail>
@@ -209,7 +224,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TUint CFSMailFolderBase::GetUnreadCount() const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     return (TUint)iNmPrivateFolder->mUnreadMessageCount;
 // </qmail>
@@ -220,7 +236,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TUint CFSMailFolderBase::GetUnseenCount() const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     return (TUint)iNmPrivateFolder->mUnseenCount;
 // </qmail>
@@ -231,7 +248,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TUint CFSMailFolderBase::GetSubFolderCount() const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     return (TUint)iNmPrivateFolder->mSubFolderCount;
 // </qmail>
@@ -241,7 +259,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailFolderBase::SetMessageCount( TUint aMessageCount )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iNmPrivateFolder->mMessageCount = aMessageCount;
 // </qmail>
@@ -252,7 +271,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailFolderBase::SetUnreadCount( TUint aMessageCount )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iNmPrivateFolder->mUnreadMessageCount = aMessageCount;
 // </qmail>
@@ -263,7 +283,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailFolderBase::SetUnseenCount( TUint aMessageCount )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iNmPrivateFolder->mUnseenCount = aMessageCount;
 // </qmail>
@@ -274,7 +295,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailFolderBase::SetSubFolderCount(TUint aFolderCount)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iNmPrivateFolder->mSubFolderCount = aFolderCount;
 // </qmail>
@@ -286,7 +308,8 @@
 EXPORT_C void CFSMailFolderBase::BlockCopyFromL( RArray<TFSFolderType> aFolderTypes, 
 													TFSMailBoxStatus aMailBoxStatus )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	switch(aMailBoxStatus)
 		{
 			case EFSMailBoxOnline:
@@ -314,7 +337,8 @@
 EXPORT_C void CFSMailFolderBase::BlockMoveFromL( RArray<TFSFolderType> aFolderTypes, 
 													TFSMailBoxStatus aMailBoxStatus )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	switch(aMailBoxStatus)
 		{
 			case EFSMailBoxOnline:
@@ -342,6 +366,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C NmFolder* CFSMailFolderBase::GetNmFolder()
 {
+    NM_FUNCTION;
+    
     NmFolder* nmFolder = new NmFolder(iNmPrivateFolder);
     return nmFolder;
 }
--- a/emailservices/emailcommon/src/CFSMailIterator.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/src/CFSMailIterator.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,11 +15,12 @@
 *
 */
 
+#include "emailtrace.h"
+
 // <qmail>
 #include <nmcommonheaders.h>
 // </qmail>
 
-#include "emailtrace.h"
 #include "CFSMailIterator.h"
 
 // ================= MEMBER FUNCTIONS ==========================================
@@ -29,11 +30,12 @@
 EXPORT_C CFSMailIterator* CFSMailIterator::NewLC( 	MFSMailIterator& aIterator,
 													CFSMailRequestHandler* aRequestHandler )
 {
-    FUNC_LOG;
-  CFSMailIterator* api = new (ELeave) CFSMailIterator();
-  CleanupStack:: PushL(api);
-  api->ConstructL( aIterator, aRequestHandler );
-  return api;
+    NM_FUNCTION;
+    
+    CFSMailIterator* api = new (ELeave) CFSMailIterator();
+    CleanupStack:: PushL(api);
+    api->ConstructL( aIterator, aRequestHandler );
+    return api;
 } 
 
 // -----------------------------------------------------------------------------
@@ -42,10 +44,11 @@
 EXPORT_C CFSMailIterator* CFSMailIterator::NewL( 	MFSMailIterator& aIterator,
 													CFSMailRequestHandler* aRequestHandler )
 {
-    FUNC_LOG;
-  CFSMailIterator* api =  CFSMailIterator::NewLC( aIterator, aRequestHandler );
-  CleanupStack:: Pop(api);
-  return api;
+    NM_FUNCTION;
+    
+    CFSMailIterator* api =  CFSMailIterator::NewLC( aIterator, aRequestHandler );
+    CleanupStack:: Pop(api);
+    return api;
 }
 
 // -----------------------------------------------------------------------------
@@ -53,7 +56,8 @@
 // -----------------------------------------------------------------------------
 CFSMailIterator::CFSMailIterator()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	iIterator = NULL;
 }
 
@@ -63,7 +67,8 @@
 void CFSMailIterator::ConstructL( 	MFSMailIterator& aIterator,
 									CFSMailRequestHandler* aRequestHandler )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	iIterator = &aIterator;
 	iRequestHandler = aRequestHandler;
  }
@@ -73,7 +78,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailIterator::~CFSMailIterator()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	if(iIterator)
 		{
 		delete iIterator;
@@ -88,7 +94,8 @@
         TUint aCount, 
         RPointerArray<CFSMailMessage>& aMessages)
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	// call plugin iterator
 	TBool ret = iIterator->NextL(aCurrentMessageId,aCount,aMessages);
 	
@@ -104,7 +111,7 @@
         TUint aCount, 
         RPointerArray<CFSMailMessage>& aMessages)
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
 
 	// call plugin iterator
 	TBool ret = iIterator->NextL(aStartWith,aCount,aMessages);
@@ -120,8 +127,9 @@
         TUint aCount, 
         RPointerArray<CFSMailMessage>& aMessages)
 	{
-    FUNC_LOG;
-		// call plugin iterator
+    NM_FUNCTION;
+    
+	// call plugin iterator
 	TBool ret = iIterator->PreviousL(aCurrentMessageId,aCount,aMessages);
 		
 	return ret;
@@ -136,7 +144,7 @@
         TUint aCount, 
         RPointerArray<CFSMailMessage>& aMessages)
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
 
 	// call plugin iterator
 	TBool ret = iIterator->PreviousL(aStartWith,aCount,aMessages);
--- a/emailservices/emailcommon/src/CFSMailMessage.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/src/CFSMailMessage.cpp	Fri May 28 13:56:43 2010 +0300
@@ -16,6 +16,7 @@
 */
 
 #include "emailtrace.h"
+
 #include <apgcli.h>
 #include <apmrec.h>
 #include <mmf/common/mmfcontrollerpluginresolver.h> // CleanupResetAndDestroy
@@ -39,7 +40,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailMessage * CFSMailMessage::NewLC(TFSMailMsgId aMessageId)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
   	CFSMailMessage* message = new (ELeave) CFSMailMessage();
   	CleanupStack:: PushL(message);
   	message->ConstructL( aMessageId );
@@ -51,7 +53,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailMessage * CFSMailMessage::NewL(TFSMailMsgId aMessageId)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
   	CFSMailMessage* message =  CFSMailMessage::NewLC(aMessageId);
   	CleanupStack:: Pop(message);
   	return message;
@@ -63,7 +66,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailMessage* CFSMailMessage::NewL( const NmMessage &aMessage )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     CFSMailMessage* self = new (ELeave) CFSMailMessage();
     CleanupStack::PushL(self);
     self->ConstructL(aMessage);
@@ -77,7 +81,8 @@
 // -----------------------------------------------------------------------------
 void CFSMailMessage::ConstructL( TFSMailMsgId aMessageId )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     // Base class initialization
     CFSMailMessagePart::ConstructL( aMessageId, TFSMailMsgId() );
@@ -90,7 +95,8 @@
 // -----------------------------------------------------------------------------
 void CFSMailMessage::ConstructL( const NmMessage &aMessage )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     // Base class initialization
     
     CFSMailMessagePart::ConstructL( aMessage, aMessage.envelope() );
@@ -102,7 +108,7 @@
 // -----------------------------------------------------------------------------
 CFSMailMessage::CFSMailMessage() : CFSMailMessagePart()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
 }
 
 // -----------------------------------------------------------------------------
@@ -110,7 +116,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailMessage::~CFSMailMessage()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iMessageBufferForAsyncOp.Reset();
 // </qmail>
@@ -121,7 +128,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessage::SaveMessageL()
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId()))
 		{
 		plugin->StoreMessageL(GetMailBoxId(),*this);
@@ -134,7 +142,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TInt CFSMailMessage::SaveMessageL( MFSMailRequestObserver& aOperationObserver )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
 
     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId());
     TFSPendingRequest request = iRequestHandler->InitAsyncRequestL(
@@ -160,7 +168,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TInt CFSMailMessage::SaveMessagePartsL( MFSMailRequestObserver& aOperationObserver )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
 
     RPointerArray<CFSMailMessagePart> messageParts;
     CleanupResetAndDestroyPushL(messageParts);
@@ -208,7 +216,7 @@
 EXPORT_C CFSMailMessagePart* CFSMailMessage::AddNewAttachmentL( RFile& aFile,
                                                                 const TDesC8& aMimeType )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
     
     CFSMailMessagePart* newPart = NULL;
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId()))
@@ -259,7 +267,7 @@
 EXPORT_C CFSMailMessagePart* CFSMailMessage::AddNewAttachmentL(	const TDesC& aFilePath,
 																const TFSMailMsgId /*aInsertBefore*/ )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
 
 	CFSMailMessagePart* newPart = NULL;
 	
@@ -304,7 +312,8 @@
 EXPORT_C TInt CFSMailMessage::AddNewAttachmentL( const TDesC& aFilePath,
                                                  MFSMailRequestObserver& aOperationObserver)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     TFSPendingRequest request;
   
     if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId()))
@@ -358,7 +367,8 @@
 EXPORT_C void CFSMailMessage::AttachmentListL(
     RPointerArray<CFSMailMessagePart>& aParts )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     // First list all message parts
     AppendAttachmentsL( aParts ); 
 
@@ -420,7 +430,8 @@
 EXPORT_C CFSMailMessagePart* CFSMailMessage::PlainTextBodyPartL(
         TFSMailMessagePartDataSource aDataSource)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     CFSMailMessagePart* part = FindBodyPartL(KFSMailContentTypeTextPlain, aDataSource);
     
     // special case, single part content type is not given
@@ -442,7 +453,8 @@
 EXPORT_C CFSMailMessagePart* CFSMailMessage::HtmlBodyPartL(
         TFSMailMessagePartDataSource aDataSource)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     CFSMailMessagePart* part = FindBodyPartL(KFSMailContentTypeTextHtml, aDataSource);
     iMessageParts.ResetAndDestroy();
 	iReadMessageParts = ETrue;
@@ -456,7 +468,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TBool CFSMailMessage::IsMessageL() const
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     return CFSMailMessagePart::IsMessageL();
 	}
 // </qmail>
@@ -466,7 +479,8 @@
 // -----------------------------------------------------------------------------
 CDesCArray& CFSMailMessage::ContentTypeParameters()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
    CDesCArray* faked = NULL;
    return *faked;
 }
@@ -476,7 +490,8 @@
 // -----------------------------------------------------------------------------
 void CFSMailMessage::DoAttachmentListL( RPointerArray<CFSMailMessagePart>& aParts )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     AttachmentListL(aParts);
     }
 
@@ -487,6 +502,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C NmMessage* CFSMailMessage::GetNmMessage()
 {
+    NM_FUNCTION;
+    
 	NmMessage* message = new NmMessage(iNmPrivateMessageEnvelope, iNmPrivateMessagePart);
 	return message;
 }
--- a/emailservices/emailcommon/src/CFSMailMessageBase.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/src/CFSMailMessageBase.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,10 +15,10 @@
 *
 */
 
+#include "emailtrace.h"
 
 //<cmail>
 #include "CFSMailRequestHandler.h"
-#include "emailtrace.h"
 #include "CFSMailMessageBase.h"
 #include "cmailmessageext.h"
 //</cmail>
@@ -35,7 +35,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailMessageBase * CFSMailMessageBase::NewLC( TFSMailMsgId aMessageId )
 {
-  FUNC_LOG;
+  NM_FUNCTION;
+  
   CFSMailMessageBase* message = new (ELeave) CFSMailMessageBase();
   CleanupStack:: PushL(message);
   message->ConstructL(aMessageId);
@@ -47,7 +48,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailMessageBase * CFSMailMessageBase::NewL( TFSMailMsgId aMessageId )
 {
-  FUNC_LOG;
+  NM_FUNCTION;
+  
   CFSMailMessageBase* message =  CFSMailMessageBase::NewLC(aMessageId);
   CleanupStack:: Pop(message);
   return message;
@@ -58,7 +60,8 @@
 // -----------------------------------------------------------------------------
 CFSMailMessageBase::CFSMailMessageBase(): iSender(NULL)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail> unnecessary member initialization removed: iSubject, iFlags </qmail>
   	// set request handler pointer
 	iRequestHandler = static_cast<CFSMailRequestHandler*>(Dll::Tls());
@@ -69,7 +72,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessageBase::ConstructL( TFSMailMsgId aMessageId )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     // Construction of shared data object
     iNmPrivateMessageEnvelope = new NmMessageEnvelopePrivate();
@@ -92,7 +96,7 @@
 EXPORT_C void CFSMailMessageBase::ConstructL(
     const NmMessageEnvelope &aMessageEnvelope )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
 
     iNmPrivateMessageEnvelope = aMessageEnvelope.d;
 }
@@ -103,7 +107,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailMessageBase::~CFSMailMessageBase()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	if(iSender)
 		{
 		delete iSender;
@@ -117,7 +122,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TFSMailMsgId CFSMailMessageBase::GetMessageId(  ) const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     //For message  
     TFSMailMsgId id = TFSMailMsgId(iNmPrivateMessageEnvelope->mMessageId);
@@ -137,6 +143,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessageBase::SetMessageId( const TFSMailMsgId aMessageId )
 {
+    NM_FUNCTION;
+    
     // typedef long int TInt32 -> typedef unsigned int quint32
     iNmPrivateMessageEnvelope->mMessageId.setId32( aMessageId.Id() );
 
@@ -151,7 +159,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TFSMailMsgId CFSMailMessageBase::GetFolderId( ) const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     return TFSMailMsgId(iNmPrivateMessageEnvelope->mFolderId);
 // </qmail>
@@ -162,7 +171,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessageBase::SetFolderId( const TFSMailMsgId aFolderId )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iNmPrivateMessageEnvelope->mFolderId = NmConverter::mailMsgIdToNmId(aFolderId);
 // </qmail>
@@ -173,7 +183,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TFSMailMsgId CFSMailMessageBase::GetMailBoxId( ) const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     return NmId(iNmPrivateMessageEnvelope->mMailboxId);
 // </qmail>
@@ -184,7 +195,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessageBase::SetMailBoxId( const TFSMailMsgId aMailBoxId )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iNmPrivateMessageEnvelope->mMailboxId = NmConverter::mailMsgIdToNmId(aMailBoxId);
 // </qmail>
@@ -195,7 +207,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessageBase::SetSender(CFSMailAddress* aSender)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
 	// store sender
 	if (iSender)
@@ -213,7 +226,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailAddress* CFSMailMessageBase::GetSender() const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	return iSender;
 }
 
@@ -223,7 +237,8 @@
 EXPORT_C RPointerArray<CFSMailAddress> CFSMailMessageBase::GetToRecipients()
 {
 // <qmail>
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     return NmConverter::toRPointerArray(
         iNmPrivateMessageEnvelope->mToRecipients);
 // </qmail>
@@ -235,7 +250,8 @@
 EXPORT_C RPointerArray<CFSMailAddress> CFSMailMessageBase::GetCCRecipients()
 {
 // <qmail>
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     return NmConverter::toRPointerArray(
         iNmPrivateMessageEnvelope->mCcRecipients);
 // </qmail>
@@ -247,7 +263,8 @@
 EXPORT_C RPointerArray<CFSMailAddress> CFSMailMessageBase::GetBCCRecipients()
 {
 // <qmail>
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     return NmConverter::toRPointerArray(
         iNmPrivateMessageEnvelope->mBccRecipients);
 // </qmail>
@@ -258,7 +275,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessageBase::AppendToRecipient(CFSMailAddress* aRecipient)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iNmPrivateMessageEnvelope->mToRecipients.append(
         aRecipient->GetNmAddress());
@@ -270,7 +288,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessageBase::AppendCCRecipient(CFSMailAddress* aRecipient )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iNmPrivateMessageEnvelope->mCcRecipients.append(
         aRecipient->GetNmAddress());
@@ -282,7 +301,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessageBase::AppendBCCRecipient( CFSMailAddress* aRecipient )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iNmPrivateMessageEnvelope->mBccRecipients.append(
         aRecipient->GetNmAddress());
@@ -294,7 +314,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessageBase::ClearToRecipients( )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iNmPrivateMessageEnvelope->mToRecipients.clear();
 // </qmail>
@@ -305,7 +326,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessageBase::ClearCcRecipients( )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iNmPrivateMessageEnvelope->mCcRecipients.clear();
 // </qmail>
@@ -316,7 +338,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessageBase::ClearBccRecipients( )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iNmPrivateMessageEnvelope->mBccRecipients.clear();
 // </qmail>
@@ -328,7 +351,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TDesC& CFSMailMessageBase::GetSubject() const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iSubjectPtr.Set(reinterpret_cast<const TUint16*> (iNmPrivateMessageEnvelope->mSubject.utf16()),
         iNmPrivateMessageEnvelope->mSubject.length());
@@ -341,7 +365,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TTime CFSMailMessageBase::GetDate() const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     return NmConverter::toTTime(iNmPrivateMessageEnvelope->mSentTime);
 // </qmail>
@@ -352,7 +377,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessageBase::SetDate( const TTime aDate )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iNmPrivateMessageEnvelope->mSentTime = NmConverter::toQDateTime(aDate);
 // </qmail>
@@ -363,7 +389,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessageBase::SetSubject(const TDesC& aSubject)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     QString qtSubject = QString::fromUtf16(aSubject.Ptr(), aSubject.Length());
     iNmPrivateMessageEnvelope->mSubject = qtSubject;
@@ -375,7 +402,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TInt CFSMailMessageBase::GetFlags( ) const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     return (TInt)iNmPrivateMessageEnvelope->flags();
 // </qmail>
@@ -386,7 +414,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessageBase::SetFlag(const TInt aFlag)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iNmPrivateMessageEnvelope->setFlags((NmMessageFlags)aFlag, true);
 // </qmail>
@@ -397,7 +426,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessageBase::ResetFlag(const TInt aFlag)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     iNmPrivateMessageEnvelope->setFlags((NmMessageFlags)aFlag, false);
 // </qmail>
@@ -408,7 +438,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TBool CFSMailMessageBase::IsFlagSet(const TInt aFlag) const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 // <qmail>
     TBool result = EFalse;
     if (iNmPrivateMessageEnvelope->isFlagSet((NmMessageFlag)aFlag)) 
@@ -424,7 +455,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TFSMailMsgId CFSMailMessageBase::IsRelatedTo() const
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	return iRelatedTo;
 	}
 
@@ -433,7 +465,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessageBase::SetRelatedTo( const TFSMailMsgId aMessageId )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	iRelatedTo = aMessageId;
 	}
 
@@ -442,7 +475,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessageBase::SetReplyToAddress(CFSMailAddress* aReplyToAddress)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	// store sender
 	if (iReplyTo)
 		{
@@ -457,12 +491,15 @@
 // -----------------------------------------------------------------------------
 EXPORT_C const CFSMailAddress& CFSMailMessageBase::GetReplyToAddress()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	return *iReplyTo;
 }
 
 EXPORT_C CFSMailRequestHandler& CFSMailMessageBase::RequestHandler( )
 {
+    NM_FUNCTION;
+    
 	return *iRequestHandler;
 }
 
@@ -472,7 +509,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C NmMessageEnvelope* CFSMailMessageBase::GetNmMessageEnvelope()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     return new NmMessageEnvelope(iNmPrivateMessageEnvelope);
 }
 // </qmail>
@@ -482,7 +520,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessageBase::ReleaseExtension( CEmailExtension* aExtension )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(
 		iNmPrivateMessageEnvelope->mMessageId ) )
         {
@@ -501,7 +540,8 @@
 EXPORT_C CEmailExtension* CFSMailMessageBase::ExtensionL( 
     const TUid& aInterfaceUid )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     CEmailExtension* ext = CExtendableEmail::ExtensionL( aInterfaceUid );
     // didn't find already created instance, try now
     if ( !ext )
--- a/emailservices/emailcommon/src/CFSMailMessagePart.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/src/CFSMailMessagePart.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,11 +15,12 @@
 *
 */
 
+#include "emailtrace.h"
+
 //<qmail>
 #include <nmcommonheaders.h>
 //</qmail>
 
-#include "emailtrace.h"
 #include <apgcli.h>
 #include <apmrec.h>
 #include <mmf/common/mmfcontrollerpluginresolver.h> // CleanupResetAndDestroy
@@ -44,11 +45,12 @@
 EXPORT_C CFSMailMessagePart* CFSMailMessagePart::NewLC( TFSMailMsgId aMessageId,
 														TFSMailMsgId aMessagePartId )
 {
-    FUNC_LOG;
-  CFSMailMessagePart* adr = new (ELeave) CFSMailMessagePart();
-  CleanupStack::PushL(adr);
-  adr->ConstructL( aMessageId, aMessagePartId );
-  return adr;
+    NM_FUNCTION;
+    
+    CFSMailMessagePart* adr = new (ELeave) CFSMailMessagePart();
+    CleanupStack::PushL(adr);
+    adr->ConstructL( aMessageId, aMessagePartId );
+    return adr;
 } 
 
 // -----------------------------------------------------------------------------
@@ -57,10 +59,11 @@
 EXPORT_C CFSMailMessagePart* CFSMailMessagePart::NewL(	TFSMailMsgId aMessageId,
 														TFSMailMsgId aMessagePartId )
 {
-    FUNC_LOG;
-  CFSMailMessagePart* adr =  CFSMailMessagePart::NewLC( aMessageId, aMessagePartId );
-  CleanupStack::Pop(adr);
-  return adr;
+    NM_FUNCTION;
+    
+    CFSMailMessagePart* adr =  CFSMailMessagePart::NewLC( aMessageId, aMessagePartId );
+    CleanupStack::Pop(adr);
+    return adr;
 }
 
 //<qmail>
@@ -70,7 +73,8 @@
 EXPORT_C CFSMailMessagePart* CFSMailMessagePart::NewLC(const NmId &aNmMessageId,
     const NmMessagePart& aNmMessage )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	CFSMailMessagePart* self = new (ELeave) CFSMailMessagePart();
 	CleanupStack::PushL(self);
 	self->ConstructL( aNmMessageId,aNmMessage );
@@ -84,7 +88,8 @@
 void CFSMailMessagePart::ConstructL( TFSMailMsgId aMessageId,
                                      TFSMailMsgId aMessagePartId )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 //<qmail>
 	// Base class initialization
     CFSMailMessageBase::ConstructL(aMessageId);
@@ -107,7 +112,8 @@
 // -----------------------------------------------------------------------------
 void CFSMailMessagePart::ConstructL( const NmId &aNmMessageId,const NmMessagePart& aNmMessage )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     // Base class initialization
     CFSMailMessageBase::ConstructL(TFSMailMsgId(aNmMessageId));
     
@@ -129,7 +135,8 @@
     const NmMessagePart& aNmMessage,
     const NmMessageEnvelope& aNmMessageEnvelope)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     // Base class initialization
     CFSMailMessageBase::ConstructL(aNmMessageEnvelope);
     
@@ -148,7 +155,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailMessagePart::~CFSMailMessagePart()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 //<qmail> iContentType, iContentDescription, iContentDisposition, iContentID removed </qmail>
 	if(iAttachmentName)
 	{
@@ -187,7 +195,7 @@
 // -----------------------------------------------------------------------------
 CFSMailMessagePart::CFSMailMessagePart() : CFSMailMessageBase()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
 	
 //<qmail> iContentType, iContentDescription, iContentDisposition, iContentID removed </qmail>
 	iContentClass = HBufC::New(1);
@@ -204,7 +212,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C const TDesC& CFSMailMessagePart::GetContentType() const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 //<qmail>
     iContentTypePtr.Set(reinterpret_cast<const TUint16*> (iNmPrivateMessagePart->mContentType.utf16()),
     		iNmPrivateMessagePart->mContentType.length());
@@ -217,7 +226,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessagePart::SetContentType(const TDesC& aContentType)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 //<qmail>
     QString qtContentType = QString::fromUtf16(aContentType.Ptr(), aContentType.Length());
     iNmPrivateMessagePart->mContentType = qtContentType;
@@ -229,7 +239,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TFSMailMsgId CFSMailMessagePart::GetPartId() const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 //<qmail>
     return TFSMailMsgId(iNmPrivateMessagePart->mPartId);
 //</qmail>	
@@ -242,7 +253,7 @@
 EXPORT_C void CFSMailMessagePart::ChildPartsL( RPointerArray<CFSMailMessagePart>& aParts,
     TFSMailMessagePartDataSource aDataSource)
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
 
     if (aDataSource == EDataSourceMessageStore)
         {
@@ -272,7 +283,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailMessagePart* CFSMailMessagePart::ChildPartL(TFSMailMsgId aPartId)
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
 	
 	CFSMailMessagePart* part = NULL;
 	if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetMessageId()))
@@ -290,7 +301,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TBool CFSMailMessagePart::IsMessageL() const
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
 
 	TBuf<KMaxDataTypeLength> ptr;
 //<qmail>
@@ -318,7 +329,7 @@
 EXPORT_C CFSMailMessagePart* CFSMailMessagePart::NewChildPartL( const TFSMailMsgId aInsertBefore,
 																const TDesC& aContentType )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
 
 	CFSMailMessagePart* part = NULL;
 	
@@ -335,7 +346,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessagePart::RemoveChildPartL(TFSMailMsgId aPartId)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	// get plugin pointer
 	TFSMailMsgId id = GetPartId();
 	if(id.IsNullId())
@@ -357,7 +369,8 @@
 EXPORT_C TInt CFSMailMessagePart::RemoveChildPartL( TFSMailMsgId aPartId,
                                                     MFSMailRequestObserver& aOperationObserver)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     TFSPendingRequest request;
     // get plugin pointer
     TFSMailMsgId id = GetPartId();
@@ -402,7 +415,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C const TDesC& CFSMailMessagePart::GetContentClass()
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 		return *iContentClass;
 	}
 
@@ -411,7 +425,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessagePart::SetContentClass( const TDesC& aContentClass )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
 
 	// 
 	HBufC* contentClass = HBufC::New(aContentClass.Length());
@@ -435,7 +449,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TUint CFSMailMessagePart::ContentSize() const
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 //<qmail>
     return (TUint)iNmPrivateMessagePart->mSize;
 //</qmail>
@@ -446,7 +461,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessagePart::SetContentSize( TUint aContentSize )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 //<qmail>
     iNmPrivateMessagePart->mSize = quint32(aContentSize);
 //</qmail>
@@ -457,7 +473,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C const TDesC& CFSMailMessagePart::ContentID()
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 //<qmail>	
     iContentIDPtr.Set(reinterpret_cast<const TUint16*> (iNmPrivateMessagePart->mContentId.utf16()),
     		iNmPrivateMessagePart->mContentId.length());
@@ -470,7 +487,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessagePart::SetContentIDL(const TDesC& aContentID)
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 //<qmail>
     QString qtContentID = QString::fromUtf16(aContentID.Ptr(), aContentID.Length());
     iNmPrivateMessagePart->mContentId = qtContentID;    
@@ -484,7 +502,7 @@
 													TFSMailMsgId aInsertBefore,
 													CFSMailMessage* aMessage)
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
 	
 	CFSMailMessagePart* part = NULL;
 	if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId()))
@@ -500,7 +518,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessagePart::RemoveContentL()
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
 	
 	CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId());
 	if(plugin == NULL)
@@ -529,7 +547,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessagePart::RemoveDownLoadedAttachmentsL()
     {
-    FUNC_LOG;
+    NM_FUNCTION;
         
     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId());
     if(plugin == NULL)
@@ -569,7 +587,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C RFile CFSMailMessagePart::GetContentFileL()
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
 	
 	if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId()))
 		{
@@ -596,7 +614,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessagePart::SetContentFromFileL(const TDesC& aFilePath)
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId()))
 		{
 		plugin->SetPartContentFromFileL(GetMailBoxId(), GetFolderId(),
@@ -609,7 +628,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessagePart::CopyContentFileL( const TDesC& aFilePath )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId()))
 		{
 		plugin->CopyMessagePartFileL( GetMailBoxId(), GetFolderId(),
@@ -622,7 +642,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessagePart::GetContentToBufferL(TDes16& aBuffer, TUint aStartOffset)
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId()))
 		{
 		plugin->GetContentToBufferL( GetMailBoxId(), GetFolderId(), GetMessageId(),
@@ -635,7 +656,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessagePart::SetContent( TDes16& aBuffer )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId()))
 		{
 // <qmail>
@@ -650,7 +672,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C const TDesC& CFSMailMessagePart::ContentDescription()
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 //<qmail>
     iContentDescriptionPtr.Set(reinterpret_cast<const TUint16*> (
             iNmPrivateMessagePart->mContentDescription.utf16()),
@@ -665,7 +688,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessagePart::SetContentDescription( const TDesC& aContentDescription )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 //<qmail>
     QString qtContentDescription = QString::fromUtf16(
             aContentDescription.Ptr(), aContentDescription.Length());
@@ -677,7 +701,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C const TDesC& CFSMailMessagePart::ContentDisposition()
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 //<qmail>
 	iContentDispositionPtr.Set(reinterpret_cast<const TUint16*> (
 	        iNmPrivateMessagePart->mContentDisposition.utf16()),
@@ -691,7 +716,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessagePart::SetContentDisposition( const TDesC& aContentDisposition )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 //<qmail>
     QString qtContentDisposition = QString::fromUtf16(
             aContentDisposition.Ptr(), aContentDisposition.Length());
@@ -704,7 +730,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CDesCArray& CFSMailMessagePart::ContentTypeParameters()
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 //<qmail>	
     if (iNmPrivateMessagePart->mContentType.isNull())
 		{
@@ -801,7 +828,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CDesCArray& CFSMailMessagePart::ContentDispositionParameters()
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
 	
 //<qmail>
     const TDesC& contentDisposition = ContentDisposition();
@@ -935,7 +962,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C MMRInfoObject& CFSMailMessagePart::GetMRInfo()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	return *iMeetingRequest;
 }
 
@@ -944,7 +972,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TBool CFSMailMessagePart::IsMRInfoSet()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	if(iMeetingRequest)
 		{
 		return ETrue;
@@ -960,7 +989,8 @@
 // -----------------------------------------------------------------------------	
 EXPORT_C void CFSMailMessagePart::SetMRInfo(MMRInfoObject* aMeetingRequest)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	if(iMeetingRequest)
 	{
 		delete iMeetingRequest;
@@ -973,7 +1003,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessagePart::SaveL()
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId()))
 		{
 		plugin->StoreMessagePartL( GetMailBoxId(), GetFolderId(), GetMessageId(), *this );		
@@ -986,7 +1017,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessagePart::SetAttachmentNameL(const TDesC& aFilePath)
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	    // Parse file name in case full path is given
 		TPtrC name;
 		for(TInt i=0;i<aFilePath.Length();)
@@ -1057,7 +1089,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TDesC& CFSMailMessagePart::AttachmentNameL()
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 //<qmail>
     // Look first from Content-Type param "name"
 	TInt ptr = GetContentType().Find(KFSMailContentTypeParamName);
@@ -1109,7 +1142,7 @@
         const TDesC& aContentType, 
         TFSMailMessagePartDataSource aDataSource)
     {
-    FUNC_LOG;
+    NM_FUNCTION;
 
     TBuf<KMaxDataTypeLength> ptr;
     if (!iNmPrivateMessagePart->mContentType.isNull())
@@ -1216,7 +1249,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TBool CFSMailMessagePart::ContentTypeMatches( const TDesC& aContentType )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
 
 	TBuf<KMaxDataTypeLength> ptr;
 	TBool result(EFalse);
@@ -1246,7 +1279,8 @@
 EXPORT_C void CFSMailMessagePart::AppendAttachmentsL(
     RPointerArray<CFSMailMessagePart>& aParts)
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetMessageId() );
     if ( plugin )
         {
@@ -1283,7 +1317,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TUint CFSMailMessagePart::FetchedContentSize() const
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 //<qmail>
     return (TUint)iNmPrivateMessagePart->mFetchedSize;
 //</qmail>
@@ -1294,7 +1329,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessagePart::SetFetchedContentSize(TUint aContentSize)
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 //<qmail>
     iNmPrivateMessagePart->mFetchedSize = quint32(aContentSize);
 //</qmail>
@@ -1305,7 +1341,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TFSPartFetchState CFSMailMessagePart::FetchLoadState() const
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 //<qmail>
 	 if(iMessagePartsStatus != EFSDefault)
 		{
@@ -1337,7 +1374,7 @@
         										  		MFSMailRequestObserver& aOperationObserver,
         												const TUint aPreferredByteCount)
     {
-    FUNC_LOG;
+    NM_FUNCTION;
     
 	TInt requestId(0);
 	if(CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid(GetPartId()))
@@ -1379,7 +1416,7 @@
         							MFSMailRequestObserver& aOperationObserver,
         							const TUint aPreferredByteCount)
     {
-    FUNC_LOG;
+    NM_FUNCTION;
 
 	TInt requestId(0);
     
@@ -1421,7 +1458,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessagePart::SetMessagePartsStatus(TFSPartFetchState aMessagePartStatus)
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	iMessagePartsStatus = aMessagePartStatus;
 	}
 
@@ -1432,7 +1470,8 @@
 																const TFSMailMsgId /*aInsertBefore*/,
 																const TDesC& aContentType )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     CFSMailMessagePart* newPart = NULL;
 
     CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetMessageId() );
@@ -1464,7 +1503,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TUint CFSMailMessagePart::ReadOnlyPartSize() const
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     return iReadOnlyPartSize;
 }
 
@@ -1473,7 +1513,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailMessagePart::SetReadOnlyPartSize(const TUint aReadOnlyPartSize)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     iReadOnlyPartSize = aReadOnlyPartSize;
 }
 
@@ -1482,7 +1523,7 @@
 // -----------------------------------------------------------------------------
 void CFSMailMessagePart::DoAttachmentListL( RPointerArray<CFSMailMessagePart>& /*aParts*/ )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
 }
 
 //<qmail>
@@ -1491,7 +1532,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C NmMessagePart* CFSMailMessagePart::GetNmMessagePart()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     return new NmMessagePart(iNmPrivateMessagePart);
 }
 //</qmail>
@@ -1502,7 +1544,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C HBufC* CFSMailMessagePart::GetLocalTextContentLC()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     return NmConverter::qstringToHBufCLC(iNmPrivateMessagePart->mTextContent);
 }
 //</qmail>
--- a/emailservices/emailcommon/src/CFSMailPluginData.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/src/CFSMailPluginData.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,11 +15,12 @@
 *
 */
 
+#include "emailtrace.h"
+
 // <qmail>
 #include <nmcommonheaders.h>
 // </qmail>
 
-#include "emailtrace.h"
 #include "CFSMailPluginData.h"
 
 // -----------------------------------------------------------------------------
@@ -27,8 +28,7 @@
 // -----------------------------------------------------------------------------
 CFSMailPluginData::CFSMailPluginData()
 {
-    FUNC_LOG;
-
+    NM_FUNCTION;
 }
 
 // -----------------------------------------------------------------------------
@@ -36,7 +36,8 @@
 // -----------------------------------------------------------------------------
 CFSMailPluginData::~CFSMailPluginData()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	if(iPlugin)
 		{
 		delete iPlugin;
--- a/emailservices/emailcommon/src/CFSMailRequestHandler.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/src/CFSMailRequestHandler.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,12 +15,13 @@
 *
 */
 
+#include "emailtrace.h"
+
 // <qmail>
 // Exports removed because entire class is exported from DLL
 #include <nmcommonheaders.h>
 // </qmail>
 
-#include "emailtrace.h"
 #include "CFSMailRequestHandler.h"
 #include "CFSMailRequestObserver.h"
 
@@ -31,7 +32,7 @@
 // -----------------------------------------------------------------------------
  CFSMailRequestHandler::CFSMailRequestHandler() : iRequestId(0)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
 
     // store pointer to TLS
     TInt err = Dll::SetTls(static_cast<TAny*>(this));
@@ -48,7 +49,8 @@
 // -----------------------------------------------------------------------------
  CFSMailRequestHandler::~CFSMailRequestHandler()
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     TRAP_IGNORE( CancelAllRequestsL() );
     RemoveAllRequests();
     iPendingRequests.Reset();
@@ -72,11 +74,12 @@
                                     RPointerArray<CImplementationInformation>& aPluginInfo,
                                     RPointerArray<CFSMailPlugin>& aPlugins )
 {
-    FUNC_LOG;
-  CFSMailRequestHandler* pluginHandler = new (ELeave) CFSMailRequestHandler();
-  CleanupStack:: PushL(pluginHandler);
-  pluginHandler->ConstructL( aPluginInfo, aPlugins );
-  return pluginHandler;
+    NM_FUNCTION;
+    
+    CFSMailRequestHandler* pluginHandler = new (ELeave) CFSMailRequestHandler();
+    CleanupStack:: PushL(pluginHandler);
+    pluginHandler->ConstructL( aPluginInfo, aPlugins );
+    return pluginHandler;
 } 
 
 // -----------------------------------------------------------------------------
@@ -86,11 +89,12 @@
                                     RPointerArray<CImplementationInformation>& aPluginInfo,
                                     RPointerArray<CFSMailPlugin>& aPlugins )
 {
-    FUNC_LOG;
-  CFSMailRequestHandler* pluginHandler =  
-                CFSMailRequestHandler::NewLC( aPluginInfo, aPlugins );
-  CleanupStack:: Pop(pluginHandler);
-  return pluginHandler;
+    NM_FUNCTION;
+    
+    CFSMailRequestHandler* pluginHandler =  
+        CFSMailRequestHandler::NewLC( aPluginInfo, aPlugins );
+    CleanupStack:: Pop(pluginHandler);
+    return pluginHandler;
 }
 
 // -----------------------------------------------------------------------------
@@ -100,9 +104,7 @@
                                 RPointerArray<CImplementationInformation> /*aPluginInfo*/,
                                 RPointerArray<CFSMailPlugin> /*aPlugins*/ )
 {
-    FUNC_LOG;
-
-
+    NM_FUNCTION;
 }
 
 // -----------------------------------------------------------------------------
@@ -110,7 +112,7 @@
 // -----------------------------------------------------------------------------
  CFSMailPlugin* CFSMailRequestHandler::GetPluginByUid( TFSMailMsgId aObjectId )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
 
     for(TInt i=0;i<iPluginList.Count();i++)
         {
@@ -131,7 +133,8 @@
                                                     TUid aPluginId,
                                                     MFSMailRequestObserver& aOperationObserver)
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
         TFSPendingRequest newRequest;
         for(TInt i=0;i<iPendingRequests.Count();i++)
             {
@@ -161,7 +164,8 @@
 // -----------------------------------------------------------------------------
  void CFSMailRequestHandler::CompleteRequest( TInt aRequestId )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
         for(TInt i=0;i<iPendingRequests.Count();i++)
         {
         if(iPendingRequests[i].iRequestId == aRequestId)
@@ -178,7 +182,8 @@
 // -----------------------------------------------------------------------------
  void CFSMailRequestHandler::CancelRequestL( TInt aRequestId )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
         for(TInt i=0;i<iPendingRequests.Count();i++)
         {
         if(iPendingRequests[i].iRequestId == aRequestId &&
@@ -200,7 +205,8 @@
 // -----------------------------------------------------------------------------
  void CFSMailRequestHandler::CancelAllRequestsL( )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
         for(TInt i=0;i<iPendingRequests.Count();i++)
         {
             if(iPendingRequests[i].iRequestStatus == TFSPendingRequest::EFSRequestPending)
@@ -220,7 +226,7 @@
 // -----------------------------------------------------------------------------
  void CFSMailRequestHandler::AddPluginL( TUid aPluginId, CFSMailPlugin* aPlugin )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
 
     CFSMailPluginData* pluginData = new (ELeave) CFSMailPluginData;
     pluginData->iPluginId = aPluginId;
@@ -234,7 +240,8 @@
 // -----------------------------------------------------------------------------
 void CFSMailRequestHandler::RemoveAllRequests()
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     for(TInt i=0;i<iPendingRequests.Count();i++)
         {
         delete iPendingRequests[i].iObserver;
@@ -247,7 +254,7 @@
 // -----------------------------------------------------------------------------
  RFile CFSMailRequestHandler::GetTempFileL( TFSMailMsgId aContentId, TFileName aFileName )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
     
     // get temp dir path
     if(iTempDirName == NULL)
@@ -274,7 +281,7 @@
 // -----------------------------------------------------------------------------
  void CFSMailRequestHandler::CleanTempDirL( )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
     }
 
 // -----------------------------------------------------------------------------
@@ -282,7 +289,8 @@
 // -----------------------------------------------------------------------------
  TDesC& CFSMailRequestHandler::GetTempDirL( )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     return *iTempDirName;
     }
 
--- a/emailservices/emailcommon/src/CFSMailRequestObserver.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/src/CFSMailRequestObserver.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,11 +15,12 @@
 *
 */
 
+#include "emailtrace.h"
+
 // <qmail>
 #include <nmcommonheaders.h>
 // </qmail>
 
-#include "emailtrace.h"
 #include "CFSMailRequestObserver.h"
 #include "CFSMailRequestHandler.h"
 
@@ -29,8 +30,7 @@
 // -----------------------------------------------------------------------------
 CFSMailRequestObserver::CFSMailRequestObserver()
 {
-    FUNC_LOG;
-
+    NM_FUNCTION;
 }
 
 // -----------------------------------------------------------------------------
@@ -38,8 +38,7 @@
 // -----------------------------------------------------------------------------
 CFSMailRequestObserver::~CFSMailRequestObserver()
 {
-    FUNC_LOG;
-
+    NM_FUNCTION;
 }
 // -----------------------------------------------------------------------------
 // CFSMailRequestObserver::NewLC
@@ -47,7 +46,8 @@
 CFSMailRequestObserver* CFSMailRequestObserver::NewLC( CFSMailRequestHandler& aPluginManager,
 											 MFSMailRequestObserver& aObserver)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	CFSMailRequestObserver* obs = new (ELeave) CFSMailRequestObserver();
   	CleanupStack:: PushL(obs);
   	obs->ConstructL(aPluginManager,aObserver);
@@ -60,7 +60,8 @@
 CFSMailRequestObserver* CFSMailRequestObserver::NewL( CFSMailRequestHandler& aPluginRequestHandler,
 											MFSMailRequestObserver& aObserver )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
   	CFSMailRequestObserver* obs =  CFSMailRequestObserver::NewLC(aPluginRequestHandler,aObserver);
   	CleanupStack::Pop(obs);
   	return obs;
@@ -72,7 +73,8 @@
 void CFSMailRequestObserver::ConstructL( CFSMailRequestHandler& aPluginRequestHandler,
 									MFSMailRequestObserver& aObserver )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	iObserver = &aObserver;
 	iRequestHandler = &aPluginRequestHandler;
 }
@@ -82,7 +84,7 @@
 // -----------------------------------------------------------------------------
 void CFSMailRequestObserver::RequestResponseL( TFSProgress aEvent, TInt aRequestId )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
 
 	if(iObserver)
 		{
@@ -102,7 +104,8 @@
 // -----------------------------------------------------------------------------
 void CFSMailRequestObserver::SetUserObserver(MFSMailRequestObserver& aObserver)
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     iObserver = &aObserver;
 	}
 	
--- a/emailservices/emailcommon/src/cemailextensionbase.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/src/cemailextensionbase.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,8 +15,9 @@
 *
 */
 
+#include "emailtrace.h"
+
 #include "cemailextensionbase.h"
-#include "emailtrace.h"
 
 /**
 *
@@ -29,7 +30,8 @@
     
 void Panic( TEmailFwPanic aPanic )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     User::Panic( KEmailExtensionPanic, aPanic );
     }
 
@@ -40,6 +42,7 @@
 CEmailExtension::CEmailExtension( const TUid& aUid ) : 
     iUid( TUid::Uid(aUid.iUid ) )
     {
+    NM_FUNCTION;
     }
 
 // ---------------------------------------------------------------------------
@@ -48,6 +51,7 @@
 //
 CEmailExtension::~CEmailExtension()
     {
+    NM_FUNCTION;
     }
 
 // ---------------------------------------------------------------------------
@@ -56,6 +60,8 @@
 //
 TUid CEmailExtension::Uid() const
     {
+    NM_FUNCTION;
+    
     return iUid;
     }
 
@@ -65,6 +71,8 @@
 //
 TUint CEmailExtension::DecRef()
     {
+    NM_FUNCTION;
+    
     if ( iRefCount )
         {
         iRefCount--;
@@ -78,6 +86,8 @@
 //
 void CEmailExtension::IncRef()
     {
+    NM_FUNCTION;
+    
     ++iRefCount;
     }
         
@@ -87,7 +97,8 @@
 //
 void CExtendableEmail::ReleaseExtension( CEmailExtension* aExtension )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     if ( !aExtension->DecRef() )
         {
         iExtensions.Remove( aExtension );
@@ -101,7 +112,8 @@
 //
 CEmailExtension* CExtendableEmail::ExtensionL( const TUid& aInterfaceUid )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     TInt index = iExtensions.FindExtension( aInterfaceUid );
     CEmailExtension* ext = NULL;
     if ( index != KErrNotFound )
@@ -119,7 +131,8 @@
 //
 CExtendableEmail::CExtendableEmail()
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     }
 //</qmail>
 
@@ -129,6 +142,8 @@
 //
 TEmailExtensions::~TEmailExtensions()
     {
+    NM_FUNCTION;
+    
     iExtensions.Close();
     }
 
@@ -138,6 +153,8 @@
 //
 TEmailExtensions::TEmailExtensions() : iExtensions( 1 )
     {
+    NM_FUNCTION;
+    
     }
 
 // ---------------------------------------------------------------------------
@@ -146,6 +163,8 @@
 //
 TInt TEmailExtensions::FindExtension( const TUid& aUid ) const
     {
+    NM_FUNCTION;
+    
     TInt index = KErrNotFound;
     for ( TInt i = 0; i < iExtensions.Count(); i++ )
         {        
@@ -165,6 +184,8 @@
 //
 CEmailExtension* TEmailExtensions::Extension( const TInt aIndex ) const
     {
+    NM_FUNCTION;
+    
     __ASSERT_ALWAYS( aIndex>=0 && aIndex < iExtensions.Count(),
         Panic( EEmailExtensionIndexOutOfRange ) );
     return iExtensions[aIndex];
@@ -176,7 +197,8 @@
 //
 void TEmailExtensions::AddL( CEmailExtension* aExtension )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     if ( !aExtension )
         {
         User::Leave( KErrArgument );
@@ -194,7 +216,8 @@
 void TEmailExtensions::Remove( 
     const CEmailExtension* aExtension )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     const TInt index( FindExtension( aExtension->Uid() ) );
     if ( index != KErrNotFound )    
         {
--- a/emailservices/emailcommon/src/emailcalendarinfoimpl.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/src/emailcalendarinfoimpl.cpp	Fri May 28 13:56:43 2010 +0300
@@ -16,6 +16,7 @@
 */
 
 #include "emailtrace.h"
+
 #include "cmrcalendarinfoimpl.h"          
 
 // ---------------------------------------------------------------------------
@@ -24,6 +25,7 @@
 //
 CMRCalendarInfo::CMRCalendarInfo( const TUid& aUid ) : CEmailExtension( aUid )
     {
+    NM_FUNCTION;
     }
 
 // ---------------------------------------------------------------------------
@@ -33,6 +35,8 @@
 CMRCalendarInfoImpl::CMRCalendarInfoImpl() : 
     CMRCalendarInfo( KMailboxExtMrCalInfo )
     {
+    NM_FUNCTION;
+    
     iDatabaseId = MAKE_TINT64(0,0);
     }
 
@@ -42,7 +46,7 @@
 //
 CMRCalendarInfoImpl::~CMRCalendarInfoImpl()
     {
-    FUNC_LOG
+    NM_FUNCTION;
     }
 
 // ---------------------------------------------------------------------------
@@ -51,7 +55,8 @@
 //
 void CMRCalendarInfoImpl::GetCalendarDatabaseIdL( TCalFileId& aId ) const
     {
-    FUNC_LOG
+    NM_FUNCTION;
+    
     aId = iDatabaseId;
     }
     
@@ -61,7 +66,8 @@
 //
 void CMRCalendarInfoImpl::SetCalendarDatabaseIdL( const TCalFileId& aId )
     {
-    FUNC_LOG
+    NM_FUNCTION;
+    
     iDatabaseId = aId;
     }
 
--- a/emailservices/emailcommon/src/nmconverter.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailcommon/src/nmconverter.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
 *
 */
 
+#include "emailtrace.h"
+
 #include "nmconverter.h"
 
 /*!
@@ -22,6 +24,8 @@
  */
 EXPORT_C NmMailSortCriteria NmConverter::FSMailSortCriteria2NM(TFSMailSortCriteria criteria) 
 {
+    NM_FUNCTION;
+    
     NmMailSortCriteria toReturn;
 
     // setting defaults
@@ -78,6 +82,8 @@
  */
 EXPORT_C QString NmConverter::toQString(const TDesC& aText)
 {
+    NM_FUNCTION;
+    
     return QString::fromUtf16(aText.Ptr(), aText.Length());
 }
 
@@ -86,6 +92,8 @@
  */
 EXPORT_C QDateTime NmConverter::toQDateTime(const TTime& aTime)
 {
+    NM_FUNCTION;
+    
     QDateTime toReturn;
     TDateTime sTime = aTime.DateTime();
 
@@ -106,6 +114,8 @@
  */
 EXPORT_C TTime NmConverter::toTTime(const QDateTime &aTime)
 {
+    NM_FUNCTION;
+    
     QDate qDate = aTime.date();
     QTime qTime = aTime.time();
 
@@ -120,6 +130,8 @@
  */
 EXPORT_C TFSMailSortCriteria NmConverter::NMMailSortCriteria2FS(NmMailSortCriteria criteria)
 {
+    NM_FUNCTION;
+    
     TFSMailSortCriteria toReturn;
 
     // setting defaults
@@ -176,6 +188,8 @@
  */
 EXPORT_C NmId NmConverter::mailMsgIdToNmId(const TFSMailMsgId aId)
 {
+    NM_FUNCTION;
+    
     NmId id;
     id.setId32( aId.Id() );
     id.setPluginId32( aId.PluginId().iUid );
@@ -188,6 +202,8 @@
  */
 EXPORT_C TFSMailMsgId NmConverter::nmIdToMailMsgId(const NmId aId)
 {
+    NM_FUNCTION;
+    
     TFSMailMsgId id( aId.pluginId32(), aId.id32() );
     return id;
 }
@@ -197,6 +213,8 @@
  */
 EXPORT_C HBufC* NmConverter::qstringToHBufCLC( const QString &string )
 {
+    NM_FUNCTION;
+    
     HBufC* buf = HBufC::NewLC(string.length());    
     buf->Des().Copy( string.utf16() );
     return buf;
@@ -208,6 +226,8 @@
 EXPORT_C RPointerArray<CFSMailAddress> NmConverter::toRPointerArray(
     const QList<NmAddress> &list)
 {
+    NM_FUNCTION;
+    
     RPointerArray<CFSMailAddress> ret;
 
      for (QList<NmAddress>::const_iterator it = list.constBegin();
--- a/emailservices/emaildebug/inc/emailtrace.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emaildebug/inc/emailtrace.h	Fri May 28 13:56:43 2010 +0300
@@ -58,10 +58,10 @@
 #endif /* DEBUG */
 
 /*
- * The function NM_COMMENT() prints a trace message. The INFO macros are
- * provided for legacy compatibility. They are deprecated and should not be
- * used. If sprintf() type of formatting is desired, consider using QString::
- * arg() or QTextStream.
+ * The function NM_COMMENT() prints a trace message. The INFO macros and the
+ * NMLOG macro are provided for legacy compatibility. They are deprecated and
+ * should not be used. If sprintf() type of formatting is desired, consider
+ * using QString::arg() or QTextStream.
  */
 #if COMMENT_TRACES
 
@@ -88,6 +88,7 @@
     __msg.sprintf(msg,arg1,arg2,arg3);\
     NM_COMMENT(__msg);\
 } while (0)
+#define NMLOG(msg) NM_COMMENT(msg)
 
 #else
 
@@ -96,6 +97,7 @@
 #define INFO_1(msg,arg1)
 #define INFO_2(msg,arg1,arg2)
 #define INFO_3(msg,arg1,arg2,arg3)
+#define NMLOG(msg)
 
 #endif /* COMMENT_TRACES */
 
@@ -177,7 +179,7 @@
     QString fn;
 };
 
-#define NM_FUNCTION __ftracer __ft(__PRETTY_FUNCTION__);
+#define NM_FUNCTION __ftracer __ft(__PRETTY_FUNCTION__)
 #define FUNC_LOG NM_FUNCTION
 
 #else
--- a/emailservices/emailframework/inc/CFSMailPlugin.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailframework/inc/CFSMailPlugin.h	Fri May 28 13:56:43 2010 +0300
@@ -529,7 +529,25 @@
      virtual void DeleteMessagesByUidL( const TFSMailMsgId& aMailBoxId,
                                         const TFSMailMsgId& aFolderId,
                                         const RArray<TFSMailMsgId>& aMessages ) = 0;
-
+     
+// <qmail>
+     /**
+      * deletes email defined by message id
+      *
+      * @param aMailBoxId id of the mailbox containing email
+      * @param aFolderId email parent folder id
+      * @param aMessages ids of messages to be deleted
+      * @param aOperationObserver Observer for the operation 
+      * @param aRequestId id of the operation
+      * @return KErrNone if this method is supported, KErrNotSupported if not
+      */
+      virtual void DeleteMessagesByUidL( const TFSMailMsgId& aMailBoxId,
+                                         const TFSMailMsgId& aFolderId,
+                                         const RArray<TFSMailMsgId>& aMessages,
+                                         MFSMailRequestObserver& aOperationObserver,
+                                         const TInt aRequestId );
+// </qmail>
+      
     /**
      * creates new email template into drafts folder
      *
--- a/emailservices/emailframework/inc/CFSMailPlugin.inl	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailframework/inc/CFSMailPlugin.inl	Fri May 28 13:56:43 2010 +0300
@@ -164,4 +164,16 @@
     {
     User::Leave( KErrFSMailPluginNotSupported );
     }
+
+// -----------------------------------------------------------------------------
+// CFSMailPlugin::DeleteMessagesByUidL
+// -----------------------------------------------------------------------------
+inline void CFSMailPlugin::DeleteMessagesByUidL( const TFSMailMsgId& /*aMailBoxId*/,
+                                   const TFSMailMsgId& /*aFolderId*/,
+                                   const RArray<TFSMailMsgId>& /*aMessages*/,
+                                   MFSMailRequestObserver& /*aOperationObserver*/,
+                                   const TInt /*aRequestId*/ )
+    {
+    User::Leave( KErrFSMailPluginNotSupported );
+    }
 // </qmail>
--- a/emailservices/emailframework/src/CFSFWImplementation.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailframework/src/CFSFWImplementation.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,11 +15,12 @@
 *
 */
 
+#include "emailtrace.h"
+
 //<qmail>
 #include <nmcommonheaders.h>
 //</qmail>
 
-#include "emailtrace.h"
 #include "CFSFWImplementation.h"
 //<cmail>
 #include "CFSMailPlugin.h"
@@ -32,7 +33,8 @@
 // -----------------------------------------------------------------------------
 CFSFWImplementation::CFSFWImplementation()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	iPluginManager = NULL;
 }
 
@@ -41,7 +43,8 @@
 // -----------------------------------------------------------------------------
 CFSFWImplementation::~CFSFWImplementation()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	delete iPluginManager;
 }
 // -----------------------------------------------------------------------------
@@ -49,11 +52,12 @@
 // -----------------------------------------------------------------------------
 CFSFWImplementation* CFSFWImplementation::NewLC(TInt aConfiguration)
 {
-    FUNC_LOG;
-  CFSFWImplementation* impl = new (ELeave) CFSFWImplementation();
-  CleanupStack:: PushL(impl);
-  impl->ConstructL(aConfiguration);
-  return impl;
+    NM_FUNCTION;
+    
+    CFSFWImplementation* impl = new (ELeave) CFSFWImplementation();
+    CleanupStack:: PushL(impl);
+    impl->ConstructL(aConfiguration);
+    return impl;
 } 
 
 // -----------------------------------------------------------------------------
@@ -61,10 +65,11 @@
 // -----------------------------------------------------------------------------
 CFSFWImplementation* CFSFWImplementation::NewL(TInt aConfiguration)
 {
-    FUNC_LOG;
-  CFSFWImplementation* impl =  CFSFWImplementation::NewLC(aConfiguration);
-  CleanupStack:: Pop(impl);
-  return impl;
+    NM_FUNCTION;
+    
+    CFSFWImplementation* impl =  CFSFWImplementation::NewLC(aConfiguration);
+    CleanupStack:: Pop(impl);
+    return impl;
 }
 
 // -----------------------------------------------------------------------------
@@ -72,7 +77,8 @@
 // -----------------------------------------------------------------------------
 void CFSFWImplementation::ConstructL(TInt aConfiguration)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	// create plugin manager
 	iPluginManager = CFSMailPluginManager::NewL(aConfiguration);
 }
@@ -82,7 +88,8 @@
 // -----------------------------------------------------------------------------
 CFSMailPluginManager& CFSFWImplementation::GetPluginManager( )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	return *iPluginManager;
 }
 
--- a/emailservices/emailframework/src/CFSMailBrand.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailframework/src/CFSMailBrand.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,11 +15,12 @@
 *
 */
 
+#include "emailtrace.h"
+
 //<qmail>
 #include <nmcommonheaders.h>
 //</qmail>
 
-#include "emailtrace.h"
 #include <barsread.h>
 //<qmail> Commented out in Qmail
 //#include <AknIconUtils.h>
@@ -45,7 +46,8 @@
 // -----------------------------------------------------------------------------
 CFSMailBrand* CFSMailBrand::NewL( TResourceReader& aReader, TBool aIsWhiteLabel )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	CFSMailBrand* brManager =  CFSMailBrand::NewLC(aReader, aIsWhiteLabel);
   	CleanupStack:: Pop(brManager);
   	return brManager;
@@ -56,7 +58,8 @@
 // -----------------------------------------------------------------------------
 CFSMailBrand* CFSMailBrand::NewLC( TResourceReader& aReader, TBool aIsWhiteLabel )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     CFSMailBrand* self = new ( ELeave ) CFSMailBrand();
     CleanupStack::PushL( self );
     if ( aIsWhiteLabel )
@@ -76,7 +79,7 @@
 // -----------------------------------------------------------------------------
 void CFSMailBrand::ConstructFromCenrepL( )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
     
 	/*
     TBuf<KMaxStringLenFromCenrep> tBuf; // Temporary buffer
@@ -144,7 +147,7 @@
 // -----------------------------------------------------------------------------
 void CFSMailBrand::ConstructFromResourceL( TResourceReader& aReader )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
 
     // read icon filepath
     iIconFilePath = aReader.ReadHBufCL();
@@ -206,7 +209,8 @@
 // -----------------------------------------------------------------------------
 CFSMailBrand::~CFSMailBrand()
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	iBrandMatchStrings.ResetAndDestroy();
 	delete iIconFilePath;
 	delete iGraphicElements;
@@ -221,7 +225,8 @@
 // -----------------------------------------------------------------------------
 CFSMailBrand::CFSMailBrand()
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 		// prepare null empty descriptor
 	iEmpty = HBufC::New(1);
 	iEmpty->Des().Copy(KNullDesC());
@@ -233,7 +238,7 @@
 // -----------------------------------------------------------------------------
 TBool CFSMailBrand::IsMatching( const TDesC& aBrandId )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
 
     TInt count = iBrandMatchStrings.Count();
     for(TInt i=0;i<count;i++)
@@ -251,7 +256,8 @@
 // -----------------------------------------------------------------------------
 TDesC& CFSMailBrand::GetText( TFSBrandElement aElementId )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     TInt textCount( iTextElements->Count() );
 
     for ( TInt i( 0 ); i < textCount; i++ )
@@ -270,7 +276,8 @@
 // -----------------------------------------------------------------------------
 TInt CFSMailBrand::GetColor( TFSBrandElement aElementId, TRgb& aColor )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     TInt colorCount( iColorElements->Count() );
 
     for ( TInt i( 0 ); i < colorCount; i++ )
@@ -290,7 +297,8 @@
 // -----------------------------------------------------------------------------
 CGulIcon* CFSMailBrand::GetGraphicL( TFSBrandElement aElementId )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     TInt graphicsCount( iGraphicElements->Count() );
 
     for ( TInt i( 0 ); i < graphicsCount; i++ )
@@ -340,7 +348,7 @@
 TInt CFSMailBrand::GetGraphicIdsL( TFSBrandElement aElementId,
                                    TDes& aIconIds)
     {
-    FUNC_LOG;
+    NM_FUNCTION;
     
     aIconIds.Zero();
     TInt graphicsCount( iGraphicElements->Count() );
--- a/emailservices/emailframework/src/CFSMailBrandManagerImpl.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailframework/src/CFSMailBrandManagerImpl.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,11 +15,12 @@
 *
 */
 
+#include "emailtrace.h"
+
 //<qmail>
 #include <nmcommonheaders.h>
 //</qmail>
 
-#include "emailtrace.h"
 #include <FSMAILBRANDMANAGER.rsg>
 #include <barsread.h>
 #include <bautils.h>
@@ -61,6 +62,8 @@
 #ifdef __WINS__
 LOCAL_C void RetrieveNextToken( TDes8& aContent, TDes& aToken )	
 	{
+    NM_FUNCTION;
+    
 	_LIT8( KComma, "," );
 	TInt pos = aContent.Find( KComma );
 	if ( pos != KErrNotFound ) 
@@ -80,8 +83,7 @@
     CFSMailClient& aMailClient ) :
     iMailClient( aMailClient )
 	{
-    FUNC_LOG;
-
+    NM_FUNCTION;
 	}
 
 // -----------------------------------------------------------------------------
@@ -89,7 +91,7 @@
 // -----------------------------------------------------------------------------
 void CFSMailBrandManagerImpl::ConstructL()
     {
-    FUNC_LOG;
+    NM_FUNCTION;
 
     // Read resource file, get the drive letter according to the DLL drive
     TFileName dllFileName;
@@ -126,7 +128,7 @@
 // -----------------------------------------------------------------------------
 CFSMailBrandManagerImpl::~CFSMailBrandManagerImpl()
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
 	
 	iResourceFile.Close();
     iFsSession.Close();
@@ -144,7 +146,8 @@
 CFSMailBrandManagerImpl* CFSMailBrandManagerImpl::NewL(
     CFSMailClient& aMailClient )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     CFSMailBrandManagerImpl* self =
         CFSMailBrandManagerImpl::NewLC( aMailClient );
     CleanupStack::Pop( self );
@@ -157,7 +160,8 @@
 CFSMailBrandManagerImpl* CFSMailBrandManagerImpl::NewLC(
     CFSMailClient& aMailClient )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     CFSMailBrandManagerImpl* self =
         new( ELeave ) CFSMailBrandManagerImpl( aMailClient );
     CleanupStack::PushL( self );
@@ -170,7 +174,7 @@
 // -----------------------------------------------------------------------------
 void CFSMailBrandManagerImpl::UpdateMailboxNamesL( const TFSMailMsgId aMailBoxId )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
     
     // list all mailboxes
     RPointerArray<CFSMailBox> mailBoxes;
@@ -220,7 +224,8 @@
     TFSBrandElement aElement, 
 	const TFSMailMsgId& aMailboxId )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	CFSMailBox* mailBox( NULL );
 	TRAPD( mailboxError,
 	       mailBox = iMailClient.GetMailBoxByUidL( aMailboxId ) );
@@ -250,7 +255,8 @@
     TFSBrandElement aElement, 
     const TDesC& aBrandId )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     CFSMailBrand* brand = FindMatchingBrandL( aBrandId );
     if ( brand == NULL )
         {
@@ -267,7 +273,8 @@
 	const TFSMailMsgId& aMailboxId,
     TDes& aIconIds  )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	CFSMailBox* mailBox( NULL );
 	TRAPD( mailboxError,
 	       mailBox = iMailClient.GetMailBoxByUidL( aMailboxId ) );
@@ -298,7 +305,7 @@
     const TDesC& aBrandId,
     TDes& aIconIds  )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
 
     CFSMailBrand* brand = FindMatchingBrandL( aBrandId );
     if ( brand == NULL )
@@ -315,7 +322,8 @@
     TFSBrandElement aElement,
     const TFSMailMsgId& aMailboxId )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	CFSMailBox* mailBox( NULL );
 	TRAPD( mailboxError,
 	       mailBox = iMailClient.GetMailBoxByUidL( aMailboxId ) );
@@ -345,7 +353,7 @@
 	TFSBrandElement aElement,
 	const TDesC& aBrandId )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
 
 	CFSMailBrand* brand = FindMatchingBrandL( aBrandId );
 	if ( brand == NULL )
@@ -364,7 +372,8 @@
     const TFSMailMsgId& aMailboxId,
     TRgb& aColor )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	CFSMailBox* mailBox = iMailClient.GetMailBoxByUidL( aMailboxId );
 	User::LeaveIfNull( mailBox );
     CleanupStack::PushL( mailBox );    
@@ -385,7 +394,8 @@
 // -----------------------------------------------------------------------------
 void CFSMailBrandManagerImpl::ConstructFromResourceL( TResourceReader& aReader )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	iBrands = new ( ELeave )
 				CArrayPtrSeg< CFSMailBrand >( KBrandArrayGranularity );
 						
@@ -411,7 +421,8 @@
 // -----------------------------------------------------------------------------
 CFSMailBrand* CFSMailBrandManagerImpl::FindMatchingBrandL( const TDesC& aBrandId )
     {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     if( aBrandId.Length() )
         {
         TInt brandCount( iBrands->Count() );
@@ -430,6 +441,8 @@
 CFSMailBox* CFSMailBrandManagerImpl::MailboxMatchingBrandIdL(
     const TDesC& aBrandId ) const
     {    
+    NM_FUNCTION;
+    
     RPointerArray<CFSMailBox> mailboxes;
 
     CleanupResetAndDestroyPushL( mailboxes );
@@ -471,6 +484,8 @@
 // -----------------------------------------------------------------------------
 void CFSMailBrandManagerImpl::GetMCCValueL( TDes& aMcc ) const
     {
+    NM_FUNCTION;
+    
     aMcc.Zero();
     
     TInt err = KErrNone;
@@ -561,6 +576,8 @@
 // 
 void CFSMailBrandManagerImpl::GetMCCValueFromSIML( TDes& aMcc ) const
     {
+    NM_FUNCTION;
+    
     RTelServer telServer;
 
     CleanupClosePushL( telServer );
@@ -601,6 +618,8 @@
 // 
 TUint8 CFSMailBrandManagerImpl::GetCurrentCountryL() const
     {
+    NM_FUNCTION;
+    
     CTzLocalizer* localizer = CTzLocalizer::NewLC();
 
     CTzLocalizedCity* city = localizer->GetFrequentlyUsedZoneCityL(
@@ -627,6 +646,8 @@
 void CFSMailBrandManagerImpl::VerifyMailAccountName(
         TPtrC& aBrandedName ) const
     {
+    NM_FUNCTION;
+    
     // Due to legal reasons we don't show brand name "Gmail" in Germany and UK
     if ( !aBrandedName.CompareF( KBrandNameGmail ) )
         {
--- a/emailservices/emailframework/src/CFSMailClient.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailframework/src/CFSMailClient.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,11 +15,12 @@
 *
 */
 
+#include "emailtrace.h"
+
 //<qmail>
 #include <nmcommonheaders.h>
 //</qmail>
 
-#include "emailtrace.h"
 #include "CFSMailClient.h"
 #include "CFSFWImplementation.h"
 #include "CFSMailPluginManager.h"
@@ -34,7 +35,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailClient* CFSMailClient::NewLC(TInt aConfiguration)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
 
 	CFSMailClient* client = Instance();
 	if(!client)
@@ -61,10 +62,11 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailClient* CFSMailClient::NewL()
 {
-    FUNC_LOG;
-  CFSMailClient* client =  CFSMailClient::NewLC(EFSLoadPlugins);
-  CleanupStack:: Pop(client);
-  return client;
+    NM_FUNCTION;
+    
+    CFSMailClient* client =  CFSMailClient::NewLC(EFSLoadPlugins);
+    CleanupStack:: Pop(client);
+    return client;
 }
 
 // -----------------------------------------------------------------------------
@@ -72,11 +74,11 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailClient* CFSMailClient::NewL(TInt aConfiguration)
 {
-    FUNC_LOG;
-
-  CFSMailClient* client =  CFSMailClient::NewLC(aConfiguration);
-  CleanupStack:: Pop(client);
-  return client;
+    NM_FUNCTION;
+    
+    CFSMailClient* client =  CFSMailClient::NewLC(aConfiguration);
+    CleanupStack:: Pop(client);
+    return client;
 }
 
 // -----------------------------------------------------------------------------
@@ -84,7 +86,8 @@
 // -----------------------------------------------------------------------------
 void CFSMailClient::ConstructL(TInt aConfiguration)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	iFWImplementation = CFSFWImplementation::NewL(aConfiguration);
 }
 
@@ -93,7 +96,8 @@
 // -----------------------------------------------------------------------------
 CFSMailClient::CFSMailClient()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	// clear pointers
 	iFWImplementation = NULL;
 	iBrandManager = NULL;
@@ -105,7 +109,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailClient::~CFSMailClient()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	if(iBrandManager)
 		{
 		delete iBrandManager;
@@ -118,7 +123,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CFSMailBox* CFSMailClient::GetMailBoxByUidL(const TFSMailMsgId aMailBoxId)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	// select plugin
 	CFSMailBox* mailBox = NULL;
 	CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aMailBoxId);
@@ -137,7 +143,8 @@
 EXPORT_C CFSMailFolder* CFSMailClient::GetFolderByUidL( const TFSMailMsgId aMailBoxId,
 													   const TFSMailMsgId aFolderId )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	CFSMailFolder* folder = NULL;
 	
 	// select plugin
@@ -158,7 +165,8 @@
 														 const TFSMailMsgId aMessageId,
 														 const TFSMailDetails aDetails)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	CFSMailMessage* message = NULL;
     // select plugin
     CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aMessageId);
@@ -178,7 +186,8 @@
 												   const TFSMailMsgId aFolderId,
 											 	   const RArray<TFSMailMsgId>& aMessages )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aFolderId);
 	if(plugin)
 	{
@@ -192,7 +201,8 @@
 EXPORT_C TInt CFSMailClient::DeleteMailBoxByUidL( const TFSMailMsgId aMailBoxId,
  								  MFSMailRequestObserver& aOperationObserver )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	// select plugin
 	CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aMailBoxId);
 	if(plugin)
@@ -218,7 +228,7 @@
 EXPORT_C TInt CFSMailClient::ListMailBoxes(const TFSMailMsgId aPlugin,
 											 RPointerArray<CFSMailBox>& aMailBoxes)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
 
 	RArray<TFSMailMsgId> mailBoxList;
 	mailBoxList.Reset();
@@ -311,7 +321,7 @@
         						const TFSMailMsgId aFolderId, const TFSMailDetails aDetails,
         						const RArray<TFSMailSortCriteria>& aSorting)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
 
 	MFSMailIterator* iterator = NULL;
 	MFSMailIterator* pluginIterator = NULL;
@@ -339,7 +349,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C MFSMailBrandManager& CFSMailClient::GetBrandManagerL( void )
 {
-    FUNC_LOG;
+    NM_FUNCTION;
 
 	if(iBrandManager == NULL)
 		{
@@ -360,7 +370,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailClient::AddObserverL(MFSMailEventObserver& aObserver)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	for(TInt i=0;i<iFWImplementation->GetPluginManager().GetPluginCount();i++)
 		{
 		CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByIndex(i);
@@ -376,7 +387,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailClient::RemoveObserver(MFSMailEventObserver& aObserver)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	for(TInt i=0;i<iFWImplementation->GetPluginManager().GetPluginCount();i++)
 	{
 		CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByIndex(i);
@@ -392,7 +404,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailClient::UnregisterRequestObserver(TInt aRequestId)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	for(TInt i=0;i<iFWImplementation->GetPluginManager().GetPluginCount();i++)
 	{
 		if(CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByIndex(i))
@@ -409,7 +422,8 @@
 EXPORT_C void CFSMailClient::SubscribeMailboxEventsL(TFSMailMsgId aMailBoxId,
 													 	MFSMailEventObserver& aObserver)
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	// select plugin
 	if(CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aMailBoxId))
 		{
@@ -424,7 +438,8 @@
 EXPORT_C void CFSMailClient::UnsubscribeMailboxEvents(TFSMailMsgId aMailBoxId,
 														MFSMailEventObserver& aObserver)
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	// select plugin
 	if(CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid(aMailBoxId))
 		{
@@ -438,7 +453,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TInt CFSMailClient::WizardDataAvailableL()
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
 	
 	TInt ret = KErrNone;
 	for(TInt i=0;i<iFWImplementation->GetPluginManager().GetPluginCount();i++)
@@ -465,7 +480,7 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TInt CFSMailClient::AuthenticateL(MFSMailRequestObserver& aOperationObserver)
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
 
 	TInt requestId(0);
 	
@@ -496,7 +511,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailClient::CleanTempDirL( )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
     iFWImplementation->GetPluginManager().CleanTempDirL();	
 	}
 
@@ -505,7 +521,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TDesC& CFSMailClient::GetTempDirL( )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	return iFWImplementation->GetPluginManager().GetTempDirL();
 	}
 
@@ -514,7 +531,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailClient::CancelL( const TInt aRequestId )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	iFWImplementation->GetPluginManager().CancelRequestL(aRequestId);
 	}
 
@@ -523,7 +541,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailClient::CancelAllL( )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 		iFWImplementation->GetPluginManager().CancelAllRequestsL();
 	}
 
@@ -532,7 +551,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailClient::SetMailboxName( const TFSMailMsgId aMailboxId, const TDesC& aMailboxName )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	CFSMailPlugin* plugin = iFWImplementation->GetPluginManager().GetPluginByUid( aMailboxId );
 	if ( plugin )
 		{
@@ -545,7 +565,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailClient::Close()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	CFSMailClient* instance = Instance();
 	if(!instance)
 	{
@@ -569,7 +590,8 @@
 // -----------------------------------------------------------------------------
 CFSMailClient* CFSMailClient::Instance()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	return static_cast<CFSMailClient*>(Dll::Tls());
 }
 
@@ -578,7 +600,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C TInt CFSMailClient::IncReferenceCount()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	return ++iReferenceCount;
 }
 
@@ -587,7 +610,8 @@
 // -----------------------------------------------------------------------------
 TInt CFSMailClient::DecReferenceCount()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	return --iReferenceCount;
 }
 
@@ -596,6 +620,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C void CFSMailClient::ReleaseExtension( CEmailExtension* aExtension )
     {
+    NM_FUNCTION;
+    
     CExtendableEmail::ReleaseExtension( aExtension );
     }
 
@@ -604,6 +630,8 @@
 // -----------------------------------------------------------------------------
 EXPORT_C CEmailExtension* CFSMailClient::ExtensionL( const TUid& aInterfaceUid )
     {
+    NM_FUNCTION;
+    
     return CExtendableEmail::ExtensionL( aInterfaceUid );
     }
     
--- a/emailservices/emailframework/src/CFSMailEventObserver.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailframework/src/CFSMailEventObserver.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,11 +15,12 @@
 *
 */
 
+#include "emailtrace.h"
+
 //<qmail>
 #include <nmcommonheaders.h>
 //</qmail>
 
-#include "emailtrace.h"
 #include "CFSClientRequestObserver.h"
 
 // ================= MEMBER FUNCTIONS ==========================================
@@ -28,8 +29,7 @@
 // -----------------------------------------------------------------------------
 CFSClientRequestObserver::CFSClientRequestObserver()
 {
-    FUNC_LOG;
-
+    NM_FUNCTION;
 }
 
 // -----------------------------------------------------------------------------
@@ -37,19 +37,19 @@
 // -----------------------------------------------------------------------------
 CFSClientRequestObserver::~CFSClientRequestObserver()
 {
-    FUNC_LOG;
-
+    NM_FUNCTION;
 }
 // -----------------------------------------------------------------------------
 // CFSClientRequestObserver::NewLC
 // -----------------------------------------------------------------------------
 CFSClientRequestObserver* CFSClientRequestObserver::NewLC()
 {
-    FUNC_LOG;
-  CFSClientRequestObserver* obs = new (ELeave) CFSClientRequestObserver();
-  CleanupStack:: PushL(obs);
-  obs->ConstructL();
-  return obs;
+    NM_FUNCTION;
+    
+    CFSClientRequestObserver* obs = new (ELeave) CFSClientRequestObserver();
+    CleanupStack:: PushL(obs);
+    obs->ConstructL();
+    return obs;
 } 
 
 // -----------------------------------------------------------------------------
@@ -57,10 +57,11 @@
 // -----------------------------------------------------------------------------
 CFSClientRequestObserver* CFSClientRequestObserver::NewL()
 {
-    FUNC_LOG;
-  CFSClientRequestObserver* obs =  CFSClientRequestObserver::NewLC();
-  CleanupStack:: Pop(obs);
-  return obs;
+    NM_FUNCTION;
+    
+    CFSClientRequestObserver* obs =  CFSClientRequestObserver::NewLC();
+    CleanupStack:: Pop(obs);
+    return obs;
 }
 
 // -----------------------------------------------------------------------------
@@ -68,8 +69,7 @@
 // -----------------------------------------------------------------------------
 void CFSClientRequestObserver::ConstructL()
 {
-    FUNC_LOG;
-
+    NM_FUNCTION;
 }
 
 // -----------------------------------------------------------------------------
@@ -77,8 +77,7 @@
 // -----------------------------------------------------------------------------
 void CFSClientRequestObserver::ListMessagesResponse( RPointerArray<CFSMailMessage>& aMessages )
 {
-    FUNC_LOG;
-	
+    NM_FUNCTION;
 }
 
 
--- a/emailservices/emailframework/src/CFSMailPluginManager.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailframework/src/CFSMailPluginManager.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,10 +15,11 @@
 *
 */
 
+#include "emailtrace.h"
+
 //<qmail>
 #include <nmcommonheaders.h>
 //</qmail>
-#include "emailtrace.h"
 #include "CFSMailPluginManager.h"
 #include "CFSMailRequestObserver.h"
 #include "CFSMailRequestHandler.h"
@@ -29,8 +30,7 @@
 // -----------------------------------------------------------------------------
 CFSMailPluginManager::CFSMailPluginManager()
 {
-    FUNC_LOG;
-
+    NM_FUNCTION;
 }
 
 // -----------------------------------------------------------------------------
@@ -38,7 +38,8 @@
 // -----------------------------------------------------------------------------
 CFSMailPluginManager::~CFSMailPluginManager()
 {
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	iPluginInfo.ResetAndDestroy();
 }
 
@@ -48,11 +49,12 @@
 // -----------------------------------------------------------------------------
 CFSMailPluginManager* CFSMailPluginManager::NewLC(TInt aConfiguration)
 {
-    FUNC_LOG;
-  CFSMailPluginManager* pluginManager = new (ELeave) CFSMailPluginManager();
-  CleanupStack:: PushL(pluginManager);
-  pluginManager->ConstructL(aConfiguration);
-  return pluginManager;
+    NM_FUNCTION;
+    
+    CFSMailPluginManager* pluginManager = new (ELeave) CFSMailPluginManager();
+    CleanupStack:: PushL(pluginManager);
+    pluginManager->ConstructL(aConfiguration);
+    return pluginManager;
 } 
 
 // -----------------------------------------------------------------------------
@@ -60,10 +62,11 @@
 // -----------------------------------------------------------------------------
 CFSMailPluginManager* CFSMailPluginManager::NewL(TInt aConfiguration)
 {
-    FUNC_LOG;
-  CFSMailPluginManager* pluginManager =  CFSMailPluginManager::NewLC(aConfiguration);
-  CleanupStack:: Pop(pluginManager);
-  return pluginManager;
+    NM_FUNCTION;
+    
+    CFSMailPluginManager* pluginManager =  CFSMailPluginManager::NewLC(aConfiguration);
+    CleanupStack:: Pop(pluginManager);
+    return pluginManager;
 }
 
 // -----------------------------------------------------------------------------
@@ -71,7 +74,7 @@
 // -----------------------------------------------------------------------------
 void CFSMailPluginManager::ConstructL(TInt aConfiguration)
 {
-    FUNC_LOG;
+    NM_FUNCTION;
 
 	// list plugin implementations
 
@@ -110,8 +113,7 @@
 // -----------------------------------------------------------------------------
 void CFSMailPluginManager::LoadPluginL( TUid /*aPlugin*/ )
 {
-    FUNC_LOG;
-
+    NM_FUNCTION;
 }
 	
 // -----------------------------------------------------------------------------
@@ -119,7 +121,8 @@
 // -----------------------------------------------------------------------------
 CFSMailPlugin* CFSMailPluginManager::GetPluginByIndex(TUint aIndex)
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	return iPluginList[aIndex]->iPlugin;
 	}
 
@@ -128,7 +131,8 @@
 // -----------------------------------------------------------------------------
 TUid CFSMailPluginManager::GetPluginIdByIndex(TUint aIndex)
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	return iPluginList[aIndex]->iPluginId;
 	}
 
@@ -137,7 +141,8 @@
 // -----------------------------------------------------------------------------
 TUint CFSMailPluginManager::GetPluginCount( )
 	{
-    FUNC_LOG;
+    NM_FUNCTION;
+    
 	return iPluginList.Count();
 	}
 	
--- a/emailservices/emailstore/base_plugin/src/baseplugindelayedops.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailstore/base_plugin/src/baseplugindelayedops.cpp	Fri May 28 13:56:43 2010 +0300
@@ -241,6 +241,8 @@
     __LOG_ENTER( "DeleteMessagesInChunksL" );
     TBool done=EFalse;
     TInt endIndex;
+//<qmail>
+    TInt result(KErrNone);
     if( aStartIndex + KSizeOfChunk < iMessages.Count() )
         {
             endIndex = aStartIndex + KSizeOfChunk;
@@ -260,18 +262,30 @@
         
         if ( EFalse == iImmediateDelete )
             {
-            //try to find the message in the deleted items folder.
+            //try to find the message
             CMsgStoreMessage* theMessage = NULL;
-            TRAP_IGNORE( theMessage = mailBox.FetchMessageL(
-              msgId, mailBoxInfo.iRootFolders.iFolders[EFSDeleted] ) );
-            
-            if ( NULL == theMessage )
+            theMessage = mailBox.FetchMessageL(
+                                      msgId, KMsgStoreInvalidId ) ;
+            //save parentId
+            TMsgStoreId msgParentId;
+            msgParentId =theMessage->ParentId();
+            //check if message is in deleted folder or not.
+            if ( msgParentId != mailBoxInfo.iRootFolders.iFolders[EFSDeleted] )
                 {
-                //if not in deleted items then move it there.
+            	//if not in deleted items then move it there.
                 __LOG_WRITE8_FORMAT1_INFO("Moving message 0x%X to the deleted items.", msgId );
-                mailBox.MoveMessageL(
+                TRAP(result,mailBox.MoveMessageL(
                    msgId, KMsgStoreInvalidId,
-                   mailBoxInfo.iRootFolders.iFolders[EFSDeleted] );
+                   mailBoxInfo.iRootFolders.iFolders[EFSDeleted] ));
+                if(result == KErrNone)
+                    {
+                    GetPlugin().NotifyEventL( iMailBoxId, msgId, KMsgStoreInvalidId , TFSEventMailMoved, msgParentId);
+                    }
+                else
+                    {
+                    User::Leave(result);
+                    }
+                
                 }
             else
                 {
@@ -279,13 +293,30 @@
                 __LOG_WRITE8_FORMAT1_INFO( "Deleting message 0x%X.", msgId );
 
                 delete theMessage;
-                mailBox.DeleteMessageL( msgId, iFolderId );
+                TRAP(result,mailBox.DeleteMessageL( msgId, iFolderId ));
+                if(result == KErrNone)
+                    {
+                    GetPlugin().NotifyEventL( iMailBoxId, msgId, KMsgStoreInvalidId, TFSEventMailDeleted, iFolderId );
+                    }
+                else
+                    {
+                    User::Leave(result);
+                    }
                 }
             }
         else
-            {
-            mailBox.DeleteMessageL( msgId, iFolderId );
+            {        
+            TRAP(result,mailBox.DeleteMessageL( msgId, iFolderId ));
+            if(result == KErrNone)
+                {  
+                GetPlugin().NotifyEventL( iMailBoxId, msgId, KMsgStoreInvalidId, TFSEventMailDeleted, iFolderId );
+                }
+            else
+                {
+                User::Leave(result);
+                }
             }
+//</qmail>
         }
     __LOG_EXIT;
     return done;    
--- a/emailservices/emailstore/base_plugin/src/nestedao.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailstore/base_plugin/src/nestedao.cpp	Fri May 28 13:56:43 2010 +0300
@@ -20,7 +20,7 @@
 //
 
 
-#include "NestedAO.h"
+#include "nestedao.h"
 #include "baseplugindelayedops.h"
 #include "baseplugindelayedopsprivate.h"
 
--- a/emailservices/emailstore/emailstore.pro	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailstore/emailstore.pro	Fri May 28 13:56:43 2010 +0300
@@ -29,7 +29,8 @@
         preinstall
         
     BLD_INF_RULES.prj_exports += \
-        "rom/emailstore.iby $$CORE_APP_LAYER_IBY_EXPORT_PATH(emailstore.iby)"        
+        "rom/emailstore.iby $$CORE_APP_LAYER_IBY_EXPORT_PATH(emailstore.iby)" \
+        "sis/emailstore_stub.sis             /epoc32/data/z/system/install/emailstore_stub.sis"     
  
 }
 CONFIG += ordered
--- a/emailservices/emailstore/message_store/server/group/MessageStoreServer.mmp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/emailstore/message_store/server/group/MessageStoreServer.mmp	Fri May 28 13:56:43 2010 +0300
@@ -30,8 +30,8 @@
 CAPABILITY    CAP_CLIENT_DLL
 //<qmail>
 //VERSION       KEmailBinaryVersionNumber
+//KEmailBinaryDemandPaging
 //</qmail>
-KEmailBinaryDemandPaging
 
 MACRO DEBUG_USE_PROJECT_LOGGING_OPTIONS
 MACRO DEBUG_LOG_OPTION_ENTER
--- a/emailservices/nmailagent/inc/nmmailagent.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmailagent/inc/nmmailagent.h	Fri May 28 13:56:43 2010 +0300
@@ -23,6 +23,8 @@
 class NmMailbox;
 class NmDataPluginFactory;
 class NmDataPluginInterface;
+class HbIndicator;
+class XQSystemToneService;
 
 class NmMailboxInfo
 {
@@ -41,6 +43,7 @@
     QList<NmId> mUnreadMailIdList;
     int mOutboxMails;
     bool mActive;
+    QDateTime mLastSeenTime;
 
     NmMailboxInfo();
 };
@@ -66,7 +69,7 @@
             NmMessageEvent event,
             const NmId &folderId,
             const QList<NmId> &messageIds,
-            const NmId& mailboxId);
+            const NmId &mailboxId);
 
     void handleSyncStateEvent(
             NmSyncState state,
@@ -77,6 +80,8 @@
     void delayedStart();
 
     void enableAlertTone();
+    
+    void indicatorActivated(const QString &type, const QVariantMap &data);
 
 private:
 
@@ -84,10 +89,18 @@
 
     bool updateUnreadCount(const NmId &mailboxId, NmMailboxInfo &mailboxInfo);
 
-    int getOutboxCount(const NmId& mailboxId);
+    int getOutboxCount(const NmId &mailboxId);
+
+    NmMailboxInfo *getMailboxByType(const QString &type);
 
-    int getIndicatorIndex();
+    int getFreeIndicatorIndex();
+    
+    int getTotalUnreadCount() const;
 
+    bool updateUnreadIndicator();
+    
+    bool updateUnreadIndicator(bool active);
+    
     bool updateIndicator(bool active,
         const NmMailboxInfo& mailboxInfo);
 
@@ -108,14 +121,21 @@
     bool getMessageUnreadInfo(const NmId &folderId,
         const NmId &messageId, const NmId &mailboxId, bool &unreadMessage);
 
-    void playAlertTone();
+    bool playAlertTone();
+
+    void updateSendIndicator();
+    
+    bool launchMailbox(quint64 mailboxId);
 
 private: // data
 
+    HbIndicator *mIndicator;
+    XQSystemToneService *mSystemTone;
     NmDataPluginFactory *mPluginFactory;
     QList<NmMailboxInfo*> mMailboxes;
-    bool mSendingState;
     bool mAlertToneAllowed;
+    int mLastOutboxCount;
+    bool mUnreadIndicatorActive;
 };
 
 
--- a/emailservices/nmailagent/nmailagent.pro	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmailagent/nmailagent.pro	Fri May 28 13:56:43 2010 +0300
@@ -49,6 +49,7 @@
     TARGET.EPOCHEAPSIZE = 0x1000 0x100000 // MAX 1MB
 
     LIBS += -ldomaincli
+    LIBS += -lxqservice
 
     TARGET.UID2 = 0x100039CE
     TARGET.UID3 = 0x2002C326
--- a/emailservices/nmailagent/src/main.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmailagent/src/main.cpp	Fri May 28 13:56:43 2010 +0300
@@ -14,6 +14,9 @@
 * Description:
 *
 */
+
+#include "emailtrace.h"
+
 #include "nmmailagentheaders.h"
 #include "nmmailagent.h"
 #include "ssastartupwatcher.h"
@@ -31,7 +34,9 @@
 */
 static void startupCallback(int status)
 {
-    NMLOG(QString("nmailagent: startupCallback %1").arg(status));
+    NM_FUNCTION;
+    NM_COMMENT(QString("nmailagent: startupCallback(): status=%1").arg(status));
+    
     Q_UNUSED(status);
 
     // either it is an error or 'non critical startup' state has been reached
@@ -44,13 +49,15 @@
 */
 int main(int argc, char *argv[])
 {
+    NM_FUNCTION;
+    
     QCoreApplication app(argc, argv);
 
     agent = new NmMailAgent;
 
     CSSAStartupWatcher *startupWatcher = CSSAStartupWatcher::New(startupCallback);
     if (!startupWatcher) {
-        NMLOG("nmmailagent - watcher start failed");
+        NM_ERROR(1,"nmmailagent: watcher start failed");
         QTimer::singleShot(NmStartupDelay, agent, SLOT(delayedStart()));
     }
 
--- a/emailservices/nmailagent/src/nmmailagent.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmailagent/src/nmmailagent.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,12 +15,21 @@
 *
 */
 
+#include <xqservicerequest.h>
+#include <email_services_api.h>
+
+#include "emailtrace.h"
 #include "nmmailagentheaders.h"
 #include "nmmailagent.h"
 
+#include <xqsystemtoneservice.h>
+
 // CONSTS
 const int NmAgentIndicatorNotSet = -1;
 const int NmAgentAlertToneTimer = 60000; // 60s
+static const QString NmMailboxIndicatorType = "com.nokia.nmail.indicatorplugin_%1/1.0";
+static const QString NmSendIndicatorName = "com.nokia.nmail.indicatorplugin.send/1.0";
+static const QString NmUnreadIndicatorName = "com.nokia.nmail.indicatorplugin.unread/1.0";
 
 
 /*!
@@ -31,6 +40,8 @@
 
 NmMailboxInfo::NmMailboxInfo()
 {
+    NM_FUNCTION;
+
     mId = 0;
     mIndicatorIndex = NmAgentIndicatorNotSet;
     mSyncState = SyncComplete;
@@ -45,11 +56,14 @@
 }
 
 NmMailAgent::NmMailAgent() :
+ mIndicator(NULL),
+ mSystemTone(NULL),
  mPluginFactory(NULL),
- mSendingState(false),
- mAlertToneAllowed(true)
+ mAlertToneAllowed(true),
+ mLastOutboxCount(0),
+ mUnreadIndicatorActive(false)
 {
-    NMLOG("NmMailAgent::NmMailAgent");
+    NM_FUNCTION;
 }
 
 /*!
@@ -57,7 +71,8 @@
 */
 void NmMailAgent::delayedStart()
 {
-	NMLOG("NmMailAgent::delayedStart");
+    NM_FUNCTION;
+
 	if (!init()) {
 		// Initialisation failed. Quit the agent.
 		QCoreApplication::exit(1);
@@ -69,13 +84,20 @@
 */
 bool NmMailAgent::init()
 {
-	NMLOG("NmMailAgent::init");
+    NM_FUNCTION;
+
     mPluginFactory = NmDataPluginFactory::instance();
     if (!mPluginFactory) {
-        NMLOG("NmMailAgent::init PluginFactory not created");
+        NM_ERROR(1,"NmMailAgent::init(): PluginFactory not created");
         return false;
     }
 
+    //mSystemTone = new XQSystemToneService();
+    
+    mIndicator = new HbIndicator();
+    connect(mIndicator,SIGNAL(userActivated(const QString &, const QVariantMap&)),
+        this, SLOT(indicatorActivated(const QString&, const QVariantMap&)));
+
     QList<QObject*> *plugins = mPluginFactory->pluginInstances();
 
     foreach (QObject *plugin, *plugins) {
@@ -109,7 +131,10 @@
 
 NmMailAgent::~NmMailAgent()
 {
+    NM_FUNCTION;
+
     qDeleteAll(mMailboxes);
+    //delete mSystemTone;
     NmDataPluginFactory::releaseInstance(mPluginFactory);
 }
 
@@ -118,7 +143,8 @@
 */
 void NmMailAgent::initMailboxStatus()
 {
-    NMLOG("NmMailAgent::initMailboxStatus");
+    NM_FUNCTION;
+
     QList<NmMailbox*> mailboxes;
     QList<QObject*> *plugins = mPluginFactory->pluginInstances();
 
@@ -153,6 +179,7 @@
         }
         qDeleteAll(mailboxes);
     }
+    updateSendIndicator();
 }
 
 /*!
@@ -163,7 +190,8 @@
 */
 bool NmMailAgent::updateUnreadCount(const NmId &mailboxId, NmMailboxInfo &mailboxInfo)
 {
-    NMLOG("NmMailAgent::getUnreadCount");
+    NM_FUNCTION;
+
     int newUnreadMessages(0);
 
     NmDataPluginInterface *plugin = mPluginFactory->interfaceInstance(mailboxId);
@@ -202,8 +230,8 @@
 		// Save updated list of unread message IDs
         mailboxInfo.mUnreadMailIdList = newUnreadMessageIdList;
     }
-	NMLOG(QString("NmMailAgent::getUnreadCount count=%1 new=%2").
-	    arg(mailboxInfo.mUnreadMailIdList.count()).arg(newUnreadMessages));
+    NM_COMMENT(QString("NmMailAgent::getUnreadCount(): count=%1, new=%2").
+        arg(mailboxInfo.mUnreadMailIdList.count()).arg(newUnreadMessages));
 
     return (newUnreadMessages > 0);
 }
@@ -216,7 +244,8 @@
 */
 int NmMailAgent::getOutboxCount(const NmId &mailboxId)
 {
-    NMLOG("NmMailAgent::getOutboxCount");
+    NM_FUNCTION;
+
     int count(0);
 
     NmDataPluginInterface *plugin = mPluginFactory->interfaceInstance(mailboxId);
@@ -231,12 +260,37 @@
 		count = messageList.count();
 		qDeleteAll(messageList);
     }
-    NMLOG(QString("NmMailAgent::getOutboxCount count=%1").arg(count));
+    NM_COMMENT(QString("NmMailAgent::getOutboxCount(): count=%1").arg(count));
 
     return count;
 }
 
 /*!
+    Get list of unread counts in active mailboxes
+	\returns total number of unread mails
+*/
+int NmMailAgent::getTotalUnreadCount() const
+{
+    int unreads = 0;
+    foreach (const NmMailboxInfo *mailbox, mMailboxes) {
+        if (mailbox->mActive) {
+            unreads += mailbox->mUnreadMailIdList.count();
+        }
+    }
+    return unreads;
+}
+
+/*!
+    Update the "@" indicator state according to unread state
+    \return true if the indicator was activated
+*/
+bool NmMailAgent::updateUnreadIndicator()
+{
+    int unreads = getTotalUnreadCount();
+    return updateUnreadIndicator(unreads>0);
+}
+
+/*!
     Update the mailbox visibility and status
     \param mailboxId id of the mailbox
     \param active visibility state of the mailbox
@@ -246,14 +300,7 @@
 bool NmMailAgent::updateMailboxState(const NmId &mailboxId,
     bool active, bool refreshAlways)
 {
-    // Update the global sending state
-    mSendingState = false;
-    foreach (NmMailboxInfo *mailboxInfo, mMailboxes) {
-        if (mailboxInfo->mOutboxMails>0) {
-            mSendingState = true;
-            break;
-        }
-    }
+    NM_FUNCTION;
 
     NmMailboxInfo *mailboxInfo = getMailboxInfo(mailboxId);
     bool changed = false;
@@ -264,7 +311,7 @@
         if (active) {
             // Mailbox is not yet assigned to any indicator
             if (mailboxInfo->mIndicatorIndex < 0) {
-                mailboxInfo->mIndicatorIndex = getIndicatorIndex();
+                mailboxInfo->mIndicatorIndex = getFreeIndicatorIndex();
             }
 
             updateIndicator(true,*mailboxInfo);
@@ -290,11 +337,12 @@
 bool NmMailAgent::updateIndicator(bool active,
     const NmMailboxInfo& mailboxInfo)
 {
-    NMLOG(QString("NmMailAgent::updateIndicator index=%1 active=%2").
+    NM_FUNCTION;
+    NM_COMMENT(QString("NmMailAgent::updateIndicator(): index=%1, active=%2").
         arg(mailboxInfo.mIndicatorIndex).arg(active));
 
     bool ok = false;
-    QString name = QString("com.nokia.nmail.indicatorplugin_%1/1.0").
+    QString name = QString(NmMailboxIndicatorType).
         arg(mailboxInfo.mIndicatorIndex);
 
     QList<QVariant> list;
@@ -305,15 +353,62 @@
     list.append(mailboxInfo.mConnectState);
     list.append(mailboxInfo.mOutboxMails);
     list.append(mailboxInfo.mIconName);
-    list.append(mSendingState);
+    list.append(mLastOutboxCount);
 
-    HbIndicator indicator;
     if (active) {
-        ok = indicator.activate(name,list);
+        ok = mIndicator->activate(name,list);
     }
     else {
-        ok = indicator.deactivate(name,list);
+        ok = mIndicator->deactivate(name,list);
+    }
+
+    updateUnreadIndicator();
+
+    return ok;
+}
+
+/*!
+    update the unread indicator state
+    \return true if the indicator was activated
+*/
+bool NmMailAgent::updateUnreadIndicator(bool active)
+{
+    NM_FUNCTION;
+    bool activated = false;
+
+    if (active) {
+        mIndicator->activate(NmUnreadIndicatorName);
+        if (!mUnreadIndicatorActive) {
+            activated = true;
+        }
     }
+    else {
+        mIndicator->deactivate(NmUnreadIndicatorName);
+    }
+    mUnreadIndicatorActive = active;
+    
+    return activated;
+}
+
+/*!
+    Opens inbox view to specific mailbox
+    \return true if inbox is succesfully opened
+*/
+bool NmMailAgent::launchMailbox(quint64 mailboxId)
+{
+    NM_FUNCTION;
+
+    XQServiceRequest request(
+        emailFullServiceNameMailbox,
+        emailOperationViewInbox,
+        true);
+
+    QList<QVariant> list;
+    list.append(QVariant(mailboxId));
+
+    request.setArguments(list);
+    bool ok = request.send();
+    NM_COMMENT(QString("Launch ok=%1 error=%2").arg(ok).arg(request.latestError()));
     return ok;
 }
 
@@ -321,8 +416,10 @@
     Get next free indicator index, starting from 0
     @return index of the indicator that is available
  */
-int NmMailAgent::getIndicatorIndex()
+int NmMailAgent::getFreeIndicatorIndex()
 {
+    NM_FUNCTION;
+
     int index = 0;
     bool found(false);
     do {
@@ -345,7 +442,8 @@
 */
 void NmMailAgent::handleMailboxEvent(NmMailboxEvent event, const QList<NmId> &mailboxIds)
 {
-    NMLOG(QString("NmMailAgent::handleMailboxEvent %1").arg(event));
+    NM_FUNCTION;
+    NM_COMMENT(QString("NmMailAgent::handleMailboxEvent(): event=%1").arg(event));
 
     switch(event) {
         case NmMailboxCreated:
@@ -381,6 +479,7 @@
                 // Will hide also the indicator
                 removeMailboxInfo(mailboxId);
             }
+            updateUnreadIndicator();
             break;
         default:
             break;
@@ -388,6 +487,47 @@
 }
 
 /*!
+   Map the type name to mailbox info
+    \return NULL if no mailbox match the type
+*/
+NmMailboxInfo *NmMailAgent::getMailboxByType(const QString &type)
+{
+    foreach (NmMailboxInfo *mailbox, mMailboxes) {
+        // mailbox is shown in indicators
+        if (mailbox->mIndicatorIndex >= 0 && mailbox->mActive) {
+            QString typeName = QString(NmMailboxIndicatorType).arg(mailbox->mIndicatorIndex);
+
+            // type names match(!)
+            if(type==typeName) {
+                return mailbox;
+            }
+        }
+    }
+    return NULL;
+}
+
+/*!
+    Called when indicator is clicked from the indicator menu
+    - indicator will be hide from the menu
+    - mailbox will be launched
+*/
+void NmMailAgent::indicatorActivated(const QString &type, const QVariantMap &data)
+{
+    NM_FUNCTION;
+    Q_UNUSED(data);
+    
+    // map the indicator type to mailbox
+    NmMailboxInfo *info = getMailboxByType(type);
+    if (info) {
+        info->mLastSeenTime = QDateTime::currentDateTime();
+        info->mActive = false; // indicator is no longer active
+        updateUnreadIndicator();
+
+        launchMailbox(info->mId.id());
+    }
+}
+
+/*!
     Received from NmFrameworkAdapter messageEvent signal
     \sa NmFrameworkAdapter
 */
@@ -397,7 +537,10 @@
             const QList<NmId> &messageIds,
             const NmId& mailboxId)
 {
-    NMLOG(QString("NmMailAgent::handleMessageEvent %1 %2").arg(event).arg(mailboxId.id()));
+    NM_FUNCTION;
+    NM_COMMENT(QString("NmMailAgent::handleMessageEvent(): event=%1, id=%2").
+        arg(event).arg(mailboxId.id()));
+
     bool updateNeeded = false;
     bool activate = false;
 
@@ -425,6 +568,12 @@
                             if (messageUnread) {
                                 mailboxInfo->mUnreadMailIdList.append(messageId);
                                 updateMailboxState(mailboxId, true, false);
+
+                                // make the "@" appear immediatelly
+                                updateUnreadIndicator(true);
+								
+                                // Play the tone as well
+                                playAlertTone();
                             }
                         }
                     }
@@ -438,11 +587,12 @@
             if (mailboxInfo->mOutboxFolderId == folderId) {
                 // The first mail created in the outbox
                 if (mailboxInfo->mOutboxMails <= 0) {
-					NMLOG("NmMailAgent: first mail in outbox");
+					NM_COMMENT("NmMailAgent: first mail in outbox");
 					activate = true;
                     updateNeeded = true;
                 }
                 mailboxInfo->mOutboxMails += messageIds.count();
+				updateSendIndicator();
             }
             break;
         }
@@ -460,8 +610,8 @@
                 int oldCount = mailboxInfo->mUnreadMailIdList.count();
                 activate = updateUnreadCount(mailboxId, *mailboxInfo);
 
-                // new unread mails found or no more unread mails in the mailbox
-                if (activate || (oldCount>0 && mailboxInfo->mUnreadMailIdList.count()==0)) {
+                // new unread mails found or no more unread mails in the inbox
+                if (oldCount>0 && mailboxInfo->mUnreadMailIdList.count()==0) {
                     updateNeeded = true;
                 }
             }
@@ -485,12 +635,12 @@
 
                 // The last mail was now deleted
                 if (mailboxInfo->mOutboxMails == 0) {
-					NMLOG("NmMailAgent: last mail deleted from outbox");
-
+					NM_COMMENT("NmMailAgent: last mail deleted from outbox");
                     // Keep it active if there is unread mails
                     activate = mailboxInfo->mUnreadMailIdList.count() > 0;
                     updateNeeded = true;
                 }
+				updateSendIndicator();
             }
             break;
         }
@@ -499,6 +649,8 @@
     }
 
     if (updateNeeded) {
+        updateUnreadIndicator();
+
         NmMailboxInfo *mailboxInfo = getMailboxInfo(mailboxId);
         updateMailboxState(mailboxId,
             activate, true /* force refresh */);
@@ -513,7 +665,10 @@
             NmSyncState state,
             const NmOperationCompletionEvent &event)
 {
-    NMLOG(QString("NmMailAgent::handleSyncStateEvent %1 %2").arg(state).arg(event.mMailboxId.id()));
+    NM_FUNCTION;
+    NM_COMMENT(QString("NmMailAgent::handleSyncStateEvent(): state=%1, id=%2").
+        arg(state).arg(event.mMailboxId.id()));
+
     NmMailboxInfo *info = getMailboxInfo(event.mMailboxId);
     if (info) {
         info->mSyncState = state;
@@ -537,12 +692,15 @@
                 info->mOutboxMails;
 
             // Refresh the indicator if messages created or changed
-            NMLOG(QString(" created=%1, changed=%2, deleted=%3").
+            NM_COMMENT(QString("NmMailAgent::handleSyncStateEvent(): "
+                "created=%1, changed=%2, deleted=%3").
                 arg(info->mInboxCreatedMessages).
                 arg(info->mInboxChangedMessages).
                 arg(info->mInboxDeletedMessages));
             bool refresh = (info->mInboxCreatedMessages > 0) || (info->mInboxChangedMessages > 0);
 
+            updateUnreadIndicator();
+
             if (activate) {
                 updateMailboxState(event.mMailboxId, active, refresh);
             }
@@ -556,8 +714,11 @@
 */
 void NmMailAgent::handleConnectionEvent(NmConnectState state, const NmId mailboxId, int errorcode)
 {
-	Q_UNUSED(errorcode);
-    NMLOG(QString("NmMailAgent::handleConnectionEvent %1 %2 %3").arg(state).arg(mailboxId.id()).arg(errorcode));
+    NM_FUNCTION;
+    NM_COMMENT(QString("NmMailAgent::handleConnectionEvent(): state=%1, id=%2").
+        arg(state).arg(mailboxId.id()));
+    Q_UNUSED(errorcode);
+
     NmMailboxInfo *mailboxInfo = getMailboxInfo(mailboxId);
     if (mailboxInfo) {
         // Connecting, Connected, Disconnecting, Disconnected
@@ -571,6 +732,8 @@
 */
 bool NmMailAgent::removeMailboxInfo(const NmId &id)
 {
+    NM_FUNCTION;
+
     bool found = false;
     foreach (NmMailboxInfo *mailbox, mMailboxes) {
         if (mailbox->mId == id) {
@@ -592,6 +755,8 @@
 */
 NmMailboxInfo *NmMailAgent::createMailboxInfo(const NmId &id)
 {
+    NM_FUNCTION;
+
     // get information of the mailbox
     NmMailbox *mailbox = NULL;
     NmMailboxInfo *info = NULL;
@@ -612,6 +777,8 @@
 */
 NmMailboxInfo *NmMailAgent::createMailboxInfo(const NmMailbox &mailbox, NmDataPluginInterface *plugin)
 {
+    NM_FUNCTION;
+
     NmMailboxInfo *mailboxInfo = new NmMailboxInfo();
     mailboxInfo->mId = mailbox.id();
     mailboxInfo->mName = mailbox.name();
@@ -645,6 +812,8 @@
 */
 NmMailboxInfo *NmMailAgent::getMailboxInfo(const NmId &id)
 {
+    NM_FUNCTION;
+
     foreach (NmMailboxInfo *mailbox, mMailboxes) {
         if (mailbox->mId == id) {
             return mailbox;
@@ -666,7 +835,7 @@
 bool NmMailAgent::getMessageUnreadInfo(const NmId &folderId,
     const NmId &messageId, const NmId &mailboxId, bool &unreadMessage)
 {
-    NMLOG("NmMailAgent::messageInfo");
+    NM_FUNCTION;
 
     NmDataPluginInterface *plugin = mPluginFactory->interfaceInstance(mailboxId);
     bool ok = false;
@@ -687,15 +856,23 @@
 }
 
 /*!
-    Plays email alert tune when new messages arrive
+    Plays email alert tone when new messages arrive
+	\returns true if the tone was played
 */
-void NmMailAgent::playAlertTone()
+bool NmMailAgent::playAlertTone()
 {
+    NM_FUNCTION;
+	bool played = false;
+
     if (mAlertToneAllowed) {
-        // play alert
+        //mSystemTone->playTone(XQSystemToneService::EmailAlertTone);
+        
+        // play alert only once per minute
         mAlertToneAllowed = false;
         QTimer::singleShot(NmAgentAlertToneTimer, this, SLOT(enableAlertTone()));
+		played = true;
     }
+	return played;
 }
 
 /*!
@@ -703,8 +880,34 @@
 */
 void NmMailAgent::enableAlertTone()
 {
+    NM_FUNCTION;
+
     mAlertToneAllowed = true;
 }
 
+/*!
+    update send indicator according to outbox state
+*/
+void NmMailAgent::updateSendIndicator()
+{
+    // Get number of mails in outboxes
+    int outboxMails = 0;
+    foreach (NmMailboxInfo *mailboxInfo, mMailboxes) {
+        outboxMails += mailboxInfo->mOutboxMails;
+    }
+
+    if( outboxMails == 0 ) {
+        mIndicator->deactivate(NmSendIndicatorName);
+    }
+    else if (outboxMails > mLastOutboxCount) {
+        // New mails detected in outbox
+
+    	// indicator will disappear automatically after a delay
+        mIndicator->activate(NmSendIndicatorName);
+	}
+
+	mLastOutboxCount = outboxMails;
+}
+
 // End of file
 
--- a/emailservices/nmailagent/src/ssastartupwatcher.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmailagent/src/ssastartupwatcher.cpp	Fri May 28 13:56:43 2010 +0300
@@ -13,6 +13,8 @@
 // Description:
 //
 
+#include "emailtrace.h"
+
 #include "ssastartupwatcher.h"
 
 /*!
@@ -21,6 +23,8 @@
 */
 CSSAStartupWatcher* CSSAStartupWatcher::NewL(TStartupCallBack aCallback)
 {
+    NM_FUNCTION;
+    
 	CSSAStartupWatcher* self = new (ELeave) CSSAStartupWatcher(KDmHierarchyIdStartup, 
 	    KSM2AppServicesDomain3, aCallback);
 	CleanupStack::PushL(self);
@@ -35,6 +39,8 @@
 */
 CSSAStartupWatcher* CSSAStartupWatcher::New(TStartupCallBack aCallback)
 {
+    NM_FUNCTION;
+    
     CSSAStartupWatcher* self = NULL;
     TRAP_IGNORE( self = NewL(aCallback); );
     return self;
@@ -51,6 +57,7 @@
 : CDmDomain(aHierarchyId,aDomainId), 
   iCallback(aCallback)
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -58,6 +65,8 @@
 */
 CSSAStartupWatcher::~CSSAStartupWatcher()
 {
+    NM_FUNCTION;
+    
 	Cancel();
 }
 
@@ -69,6 +78,8 @@
 */
 void CSSAStartupWatcher::ConstructL()
 {
+    NM_FUNCTION;
+    
 	// Connect to the Domain Manager
 	CDmDomain::ConstructL();
 
@@ -94,6 +105,8 @@
 */
 void CSSAStartupWatcher::NotifyState(TInt aValue) 
 {
+    NM_FUNCTION;
+    
     (*iCallback)(aValue);
 }
 
@@ -103,6 +116,8 @@
 */
 void CSSAStartupWatcher::RunL()
 {
+    NM_FUNCTION;
+    
 	// Leave if our previous request to be notified a state change has
 	// returned an error and let RunError handle this.
 	if (iStatus.Int()!=KErrNone) {
--- a/emailservices/nmailbase/inc/nmcommon.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmailbase/inc/nmcommon.h	Fri May 28 13:56:43 2010 +0300
@@ -22,6 +22,9 @@
 #include <QString>
 #include <QMetaType>
 #include <QVariant>
+#include <QDateTime>
+
+#include "emailtrace.h"
 
 #define USE_POPIMAP_TESTPLUGIN
 
@@ -303,52 +306,6 @@
     mPluginId = pluginId32;
 }
 
-/*!
-     static function for debug prints
- */
-#include <QDebug>
-#include <QFile>
-#include <QDateTime>
-
-static void printToFileAndConsole(QString str, QString filename)
-{    
-    // Print to file
-    QFile debugFile(filename);
-    QIODevice::OpenMode openMode = QIODevice::Text;
-    if (debugFile.exists()) {
-        openMode |= QIODevice::Append;
-    } else {
-        openMode |= QIODevice::WriteOnly;
-    }
-
-    // Create date string
-    QString d = QDateTime::currentDateTime().toString("dd.MM.yyyy hh:mm:ss");
-
-    if (debugFile.open(openMode)) {
-        QTextStream debugStream(&debugFile);
-        debugStream << d << "  " << str << endl;
-        debugFile.close();
-    }
-    // Print to console
-    qDebug() << d << str << endl; 
-}
-
-// 
-// NMLOG is used to log QStrings to text file. For example:
-//
-// NMLOG("nmailui: application opened successfully");
-//
-// QString fileName = "mailbox.xml";
-// int error = -12;
-// NMLOG(QString("### cannot open file: err=%1  file='%2' ###").arg(error).arg(fileName));
-//
-#ifdef _DEBUG
-#define NMLOG(a) { printToFileAndConsole(a, "c:/logs/nmail.log"); }
-#else
-#define NMLOG(a)
-#endif
-
-
 /*! email list sort criteria definition */
 class NmMailSortCriteria
 {
--- a/emailservices/nmailbase/src/nmaddress.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmailbase/src/nmaddress.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
 *
 */
 
+#include "emailtrace.h"
+
 #include <QString>
 
 #include "nmaddress.h"
@@ -26,6 +28,7 @@
 :mDisplayName(""),
 mAddress("")
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -33,6 +36,7 @@
  */
 NmAddressPrivate::~NmAddressPrivate()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -53,6 +57,8 @@
  */
 NmAddress::NmAddress()
 {
+    NM_FUNCTION;
+    
     d = new NmAddressPrivate();
 }
 
@@ -61,6 +67,8 @@
  */
 NmAddress::NmAddress(const QString &displayName, const QString &address)
 {
+    NM_FUNCTION;
+    
     d = new NmAddressPrivate();
     d->mDisplayName = displayName;
     d->mAddress = address;
@@ -71,6 +79,8 @@
  */
 NmAddress::NmAddress(const QString &address)
 {
+    NM_FUNCTION;
+    
     d = new NmAddressPrivate();
     d->mAddress = address;
 }
@@ -80,6 +90,7 @@
  */
 NmAddress::NmAddress(const NmAddress &nmAddress) : d(nmAddress.d)
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -87,6 +98,8 @@
  */
 NmAddress::NmAddress(QExplicitlySharedDataPointer<NmAddressPrivate> nmPrivateAddress)
 {
+    NM_FUNCTION;
+    
     d = nmPrivateAddress;
 }
 
@@ -95,6 +108,8 @@
  */
 NmAddress &NmAddress::operator=(const NmAddress &nmAddress)
 {
+    NM_FUNCTION;
+    
     if (this != &nmAddress) {
       d = nmAddress.d;
     }
@@ -106,6 +121,7 @@
  */
 NmAddress::~NmAddress()
 {
+    NM_FUNCTION;
 }
 
 
@@ -115,6 +131,8 @@
  */
 bool NmAddress::operator==(const NmAddress &otherAddress) const
 {
+    NM_FUNCTION;
+    
     bool ret = false;
     if (otherAddress.address().compare(d->mAddress, Qt::CaseInsensitive) == 0 &&
         otherAddress.displayName().compare(
@@ -130,6 +148,8 @@
  */
 bool NmAddress::operator!=(const NmAddress &otherAddress) const
 {
+    NM_FUNCTION;
+    
     bool ret = true;
     if (otherAddress.address().compare(d->mAddress, Qt::CaseInsensitive) == 0 &&
         otherAddress.displayName().compare(
@@ -144,6 +164,8 @@
  */
 void NmAddress::setDisplayName(const QString &displayName)
 {
+    NM_FUNCTION;
+    
     d->mDisplayName = displayName;
 }
 
@@ -152,6 +174,8 @@
  */
 QString NmAddress::displayName() const
 {
+    NM_FUNCTION;
+    
     return d->mDisplayName;
 }
 
@@ -160,6 +184,8 @@
  */
 void NmAddress::setAddress(const QString &address)
 {
+    NM_FUNCTION;
+    
     d->mAddress = address;
 }
 
@@ -168,5 +194,7 @@
  */
 QString NmAddress::address() const
 {
+    NM_FUNCTION;
+    
     return d->mAddress;
 }
--- a/emailservices/nmailbase/src/nmfolder.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmailbase/src/nmfolder.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
 *
 */
 
+#include "emailtrace.h"
+
 #include "nmfolder.h"
 
 
@@ -31,10 +33,12 @@
 mSubFolderCount(0),
 mUpdated(QDateTime())
 {
+    NM_FUNCTION;
 }
 
 NmFolderPrivate::~NmFolderPrivate()
 {
+    NM_FUNCTION;
 }
 
 
@@ -49,6 +53,8 @@
 */
 NmFolder::NmFolder(NmId folderId)
 {
+    NM_FUNCTION;
+    
     d = new NmFolderPrivate();
     d->mFolderId = folderId;
 }
@@ -58,6 +64,8 @@
 */
 NmFolder::NmFolder(const NmFolder &folder)
 {
+    NM_FUNCTION;
+    
     d = folder.d;
 }
 
@@ -66,6 +74,8 @@
  */
 NmFolder::NmFolder(QExplicitlySharedDataPointer<NmFolderPrivate> folderPrivate)
 {
+    NM_FUNCTION;
+    
   d = folderPrivate;
 }
 
@@ -74,6 +84,8 @@
 */
 NmFolder &NmFolder::operator=(const NmFolder &folder)
 {
+    NM_FUNCTION;
+    
   if (this != &folder) {
     d = folder.d;
   }
@@ -85,6 +97,7 @@
 */
 NmFolder::~NmFolder()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -92,6 +105,8 @@
 */
 NmId NmFolder::folderId() const
 {
+    NM_FUNCTION;
+    
     return d->mFolderId;
 }
 
@@ -100,6 +115,8 @@
 */
 void NmFolder::setFolderId(NmId folderId)
 {
+    NM_FUNCTION;
+    
   d->mFolderId = folderId;
 }
 
@@ -108,6 +125,8 @@
 */
 NmId NmFolder::parentId() const
 {
+    NM_FUNCTION;
+    
     return d->mParentFolderId;
 }
 
@@ -116,6 +135,8 @@
 */
 void NmFolder::setParentId(NmId parentFolderId)
 {
+    NM_FUNCTION;
+    
     d->mParentFolderId = parentFolderId;
 }
 
@@ -124,6 +145,8 @@
 */
 NmId NmFolder::mailboxId() const
 {
+    NM_FUNCTION;
+    
     return d->mMailboxId;
 }
 
@@ -132,6 +155,8 @@
 */
 void NmFolder::setMailboxId(NmId mailboxId)
 {
+    NM_FUNCTION;
+    
     d->mMailboxId = mailboxId;
 }
 
@@ -140,6 +165,8 @@
 */
 QString NmFolder::name() const
 {
+    NM_FUNCTION;
+    
     return d->mName;
 }
 
@@ -148,6 +175,8 @@
 */
 void NmFolder::setName(QString name)
 {
+    NM_FUNCTION;
+    
     d->mName = name;
 }
 
@@ -156,6 +185,8 @@
 */
 NmFolderType NmFolder::folderType() const
 {
+    NM_FUNCTION;
+    
     return d->mFolderType;
 }
 
@@ -164,6 +195,8 @@
 */
 void NmFolder::setFolderType(NmFolderType folderType)
 {
+    NM_FUNCTION;
+    
     d->mFolderType = folderType;
 }
 
@@ -172,6 +205,8 @@
 */
 QDateTime NmFolder::lastUpdated() const
 {
+    NM_FUNCTION;
+    
     return d->mUpdated;
 }
 
@@ -180,6 +215,8 @@
 */
 void NmFolder::setLastUpdated(QDateTime time)
 {
+    NM_FUNCTION;
+    
     d->mUpdated = time;
 }
 
@@ -188,6 +225,8 @@
  */
 quint32 NmFolder::messageCount() const
 {
+    NM_FUNCTION;
+    
   return d->mMessageCount;
 }
 
@@ -196,6 +235,8 @@
  */
 void NmFolder::setMessageCount(quint32 messageCount)
 {
+    NM_FUNCTION;
+    
   d->mMessageCount = messageCount;
 }
 
@@ -204,6 +245,8 @@
  */
 quint32 NmFolder::unreadMessageCount() const
 {
+    NM_FUNCTION;
+    
   return d->mUnreadMessageCount;
 }
 
@@ -212,6 +255,8 @@
  */
 void NmFolder::setUnreadMessageCount(quint32 unreadMessageCount)
 {
+    NM_FUNCTION;
+    
   d->mUnreadMessageCount = unreadMessageCount;
 }
 
@@ -220,6 +265,8 @@
  */
 quint32 NmFolder::unseenCount() const
 {
+    NM_FUNCTION;
+    
   return d->mUnseenCount;
 }
 
@@ -228,6 +275,8 @@
  */
 void NmFolder::setUnseenCount(quint32 unseenCount)
 {
+    NM_FUNCTION;
+    
   d->mUnseenCount =  unseenCount;
 }
 
@@ -236,6 +285,8 @@
  */
 quint32 NmFolder::subFolderCount() const
 {
+    NM_FUNCTION;
+    
   return d->mSubFolderCount;
 }
 
@@ -244,6 +295,8 @@
  */
 void NmFolder::setSubFolderCount(quint32 subFolderCount)
 {
+    NM_FUNCTION;
+    
   d->mSubFolderCount = subFolderCount;
 }
 
--- a/emailservices/nmailbase/src/nmmailbox.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmailbase/src/nmmailbox.cpp	Fri May 28 13:56:43 2010 +0300
@@ -14,16 +14,21 @@
 * Description:
 *
 */
+
+#include "emailtrace.h"
+
 #include <QString>
 
 #include "nmmailbox.h"
 
 NmMailboxPrivate::NmMailboxPrivate()
 {
+    NM_FUNCTION;
 }
 
 NmMailboxPrivate::~NmMailboxPrivate()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -36,6 +41,8 @@
  */
 NmMailbox::NmMailbox()
 {
+    NM_FUNCTION;
+    
     d = new NmMailboxPrivate();
 }
 
@@ -44,6 +51,8 @@
  */
 NmMailbox::NmMailbox(const NmMailbox &mailbox)
 {
+    NM_FUNCTION;
+    
     d = mailbox.d;
 }
 
@@ -52,6 +61,8 @@
  */
 NmMailbox::NmMailbox(QExplicitlySharedDataPointer<NmMailboxPrivate> mailboxprivate)
 {
+    NM_FUNCTION;
+    
     d = mailboxprivate;
 }
 
@@ -60,6 +71,8 @@
  */
 NmMailbox &NmMailbox::operator=(const NmMailbox &mailbox)
 {
+    NM_FUNCTION;
+    
     if (this != &mailbox) {
         d = mailbox.d;
     }
@@ -71,6 +84,7 @@
  */
 NmMailbox::~NmMailbox()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -78,6 +92,8 @@
  */
 NmId NmMailbox::id() const
 {
+    NM_FUNCTION;
+    
     return d->mId;
 }
 
@@ -86,6 +102,8 @@
  */
 void NmMailbox::setId(const NmId& id)
 {
+    NM_FUNCTION;
+    
     d->mId = id;
 }
 
@@ -94,6 +112,8 @@
  */
 QString NmMailbox::name() const
 {
+    NM_FUNCTION;
+    
     return d->mName;
 }
 
@@ -102,6 +122,8 @@
  */
 void NmMailbox::setName(const QString &name)
 {
+    NM_FUNCTION;
+    
     d->mName = name;
 }
 
@@ -110,6 +132,8 @@
  */
 bool NmMailbox::operator==(const NmMailbox &mailbox) const
 {
+    NM_FUNCTION;
+    
     bool ret = true;
 
     if (this->name().compare(mailbox.name()) != 0) {
@@ -124,12 +148,16 @@
 
 NmAddress NmMailbox::address() const
 {
+    NM_FUNCTION;
+    
     return d->mAddress;
 }
 
 
 void NmMailbox::setAddress(const NmAddress& address)
 {
+    NM_FUNCTION;
+    
     d->mAddress = address;
 }
 
--- a/emailservices/nmailbase/src/nmmessage.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmailbase/src/nmmessage.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
 *
 */
 
+#include "emailtrace.h"
+
 #include "nmmessage.h"
 #include "nmmessageenvelope.h"
 
@@ -23,7 +25,7 @@
  */
 NmMessagePrivate::NmMessagePrivate() : mEnvelope(0)
 {
-    
+    NM_FUNCTION;
 }
 
 /*!
@@ -31,7 +33,7 @@
  */
 NmMessagePrivate::~NmMessagePrivate()
 {
-    
+    NM_FUNCTION;
 }
 
 /*!
@@ -44,6 +46,8 @@
  */
 NmMessage::NmMessage()
 {
+    NM_FUNCTION;
+    
     d = new NmMessagePrivate();
 }
 
@@ -52,6 +56,8 @@
  */
 NmMessage::NmMessage(const NmId &messageId) : NmMessagePart(0)
 {
+    NM_FUNCTION;
+    
     d = new NmMessagePrivate();
     d->mEnvelope.setMessageId(messageId);
 }
@@ -63,6 +69,8 @@
 NmMessage::NmMessage(const NmId &messageId, const NmId &folderId)
 : NmMessagePart(0)
 {
+    NM_FUNCTION;
+    
     d = new NmMessagePrivate();
 	d->mEnvelope.setMessageId(messageId);
 	d->mEnvelope.setFolderId(folderId);
@@ -77,6 +85,8 @@
                      const NmId &mailboxId)
 :NmMessagePart(0)
 {
+    NM_FUNCTION;
+    
     d = new NmMessagePrivate();
 	d->mEnvelope.setMessageId(messageId);
 	d->mEnvelope.setFolderId(folderId);
@@ -88,6 +98,8 @@
  */
 NmMessage::NmMessage(const NmMessageEnvelope &envelope)
 {
+    NM_FUNCTION;
+    
     d = new NmMessagePrivate();
     d->mEnvelope = envelope;
     // set message id same as envelope id
@@ -101,6 +113,8 @@
         QExplicitlySharedDataPointer<NmMessagePartPrivate> nmPrivateMessagePart)
         : NmMessagePart(nmPrivateMessagePart)
 {
+    NM_FUNCTION;
+    
     d = new NmMessagePrivate();
 	d->mEnvelope = envelope;
     // set message id same as envelope id
@@ -112,6 +126,8 @@
  */
 NmMessage::NmMessage(const NmMessagePart& message):NmMessagePart(message)
 {
+    NM_FUNCTION;
+    
     d = new NmMessagePrivate();
 }
 
@@ -124,6 +140,8 @@
  */
 NmMessage &NmMessage::operator=(const NmMessage &message)
 {
+    NM_FUNCTION;
+    
 	if (this != &message) {
 		d = message.d;
 	}
@@ -135,6 +153,7 @@
  */
 NmMessage::~NmMessage()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -144,6 +163,8 @@
  */
 const NmMessagePart *NmMessage::plainTextBodyPart() const
 {
+    NM_FUNCTION;
+    
     const NmMessagePart *ret = NULL;
     ret = findContentPart(NmContentTypeTextPlain);
     return ret;
@@ -156,6 +177,8 @@
  */
 NmMessagePart *NmMessage::plainTextBodyPart()
 {
+    NM_FUNCTION;
+    
     NmMessagePart *ret = NULL;
     ret = findContentPart(NmContentTypeTextPlain);
     return ret;
@@ -168,6 +191,8 @@
  */
 const NmMessagePart *NmMessage::htmlBodyPart() const
 {
+    NM_FUNCTION;
+    
     const NmMessagePart *ret = NULL;
     ret = findContentPart(NmContentTypeTextHtml);
     return ret;
@@ -180,6 +205,8 @@
  */
 NmMessagePart *NmMessage::htmlBodyPart()
 {
+    NM_FUNCTION;
+    
     NmMessagePart *ret = NULL;
     ret = findContentPart(NmContentTypeTextHtml);
     return ret;
@@ -190,6 +217,8 @@
  */
 NmMessageEnvelope &NmMessage::envelope()
 {
+    NM_FUNCTION;
+    
     return d->mEnvelope;
 }
 
@@ -198,6 +227,8 @@
  */
 const NmMessageEnvelope &NmMessage::envelope() const
 {
+    NM_FUNCTION;
+    
     return d->mEnvelope;
 }
 
@@ -210,6 +241,8 @@
 */        
 void NmMessage::attachmentList(QList<NmMessagePart*> &parts) const
 {
+    NM_FUNCTION;
+    
     parts.clear();
     appendAttachments(parts);
 
--- a/emailservices/nmailbase/src/nmmessageenvelope.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmailbase/src/nmmessageenvelope.cpp	Fri May 28 13:56:43 2010 +0300
@@ -18,6 +18,8 @@
 #ifndef NMMESSAGEENVELOPE_CPP_
 #define NMMESSAGEENVELOPE_CPP_
 
+#include "emailtrace.h"
+
 #include "nmmessageenvelope.h"
 
 /*!
@@ -29,6 +31,7 @@
 mMailboxId(0),
 mMessageFlags(0)
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -36,15 +39,20 @@
  */
 NmMessageEnvelopePrivate::~NmMessageEnvelopePrivate()
 {
+    NM_FUNCTION;
 }
 
 NmMessageFlags NmMessageEnvelopePrivate::flags() const
 {
+    NM_FUNCTION;
+    
     return mMessageFlags;
 }
 
 void NmMessageEnvelopePrivate::setFlags(const NmMessageFlags flags, bool set)
 {
+    NM_FUNCTION;
+    
     if (set) {
         mMessageFlags |= flags;
     } else {
@@ -54,6 +62,8 @@
 
 void NmMessageEnvelopePrivate::setFlag(const NmMessageFlag flag, bool set)
 {
+    NM_FUNCTION;
+    
     if (set) {
         mMessageFlags |= flag;
     } else {
@@ -63,6 +73,8 @@
 
 bool NmMessageEnvelopePrivate::isFlagSet(const NmMessageFlag flag) const
 {
+    NM_FUNCTION;
+    
     return mMessageFlags.testFlag(flag);
 }
 
@@ -79,6 +91,8 @@
  */
 NmMessageEnvelope::NmMessageEnvelope()
 {
+    NM_FUNCTION;
+    
     d = new NmMessageEnvelopePrivate();
 }
 
@@ -87,6 +101,8 @@
  */
 NmMessageEnvelope::NmMessageEnvelope(const NmId &messageId)
 {
+    NM_FUNCTION;
+    
     d = new NmMessageEnvelopePrivate();
     d->mMessageId = messageId;
 }
@@ -96,6 +112,7 @@
  */
 NmMessageEnvelope::NmMessageEnvelope(const NmMessageEnvelope &envelope):d(envelope.d)
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -103,6 +120,8 @@
  */
 NmMessageEnvelope::NmMessageEnvelope(QExplicitlySharedDataPointer<NmMessageEnvelopePrivate> nmPrivateMessageEnvelope)
 {
+    NM_FUNCTION;
+    
     d = nmPrivateMessageEnvelope;
 }
 
@@ -111,6 +130,8 @@
  */
 NmMessageEnvelope &NmMessageEnvelope::operator=(const NmMessageEnvelope &envelope)
 {
+    NM_FUNCTION;
+    
     if (this != &envelope) {
         d = envelope.d;
     }
@@ -124,6 +145,8 @@
  */
 bool NmMessageEnvelope::operator==(const NmMessageEnvelope &envelope) const
 {
+    NM_FUNCTION;
+    
     bool ret = false;
     if (0 == subject().compare(envelope.subject(), Qt::CaseInsensitive)
         && sender() == envelope.sender()
@@ -142,6 +165,8 @@
  */
 bool NmMessageEnvelope::operator!=(const NmMessageEnvelope &envelope) const
 {
+    NM_FUNCTION;
+    
     return !(*this==envelope);
 }
 
@@ -150,6 +175,7 @@
  */
 NmMessageEnvelope::~NmMessageEnvelope()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -157,6 +183,8 @@
  */
 void NmMessageEnvelope::setMessageId(const NmId &messageId)
 {
+    NM_FUNCTION;
+    
     d->mMessageId = messageId;
 }
 
@@ -165,6 +193,8 @@
  */
 NmId NmMessageEnvelope::messageId() const
 {
+    NM_FUNCTION;
+    
     return d->mMessageId;
 }
 
@@ -173,6 +203,8 @@
  */
 NmId NmMessageEnvelope::folderId() const
 {
+    NM_FUNCTION;
+    
     return d->mFolderId;
 }
 
@@ -181,6 +213,8 @@
  */
 void NmMessageEnvelope::setFolderId(const NmId &folderId)
 {
+    NM_FUNCTION;
+    
     d->mFolderId = folderId;
 }
 
@@ -189,6 +223,8 @@
  */
 NmId NmMessageEnvelope::mailboxId() const
 {
+    NM_FUNCTION;
+    
     return d->mMailboxId;
 }
 
@@ -197,6 +233,8 @@
  */
 void NmMessageEnvelope::setMailboxId(const NmId &mailboxId)
 {
+    NM_FUNCTION;
+    
     d->mMailboxId = mailboxId;
 }
 
@@ -205,6 +243,8 @@
  */
 void NmMessageEnvelope::setSubject(const QString &subject)
 {
+    NM_FUNCTION;
+    
     d->mSubject = subject;
 }
 
@@ -213,6 +253,8 @@
  */
 QString NmMessageEnvelope::subject() const
 {
+    NM_FUNCTION;
+    
   return d->mSubject;
 }
 
@@ -221,6 +263,8 @@
  */
 void NmMessageEnvelope::setSender(const NmAddress &sender)
 {
+    NM_FUNCTION;
+    
     d->mSender = sender;
 }
 
@@ -229,6 +273,8 @@
  */
 NmAddress NmMessageEnvelope::sender() const
 {
+    NM_FUNCTION;
+    
     return d->mSender;
 }
 
@@ -237,6 +283,8 @@
  */
 void NmMessageEnvelope::setSentTime(const QDateTime &sentTime)
 {
+    NM_FUNCTION;
+    
     d->mSentTime = sentTime;
 }
 
@@ -245,6 +293,8 @@
  */
 QDateTime NmMessageEnvelope::sentTime() const
 {
+    NM_FUNCTION;
+    
     return d->mSentTime;
 }
 
@@ -253,6 +303,8 @@
  */
 void NmMessageEnvelope::setHasAttachments(bool hasAttachments)
 {
+    NM_FUNCTION;
+    
     d->setFlag(NmMessageFlagAttachments, hasAttachments);
 }
 
@@ -261,6 +313,8 @@
  */
 bool NmMessageEnvelope::hasAttachments() const
 {
+    NM_FUNCTION;
+    
     return d->isFlagSet(NmMessageFlagAttachments);
 }
 
@@ -269,6 +323,8 @@
  */
 void NmMessageEnvelope::setRead(bool read)
 {
+    NM_FUNCTION;
+    
     d->setFlag(NmMessageFlagRead, read);
 }
 
@@ -277,6 +333,8 @@
  */
 bool NmMessageEnvelope::isRead() const
 {
+    NM_FUNCTION;
+    
     return d->isFlagSet(NmMessageFlagRead);
 }
 
@@ -285,6 +343,8 @@
  */
 void NmMessageEnvelope::setReplied(bool replyed)
 {
+    NM_FUNCTION;
+    
     d->setFlag(NmMessageFlagAnswered, replyed);
 }
 
@@ -293,6 +353,8 @@
  */
 bool NmMessageEnvelope::isReplied() const
 {
+    NM_FUNCTION;
+    
     return d->isFlagSet(NmMessageFlagAnswered);
 }
 
@@ -301,6 +363,8 @@
  */
 void NmMessageEnvelope::setForwarded(bool forwarded)
 {
+    NM_FUNCTION;
+    
     d->setFlag(NmMessageFlagForwarded, forwarded);
 }
 
@@ -309,6 +373,8 @@
  */
 bool NmMessageEnvelope::isForwarded() const
 {
+    NM_FUNCTION;
+    
     return d->isFlagSet(NmMessageFlagForwarded);
 }
 
@@ -317,6 +383,8 @@
  */
 void NmMessageEnvelope::setPriority(NmMessagePriority priority)
 {
+    NM_FUNCTION;
+    
     if (priority == NmMessagePriorityLow) {
         d->setFlag(NmMessageFlagLow, true);
         d->setFlag(NmMessageFlagImportant, false);
@@ -336,6 +404,8 @@
  */
 NmMessagePriority NmMessageEnvelope::priority() const
 {
+    NM_FUNCTION;
+    
     NmMessagePriority ret = NmMessagePriorityNormal;
     if (d->isFlagSet(NmMessageFlagImportant)) {
         ret = NmMessagePriorityHigh;
@@ -351,6 +421,8 @@
  */
 NmMessageFlags NmMessageEnvelope::flags() const
 {
+    NM_FUNCTION;
+    
     return d->flags();
 }
 
@@ -359,6 +431,8 @@
  */
 QList<NmAddress>& NmMessageEnvelope::toRecipients() const
 {
+    NM_FUNCTION;
+    
     return d->mToRecipients;
 }
 
@@ -367,6 +441,8 @@
  */
 void NmMessageEnvelope::setToRecipients(QList<NmAddress> toRecipients)
 {
+    NM_FUNCTION;
+    
     clearToRecipients();
     d->mToRecipients = toRecipients;
 }
@@ -376,6 +452,8 @@
  */
 void NmMessageEnvelope::clearToRecipients()
 {
+    NM_FUNCTION;
+    
     d->mToRecipients.clear();
 }
 
@@ -384,6 +462,8 @@
  */
 QList<NmAddress>& NmMessageEnvelope::ccRecipients() const
 {
+    NM_FUNCTION;
+    
     return d->mCcRecipients;
 }
 
@@ -392,6 +472,8 @@
  */
 void NmMessageEnvelope::setCcRecipients(QList<NmAddress> ccRecipients)
 {
+    NM_FUNCTION;
+    
     clearCcRecipients();
     d->mCcRecipients = ccRecipients;
 }
@@ -401,6 +483,8 @@
  */
 void NmMessageEnvelope::clearCcRecipients()
 {
+    NM_FUNCTION;
+    
     d->mCcRecipients.clear();
 }
 
@@ -409,6 +493,8 @@
  */
 QList<NmAddress>& NmMessageEnvelope::bccRecipients() const
 {
+    NM_FUNCTION;
+    
     return d->mBccRecipients;
 }
 
@@ -417,6 +503,8 @@
  */
 void NmMessageEnvelope::setBccRecipients(QList<NmAddress> bccRecipients)
 {
+    NM_FUNCTION;
+    
     clearBccRecipients();
     d->mBccRecipients = bccRecipients;
 }
@@ -426,6 +514,8 @@
  */
 void NmMessageEnvelope::clearBccRecipients()
 {
+    NM_FUNCTION;
+    
     d->mBccRecipients.clear();
 }
 
--- a/emailservices/nmailbase/src/nmmessagepart.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmailbase/src/nmmessagepart.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
 *
 */
 
+#include "emailtrace.h"
+
 #include "nmmessagepart.h"
 #include "nmmessageenvelope.h"
 
@@ -24,8 +26,9 @@
  */
 NmMessagePartPrivate::NmMessagePartPrivate()
 		: mPartId(0), mSize(0), mFetchedSize(0),
-		mTextContent(0)
+		mTextContent()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -33,6 +36,7 @@
  */
 NmMessagePartPrivate::~NmMessagePartPrivate() 
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -41,6 +45,8 @@
  */
 bool NmMessagePartPrivate::isMessage() const
 {
+    NM_FUNCTION;
+    
     bool isMessage = false;
     if (!mContentType.isEmpty()) {
 		if (mContentType.contains(NmContentTypeTypeMessage, Qt::CaseInsensitive)) {
@@ -56,6 +62,8 @@
  */
 bool NmMessagePartPrivate::isTextContent() const
 {
+    NM_FUNCTION;
+    
 	bool isText = false;
 	if (!mContentType.isEmpty()) {
 		if (mContentType.contains(NmContentTypeTextPlain, Qt::CaseInsensitive) ||
@@ -77,6 +85,8 @@
  */
 NmMessagePart::NmMessagePart()
 {
+    NM_FUNCTION;
+    
     d = new NmMessagePartPrivate();
 }
 
@@ -85,6 +95,8 @@
  */
 NmMessagePart::NmMessagePart(const NmId &partId)
 {
+    NM_FUNCTION;
+    
     d = new NmMessagePartPrivate();
     d->mPartId = partId;
 }
@@ -95,6 +107,8 @@
 NmMessagePart::NmMessagePart(
         QExplicitlySharedDataPointer<NmMessagePartPrivate> nmPrivateMessagePart)
 {
+    NM_FUNCTION;
+    
 	d = nmPrivateMessagePart;
 }
 
@@ -103,6 +117,7 @@
  */
 NmMessagePart::NmMessagePart(const NmMessagePart &part) : d(part.d)
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -110,6 +125,8 @@
  */
 NmMessagePart &NmMessagePart::operator=(const NmMessagePart &part)
 {
+    NM_FUNCTION;
+    
 	if (this != &part) {
 		d = part.d;
 	}
@@ -121,6 +138,8 @@
  */
 NmMessagePart::~NmMessagePart()
 {
+    NM_FUNCTION;
+    
 	for (int i = 0; i < d->mChildParts.count(); i++) {
 		delete d->mChildParts[i];
 	}
@@ -132,6 +151,8 @@
  */
 NmId NmMessagePart::partId() const
 {
+    NM_FUNCTION;
+    
     return d->mPartId;
 }
 
@@ -140,6 +161,8 @@
  */
 void NmMessagePart::setPartId(const NmId &id)
 {
+    NM_FUNCTION;
+    
     d->mPartId = id;
 }
 
@@ -148,6 +171,8 @@
  */
 quint32 NmMessagePart::size() const
 {
+    NM_FUNCTION;
+    
     return d->mSize;
 }
 
@@ -156,6 +181,8 @@
  */
 void NmMessagePart::setSize(quint32 size)
 {
+    NM_FUNCTION;
+    
     d->mSize = size;
 }
 
@@ -164,6 +191,8 @@
  */
 quint32 NmMessagePart::fetchedSize() const
 {
+    NM_FUNCTION;
+    
     return d->mFetchedSize;
 }
 
@@ -172,6 +201,8 @@
  */
 void NmMessagePart::setFetchedSize(quint32 fetchedSize)
 {
+    NM_FUNCTION;
+    
     d->mFetchedSize = fetchedSize;
 }
 
@@ -180,6 +211,8 @@
  */
 bool NmMessagePart::isMessage() const
 {
+    NM_FUNCTION;
+    
 	return d->isMessage();
 }
 
@@ -191,6 +224,8 @@
     const QString &content,
     const QString &contentType)
 {
+    NM_FUNCTION;
+    
     d->mTextContent = content;
     d->mContentType = contentType;
     d->mBinaryContent.clear();
@@ -201,6 +236,8 @@
  */
 const QString &NmMessagePart::textContent() const
 {
+    NM_FUNCTION;
+    
     return d->mTextContent;
 }
 
@@ -210,6 +247,8 @@
  */
 void NmMessagePart::setContentType(const QString &contentType)
 {
+    NM_FUNCTION;
+    
     d->mContentType = contentType;
 }
 
@@ -218,6 +257,8 @@
  */
 QString NmMessagePart::contentType() const
 {
+    NM_FUNCTION;
+    
     return d->mContentType;
 }
 
@@ -226,6 +267,8 @@
  */
 void NmMessagePart::setContentDescription(const QString &contentDescription)
 {
+    NM_FUNCTION;
+    
     d->mContentDescription = contentDescription;
 }
 
@@ -234,6 +277,8 @@
  */
 QString NmMessagePart::contentDescription() const
 {
+    NM_FUNCTION;
+    
     return d->mContentDescription;
 }
 
@@ -242,6 +287,8 @@
  */
 void NmMessagePart::setContentDisposition(const QString &contentDisposition)
 {
+    NM_FUNCTION;
+    
     d->mContentDisposition = contentDisposition;
 }
 
@@ -250,6 +297,8 @@
  */
 QString NmMessagePart::contentDisposition() const
 {
+    NM_FUNCTION;
+    
     return d->mContentDisposition;
 }
 
@@ -258,6 +307,8 @@
  */
 void NmMessagePart::setContentId(const QString &contentId)
 {
+    NM_FUNCTION;
+    
     d->mContentId = contentId;
 }
 
@@ -266,6 +317,8 @@
  */
 QString NmMessagePart::contentId()
 {
+    NM_FUNCTION;
+    
     return d->mContentId;
 }
 
@@ -275,7 +328,8 @@
  */
 void NmMessagePart::setChildParts(QList<NmMessagePart*> parts)
 {
-
+    NM_FUNCTION;
+    
     if (d->mChildParts.count() > 0) {
         for (int i = 0; i < d->mChildParts.count(); i++) {
             delete d->mChildParts[i];
@@ -295,6 +349,8 @@
  */
 QList<NmMessagePart*>& NmMessagePart::childParts() const
 {
+    NM_FUNCTION;
+    
     return d->mChildParts;
 }
 
@@ -305,6 +361,8 @@
  */
 void NmMessagePart::addChildPart(NmMessagePart *part)
 {
+    NM_FUNCTION;
+    
     if (!part) {
         return;
     }
@@ -317,6 +375,8 @@
  */
 void NmMessagePart::removeChildPart(const NmId &partId)
 {
+    NM_FUNCTION;
+    
     for (int i = 0; i < d->mChildParts.count(); i++) {
         if (d->mChildParts[i]->partId() == partId) {
             delete d->mChildParts[i];
@@ -331,6 +391,8 @@
  */
 void NmMessagePart::removeAllChildParts()
 {
+    NM_FUNCTION;
+    
     while (!d->mChildParts.isEmpty()) {
         delete d->mChildParts.takeFirst();
     }
@@ -343,6 +405,8 @@
     const QByteArray &content,
     const QString &contentType)
 {
+    NM_FUNCTION;
+    
     d->mBinaryContent = content;
     d->mContentType = contentType;
     d->mTextContent.clear();
@@ -353,6 +417,8 @@
  */
 const QByteArray &NmMessagePart::binaryContent() const
 {
+    NM_FUNCTION;
+    
     return d->mBinaryContent;
 }
 
@@ -364,6 +430,8 @@
    */      
 void NmMessagePart::setAttachmentName(const QString &filePath)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(filePath);
 }
 
@@ -373,6 +441,8 @@
  */
 QString NmMessagePart::attachmentName() const
 {
+    NM_FUNCTION;
+    
     // Look first from Content-Type param "name"
     QString content = contentType();
     int ptr = content.indexOf(NmContentTypeParamName);
@@ -400,6 +470,8 @@
  */
 const NmMessagePart *NmMessagePart::findContentPart(const QString &contentType) const
 {
+    NM_FUNCTION;
+    
     const NmMessagePart *ret = NULL;
 
     if (!d->mContentType.isEmpty() && d->mContentType.startsWith(contentType)) {
@@ -417,6 +489,8 @@
  */
 NmMessagePart *NmMessagePart::findContentPart(const QString &contentType)
 {
+    NM_FUNCTION;
+    
     NmMessagePart *ret = NULL;
 
     if (!d->mContentType.isEmpty() && d->mContentType.startsWith(contentType)) {
@@ -436,6 +510,8 @@
  */
 void NmMessagePart::appendAttachments(QList<NmMessagePart*> &attachments) const
 {
+    NM_FUNCTION;
+    
     QList<NmMessagePart*> messageParts = childParts();
 
     int messagePartCount = messageParts.count();
--- a/emailservices/nmclientapi/inc/nmapimessagebody_p.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/inc/nmapimessagebody_p.h	Fri May 28 13:56:43 2010 +0300
@@ -17,7 +17,7 @@
 #ifndef NMAPIMESSAGEBODY_P_H_
 #define NMAPIMESSAGEBODY_P_H_
 
-#include <QString>;
+#include <QString>
 
 namespace EmailClientApi
 {
--- a/emailservices/nmclientapi/inc/nmapiprivateheaders.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/inc/nmapiprivateheaders.h	Fri May 28 13:56:43 2010 +0300
@@ -21,6 +21,6 @@
 #include "nmmailbox.h"
 #include "nmmessage.h"
 #include "nmfolder.h"
-#include "nmmessagePart.h"
+#include "nmmessagepart.h"
 
 #endif // NMAPIPRIVATEHEADERS_H
--- a/emailservices/nmclientapi/src/nmapidatapluginfactory.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapidatapluginfactory.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
  *
  */
 
+#include "emailtrace.h"
+
 #include "nmdataplugininterface.h"
 #include "nmapidatapluginfactory.h"
 
@@ -48,7 +50,7 @@
  */
 NmApiDataPluginFactory::NmApiDataPluginFactory()
 {
-
+    NM_FUNCTION;
 }
 
 /*!
@@ -56,6 +58,8 @@
  */
 NmApiDataPluginFactory::~NmApiDataPluginFactory()
 {
+    NM_FUNCTION;
+    
     if (mPlugin) {
         delete mPlugin;
         mPlugin = NULL;
@@ -72,6 +76,8 @@
  */
 NmApiDataPluginFactory *NmApiDataPluginFactory::instance()
 {
+    NM_FUNCTION;
+    
     if (!mInstance) {
         mInstance = new NmApiDataPluginFactory();
     }
@@ -84,6 +90,8 @@
  */
 void NmApiDataPluginFactory::releaseInstance(NmApiDataPluginFactory *&instance)
 {
+    NM_FUNCTION;
+    
     //can't have passed out instances if we don't have any
     if (mInstance) {
         if (instance == mInstance) {
@@ -103,6 +111,8 @@
  */
 NmDataPluginInterface *NmApiDataPluginFactory::interfaceInstance()
 {
+    NM_FUNCTION;
+    
     if (!mPlugin) {
         mPlugin = loadPlugin();
     }
@@ -114,6 +124,8 @@
  */
 QObject *NmApiDataPluginFactory::loadPlugin()
 {
+    NM_FUNCTION;
+    
     if (!mPluginLoader) {
         const QString KPluginDirectory = "c:\\resource\\plugins";
         QDir pluginDir = QDir(KPluginDirectory);
@@ -135,6 +147,8 @@
 
 QObject *NmApiDataPluginFactory::plugin()
 {
+    NM_FUNCTION;
+    
     if (!mPlugin) {
         mPlugin = loadPlugin();
     }
--- a/emailservices/nmclientapi/src/nmapiemailaddress.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapiemailaddress.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
  *
  */
 
+#include "emailtrace.h"
+
 #include <nmapiemailaddress.h>
 #include "nmapiemailaddress_p.h"
 
@@ -26,7 +28,7 @@
 NmApiEmailAddress::NmApiEmailAddress(const NmApiEmailAddress &envelope) :
     d(envelope.d)
 {
-
+    NM_FUNCTION;
 }
 
 /*!
@@ -34,6 +36,8 @@
  */
 NmApiEmailAddress::NmApiEmailAddress()
 {
+    NM_FUNCTION;
+    
     d = new NmApiEmailAddressPrivate();
 }
 
@@ -42,7 +46,7 @@
  */
 NmApiEmailAddress::~NmApiEmailAddress()
 {
-
+    NM_FUNCTION;
 }
 
 /*!
@@ -50,6 +54,8 @@
  */
 NmApiEmailAddress &NmApiEmailAddress::operator=(const NmApiEmailAddress &addr)
 {
+    NM_FUNCTION;
+    
     if (this != &addr) {
         d = addr.d;
     }
@@ -61,6 +67,8 @@
  */
 bool NmApiEmailAddress::operator==(const NmApiEmailAddress &addr)
 {
+    NM_FUNCTION;
+    
     bool retVal = false;
     if (this->d == addr.d) {
         retVal = true;
@@ -73,6 +81,8 @@
  */
 QString NmApiEmailAddress::displayName() const
 {
+    NM_FUNCTION;
+    
     return d->displayName;
 }
 
@@ -81,6 +91,8 @@
  */
 QString NmApiEmailAddress::address() const
 {
+    NM_FUNCTION;
+    
     return d->address;
 }
 
@@ -89,6 +101,8 @@
  */
 void NmApiEmailAddress::setDisplayName(const QString &displayName)
 {
+    NM_FUNCTION;
+    
     d->displayName = displayName;
 }
 
@@ -97,6 +111,8 @@
  */
 void NmApiEmailAddress::setAddress(const QString &address)
 {
+    NM_FUNCTION;
+    
     d->address = address;
 }
 }
--- a/emailservices/nmclientapi/src/nmapiemailservice.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapiemailservice.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
  *
  */
 
+#include "emailtrace.h"
+
 #include <nmapiemailservice.h>
 #include "nmapiengine.h"
 
@@ -30,7 +32,7 @@
 NmApiEmailService::NmApiEmailService(QObject *parent) :
     QObject(parent), mEngine(NULL), mIsRunning(false)
 {
-
+    NM_FUNCTION;
 }
 
 /*!
@@ -38,6 +40,8 @@
  */
 NmApiEmailService::~NmApiEmailService()
 {
+    NM_FUNCTION;
+    
     if (mEngine) {
         uninitialise();
     }
@@ -52,6 +56,8 @@
     const quint64 envelopeId,
     EmailClientApi::NmApiMessageEnvelope &envelope)
 {
+    NM_FUNCTION;
+    
     if (!mEngine) {
         return false;
     }
@@ -63,6 +69,8 @@
  */
 bool NmApiEmailService::getMailbox(const quint64 mailboxId, EmailClientApi::NmApiMailbox &mailboxInfo)
 {
+    NM_FUNCTION;
+    
     if (!mEngine) {
         return false;
     }
@@ -75,6 +83,8 @@
  */
 void NmApiEmailService::initialise()
 {
+    NM_FUNCTION;
+    
     if (!mEngine) {
         mEngine = NmApiEngine::instance();
     }
@@ -93,6 +103,8 @@
  */
 void NmApiEmailService::uninitialise()
 {
+    NM_FUNCTION;
+    
     NmApiEngine::releaseInstance(mEngine);
     mIsRunning = false;
 }
@@ -102,6 +114,8 @@
  */
 bool NmApiEmailService::isRunning() const
 {
+    NM_FUNCTION;
+    
     return mIsRunning;
 }
 
--- a/emailservices/nmclientapi/src/nmapiengine.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapiengine.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,7 @@
  *
  */
 
+#include "emailtrace.h"
 
 #include <nmapicommonheader.h>
 
@@ -43,6 +44,8 @@
 NmApiEngine::NmApiEngine() :
     mFactory(NULL)
 {
+    NM_FUNCTION;
+    
     mFactory = NmApiDataPluginFactory::instance();
 }
 
@@ -51,6 +54,8 @@
  */
 NmApiEngine::~NmApiEngine()
 {
+    NM_FUNCTION;
+    
     NmApiDataPluginFactory::releaseInstance(mFactory);
 }
 
@@ -63,6 +68,8 @@
  */
 NmApiEngine *NmApiEngine::instance()
 {
+    NM_FUNCTION;
+    
     if (!mInstance) {
         mInstance = new NmApiEngine();
     }
@@ -75,6 +82,8 @@
  */
 void NmApiEngine::startCollectingEvents()
 {
+    NM_FUNCTION;
+    
     QObject *plugin = mFactory->plugin();
     if(plugin){
         connect(plugin, SIGNAL(messageEvent(NmMessageEvent, NmId, QList<NmId> , NmId)), this,
@@ -94,6 +103,8 @@
  */
 void NmApiEngine::mailboxChangedArrived(NmMailboxEvent mailboxEvent, const QList<NmId> &mailboxIds)
 {
+    NM_FUNCTION;
+    
     NmApiMessage message;
     message.objectType = EMailbox;
     switch (mailboxEvent) {
@@ -138,6 +149,8 @@
     const QList<NmId> &messageIds,
     const NmId &mailboxId)
 {
+    NM_FUNCTION;
+    
     NmApiMessage message;
     message.objectType = EMessage;
     switch (messageEvent) {
@@ -175,6 +188,8 @@
  */
 void NmApiEngine::releaseInstance(NmApiEngine *&instance)
 {
+    NM_FUNCTION;
+    
     //can't have passed out instances if we don't have any
     if (mInstance) {
         if (instance == mInstance) {
@@ -196,6 +211,8 @@
  */
 void NmApiEngine::listMailboxes(QList<EmailClientApi::NmApiMailbox> &mailboxList)
 {
+    NM_FUNCTION;
+    
     QList<NmMailbox*> mailboxFromPlugin;
 
     NmDataPluginInterface *instance =  mFactory->interfaceInstance();
@@ -219,6 +236,8 @@
  */
 void NmApiEngine::listFolders(const quint64 mailboxId, QList<EmailClientApi::NmApiFolder> &folderList)
 {
+    NM_FUNCTION;
+    
     QList<NmFolder*> folderFromPlugin;
     NmDataPluginInterface *instance = mFactory->interfaceInstance();
     if (instance) {
@@ -243,6 +262,8 @@
 void NmApiEngine::listEnvelopes(const quint64 mailboxId, const quint64 folderId, 
                     QList<EmailClientApi::NmApiMessageEnvelope> &messageEnvelopeList)
 {
+    NM_FUNCTION;
+    
     QList<NmMessage*> messages;
     NmDataPluginInterface *instance = mFactory->interfaceInstance();
     if (instance) {
@@ -287,6 +308,8 @@
     const quint64 envelopeId,
     EmailClientApi::NmApiMessageEnvelope &envelope)
 {
+    NM_FUNCTION;
+    
     //flag indicating that envelope with given id was found
     bool found = false;
     NmDataPluginInterface *instance = mFactory->interfaceInstance();
@@ -327,6 +350,8 @@
  */
 bool NmApiEngine::getMailboxById(const quint64 mailboxId, EmailClientApi::NmApiMailbox &mailbox)
 {
+    NM_FUNCTION;
+    
     //flag indicating that mailbox with given id was found
     bool found = false;
     NmDataPluginInterface *instance = mFactory->interfaceInstance();
--- a/emailservices/nmclientapi/src/nmapienvelopelisting.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapienvelopelisting.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,7 @@
  *
  */
 
+#include "emailtrace.h"
 
 #include <nmapienvelopelisting.h>
 #include "nmapienvelopelisting_p.h"
@@ -36,6 +37,8 @@
     const quint64 mailboxId) :
     NmApiMessageTask(parent)
 {
+    NM_FUNCTION;
+    
     mListingPrivate = new NmApiEnvelopeListingPrivate(this);
     mListingPrivate->mailboxId = mailboxId;
     mListingPrivate->folderId = folderId;
@@ -47,6 +50,8 @@
  */
 NmApiEnvelopeListing::~NmApiEnvelopeListing()
 {
+    NM_FUNCTION;
+    
     if (mListingPrivate->mIsRunning) {
         mListingPrivate->releaseEngine();
     }
@@ -67,6 +72,8 @@
  */
 bool NmApiEnvelopeListing::start()
 {
+    NM_FUNCTION;
+    
     bool result = false;
 
     if (mListingPrivate->mIsRunning) {
@@ -101,6 +108,8 @@
  */
 void NmApiEnvelopeListing::cancel()
 {
+    NM_FUNCTION;
+    
     if (mListingPrivate->mIsRunning) {
         mListingPrivate->mIsRunning = false;
         mListingPrivate->releaseEngine();
@@ -120,6 +129,8 @@
  */
 bool NmApiEnvelopeListing::getEnvelopes(QList<EmailClientApi::NmApiMessageEnvelope> &envelopes)
 {
+    NM_FUNCTION;
+    
     envelopes.clear();
 
     bool result = false;
@@ -140,6 +151,8 @@
  */
 bool NmApiEnvelopeListing::isRunning() const
 {
+    NM_FUNCTION;
+    
     return mListingPrivate->mIsRunning;
 }
 
--- a/emailservices/nmclientapi/src/nmapienvelopelisting_p.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapienvelopelisting_p.cpp	Fri May 28 13:56:43 2010 +0300
@@ -14,6 +14,9 @@
  * Description:
  *
  */
+
+#include "emailtrace.h"
+
 #include "nmapiengine.h"
 #include "nmapienvelopelisting_p.h"
 
@@ -27,11 +30,13 @@
 NmApiEnvelopeListingPrivate::NmApiEnvelopeListingPrivate(QObject *parent) :
     QObject(parent), mEngine(NULL)
 {
-
+    NM_FUNCTION;
 }
 
 NmApiEnvelopeListingPrivate::~NmApiEnvelopeListingPrivate()
 {
+    NM_FUNCTION;
+    
     releaseEngine();
 }
 
@@ -44,6 +49,8 @@
  */
 bool NmApiEnvelopeListingPrivate::initializeEngine()
 {
+    NM_FUNCTION;
+    
     mEngine = NmApiEngine::instance();
     return mEngine ? true : false;
 }
@@ -55,6 +62,8 @@
  */
 void NmApiEnvelopeListingPrivate::releaseEngine()
 {
+    NM_FUNCTION;
+    
     NmApiEngine::releaseInstance(mEngine);
 }
 
@@ -68,6 +77,8 @@
  */
 qint32 NmApiEnvelopeListingPrivate::grabEnvelopes()
 {
+    NM_FUNCTION;
+    
     if(!mEngine){
         return -1;
     }
--- a/emailservices/nmclientapi/src/nmapieventnotifier.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapieventnotifier.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
  *
  */
 
+#include "emailtrace.h"
+
 #include <QList>
 #include <QVariant>
 #include <QString>
@@ -35,6 +37,8 @@
     NmApiMessageTask(parent)
 
 {
+    NM_FUNCTION;
+    
     //set timer
     mNmApiEventNotifierPrivate = new NmApiEventNotifierPrivate(this);
     mNmApiEventNotifierPrivate->mEmitSignals = new QTimer(this);
@@ -49,6 +53,8 @@
  */
 NmApiEventNotifier::~NmApiEventNotifier()
 {
+    NM_FUNCTION;
+    
     if (mNmApiEventNotifierPrivate->mIsRunning) {
         mNmApiEventNotifierPrivate->releaseEngine();
     }
@@ -61,6 +67,8 @@
  */
 bool NmApiEventNotifier::start()
 {
+    NM_FUNCTION;
+    
     bool result = false;
 
     if (mNmApiEventNotifierPrivate->mIsRunning) {
@@ -93,6 +101,8 @@
  */
 void NmApiEventNotifier::cancel()
 {
+    NM_FUNCTION;
+    
     mNmApiEventNotifierPrivate->cancel();
     emit canceled();
 }
@@ -102,6 +112,8 @@
  */
 bool NmApiEventNotifier::isRunning() const
 {
+    NM_FUNCTION;
+    
     return mNmApiEventNotifierPrivate->mIsRunning;
 }
 
@@ -113,6 +125,8 @@
  */
 void NmApiEventNotifier::sendEventsFromBuffer()
 {
+    NM_FUNCTION;
+    
     qRegisterMetaType<EmailClientApi::NmApiMailboxEvent> ("EmailClientApi::NmApiMailboxEvent");
     qRegisterMetaType<EmailClientApi::NmApiMessageEvent> ("EmailClientApi::NmApiMessageEvent");
     NmApiMessage events;
--- a/emailservices/nmclientapi/src/nmapieventnotifier_p.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapieventnotifier_p.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
  *
  */
 
+#include "emailtrace.h"
+
 #include "nmapiengine.h"
 #include "nmapieventnotifier_p.h"
 
@@ -28,7 +30,7 @@
 NmApiEventNotifierPrivate::NmApiEventNotifierPrivate(QObject *parent) :
     QObject(parent), mEmitSignals(NULL), mEngine(NULL), mIsRunning(false)
 {
-
+    NM_FUNCTION;
 }
 
 /*!
@@ -36,7 +38,7 @@
  */
 NmApiEventNotifierPrivate::~NmApiEventNotifierPrivate()
 {
-
+    NM_FUNCTION;
 }
 
 /*!
@@ -49,6 +51,8 @@
  */
 bool NmApiEventNotifierPrivate::initializeEngine()
 {
+    NM_FUNCTION;
+    
     if (!mEngine) {
         mEngine = NmApiEngine::instance();
     }
@@ -63,6 +67,8 @@
  */
 void NmApiEventNotifierPrivate::releaseEngine()
 {
+    NM_FUNCTION;
+    
     if (mIsRunning) {
         cancel();
     }
@@ -80,11 +86,15 @@
  */
 void NmApiEventNotifierPrivate::emailStoreEvent(const NmApiMessage &events)
 {
+    NM_FUNCTION;
+    
     mBufferOfEvents << events;
 }
 
 void NmApiEventNotifierPrivate::cancel()
 {
+    NM_FUNCTION;
+    
     if (!mIsRunning) {
         return;
     }
--- a/emailservices/nmclientapi/src/nmapifolder.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapifolder.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
  *
  */
 
+#include "emailtrace.h"
+
 #include <nmapifolder.h>
 #include "nmapifolder_p.h"
 
@@ -26,6 +28,8 @@
  */
 NmApiFolder::NmApiFolder()
 {
+    NM_FUNCTION;
+    
     d = new NmApiFolderPrivate();
 }
 
@@ -35,7 +39,7 @@
 NmApiFolder::NmApiFolder(const NmApiFolder &nmApiFolder)
 : d(nmApiFolder.d)
 {
-    
+    NM_FUNCTION;
 }
 
 /*!
@@ -43,7 +47,7 @@
  */
 NmApiFolder::~NmApiFolder()
 {
-
+    NM_FUNCTION;
 }
 
 /*!
@@ -51,6 +55,8 @@
  */
 NmApiFolder &NmApiFolder::operator=(const NmApiFolder &folder)
 {
+    NM_FUNCTION;
+    
     if (this != &folder) {
         d = folder.d;
     }
@@ -62,6 +68,8 @@
  */
 bool NmApiFolder::operator==(const NmApiFolder &folder)
 {
+    NM_FUNCTION;
+    
     bool returnValue = false;
     if (d == folder.d) {
         returnValue = true;
@@ -74,6 +82,8 @@
  */
 quint64 NmApiFolder::id() const
 {
+    NM_FUNCTION;
+    
     return d->id;
 }
 
@@ -82,6 +92,8 @@
  */
 QString NmApiFolder::name() const
 {
+    NM_FUNCTION;
+    
     return d->name;
 }
 
@@ -90,6 +102,8 @@
  */
 EmailClientApi::NmApiEmailFolderType NmApiFolder::folderType() const
 {
+    NM_FUNCTION;
+    
     return d->folderType;
 }
 
@@ -98,6 +112,8 @@
  */
 void NmApiFolder::setName(const QString& name)
 {
+    NM_FUNCTION;
+    
     d->name = name;
 }
 
@@ -106,6 +122,8 @@
  */
 void NmApiFolder::setId(quint64 id)
 {
+    NM_FUNCTION;
+    
     d->id = id;
 }
 
@@ -114,6 +132,8 @@
  */
 void NmApiFolder::setFolderType(EmailClientApi::NmApiEmailFolderType folderType)
 {
+    NM_FUNCTION;
+    
     d->folderType = folderType;
 }
 
@@ -122,6 +142,8 @@
  */
 void NmApiFolder::setParentFolderId(quint64 parentId)
 {
+    NM_FUNCTION;
+    
     d->parentId = parentId;
 }
 
@@ -130,6 +152,8 @@
  */
 void NmApiFolder::setChildFolderIds(QList<quint64> &childFolderIds)
 {
+    NM_FUNCTION;
+    
     d->childFolderIds = childFolderIds;
 }
 
@@ -139,6 +163,8 @@
  */
 void NmApiFolder::getChildFolderIds(QList<quint64> &childFolderIds)
 {
+    NM_FUNCTION;
+    
     childFolderIds = d->childFolderIds;
 }
 
@@ -148,6 +174,8 @@
  */
 quint64 NmApiFolder::parentFolderId() const
 {
+    NM_FUNCTION;
+    
     return d->parentId;
 }
 }
--- a/emailservices/nmclientapi/src/nmapifolderlisting.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapifolderlisting.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,7 @@
  *
  */
 
+#include "emailtrace.h"
 
 #include <nmapifolderlisting.h>
 #include "nmapifolderlisting_p.h"
@@ -35,6 +36,8 @@
 NmApiFolderListing::NmApiFolderListing(QObject *parent, const quint64 &nmMailboxId) :
     NmApiMessageTask(parent)
 {
+    NM_FUNCTION;
+    
     mFolderListing = new NmApiFolderListingPrivate(this);
     mFolderListing->mIsRunning = false;
     mFolderListing->mMailboxId = nmMailboxId;
@@ -45,6 +48,8 @@
  */
 NmApiFolderListing::~NmApiFolderListing()
 {
+    NM_FUNCTION;
+    
     if (mFolderListing->mIsRunning) {
         mFolderListing->releaseEngine();
     }
@@ -59,6 +64,8 @@
  */
 bool NmApiFolderListing::getFolders(QList<EmailClientApi::NmApiFolder> &folders)
 {
+    NM_FUNCTION;
+    
     folders.clear();
     if (!mFolderListing->mIsRunning || mFolderListing->mFolders.isEmpty()) {
         return false;
@@ -83,6 +90,8 @@
  */
 bool NmApiFolderListing::start()
 {
+    NM_FUNCTION;
+    
     if (mFolderListing->mIsRunning) {
         return true;
     }
@@ -111,6 +120,8 @@
  */
 void NmApiFolderListing::cancel()
 {
+    NM_FUNCTION;
+    
     if (!mFolderListing->mIsRunning) {
         return;
     }
@@ -127,6 +138,8 @@
  */
 bool NmApiFolderListing::isRunning() const
 {
+    NM_FUNCTION;
+    
     return mFolderListing->mIsRunning;
 }
 
--- a/emailservices/nmclientapi/src/nmapifolderlisting_p.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapifolderlisting_p.cpp	Fri May 28 13:56:43 2010 +0300
@@ -14,6 +14,9 @@
  * Description:
  *
  */
+
+#include "emailtrace.h"
+
 #include "nmapiengine.h"
 #include "nmapifolderlisting_p.h"
 
@@ -28,7 +31,7 @@
 NmApiFolderListingPrivate::NmApiFolderListingPrivate(QObject *parent) :
     QObject(parent), mEngine(NULL)
 {
-
+    NM_FUNCTION;
 }
 
 /*!
@@ -36,6 +39,8 @@
  */
 NmApiFolderListingPrivate::~NmApiFolderListingPrivate()
 {
+    NM_FUNCTION;
+    
     releaseEngine();
 }
 
@@ -48,6 +53,8 @@
  */
 bool NmApiFolderListingPrivate::initializeEngine()
 {
+    NM_FUNCTION;
+    
     if (!mEngine) {
         mEngine = NmApiEngine::instance();
     }
@@ -62,6 +69,8 @@
  */
 void NmApiFolderListingPrivate::releaseEngine()
 {
+    NM_FUNCTION;
+    
     NmApiEngine::releaseInstance(mEngine);
 }
 
@@ -75,6 +84,8 @@
  */
 qint32 NmApiFolderListingPrivate::grabFolders()
 {
+    NM_FUNCTION;
+    
     if (!mEngine) {
         return -1;
     }
--- a/emailservices/nmclientapi/src/nmapimailbox.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapimailbox.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
  *
  */
 
+#include "emailtrace.h"
+
 #include <nmapimailbox.h>
 #include "nmapimailbox_p.h"
 
@@ -28,6 +30,8 @@
  */
 NmApiMailbox::NmApiMailbox()
 {
+    NM_FUNCTION;
+    
     d = new NmApiMailboxPrivate();
 }
 
@@ -37,7 +41,7 @@
 NmApiMailbox::NmApiMailbox(const NmApiMailbox &nmApiMailbox)
 : d(nmApiMailbox.d)
 {
-    
+    NM_FUNCTION;
 }
 
 /*!
@@ -45,7 +49,7 @@
  */
 NmApiMailbox::~NmApiMailbox()
 {
-
+    NM_FUNCTION;
 }
 
 /*!
@@ -53,6 +57,8 @@
  */
 NmApiMailbox &NmApiMailbox::operator=(const NmApiMailbox &mailbox)
 {
+    NM_FUNCTION;
+    
     if (this != &mailbox) {
         d = mailbox.d;
     }
@@ -64,6 +70,8 @@
  */
 bool NmApiMailbox::operator==(const NmApiMailbox &mailbox)
 {
+    NM_FUNCTION;
+    
     bool returnValue = false;
     if (d == mailbox.d) {
         returnValue = true;
@@ -76,6 +84,8 @@
  */
 quint64 NmApiMailbox::id() const
 {
+    NM_FUNCTION;
+    
     return d->id;
 }
 
@@ -84,6 +94,8 @@
  */
 QString NmApiMailbox::address() const
 {
+    NM_FUNCTION;
+    
     return d->address;
 }
 
@@ -92,6 +104,8 @@
  */
 QString NmApiMailbox::name() const
 {
+    NM_FUNCTION;
+    
     return d->name;
 }
 
@@ -100,6 +114,8 @@
  */
 void NmApiMailbox::setId(quint64 id)
 {
+    NM_FUNCTION;
+    
     d->id = id;
 }
 
@@ -108,6 +124,8 @@
  */
 void NmApiMailbox::setAddress(const QString &address)
 {
+    NM_FUNCTION;
+    
     d->address = address;
 }
 
@@ -116,6 +134,8 @@
  */
 void NmApiMailbox::setName(const QString &name)
 {
+    NM_FUNCTION;
+    
     d->name = name;
 }
 
--- a/emailservices/nmclientapi/src/nmapimailboxlisting.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapimailboxlisting.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
  *
  */
 
+#include "emailtrace.h"
+
 #include <nmapimailboxlisting.h>
 
 #include <QObject>
@@ -37,6 +39,8 @@
 NmApiMailboxListing::NmApiMailboxListing(QObject *parent) :
     NmApiMessageTask(parent)
 {
+    NM_FUNCTION;
+    
     mNmApiMailboxListingPrivate = new NmApiMailboxListingPrivate(this);
     mNmApiMailboxListingPrivate->mIsRunning = false;
 }
@@ -46,6 +50,8 @@
  */
 NmApiMailboxListing::~NmApiMailboxListing()
 {
+    NM_FUNCTION;
+    
     if (mNmApiMailboxListingPrivate->mIsRunning) {
         mNmApiMailboxListingPrivate->releaseEngine();
     }
@@ -63,6 +69,8 @@
  */
 bool NmApiMailboxListing::getMailboxes(QList<EmailClientApi::NmApiMailbox> &mailboxes)
 {
+    NM_FUNCTION;
+    
     mailboxes.clear();
 
     bool result = false;
@@ -101,6 +109,8 @@
  */
 bool NmApiMailboxListing::start()
 {
+    NM_FUNCTION;
+    
     bool result = false;
     if (mNmApiMailboxListingPrivate->mIsRunning) {
         result = true;
@@ -133,6 +143,8 @@
  */
 void NmApiMailboxListing::cancel()
 {
+    NM_FUNCTION;
+    
     if (mNmApiMailboxListingPrivate->mIsRunning) {
 
         mNmApiMailboxListingPrivate->mIsRunning = false;
@@ -150,6 +162,8 @@
  */
 bool NmApiMailboxListing::isRunning() const
 {
+    NM_FUNCTION;
+    
     return mNmApiMailboxListingPrivate->mIsRunning;
 }
 
--- a/emailservices/nmclientapi/src/nmapimailboxlisting_p.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapimailboxlisting_p.cpp	Fri May 28 13:56:43 2010 +0300
@@ -14,6 +14,9 @@
  * Description:
  *
  */
+
+#include "emailtrace.h"
+
 #include "nmapiengine.h"
 #include "nmapimailboxlisting_p.h"
 
@@ -24,12 +27,12 @@
 NmApiMailboxListingPrivate::NmApiMailboxListingPrivate(QObject *parent) :
     QObject(parent), mNmApiEngine(NULL)
 {
-
+    NM_FUNCTION;
 }
 
 NmApiMailboxListingPrivate::~NmApiMailboxListingPrivate()
 {
-
+    NM_FUNCTION;
 }
 
 /*!
@@ -42,6 +45,8 @@
  */
 bool NmApiMailboxListingPrivate::initializeEngine()
 {
+    NM_FUNCTION;
+    
     if (!mNmApiEngine) {
         mNmApiEngine = NmApiEngine::instance();
     }
@@ -56,6 +61,8 @@
  */
 void NmApiMailboxListingPrivate::releaseEngine()
 {
+    NM_FUNCTION;
+    
     NmApiEngine::releaseInstance(mNmApiEngine);
 }
 
@@ -69,6 +76,8 @@
  */
 qint32 NmApiMailboxListingPrivate::grabMailboxes()
 {
+    NM_FUNCTION;
+    
     if (!mNmApiEngine) {
         return -1;
     }
--- a/emailservices/nmclientapi/src/nmapimessagebody.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapimessagebody.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
  *
  */
 
+#include "emailtrace.h"
+
 #include <nmapimessagebody.h>
 #include "nmapimessagebody_p.h"
 
@@ -26,6 +28,8 @@
  */
 NmApiMessageBody::NmApiMessageBody()
 {
+    NM_FUNCTION;
+    
     d = new NmApiMessageBodyPrivate();
 }
 
@@ -34,7 +38,7 @@
  */
 NmApiMessageBody::NmApiMessageBody(const NmApiMessageBody &apiMessageBody) : d(apiMessageBody.d)
 {
-
+    NM_FUNCTION;
 }
 
 /*!
@@ -42,6 +46,8 @@
  */
 NmApiMessageBody& NmApiMessageBody::operator=(const NmApiMessageBody &apiMessageBody)
 {
+    NM_FUNCTION;
+    
 	if (this != &apiMessageBody) 
 	{
 		d = apiMessageBody.d;
@@ -54,6 +60,8 @@
  */    
 bool NmApiMessageBody::operator==(const NmApiMessageBody &apiMessageBody)
 {
+    NM_FUNCTION;
+    
     bool retVal = false;
     if (this->d == apiMessageBody.d)
     {
@@ -67,13 +75,15 @@
  */
 NmApiMessageBody::~NmApiMessageBody()
 {
-
+    NM_FUNCTION;
 }
 /*!
    getter for total size of message body in bytes
  */
 quint64 NmApiMessageBody::totalSize() const
 {
+    NM_FUNCTION;
+    
     return d->totalSize;
 }
 
@@ -82,6 +92,8 @@
  */
 quint64 NmApiMessageBody::fetchedSize() const
 {
+    NM_FUNCTION;
+    
     return d->fetchedSize;
 }
 
@@ -90,6 +102,8 @@
  */
 QString NmApiMessageBody::content() const
 {
+    NM_FUNCTION;
+    
     return d->content;
 }
 
@@ -98,6 +112,8 @@
  */
 void NmApiMessageBody::setTotalSize(quint64 size)
 {
+    NM_FUNCTION;
+    
     d->totalSize = size;
 }
 
@@ -106,6 +122,8 @@
  */
 void NmApiMessageBody::setFetchedSize(quint64 size)
 {
+    NM_FUNCTION;
+    
     d->fetchedSize = size;
 }
 
@@ -114,6 +132,8 @@
  */
 void NmApiMessageBody::setContent(const QString& content)
 {
+    NM_FUNCTION;
+    
     d->content = content;
 }
 }
--- a/emailservices/nmclientapi/src/nmapimessageenvelope.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapimessageenvelope.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
  *
  */
 
+#include "emailtrace.h"
+
 #include <QString>
 #include <QDateTime>
 
@@ -32,7 +34,7 @@
 NmApiMessageEnvelope::NmApiMessageEnvelope(const NmApiMessageEnvelope &envelope) :
     d(envelope.d)
 {
-
+    NM_FUNCTION;
 }
 
 /*!
@@ -40,6 +42,8 @@
  */
 NmApiMessageEnvelope::NmApiMessageEnvelope()
 {
+    NM_FUNCTION;
+    
     d = new NmApiMessageEnvelopePrivate();
 }
 
@@ -48,7 +52,7 @@
  */
 NmApiMessageEnvelope::~NmApiMessageEnvelope()
 {
-
+    NM_FUNCTION;
 }
 
 /*!
@@ -56,6 +60,8 @@
  */
 NmApiMessageEnvelope &NmApiMessageEnvelope::operator=(const NmApiMessageEnvelope &envelope)
 {
+    NM_FUNCTION;
+    
     if (this != &envelope) {
         d = envelope.d;
     }
@@ -67,6 +73,8 @@
  */
 bool NmApiMessageEnvelope::operator==(const NmApiMessageEnvelope &envelope)
 {
+    NM_FUNCTION;
+    
     bool retVal = false;
     if (this->d == envelope.d) {
         retVal = true;
@@ -79,6 +87,8 @@
  */
 quint64 NmApiMessageEnvelope::id() const
 {
+    NM_FUNCTION;
+    
     return d->id;
 }
 
@@ -87,6 +97,8 @@
  */
 quint64 NmApiMessageEnvelope::parentFolder() const
 {
+    NM_FUNCTION;
+    
     return d->parentFolder;
 }
 
@@ -95,6 +107,8 @@
  */
 QString NmApiMessageEnvelope::subject() const
 {
+    NM_FUNCTION;
+    
     return d->subject;
 }
 
@@ -103,6 +117,8 @@
  */
 QString NmApiMessageEnvelope::sender() const
 {
+    NM_FUNCTION;
+    
     return d->sender;
 }
 
@@ -111,6 +127,8 @@
  */
 void NmApiMessageEnvelope::getToRecipients(QList<EmailClientApi::NmApiEmailAddress> &toRecipients)
 {
+    NM_FUNCTION;
+    
     toRecipients = d->toRecipients;
 }
 
@@ -119,6 +137,8 @@
  */
 void NmApiMessageEnvelope::getCcRecipients(QList<EmailClientApi::NmApiEmailAddress> &ccRecipients)
 {
+    NM_FUNCTION;
+    
     ccRecipients = d->ccRecipients;
 }
 
@@ -127,6 +147,8 @@
  */
 QDateTime NmApiMessageEnvelope::sentTime() const
 {
+    NM_FUNCTION;
+    
     return d->sentTime;
 }
 
@@ -135,6 +157,8 @@
  */
 bool NmApiMessageEnvelope::isRead() const
 {
+    NM_FUNCTION;
+    
     return d->read;
 }
 
@@ -143,6 +167,8 @@
  */
 bool NmApiMessageEnvelope::hasAttachments() const
 {
+    NM_FUNCTION;
+    
     return d->attachments;
 }
 
@@ -151,6 +177,8 @@
  */
 bool NmApiMessageEnvelope::isForwarded() const
 {
+    NM_FUNCTION;
+    
     return d->forwarded;
 }
 
@@ -159,6 +187,8 @@
  */
 bool NmApiMessageEnvelope::isReplied() const
 {
+    NM_FUNCTION;
+    
     return d->replied;
 }
 
@@ -167,6 +197,8 @@
  */
 QString NmApiMessageEnvelope::contentType() const
 {
+    NM_FUNCTION;
+    
     return d->contentType;
 }
 
@@ -175,6 +207,8 @@
  */
 void NmApiMessageEnvelope::getPlainTextBody(EmailClientApi::NmApiMessageBody &body)
 {
+    NM_FUNCTION;
+    
     body.setContent(d->plainText);
     body.setFetchedSize(d->fetchedSize);
     body.setTotalSize(d->totalSize);
@@ -185,6 +219,8 @@
  */
 void NmApiMessageEnvelope::setId(quint64 id)
 {
+    NM_FUNCTION;
+    
     d->id = id;
 }
 
@@ -193,6 +229,8 @@
  */
 void NmApiMessageEnvelope::setParentFolder(quint64 parentFolder)
 {
+    NM_FUNCTION;
+    
     d->parentFolder = parentFolder;
 }
 
@@ -201,6 +239,8 @@
  */
 void NmApiMessageEnvelope::setSubject(const QString &subject)
 {
+    NM_FUNCTION;
+    
     d->subject = subject;
 }
 
@@ -209,6 +249,8 @@
  */
 void NmApiMessageEnvelope::setSender(const QString &sender)
 {
+    NM_FUNCTION;
+    
     d->sender = sender;
 }
 
@@ -218,6 +260,8 @@
 void NmApiMessageEnvelope::setToRecipients(
     const QList<EmailClientApi::NmApiEmailAddress> &toRecipients)
 {
+    NM_FUNCTION;
+    
     d->toRecipients = toRecipients;
 }
 
@@ -227,6 +271,8 @@
 void NmApiMessageEnvelope::setCcRecipients(
     const QList<EmailClientApi::NmApiEmailAddress> &ccRecipients)
 {
+    NM_FUNCTION;
+    
     d->ccRecipients = ccRecipients;
 }
 
@@ -235,6 +281,8 @@
  */
 void NmApiMessageEnvelope::setSentTime(QDateTime sentTime)
 {
+    NM_FUNCTION;
+    
     d->sentTime = sentTime;
 }
 
@@ -243,6 +291,8 @@
  */
 void NmApiMessageEnvelope::setIsRead(bool isRead)
 {
+    NM_FUNCTION;
+    
     d->read = isRead;
 }
 
@@ -251,6 +301,8 @@
  */
 void NmApiMessageEnvelope::setHasAttachments(bool hasAttachments)
 {
+    NM_FUNCTION;
+    
     d->attachments = hasAttachments;
 }
 
@@ -259,6 +311,8 @@
  */
 void NmApiMessageEnvelope::setIsForwarded(bool isForwarded)
 {
+    NM_FUNCTION;
+    
     d->forwarded = isForwarded;
 }
 
@@ -267,6 +321,8 @@
  */
 void NmApiMessageEnvelope::setIsReplied(bool isReplied)
 {
+    NM_FUNCTION;
+    
     d->replied = isReplied;
 }
 
@@ -275,6 +331,8 @@
  */
 void NmApiMessageEnvelope::setContentType(const QString &contentType)
 {
+    NM_FUNCTION;
+    
     d->contentType = contentType;
 }
 
@@ -283,6 +341,8 @@
  */
 void NmApiMessageEnvelope::setPlainText(const QString &plainText)
 {
+    NM_FUNCTION;
+    
     d->plainText = plainText;
 }
 
@@ -291,6 +351,8 @@
  */
 void NmApiMessageEnvelope::setTotalSize(quint64 totalSize)
 {
+    NM_FUNCTION;
+    
     d->totalSize = totalSize;
 }
 
@@ -299,6 +361,8 @@
  */
 void NmApiMessageEnvelope::setFetchedSize(quint64 fetchedSize)
 {
+    NM_FUNCTION;
+    
     d->fetchedSize = fetchedSize;
 }
 
@@ -307,6 +371,8 @@
  */
 QString NmApiMessageEnvelope::plainText() const
 {
+    NM_FUNCTION;
+    
     return d->plainText;
 }
 
@@ -315,6 +381,8 @@
  */
 quint64 NmApiMessageEnvelope::totalSize() const
 {
+    NM_FUNCTION;
+    
     return d->totalSize;
 }
 
@@ -323,6 +391,8 @@
  */
 quint64 NmApiMessageEnvelope::fetchedSize() const
 {
+    NM_FUNCTION;
+    
     return d->fetchedSize;
 }
 }
--- a/emailservices/nmclientapi/src/nmapimessagetask.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapimessagetask.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
  *
  */
 
+#include "emailtrace.h"
+
 #include <nmapimessagetask.h>
 
 /*!
@@ -23,6 +25,7 @@
 NmApiMessageTask::NmApiMessageTask(QObject *parent)
 : QObject(parent)
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -30,6 +33,6 @@
  */
 NmApiMessageTask::~NmApiMessageTask()
 {
-
+    NM_FUNCTION;
 }
 
--- a/emailservices/nmclientapi/src/nmapitypesconverter.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapitypesconverter.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
  *
  */
 
+#include "emailtrace.h"
+
 #include "nmapitypesconverter.h"
 
 #include <nmapicommonheader.h>
@@ -26,6 +28,8 @@
  */
 EmailClientApi::NmApiMailbox NmToApiConverter::NmMailbox2NmApiMailbox(const NmMailbox &mailbox)
 {
+    NM_FUNCTION;
+    
     EmailClientApi::NmApiMailbox api_mailbox;
     api_mailbox.setId(mailbox.id().id());
     api_mailbox.setName(mailbox.name());
@@ -39,6 +43,8 @@
  */
 EmailClientApi::NmApiFolder NmToApiConverter::NmFolder2NmApiFolder(const NmFolder &folder)
 {
+    NM_FUNCTION;
+    
     EmailClientApi::NmApiFolder api_folder;
 
     api_folder.setParentFolderId(folder.parentId().id());
@@ -54,6 +60,8 @@
 EmailClientApi::NmApiMessageEnvelope NmToApiConverter::NmMessageEnvelope2NmApiMessageEnvelope(
     const NmMessageEnvelope &envelope)
 {
+    NM_FUNCTION;
+    
     EmailClientApi::NmApiMessageEnvelope api_env;
     
     QList<NmAddress> to = envelope.toRecipients();
@@ -84,6 +92,8 @@
 QList<EmailClientApi::NmApiEmailAddress> NmToApiConverter::NmAddress2QString(
     const QList<NmAddress> &addresses)
 {
+    NM_FUNCTION;
+    
     QList<EmailClientApi::NmApiEmailAddress> nmAddresses;
     for (int i = 0; i < addresses.count(); i++) {
         EmailClientApi::NmApiEmailAddress addr;
--- a/emailservices/nmregister/inc/nmmailboxregisterinterface_p.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmregister/inc/nmmailboxregisterinterface_p.h	Fri May 28 13:56:43 2010 +0300
@@ -22,13 +22,7 @@
 //  INCLUDES
 #include <QObject>
 #include <qmobilityglobal.h>
-
-#ifdef Q_OS_SYMBIAN
 #include <xqserviceprovider.h>
-#else
-#include <QVariant>
-#endif
-
 
 //  FORWARD DECLARATIONS
 class QString;
@@ -40,12 +34,7 @@
 
 QTM_USE_NAMESPACE
 
-
-#ifdef Q_OS_SYMBIAN
 class NmMailboxRegisterInterfacePrivate : public XQServiceProvider
-#else
-class NmMailboxRegisterInterfacePrivate : public QObject
-#endif
 {
     Q_OBJECT
 
@@ -68,6 +57,8 @@
     bool pushWidgetToHomescreen(quint64 a, QString accountIconName);
     
     QString formLaunchUri(quint64 accountId) const;
+    
+    bool loadMenuClientService();
 
 private: 
     QServiceManager* mManager;
--- a/emailservices/nmregister/nmregister.pro	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmregister/nmregister.pro	Fri May 28 13:56:43 2010 +0300
@@ -21,7 +21,6 @@
 MOBILITY = serviceframework
 TARGET = nmregister
 QT += core
-#RESOURCES += nmregister.qrc
 LIBS += -lxqservice \
         -lnmailuiengine \
         -leuser \
@@ -35,10 +34,6 @@
 pluginDep.path = $$QT_PLUGINS_BASE_DIR
 DEPLOYMENT += pluginDep
 
-#addFiles.sources += ./resources/nmregister.xml
-#addFiles.path = xmldata
-#DEPLOYMENT += addFiles
-
 BLD_INF_RULES.prj_exports += "resource/nmregister.xml 			z:/private/2002DD16/nmregister.xml"
 BLD_INF_RULES.prj_exports += "rom/nmregister.iby		CORE_APP_LAYER_IBY_EXPORT_PATH(nmregister.iby)"
 BLD_INF_RULES.prj_exports += "rom/nmregisterlanguage.iby 		LANGUAGE_APP_LAYER_IBY_EXPORT_PATH(nmregisterlanguage.iby)"
@@ -57,5 +52,4 @@
 INCLUDEPATH += ../../inc
 
 DEPENDPATH += .
-#commented out until MCL has nmregister files in place here: epoc32/include/platform/qt/translations/
-#TRANSLATIONS = nmregister.ts
+TRANSLATIONS = nmregister.ts
--- a/emailservices/nmregister/rom/nmregister.iby	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmregister/rom/nmregister.iby	Fri May 28 13:56:43 2010 +0300
@@ -21,6 +21,6 @@
 #include <bldvariant.hrh>
 
 file=ABI_DIR\BUILD_DIR\nmregister.dll                         SHARED_LIB_DIR\nmregister.dll
-data=\epoc32\data\z\resource\qt\plugins\nmregister.qtplugin   resource\qt\plugins\nmregister.qtplugin
+data=ZRESOURCE\qt\plugins\nmregister.qtplugin   RESOURCE_FILES_DIR\qt\plugins\nmregister.qtplugin
 data=ZPRIVATE\2002DD16\nmregister.xml      					  private\2002DD16\nmregister.xml
 #endif  // __NMREGISTER_IBY__
--- a/emailservices/nmregister/src/nmmailboxregisterinterface.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmregister/src/nmmailboxregisterinterface.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
  *
  */
 
+#include "emailtrace.h"
+
 #include <qservicemanager.h>
 #include <qserviceinterfacedescriptor.h>
 #include <HbIcon>
@@ -25,284 +27,320 @@
 #include "nmmailboxregisterinterface_p.h" 
 
 //mandatory keys 
-const QString hsItemName          ("item:name"); 
-const QString hsitemLaunchUri     ("item:launchuri"); 
-const QString hsitemPublisherId   ("item:publisherId"); 
+const QString hsItemName("item:name");
+const QString hsitemLaunchUri("item:launchuri");
+const QString hsitemPublisherId("item:publisherId");
 //not mandatory 
-const QString hsItemWidgetUri     ("widget:uri"); 
-const QString hsItemDescription   ("item:description"); 
+const QString hsItemWidgetUri("widget:uri");
+const QString hsItemDescription("item:description");
 //for icon - not mandatory 
-const QString hsIconFileName      ("icon:filename");//to display specific icon from file 
-const QString hsIconName          ("icon:name");// HbIcon 
-const QString hsIconApplicationId ("icon:applicationid"); // icon from associated application 
+const QString hsIconFileName("icon:filename");//to display specific icon from file 
+const QString hsIconName("icon:name");// HbIcon 
+const QString hsIconApplicationId("icon:applicationid"); // icon from associated application 
 
 //Custom for nmHsWidgets
 //NmHsWidgetParamAccountId is used to identify what email account will be monitored by 
 //the registered hs widget
-const QString NmHsWidgetParamAccountId     ("widgetparam:accountId");
+const QString NmHsWidgetParamAccountId("widgetparam:accountId");
 //same as above but for pushing the widget to homescreen
-const QString NmHsAccountId       ("accountId");
+const QString NmHsAccountId("accountId");
 //NmHsWidgetParamAccountIconName is used to identify mailbox icon in application library
-const QString NmHsWidgetParamAccountIconName     ("widgetparam:accountIconName");
+const QString NmHsWidgetParamAccountIconName("widgetparam:accountIconName");
 //same as above but for pushing the widget to homescreen
-const QString NmHsAccountIconName  ("accountIconName");
+const QString NmHsAccountIconName("accountIconName");
 //This is used to identify nmhswidget in homescreen
-const QString NmHsWidget          ("nmhswidget");
+const QString NmHsWidget("nmhswidget");
 
 //parameter values
-const QString NmPublisherName     ("NmMailboxRegisterInterface");
-const QString NmLaunchUri         ("appto://0x200255BA?activityname=EmailInboxView&accountId=");
+const QString NmPublisherName("NmMailboxRegisterInterface");
+const QString NmLaunchUri("appto://0x200255BA?activityname=EmailInboxView&accountId=");
 //URI for the defined service
 const QLatin1String interfaceUri("com.nokia.symbian.IEmailRegisterAccount");
 
 /** Localization file name*/
 const QString KNmRegisterLocFileName = "nmregister_";
 /** Localization file location*/
-const QString KNmRegisterLocLocation = "z:/resource/qt/translations/";
+const QString KNmRegisterLocLocation = "/translations/";
 
 /*!
-    Constructor
-*/
+ Constructor
+ */
 NmMailboxRegisterInterface::NmMailboxRegisterInterface(QObject *parent) :
-    QObject(parent), m_d( new NmMailboxRegisterInterfacePrivate(this) )
-    {
-    }
+    QObject(parent), m_d(new NmMailboxRegisterInterfacePrivate(this))
+{
+    NM_FUNCTION;
+}
 
 /*!
-    Destructor
-*/
+ Destructor
+ */
 NmMailboxRegisterInterface::~NmMailboxRegisterInterface()
-    {
+{
+    NM_FUNCTION;
+    
     delete m_d;
-    }
+}
 
 /*!
-    registerNewMailbox
-*/
-bool NmMailboxRegisterInterface::registerNewMailbox(quint64 accountId, 
-        QString accountName, QString accountIconName)
-    {
-    return m_d->registerNewMailbox( accountId, accountName, accountIconName );
-    }
+ registerNewMailbox
+ */
+bool NmMailboxRegisterInterface::registerNewMailbox(
+    quint64 accountId,
+    QString accountName,
+    QString accountIconName)
+{
+    NM_FUNCTION;
+    
+    return m_d->registerNewMailbox(accountId, accountName, accountIconName);
+}
 
 /*!
-    updateMailboxName
-*/
-bool NmMailboxRegisterInterface::updateMailboxName(quint64 accountId, 
-        QString newName)
-    {
-    return m_d->updateMailboxName( accountId, newName );
-    }
-
+ updateMailboxName
+ */
+bool NmMailboxRegisterInterface::updateMailboxName(quint64 accountId, QString newName)
+{
+    NM_FUNCTION;
+    
+    return m_d->updateMailboxName(accountId, newName);
+}
 
 /*!
-    unregisterMailbox
-*/
+ unregisterMailbox
+ */
 bool NmMailboxRegisterInterface::unregisterMailbox(quint64 accountId)
-    {
-    return m_d->unregisterMailbox( accountId );
-    }
+{
+    NM_FUNCTION;
+    
+    return m_d->unregisterMailbox(accountId);
+}
 
-
-
-
+/*!
+ Constructor
+ */
+NmMailboxRegisterInterfacePrivate::NmMailboxRegisterInterfacePrivate(QObject *parent) :
+    XQServiceProvider(interfaceUri, parent), 
+    mManager(new QServiceManager()), 
+    mService(0),
+    mTranslator(new QTranslator())
+{
+    NM_FUNCTION;
+}
 
 /*!
-    Constructor
-*/
-NmMailboxRegisterInterfacePrivate::NmMailboxRegisterInterfacePrivate(QObject *parent) :
-    XQServiceProvider(interfaceUri, parent ), 
-    mManager(0),
-    mService(0),
-    mTranslator(0)
-    {
-    //commented out until MCL has nmregister files in place here: epoc32/include/platform/qt/translations/
-    /*mTranslator = new QTranslator();
-    QString lang = QLocale::system().name();
-    bool loadSucceed = mTranslator->load(KNmRegisterLocFileName + lang, KNmRegisterLocLocation);
-    qDebug() << "NmMailboxRegisterInterfacePrivate mTranslator->load loadSucceed:"<<loadSucceed;
-    QCoreApplication::installTranslator(mTranslator);*/
+ loadMenuClientService()
+ Loads the Menu client service to mService. 
+ \return true if mService exists or is succesfully loaded, otherwise false.
+ */
+bool NmMailboxRegisterInterfacePrivate::loadMenuClientService()
+{
+    if (mService){ 
+        return true; //service is already loaded
+    }
     
-    mManager = new QServiceManager();
     QServiceFilter filter("com.nokia.symbian.IMenuClient");
     QList<QServiceInterfaceDescriptor> interfaces = mManager->findInterfaces(filter);
-    mService = mManager->loadInterface(interfaces.first()); 
+    if(interfaces.isEmpty()){
+        return false; //no maching interfaces available
     }
+    
+    mService = mManager->loadInterface(interfaces.first());
+    if(!mService){
+        return false; //loading interface failed
+    }
+    
+    return true; //succesfully loaded the service
+}
 
 /*!
-    Destructor
-*/
+ Destructor
+ */
 NmMailboxRegisterInterfacePrivate::~NmMailboxRegisterInterfacePrivate()
-    {
-    if(mTranslator){
-        delete mTranslator;
-        mTranslator = NULL;
+{
+    NM_FUNCTION;
+
+    delete mTranslator;
+    mTranslator = NULL;
+
+    delete mService;
+    mService = NULL;
+
+    delete mManager;
+    mManager = NULL;
+}
+
+bool NmMailboxRegisterInterfacePrivate::registerNewMailbox(
+    quint64 accountId,
+    QString accountName,
+    QString accountIconName)
+{
+    NM_FUNCTION;
+	
+    if(!loadMenuClientService()){
+        NM_ERROR(1,"loadService() failed!");
+        return false; 
     }
-    if (mService) 
-        {
-        delete mService;
-        }
-    if (mManager) 
-        {
-        delete mManager;
-        }
+    
+    //localization
+    QString lang = QLocale::system().name();
+    bool loadSucceed = mTranslator->load(KNmRegisterLocFileName + lang, KNmRegisterLocLocation);
+    QCoreApplication::installTranslator(mTranslator);
+    
+    //check that accountIconName is valid otherwise pass default mailbox icon
+    HbIcon mailBoxIcon(accountIconName);
+    if (mailBoxIcon.pixmap().height() == 0) {
+        mailBoxIcon = NmIcons::getIcon(NmIcons::NmIconDefaultMailbox);
+        accountIconName = mailBoxIcon.iconName();
     }
 
+    QMap<QString, QVariant> map;
+    //------------------------------
+    map[hsItemName] = accountName;
+    map[hsitemLaunchUri] = formLaunchUri(accountId);
+    map[hsitemPublisherId] = NmPublisherName;
+    map[hsItemWidgetUri] = NmHsWidget;
+    map[hsItemDescription] = hbTrId("txt_mail_widget_dblist_preview_of_recent_mail");
+    map[hsIconFileName] = accountIconName;
+    // to add widget params that are mapped to widgets properties
+    map[NmHsWidgetParamAccountId] = QString::number(accountId);
+    map[NmHsWidgetParamAccountIconName] = accountIconName;
+    //------------------------------
 
-bool NmMailboxRegisterInterfacePrivate::registerNewMailbox(quint64 accountId,
-        QString accountName, QString accountIconName)
-    {
-    //check that accountIconName is valid otherwise pass default mailbox icon
-    HbIcon mailBoxIcon(accountIconName);
-    if(mailBoxIcon.pixmap().height() == 0){
-        mailBoxIcon = NmIcons::getIcon(NmIcons::NmIconDefaultMailbox);
-        accountIconName = mailBoxIcon.iconName();
+    bool retVal(false);
+    bool ret(false);
+    ret = QMetaObject::invokeMethod( mService,"add",
+        Qt::DirectConnection,
+        Q_RETURN_ARG(bool, retVal),
+        Q_ARG(QVariantMap, map));
+
+    //Push the registered widget also to homescreen right away
+    bool pushRetVal = pushWidgetToHomescreen(accountId, accountIconName);
+
+    return (retVal && ret && pushRetVal);
+}
+
+bool NmMailboxRegisterInterfacePrivate::updateMailboxName(quint64 accountId, QString newName)
+{
+    NM_FUNCTION;
+
+    if(!loadMenuClientService()){
+    	NM_ERROR(1,"loadService() failed!");
+        return false; 
     }
     
     QMap<QString, QVariant> map;
     //------------------------------
-    map[hsItemName]        = accountName;
-    map[hsitemLaunchUri]   = formLaunchUri(accountId);
+    map[hsitemLaunchUri] = formLaunchUri(accountId);
     map[hsitemPublisherId] = NmPublisherName;
-    map[hsItemWidgetUri]   = NmHsWidget;
-    //commented out until MCL has nmregister files in place here: epoc32/include/platform/qt/translations/
-    //map[hsItemDescription] = hbTrId("txt_mail_widget_dblist_preview_of_recent_mail");
-    map[hsItemDescription] = "test description for widget";
-    map[hsIconFileName]    = accountIconName;
-    // to add widget params that are mapped to widgets properties
-    map[NmHsWidgetParamAccountId]   = QString::number(accountId);
-    map[NmHsWidgetParamAccountIconName]   = accountIconName;
+    map[hsItemWidgetUri] = NmHsWidget;
+    map[NmHsWidgetParamAccountId] = QString::number(accountId);
     //------------------------------
-    
+
+    QList<QVariantMap> list; //list of items that mach the query
     bool retVal(false);
+    bool ret(false);
+    ret = QMetaObject::invokeMethod(mService, "getList", 
+        Qt::DirectConnection, 
+        Q_RETURN_ARG(QList<QVariantMap> , list),
+        Q_ARG(QVariantMap, map));
+
+    //Normally there should be only one instance, but just in case
+    while (!list.isEmpty()) {
+        //update the account name
+        list.first()[hsItemName] = newName;
+        //commit changes
+        ret = QMetaObject::invokeMethod( mService,"add",
+            Qt::DirectConnection,
+            Q_RETURN_ARG(bool, retVal),
+            Q_ARG(QVariantMap, list.first()));
+        list.removeFirst();
+    }
+    //if either invoke or "getList" or "add" return failure
+    return (retVal && ret);
+}
+
+bool NmMailboxRegisterInterfacePrivate::unregisterMailbox(quint64 accountId)
+{
+    NM_FUNCTION;
+
+    if(!loadMenuClientService()){
+    	NM_ERROR(1,"loadService() failed!");
+        return false; 
+    }
     
-    bool ret = QMetaObject::invokeMethod(  mService,"add",
-                    Qt::DirectConnection,
-                    Q_RETURN_ARG(bool, retVal),
-                    Q_ARG(QVariantMap, map)); 
+    QMap<QString, QVariant> map;
+    //------------------------------
+    map[hsitemLaunchUri] = formLaunchUri(accountId);
+    map[hsitemPublisherId] = NmPublisherName;
+    map[hsItemWidgetUri] = NmHsWidget;
+    map[NmHsWidgetParamAccountId] = QString::number(accountId);
+    //------------------------------
 
-    //Push the registered widget also to homescreen right away
-    bool pushRetVal = pushWidgetToHomescreen(accountId, accountIconName);
-    
-    return (retVal && ret && pushRetVal);
+    QList<QVariantMap> list; //list of items that mach the query
+    bool retVal(false);
+    bool ret(false);
+    ret = QMetaObject::invokeMethod(mService, "getList", 
+        Qt::DirectConnection, 
+        Q_RETURN_ARG(QList<QVariantMap> , list), 
+        Q_ARG(QVariantMap, map));
+
+    //Normally there should be only one instance, but just in case
+    //Otherwise there will be ghost instances in the application list
+    while (!list.isEmpty()) {
+
+        //commit changes
+        ret = QMetaObject::invokeMethod( mService,"remove",
+            Qt::DirectConnection,
+            Q_RETURN_ARG(bool, retVal),
+            Q_ARG(QVariantMap, list.first()));
+        list.removeFirst();
     }
 
-bool NmMailboxRegisterInterfacePrivate::updateMailboxName(quint64 accountId,
-        QString newName)
-    {
-    QMap<QString, QVariant> map;
-     //------------------------------
-     map[hsitemLaunchUri]   = formLaunchUri(accountId);
-     map[hsitemPublisherId] = NmPublisherName;
-     map[hsItemWidgetUri]   = NmHsWidget;
-     map[NmHsWidgetParamAccountId]   = QString::number(accountId);
-     //------------------------------
-     
-     QList<QVariantMap> list; //list of items that mach the query
-     bool retVal(false);
-     bool ret = QMetaObject::invokeMethod(  mService,"getList",
-                     Qt::DirectConnection,
-                     Q_RETURN_ARG(QList<QVariantMap>, list),
-                     Q_ARG(QVariantMap, map)); 
-
-     
-     //Normally there should be only one instance, but just in case
-     while( !list.isEmpty() ) 
-         {  
-         //update the account name
-         list.first()[hsItemName] = newName;
-         //commit changes
-         ret = QMetaObject::invokeMethod(  mService,"add",
-                         Qt::DirectConnection,
-                         Q_RETURN_ARG(bool, retVal),
-                         Q_ARG(QVariantMap, list.first()));  
-         list.removeFirst();
-         }
-     //if either invoke or "getList" or "add" return failure
-     return (retVal && ret);
-    }
+    return (retVal && ret);
+}
 
-bool NmMailboxRegisterInterfacePrivate::unregisterMailbox(quint64 accountId)
-    {
-    
-    QMap<QString, QVariant> map;
-     //------------------------------
-     map[hsitemLaunchUri]   = formLaunchUri(accountId);
-     map[hsitemPublisherId] = NmPublisherName;
-     map[hsItemWidgetUri]   = NmHsWidget;
-     map[NmHsWidgetParamAccountId]     = QString::number(accountId);
-     //------------------------------
-     
-     QList<QVariantMap> list; //list of items that mach the query
-     bool retVal(false);
-     bool ret = QMetaObject::invokeMethod(  mService,"getList",
-                     Qt::DirectConnection,
-                     Q_RETURN_ARG(QList<QVariantMap>, list),
-                     Q_ARG(QVariantMap, map)); 
-    
+bool NmMailboxRegisterInterfacePrivate::pushWidgetToHomescreen(
+    quint64 accountId,
+    QString accountIconName)
+{
+    NM_FUNCTION;
     
-    //Normally there should be only one instance, but just in case
-    //Otherwise there will be ghost instances in the application list
-     while( !list.isEmpty() ) 
-         {  
-
-         //commit changes
-         ret = QMetaObject::invokeMethod(  mService,"remove",
-                         Qt::DirectConnection,
-                         Q_RETURN_ARG(bool, retVal),
-                         Q_ARG(QVariantMap, list.first()));  
-         list.removeFirst();
-         }
-
-     return (retVal && ret);
-    }
-
-bool NmMailboxRegisterInterfacePrivate::pushWidgetToHomescreen( quint64 accountId, QString accountIconName )
-    {
     // load plugin
     QServiceManager manager;
     QServiceFilter filter("com.nokia.symbian.IHomeScreenClient");
     filter.setServiceName("hshomescreenclientplugin");
     QList<QServiceInterfaceDescriptor> interfaces = manager.findInterfaces(filter);
-    
-    if(interfaces.isEmpty()) 
-        {
-        QServiceManager::Error errori = manager.error();
+
+    if (interfaces.isEmpty()) {
         return false;
-        }
-    QObject* service = manager.loadInterface( interfaces.first() );
-    if(!service){qDebug() << "service is null ";}
-    
+    }
+    QObject* service = manager.loadInterface(interfaces.first());
+    if (!service) {
+        NM_ERROR(1,"service is null ");
+        return false;
+    }
+
     //--------------------------------
     QVariantHash map;
     map[NmHsAccountId] = QString::number(accountId);
     map[NmHsAccountIconName] = accountIconName;
     //--------------------------------
-    
+
     // invoke function synchronously
     bool retVal(false);
-    bool ret = QMetaObject::invokeMethod(  service, "addWidget",
-                    Qt::DirectConnection,
-                    Q_RETURN_ARG(bool, retVal),
-                    Q_ARG(QString, NmHsWidget),
-                    Q_ARG(QVariantHash, map));
-   
-    if(!ret){
-        qDebug()<< "method invoke failed!";
-    }
-    if(!retVal){
-        qDebug() << "addWidget() failed!!";
-    }
-    
-    if(service)
-        {
-        delete service;
-        }
-    
+    bool ret(false);
+    ret = QMetaObject::invokeMethod( service, "addWidget",
+        Qt::DirectConnection,
+        Q_RETURN_ARG(bool, retVal),
+        Q_ARG(QString, NmHsWidget),
+        Q_ARG(QVariantHash, map));
+
+    delete service;
+    service = NULL;
+
     return (retVal && ret);
-    }
+}
 
 QString NmMailboxRegisterInterfacePrivate::formLaunchUri(quint64 accountId) const
-    {
+{
     return NmLaunchUri + QString::number(accountId);
-    }
+}
--- a/emailservices/nmregister/src/nmmailboxregisterinterfaceplugin.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmregister/src/nmmailboxregisterinterfaceplugin.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
 *
 */
 
+#include "emailtrace.h"
+
 #include <qserviceinterfacedescriptor.h>
 #include <qabstractsecuritysession.h>
 #include <qservicecontext.h>
@@ -30,17 +32,23 @@
                                                 QServiceContext *context,
                                                 QAbstractSecuritySession *session)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(context);
     Q_UNUSED(session);
-
+    
     if (descriptor.interfaceName() == QLatin1String("com.nokia.symbian.IEmailRegisterAccount")) {
-        return new NmMailboxRegisterInterface(this);
+        QT_TRY{
+            return new NmMailboxRegisterInterface(this);
+        }QT_CATCH(...){
+            return 0;
+        }
     } else {
         return 0;
     }
 }
 
-Q_EXPORT_PLUGIN2(hsmenucontentpublishplugin, NmMailboxRegisterInterfacePlugin)
+Q_EXPORT_PLUGIN2(nmregister, NmMailboxRegisterInterfacePlugin)
 
 #ifdef COVERAGE_MEASUREMENT
 #pragma CTC ENDSKIP
Binary file emailservices/nmutilities/data/nmutilities.confml has changed
--- a/emailservices/nmutilities/nmutilities.pro	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmutilities/nmutilities.pro	Fri May 28 13:56:43 2010 +0300
@@ -27,7 +27,8 @@
 
 INCLUDEPATH += inc \
                ../../inc \
-               $$MW_LAYER_SYSTEMINCLUDE 
+               ../../../inc \
+               $$MW_LAYER_SYSTEMINCLUDE
 
 DEPENDPATH += src \
               inc \
--- a/emailservices/nmutilities/src/emailmailboxinfo.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmutilities/src/emailmailboxinfo.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
  *
  */
 
+#include "emailtrace.h"
+
 #include "emailmailboxinfo.h"
 #include "emailmailboxinfo_p.h"
 
@@ -23,6 +25,8 @@
  */
 EmailMailboxInfo::EmailMailboxInfo()
 {
+    NM_FUNCTION;
+    
     d = EmailMailboxInfoPrivate::getInstance();
 }
 
@@ -31,6 +35,8 @@
  */
 EmailMailboxInfo::~EmailMailboxInfo()
 {
+    NM_FUNCTION;
+    
     EmailMailboxInfoPrivate::releaseInstance(d);
 }
 
@@ -41,6 +47,8 @@
  */
 QString EmailMailboxInfo::mailboxIcon(const QVariant &identifier) const
 {
+    NM_FUNCTION;
+    
     return d->icon(identifier);
 }
 
@@ -51,6 +59,8 @@
  */
 QString EmailMailboxInfo::mailboxName(const QVariant &identifier) const
 {
+    NM_FUNCTION;
+    
     return d->name(identifier);
 }
 
--- a/emailservices/nmutilities/src/emailmailboxinfo_p.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailservices/nmutilities/src/emailmailboxinfo_p.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
  *
  */
 
+#include "emailtrace.h"
+
 #include "emailmailboxinfo_p.h"
 #include "nmutilitiescommonheaders.h"
 #include "nmcenrepkeys.h"
@@ -46,6 +48,8 @@
 EmailMailboxInfoPrivate::EmailMailboxInfoPrivate() :
     QObject(NULL)
 {
+    NM_FUNCTION;
+    
     XQSettingsManager manager;
     XQCentralRepositorySettingsKey rccKey(EMAIL_CENREP, RCC_PATH);
 
@@ -58,7 +62,7 @@
  */
 EmailMailboxInfoPrivate::~EmailMailboxInfoPrivate()
 {
-
+    NM_FUNCTION;
 }
 
 /*!
@@ -67,6 +71,8 @@
  */
 EmailMailboxInfoPrivate* EmailMailboxInfoPrivate::getInstance()
 {
+    NM_FUNCTION;
+    
     if (!mSelf) {
         mSelf = new EmailMailboxInfoPrivate();
     }
@@ -80,6 +86,8 @@
  */
 void EmailMailboxInfoPrivate::releaseInstance(EmailMailboxInfoPrivate *&instance)
 {
+    NM_FUNCTION;
+    
     if (instance) {
         mReferenceCount--;
         instance = NULL;
@@ -97,6 +105,8 @@
  */
 QString EmailMailboxInfoPrivate::name(const QVariant &identifier)
 {
+    NM_FUNCTION;
+    
     QString returnValue = "";
     QString domainName = "";
     if (identifier.canConvert<QString> ()) {
@@ -120,6 +130,8 @@
  */
 QString EmailMailboxInfoPrivate::icon(const QVariant &identifier)
 {
+    NM_FUNCTION;
+    
     QString returnValue = "";
     QString domainName = "";
     if (identifier.canConvert<QString> ()) {
@@ -144,6 +156,8 @@
  */
 void EmailMailboxInfoPrivate::processCenRepRecords(const QString &brandingId)
 {
+    NM_FUNCTION;
+    
     bool found = false;
     QString name;
     QString icon;
@@ -219,6 +233,8 @@
  */
 quint8 EmailMailboxInfoPrivate::getCurrentCountryL() const
 {
+    NM_FUNCTION;
+    
     CTzLocalizer* localizer = CTzLocalizer::NewLC();
 
     CTzLocalizedCity* city = localizer->GetFrequentlyUsedZoneCityL(
@@ -243,6 +259,8 @@
  */
 bool EmailMailboxInfoPrivate::verifyTimeZone() const
 {
+    NM_FUNCTION;
+    
     quint8 timeZone = 0;
     bool retVal = false;
     TRAPD(err, timeZone = getCurrentCountryL());
@@ -259,6 +277,8 @@
  */
 void EmailMailboxInfoPrivate::verifyMailAccountName(QString &brandingName) const
 {
+    NM_FUNCTION;
+    
     QSystemNetworkInfo *networkInfo = new QSystemNetworkInfo();
     QString currentMCC = networkInfo->currentMobileCountryCode();
 
--- a/emailuis/nmailcpplugin/src/nmsettingsplugin.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailcpplugin/src/nmsettingsplugin.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
 *
 */
 
+#include "emailtrace.h"
+
 #include <cpsettingformentryitemdataimpl.h>
 #include <HbApplication>
 #include <QTranslator>
@@ -39,6 +41,8 @@
 NmSettingsPlugin::NmSettingsPlugin()
 : mTranslator(0)
 {
+    NM_FUNCTION;
+    
     mTranslator = new QTranslator();
     QString lang = QLocale::system().name();
     QString appName = "mail_";
@@ -52,6 +56,8 @@
 */
 NmSettingsPlugin::~NmSettingsPlugin()
 {
+    NM_FUNCTION;
+    
     delete mTranslator;
 }
 
@@ -67,6 +73,8 @@
 CpSettingFormItemData *NmSettingsPlugin::createSettingFormItemData(
     CpItemDataHelper &itemDataHelper) const
 {
+    NM_FUNCTION;
+    
     HbIcon icon("qtg_large_email");
 
     return new NmSettingsViewFactory(itemDataHelper,
--- a/emailuis/nmailui/conf/nmeditorview.docml	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/conf/nmeditorview.docml	Fri May 28 13:56:43 2010 +0300
@@ -1,84 +1,122 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="1.0">
+<hbdocument version="1.1">
     <widget name="editorview" type="HbView">
         <widget name="content" role="HbView:widget" type="HbWidget">
             <widget name="scrollArea" plugin="nmailuiwidgetsplugin" type="NmBaseViewScrollArea">
                 <widget name="scrollAreaContents" role="HbScrollArea:contents" type="HbWidget">
                     <widget name="container" type="HbWidget">
-                        <widget name="HeaderLayout" type="HbWidget">
-                            <widget name="RecipientFields" type="HbWidget">
-                                <real name="z" value="1"/>
-                                <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="MinimumExpanding" verticalStretch="0"/>
-                                <sizehint height="5un" type="PREFERRED" width="23un"/>
-                                <sizehint height="5un" type="MINIMUM" width="23un"/>
-                                <contentsmargins bottom="0un" left="var(hb-param-margin-gene-left)" right="var(hb-param-margin-gene-right)" top="0un"/>
+                        <widget name="containerContents" type="HbWidget">
+                            <widget name="editorToField" type="HbWidget">
+                                <widget name="editorToLabel" type="HbLabel">
+                                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                                    <sizehint height="7.46un" type="FIXED" width="12.5un"/>
+                                    <string locid="txt_mail_editor_to" name="plainText"/>
+                                    <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                                </widget>
+                                <widget name="editorToEdit" plugin="nmailuiwidgetsplugin" type="NmRecipientLineEdit"/>
+                                <widget name="editorToButton" type="HbPushButton">
+                                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                                    <sizehint height="7.46un" type="FIXED" width="9.5un"/>
+                                </widget>
+                                <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-middle-horizontal)" type="linear">
+                                    <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                                    <linearitem itemname="editorToLabel"/>
+                                    <linearitem itemname="editorToEdit"/>
+                                    <linearitem itemname="editorToButton"/>
+                                </layout>
                             </widget>
-                            <widget name="SubjectHorizontalLayout" type="HbWidget">
-                                <widget name="EditorHeaderSubjectLabel" type="HbLabel">
-                                    <sizehint height="5un" type="PREFERRED" width="12.5un"/>
-                                    <string locid="txt_mail_editor_subject" name="plainText" value="Subject:"/>
-                                    <fontspec name="fontSpec" role="Secondary" textheight="23.45"/>
+                            <widget name="editorCcField" type="HbWidget">
+                                <widget name="editorCcLabel" type="HbLabel">
+                                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                                    <sizehint height="7.46un" type="FIXED" width="12.5un"/>
+                                    <string locid="txt_mail_editor_cc" name="plainText"/>
+                                    <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                                </widget>
+                                <widget name="editorCcEdit" plugin="nmailuiwidgetsplugin" type="NmRecipientLineEdit"/>
+                                <widget name="editorCcButton" type="HbPushButton">
+                                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                                    <sizehint height="7.46un" type="FIXED" width="9.5un"/>
                                 </widget>
-                                <widget name="EditorHeaderSubjectEdit" plugin="nmailuiwidgetsplugin" type="NmHtmlLineEdit">
-                                    <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                                    <sizehint height="5un" type="PREFERRED" width="8.26269un"/>
-                                    <sizehint height="5un" type="MINIMUM" width="0un"/>
-                                    <fontspec name="fontSpec" role="Secondary" textheight="3.5un"/>
-                                    <integer name="maxRows" value="256"/>
-                                    <string name="alignment" value="AlignAbsolute"/>
-                                    <string name="text" value=""/>
+                                <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-middle-horizontal)" type="linear">
+                                    <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                                    <linearitem itemname="editorCcLabel"/>
+                                    <linearitem itemname="editorCcEdit"/>
+                                    <linearitem itemname="editorCcButton"/>
+                                </layout>
+                            </widget>
+                            <widget name="editorBccField" type="HbWidget">
+                                <widget name="editorBccLabel" type="HbLabel">
+                                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                                    <sizehint height="7.46un" type="FIXED" width="12.5un"/>
+                                    <string locid="txt_mail_editor_bcc" name="plainText"/>
+                                    <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
                                 </widget>
-                                <widget name="labelPriorityIcon" type="HbLabel">
+                                <widget name="editorBccEdit" plugin="nmailuiwidgetsplugin" type="NmRecipientLineEdit"/>
+                                <widget name="editorBccButton" type="HbPushButton">
+                                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                                    <sizehint height="7.46un" type="FIXED" width="9.5un"/>
+                                </widget>
+                                <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-middle-horizontal)" type="linear">
+                                    <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                                    <linearitem itemname="editorBccLabel"/>
+                                    <linearitem itemname="editorBccEdit"/>
+                                    <linearitem itemname="editorBccButton"/>
+                                </layout>
+                            </widget>
+                            <widget name="editorSubjectField" type="HbWidget">
+                                <widget name="editorSubjectLabel" type="HbLabel">
+                                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                                    <sizehint height="7.46un" type="FIXED" width="12.5un"/>
+                                    <string locid="txt_mail_editor_subject" name="plainText"/>
+                                    <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                                </widget>
+                                <widget name="editorSubjectEdit" plugin="nmailuiwidgetsplugin" type="NmRecipientLineEdit"/>
+                                <widget name="editPriorityIcon" type="HbLabel">
                                     <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
                                     <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-                                    <sizehint height="5un" type="MINIMUM" width="0un"/>
-                                    <sizehint height="5un" type="MAXIMUM" width="0un"/>
+                                    <sizehint height="var(hb-param-graphic-size-secondary)" type="FIXED" width="var(hb-param-graphic-size-secondary)"/>
+                                </widget>
+                                <widget name="editFollowUpIcon" type="HbLabel">
+                                    <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                                    <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                                    <sizehint height="var(hb-param-graphic-size-secondary)" type="FIXED" width="var(hb-param-graphic-size-secondary)"/>
                                 </widget>
-                                <real name="z" value="0"/>
-                                <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Minimum" verticalStretch="0"/>
-                                <sizehint height="5un" type="MINIMUM" width="23.8806un"/>
-                                <layout orientation="Horizontal" spacing="0un" type="linear">
-                                    <contentsmargins bottom="0un" left="var(hb-param-margin-gene-left)" right="var(hb-param-margin-gene-right)" top="0un"/>
-                                    <linearitem itemname="EditorHeaderSubjectLabel"/>
-                                    <linearitem itemname="EditorHeaderSubjectEdit"/>
-                                    <linearitem itemname="labelPriorityIcon"/>
+                                <layout orientation="Horizontal" spacing="var(hb-param-margin-gene-middle-horizontal)" type="linear">
+                                    <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                                    <linearitem itemname="editorSubjectLabel"/>
+                                    <linearitem itemname="editorSubjectEdit"/>
+                                    <linearitem itemname="editPriorityIcon" spacing="0.5un"/>
+                                    <linearitem itemname="editFollowUpIcon"/>
                                 </layout>
                             </widget>
                             <widget name="attachmentListWidget" plugin="nmailuiwidgetsplugin" type="NmAttachmentListWidget">
-                                <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="MinimumExpanding" verticalStretch="0"/>
-                                <sizehint height="0.1un" type="MINIMUM" width="25.6194un"/>
-                                <contentsmargins bottom="var(hb-param-margin-gene-middle-vertical)" left="0un" right="0un" top="0un"/>
-                                <sizehint height="0.1un" type="MAXIMUM"/>
+                                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                            </widget>
+                            <widget name="BodyTextEdit" plugin="nmailuiwidgetsplugin" type="NmEditorTextEdit">
+                                <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Expanding" verticalStretch="0"/>
+                                <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
+                                <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+                                <string name="plainText"/>
                             </widget>
-                            <real name="z" value="1"/>
-                            <sizepolicy horizontalPolicy="Minimum" horizontalStretch="0" verticalPolicy="Minimum" verticalStretch="0"/>
-                            <sizehint height="5un" type="MINIMUM" width="53.73134un"/>
-                            <sizehint height="200un" type="MAXIMUM" width="2504062.01158un"/>
-                            <layout orientation="Vertical" spacing="1un" type="linear">
-                                <contentsmargins bottom="0un" left="0un" right="0un" top="var(hb-param-margin-gene-top)"/>
-                                <linearitem itemname="RecipientFields"/>
-                                <linearitem itemname="SubjectHorizontalLayout"/>
+                            <layout orientation="Vertical" spacing="var(hb-param-margin-gene-middle-vertical)" type="linear">
+                                <contentsmargins bottom="0un" left="var(hb-param-margin-gene-left)" right="var(hb-param-margin-gene-right)" top="var(hb-param-margin-gene-top)"/>
+                                <linearitem itemname="editorToField"/>
+                                <linearitem itemname="editorCcField"/>
+                                <linearitem itemname="editorBccField"/>
+                                <linearitem itemname="editorSubjectField"/>
                                 <linearitem itemname="attachmentListWidget"/>
+                                <linearitem itemname="BodyTextEdit"/>
                             </layout>
                         </widget>
-                        <widget name="BodyTextEdit" plugin="nmailuiwidgetsplugin" type="NmEditorTextEdit">
-                            <real name="z" value="2"/>
-                            <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
-                            <contentsmargins bottom="0un" left="1un" right="1un" top="0un"/>
-                            <fontspec name="fontSpec" role="Secondary" textheight="3.5un"/>
-                            <string name="plainText" value=""/>
-                        </widget>
                         <real name="z" value="0"/>
                         <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Expanding" verticalStretch="0"/>
                         <sizehint height="23.8806un" type="PREFERRED" width="23.8806un"/>
+                        <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
                         <layout type="anchor">
-                            <anchoritem dst="HeaderLayout" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
-                            <anchoritem dst="HeaderLayout" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
-                            <anchoritem dst="HeaderLayout" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
-                            <anchoritem dst="BodyTextEdit" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
-                            <anchoritem dst="BodyTextEdit" dstEdge="TOP" spacing="0un" src="HeaderLayout" srcEdge="BOTTOM"/>
-                            <anchoritem dst="BodyTextEdit" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
-                            <anchoritem dst="BodyTextEdit" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
+                            <anchoritem dst="containerContents" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
+                            <anchoritem dst="containerContents" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
+                            <anchoritem dst="containerContents" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
+                            <anchoritem dst="containerContents" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
                         </layout>
                     </widget>
                     <real name="z" value="0"/>
@@ -91,8 +129,6 @@
                         <anchoritem dst="container" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
                     </layout>
                 </widget>
-                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                <sizepolicy horizontalPolicy="Ignored" horizontalStretch="0" verticalPolicy="Expanding" verticalStretch="0"/>
             </widget>
             <layout type="anchor">
                 <anchoritem dst="scrollArea" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
@@ -101,9 +137,9 @@
                 <anchoritem dst="scrollArea" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
             </layout>
         </widget>
-        <string name="title" value=""/>
+        <string name="title"/>
     </widget>
-    <metadata activeUIState="Common ui state" display="NHD portrait" unit="un">
+    <metadata activeUIState="Common ui state" display="NHD-3.2-inch_portrait" unit="un">
         <uistate name="Common ui state" sections="#common"/>
     </metadata>
 </hbdocument>
--- a/emailuis/nmailui/conf/nmmessagesearchlistview.docml	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/conf/nmmessagesearchlistview.docml	Fri May 28 13:56:43 2010 +0300
@@ -15,19 +15,18 @@
                 </widget>
                 <real name="z" value="8"/>
                 <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Expanding" verticalStretch="0"/>
-                <sizehint height="9.25373un" type="PREFERRED" width="53.73134un"/>
-                <sizehint height="6.5un" type="MINIMUM"/>
+                <sizehint height="9.25un" type="PREFERRED" />
+                <sizehint height="9.25un" type="MINIMUM" />
                 <layout orientation="Horizontal" type="linear">
                     <linearitem itemname="LineEdit"/>
                     <linearitem itemname="PushButton"/>
                 </layout>
             </widget>
-            <widget name="InfoLabel" type="HbLabel">
-                <real name="z" value="9"/>
-                <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
-                <contentsmargins bottom="0.5un" left="1.5un" right="1.5un" top="0.5un"/>
-                <string name="plainText" value="Searching..."/>
-                <fontspec name="fontSpec" role="Secondary" textheight="23.45"/>
+            <widget name="LabelGroupBox" type="HbGroupBox">
+                <real name="z" value="3"/>
+                <sizepolicy horizontalPolicy="MinimumExpanding" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                <sizehint height="6un" type="PREFERRED" width="52un"/>
+                <bool name="collapsable" value="FALSE"/>
             </widget>
             <widget name="MessageListNoMessages" type="HbLabel">
                 <enums name="textWrapping" value="TextWordWrap"/>
@@ -38,15 +37,15 @@
             </widget>
             <real name="z" value="0"/>
             <layout type="anchor">
-                <anchoritem dst="InfoLabel" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
-                <anchoritem dst="InfoLabel" dstEdge="TOP" spacing="0" src="SearchBarContainer" srcEdge="BOTTOM"/>
-                <anchoritem dst="InfoLabel" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
+                <anchoritem dst="LabelGroupBox" dstEdge="LEFT" spacing="0" src="" srcEdge="LEFT"/>
+                <anchoritem dst="LabelGroupBox" dstEdge="TOP" spacing="0.5un" src="SearchBarContainer" srcEdge="BOTTOM"/>
+                <anchoritem dst="LabelGroupBox" dstEdge="RIGHT" spacing="0" src="" srcEdge="RIGHT"/>
                 <anchoritem dst="MessageTreeList" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
-                <anchoritem dst="MessageTreeList" dstEdge="TOP" spacing="0un" src="InfoLabel" srcEdge="BOTTOM"/>
+                <anchoritem dst="MessageTreeList" dstEdge="TOP" spacing="0un" src="LabelGroupBox" srcEdge="BOTTOM"/>
                 <anchoritem dst="MessageTreeList" dstEdge="RIGHT" spacing="0un" src="" srcEdge="RIGHT"/>
                 <anchoritem dst="MessageTreeList" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
                 <anchoritem dst="MessageListNoMessages" dstEdge="LEFT" spacing="4.77612un" src="" srcEdge="LEFT"/>
-                <anchoritem dst="MessageListNoMessages" dstEdge="TOP" spacing="2.54478un" src="InfoLabel" srcEdge="BOTTOM"/>
+                <anchoritem dst="MessageListNoMessages" dstEdge="TOP" spacing="2.54478un" src="LabelGroupBox" srcEdge="BOTTOM"/>
                 <anchoritem dst="MessageListNoMessages" dstEdge="RIGHT" spacing="-5.22388un" src="" srcEdge="RIGHT"/>
                 <anchoritem dst="SearchBarContainer" dstEdge="LEFT" spacing="0un" src="" srcEdge="LEFT"/>
                 <anchoritem dst="SearchBarContainer" dstEdge="TOP" spacing="0un" src="" srcEdge="TOP"/>
--- a/emailuis/nmailui/inc/nmapplication.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/inc/nmapplication.h	Fri May 28 13:56:43 2010 +0300
@@ -30,6 +30,7 @@
 class HbAction;
 class NmUiExtensionManager;
 class NmSendServiceInterface;
+class NmUriServiceInterface;
 class NmMailboxServiceInterface;
 class NmViewerServiceInterface;
 class NmViewerViewNetManager;
@@ -37,6 +38,7 @@
 class NmAttachmentManager;
 class NmSettingsViewLauncher;
 class NmUiEffects;
+class HbMessageBox;
 
 class NmApplication : public QObject
 {
@@ -50,7 +52,7 @@
     NmViewerViewNetManager &networkAccessManager();
     QSize screenSize();
     bool eventFilter(QObject *obj, QEvent *event);
-
+    bool updateVisibilityState();
 
 public slots:
     void prepareForPopView();
@@ -59,12 +61,12 @@
     void delayedExitApplication();
     void handleOperationCompleted(const NmOperationCompletionEvent &event);
     void viewReady();
+    void launchSettings(HbAction* action);
     
 private:
     void createMainWindow();
     void pushView(NmBaseView *view);
     void resetViewStack();
-    void launchSettings(const NmId &mailboxId);
 
 private:
     HbMainWindow *mMainWindow;              // Not owned
@@ -75,16 +77,19 @@
     NmUiExtensionManager *mExtensionManager;// Owned
     NmSendServiceInterface *mSendServiceInterface;       // Owned
     NmSendServiceInterface *mSendServiceInterface2;      // Owned
+    NmUriServiceInterface *mUriServiceInterface;         // Owned
     NmMailboxServiceInterface *mMailboxServiceInterface; // Owned
     NmViewerServiceInterface *mViewerServiceInterface;   // Owned
     NmMailboxListModel *mMbListModel;       // Not owned
     NmUiViewId mServiceViewId;
     NmViewerViewNetManager *mNetManager;    // Owned
-    bool mForegroundService;	
+    bool mForegroundService;
     NmUiEffects *mEffects;                  // Owned
     NmAttachmentManager *mAttaManager;      // Owned
     NmSettingsViewLauncher* mSettingsViewLauncher; // Owned
     bool mViewReady;
+    NmId mLastOperationMailbox;
+    HbMessageBox *mQueryDialog;             // Owned
 };
 
 #endif // NMAPPLICATION_H
--- a/emailuis/nmailui/inc/nmattachmentmanager.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/inc/nmattachmentmanager.h	Fri May 28 13:56:43 2010 +0300
@@ -39,7 +39,7 @@
             const NmId &folderId, 
             const NmId &messageId, 
             const NmId &messagePartId);
-    void fetchAttachments(
+    bool fetchAttachments(
             const NmId &mailboxId, 
             const NmId &folderId, 
             const NmId &messageId,
@@ -57,15 +57,15 @@
     
 private slots:
     void changeProgress(int value);
-    void attachmentFetchCompleted(int result);
-    void messageFetched(int result);
+    void completeAttachmentFetch(int result);
+    void completeMessageFetch(int result);
     
 private:
     NmUiEngine &mUiEngine;
     QPointer<NmOperation> mFetchOperation;      // Not owned
     QPointer<NmOperation> mMsgFetchOperation;      // Not owned
     NmAttachmentFetchObserver *mFetchObserver;  // Not owned
-    NmMessage *fetchMsg;
+    NmMessage *mFetchMsg;
     NmId mAttaId;
     int mProgressValue;
     bool mIsFetching;
--- a/emailuis/nmailui/inc/nmattachmentpicker.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/inc/nmattachmentpicker.h	Fri May 28 13:56:43 2010 +0300
@@ -20,12 +20,6 @@
 
 #include <QObject>
 
-#define IMAGE_FETCHER_INTERFACE "Image"
-#define AUDIO_FETCHER_INTERFACE "com.nokia.services.media.Music"
-
-#define IMAGE_FETCHER_OPERATION "fetch(QVariantMap,QVariant)"
-#define AUDIO_FETCHER_OPERATION "fetch(QString)"
-
 class XQAiwRequest;
 
 /**
@@ -44,14 +38,18 @@
     void fetchImage();
     void fetchAudio();    
     void fetchVideo();
-    void fetchOther();       
+    void fetchOther();  
+    void fetchCameraStill();
+    void fetchCameraVideo();
 
 signals:
     void attachmentsFetchOk(const QVariant& fileNames);
     void attachmentsFetchError(int errorCode, const QString& errorMessage);
     
 private:   
-    void fetch(const QString& interface, const QString& operation); 
+    void fetch(const QString& interface, const QString& operation, 
+        const QList<QVariant>* args = 0); 
+    void fetchFromCamera(int mode);
     
 private:
     XQAiwRequest *mRequest;    
--- a/emailuis/nmailui/inc/nmeditorcontent.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/inc/nmeditorcontent.h	Fri May 28 13:56:43 2010 +0300
@@ -45,8 +45,7 @@
                     QNetworkAccessManager &manager);
     virtual ~NmEditorContent();
 
-    void setMessageData(const NmMessage &message, 
-                        NmMessageEnvelope *replyMsgEnvelope=0);
+    void setMessageData(const NmMessage &originalMessage);
     NmEditorTextEdit* editor() const;
     NmEditorHeader* header() const;
 
--- a/emailuis/nmailui/inc/nmeditorheader.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/inc/nmeditorheader.h	Fri May 28 13:56:43 2010 +0300
@@ -39,14 +39,14 @@
 class NmRecipientField;
 class NmAttachmentList;
 
-class NmEditorHeader : public HbWidget
+class NmEditorHeader : public QObject
 {
 Q_OBJECT
 
 public:
-    NmEditorHeader(HbDocumentLoader *documentLoader, QGraphicsItem *parent=0);
+    NmEditorHeader(HbDocumentLoader *documentLoader);
     virtual ~NmEditorHeader();
-    int headerHeight() const;
+    qreal headerHeight() const;
     NmHtmlLineEdit* subjectEdit() const;
     NmRecipientLineEdit* toEdit() const;
     NmRecipientLineEdit* ccEdit() const;
@@ -66,9 +66,7 @@
 
 private:
     void loadWidgets();
-    void rescaleHeader();
     void createConnections();
-    void adjustFieldSizeValues( NmRecipientLineEdit *widget, qreal height );
 
 signals:
     void headerHeightChanged(int);
@@ -76,7 +74,7 @@
     void attachmentLongPressed(NmId attachmentPartId, QPointF point);
 
 public slots:
-	void fixHeaderFieldHeights();
+	void sendDelayedHeaderHeightChanged();
     void sendHeaderHeightChanged();
     void editorContentChanged();
     void attachmentActivated(int arrayIndex);
@@ -84,21 +82,24 @@
 
 private:
     HbDocumentLoader* mDocumentLoader;  // Not owned
-	HbWidget *mHeader;  // Not owned
-    int mHeaderHeight;
-    HbLabel *mSubjectLabel;
-    HbLabel *mPriorityIconLabel;
+    qreal mHeaderHeight;
+    HbLabel *mPriorityIcon; // Not owned
+    HbLabel *mFollowUpIcon; // Not owned
     bool mIconVisible;
-    NmRecipientLineEdit *mToEdit;
-    NmRecipientLineEdit *mCcEdit;
-    NmRecipientLineEdit *mBccEdit;
-    NmHtmlLineEdit *mSubjectEdit;
+    NmRecipientLineEdit *mToEdit; // Not owned
+    NmRecipientLineEdit *mCcEdit; // Not owned
+    NmRecipientLineEdit *mBccEdit; // Not owned
+    NmHtmlLineEdit *mSubjectEdit; // Not owned
     bool mRecipientFieldsEmpty;
-    QGraphicsLinearLayout *mLayout;
-    NmAttachmentList *mAttachmentList;
-    NmRecipientField *mToField;    // Owned
-    NmRecipientField *mCcField;    // Owned
-    NmRecipientField *mBccField;   // Owned
+    QGraphicsLinearLayout *mLayout; // Not owned
+    NmAttachmentList *mAttachmentList; // Not owned
+    NmRecipientField *mToField;    // Not owned
+    NmRecipientField *mCcField;    // Not owned
+    HbWidget *mCcWidget;    // Not owned
+    NmRecipientField *mBccField;   // Not owned
+    HbWidget *mBccWidget;    // Not owned
+    HbWidget *mSubjectWidget;    // Not owned
+    QGraphicsLinearLayout *mSubjectLayout; // Not owned
     bool mCcBccFieldVisible;
 };
 
--- a/emailuis/nmailui/inc/nmeditortextdocument.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/inc/nmeditortextdocument.h	Fri May 28 13:56:43 2010 +0300
@@ -19,7 +19,7 @@
 #ifndef NMEDITORTEXTDOCUMENT_H_
 #define NMEDITORTEXTDOCUMENT_H_
 
-#include <qtextdocument>
+#include <QTextDocument>
 
 class QNetworkAccessManager;
 class QNetworkReply;
--- a/emailuis/nmailui/inc/nmeditorview.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/inc/nmeditorview.h	Fri May 28 13:56:43 2010 +0300
@@ -23,6 +23,7 @@
 #include "nmbaseview.h"
 #include "nmactionobserver.h"
 #include "nmactionresponse.h"
+#include "nmattachmentfetchobserver.h"
 
 class QGraphicsLinearLayout;
 class HbTextEdit;
@@ -41,11 +42,14 @@
 class NmOperation;
 class NmMessageCreationOperation;
 class NmAddAttachmentsOperation;
-class NmCheckOutboxOperation;
 class NmAttachmentPicker;
 class HbMessageBox;
+class NmAttachmentManager;
 
-class NmEditorView : public NmBaseView, public NmActionObserver
+
+class NmEditorView : public NmBaseView,
+                     public NmActionObserver,
+                     public NmAttachmentFetchObserver
 {
     Q_OBJECT
 
@@ -54,6 +58,7 @@
     NmEditorView(NmApplication &application,
                  NmUiStartParam* startParam,
                  NmUiEngine &uiEngine,
+                 NmAttachmentManager &attaManager,
                  QGraphicsItem *parent = 0);
     ~NmEditorView();
 
@@ -80,6 +85,9 @@
 
     void handleActionCommand(NmActionResponse &menuResponse);
 
+public: // From NmAttachmentFetchObserver
+    void progressChanged(int value);
+    void fetchCompleted(int result);
 
 private slots:
 
@@ -91,23 +99,24 @@
 
     void allAttachmentsAdded(int result);
     void attachmentRemoved(int result);
-    void outboxChecked(int result);
     void removeAttachmentTriggered();
     void handleSendOperationCompleted();
     void openAttachmentTriggered();  
     void onAttachmentReqCompleted(const QVariant &value);
+    void onAttachmentsFetchError(int errorCode, const QString& errorMessage);
     void switchCcBccFieldVisibility();
+	void fetchProgressDialogCancelled();
 
 private:
 
     void loadViewLayout();
     void setMailboxName();
-    void setMessageData();
+    void fetchProgressDialogShow();
+    void fetchMessageIfNeeded();
     void startMessageCreation(NmUiEditorStartMode startMode);
     void startSending();
     void finalizeSending();
     void createToolBar();
-    QPointF viewCoordinateToEditCoordinate(QPointF orgPoint);
     void updateMessageWithEditorContents();
     void fillEditorWithMessageContents();
     void initializeVKB();
@@ -118,18 +127,15 @@
     QString addressListToString(const QList<NmAddress> &list) const;
     void enableToolBarAttach(bool enable);
 
-
 public slots:
 
-    void sendMousePressEventToScroll(QGraphicsSceneMouseEvent *event);
-    void sendMouseReleaseEventToScroll(QGraphicsSceneMouseEvent *event);
-    void sendMouseMoveEventToScroll(QGraphicsSceneMouseEvent *event);
-    void sendLongPressGesture(const QPointF &point);
+    void sendProgressDialogCancelled();
 
 private: // Data
 
     NmApplication &mApplication;
     NmUiEngine &mUiEngine;
+    NmAttachmentManager  &mAttaManager;
     HbDocumentLoader *mDocumentLoader;  // Owned
     QObjectList mWidgetList;            // Owned
     NmBaseViewScrollArea *mScrollArea;  // Not owned
@@ -146,12 +152,12 @@
     QPointer<NmMessageCreationOperation> mMessageCreationOperation;  // Not owned
     QPointer<NmAddAttachmentsOperation> mAddAttachmentOperation;     // Not owned 
     QPointer<NmOperation> mRemoveAttachmentOperation;                // Not owned 
-    QPointer<NmCheckOutboxOperation> mCheckOutboxOperation;          // Not owned 
 
     HbProgressDialog *mWaitDialog;         // Owned.    
     HbMessageBox* mQueryDialog;            // Owned
     NmAttachmentPicker* mAttachmentPicker; // Owned    
     bool mCcBccFieldVisible;
+    QPointer<HbProgressDialog> mServiceSendingDialog; // Owned.
 };
 
 
--- a/emailuis/nmailui/inc/nmmessagelistview.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/inc/nmmessagelistview.h	Fri May 28 13:56:43 2010 +0300
@@ -46,7 +46,7 @@
         NmUiStartParam *startParam,
         NmUiEngine &uiEngine,
         NmMailboxListModel &mailboxListModel,
-        NmMessageListModel &messageListModel,
+        NmMessageListModel *messageListModel,
         HbDocumentLoader *documentLoader,
         QGraphicsItem *parent = 0);
     ~NmMessageListView();
@@ -70,9 +70,10 @@
     void itemsAdded(const QModelIndex &parent, int start, int end);
     void itemsRemoved();
     void showNoMessagesText();
+    void hideNoMessagesText();
     void handleSyncStateEvent(NmSyncState syncState, const NmId & mailboxId);
     void handleConnectionEvent(NmConnectState connectState, const NmId &mailboxId);
-    void folderSelected(NmId mailbox, NmId folder);
+    void folderSelected();
     
 private:
     void loadViewLayout();
@@ -87,7 +88,7 @@
     QObjectList mWidgetList;
     NmUiEngine &mUiEngine;
     NmMailboxListModel &mMailboxListModel;
-    NmMessageListModel &mMessageListModel;
+    NmMessageListModel *mMessageListModel;  // Not owned
     HbDocumentLoader *mDocumentLoader;      // Owned
     HbMenu *mItemContextMenu;               // Owned
     NmMessageListModelItem *mLongPressedItem;  // Not owned
@@ -98,6 +99,8 @@
     bool mViewReady;
     NmFolderType mCurrentFolderType;
     bool mSettingsLaunched;
+    NmId mSelectedFolderId;
+    NmId mSelectedMailboxId;
 };
 
 #endif /* NMMESSAGELISTVIEW_H_ */
--- a/emailuis/nmailui/inc/nmmessagesearchlistview.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/inc/nmmessagesearchlistview.h	Fri May 28 13:56:43 2010 +0300
@@ -24,6 +24,7 @@
 
 class HbAbstractViewItem;
 class HbDocumentLoader;
+class HbGroupBox;
 class HbLabel;
 class HbLineEdit;
 class HbMenu;
@@ -79,6 +80,7 @@
     void initTreeView();
     void setViewTitle();
     void noMessagesLabelVisibility(bool visible);
+    void updateSearchResultCountInfo();
     void setSearchInputMode(NmSearchInputMode mode);
 
 
@@ -109,7 +111,7 @@
     QObjectList mWidgetList;
     HbMenu *mItemContextMenu; // Owned
     HbTreeView *mMessageListWidget; // Not owned
-    HbLabel *mInfoLabel; // Not owned
+    HbGroupBox *mInfoLabel; // Not owned
     HbLabel *mNoMessagesLabel; // Not owned
     HbLineEdit *mLineEdit; // Not owned
     HbPushButton *mPushButton; // Not owned
--- a/emailuis/nmailui/inc/nmrecipientfield.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/inc/nmrecipientfield.h	Fri May 28 13:56:43 2010 +0300
@@ -25,12 +25,13 @@
 class NmRecipientLineEdit;
 class HbPushButton;
 class HbIconItem;
+class HbDocumentLoader;
 
-class NmRecipientField : public HbWidget
+class NmRecipientField : public QObject
 {
     Q_OBJECT
 public:
-    NmRecipientField(const QString &labelString = "", QGraphicsItem *parent = 0);
+    NmRecipientField(QObject *parent, HbDocumentLoader &docLoader, const QString &objPrefix);
     virtual ~NmRecipientField();
     qreal height();
     void createConnections();
@@ -53,12 +54,12 @@
 #endif
 
 private:
-    QGraphicsLinearLayout *mLayoutHorizontal;
-    HbLabel *mLabel;
-    NmRecipientLineEdit *mRecipientsEditor;
-    HbPushButton *mLaunchContactsPickerButton;
-    HbIconItem *mAddButtonIcon;
-    bool mOwned;
+    HbDocumentLoader &mDocumentLoader;
+    const QString mObjectPrefix;
+    HbWidget *mWidget; // Not owned
+    HbLabel *mLabel; // Not owned
+    NmRecipientLineEdit *mRecipientsEditor; // Not owned
+    HbPushButton *mLaunchContactsPickerButton; // Not owned
 };
 
 #endif   // NMRECIPIENTFIELD_H_
--- a/emailuis/nmailui/inc/nmuieffects.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/inc/nmuieffects.h	Fri May 28 13:56:43 2010 +0300
@@ -55,7 +55,7 @@
 
 private:
     HbMainWindow &mMainWindow;
-    QGraphicsPixmapItem *mSendAnimationScreenShot; // Owned
+    QGraphicsPixmapItem *mSendAnimationScreenShot; // Not owned.
     bool mDoSendAnimation;
 };
 
--- a/emailuis/nmailui/inc/nmuiheaders.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/inc/nmuiheaders.h	Fri May 28 13:56:43 2010 +0300
@@ -90,7 +90,6 @@
 #include <xqservicerequest.h>
 #include <qtcontacts.h>
 #include <qmobilityglobal.h>
-#include <mobcntmodel.h>
 #include <xqserviceutil.h>
 #include <xqappmgr.h>
 #include <xqserviceipcmarshal.h>
@@ -112,7 +111,6 @@
 #include <nmmessagecreationoperation.h>
 #include <nmaddattachmentsoperation.h>
 #include <nmicons.h>
-#include <nmcheckoutboxoperation.h>
 #include <emailmailboxinfo.h>
 #include <email_services_api.h>
 
@@ -146,6 +144,7 @@
 #include "nmrecipientlineedit.h"
 #include "nmstoreenvelopesoperation.h"
 #include "nmsendserviceinterface.h"
+#include "nmuriserviceinterface.h"
 #include "nmmailboxselectiondialog.h"
 #include "nmuidocumentloader.h"
 #include "nmmailboxserviceinterface.h"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/nmailui/inc/nmuriserviceinterface.h	Fri May 28 13:56:43 2010 +0300
@@ -0,0 +1,81 @@
+/*
+* Copyright (c) 2010 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: NMail Application service interface used for interfacing between
+*              QT highway and other applications
+*
+*/
+
+#ifndef NMURISERVICEINTERFACE_H_
+#define NMURISERVICEINTERFACE_H_
+
+//  INCLUDES
+#include <QObject>
+#include <QVariant>
+
+#ifdef Q_OS_SYMBIAN
+#include <xqserviceprovider.h>
+#else
+#define NM_WINS_ENV
+#endif
+
+//  FORWARD DECLARATIONS
+class NmDataManager;
+class NmMailboxListModel;
+class NmUiEngine;
+class NmApplication;
+class NmUiStartParam;
+class NmMailboxSelectionDialog;
+class NmId;
+class HbView;
+class NmAddress;
+
+class NmUriServiceInterface
+#ifndef NM_WINS_ENV
+    : public XQServiceProvider
+#else
+    : public QObject
+#endif
+{
+    Q_OBJECT
+
+public:
+
+    NmUriServiceInterface( QObject *parent,
+                           NmUiEngine &mailboxListModel,
+                           NmApplication* application);
+    virtual ~NmUriServiceInterface();
+
+public slots:
+
+    bool view(const QString& uri);
+    void selectionDialogClosed(NmId &mailboxId);
+
+private:
+
+    void launchEditorView(NmId mailboxId);
+    void cancelService();
+
+private: // Data
+
+    NmApplication *mApplication; // Not owned
+    NmUiEngine &mUiEngine;
+    int mAsyncReqId;
+    NmUiStartParam *mStartParam;
+    NmMailboxSelectionDialog *mSelectionDialog;
+    HbView *mCurrentView;
+};
+
+#endif /* NMURISERVICEINTERFACE_H_ */
+
+// End of file.
--- a/emailuis/nmailui/inc/nmutilities.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/inc/nmutilities.h	Fri May 28 13:56:43 2010 +0300
@@ -70,8 +70,6 @@
     
     static void displayWarningNote(QString noteText);
 
-    static bool displayOperationCompletionNote(const NmOperationCompletionEvent &event);
-
     static QString createReplyHeader(const NmMessageEnvelope &env);
 };
 
--- a/emailuis/nmailui/inc/nmviewerview.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/inc/nmviewerview.h	Fri May 28 13:56:43 2010 +0300
@@ -61,6 +61,7 @@
     void reloadViewContents(NmUiStartParam* startParam);
     NmUiViewId nmailViewId() const;
     NmMailViewerWK* webView();
+    NmMessage* message();
     void viewReady();
     void aboutToExitView();
     
@@ -77,7 +78,6 @@
     void fetchMessage();
     void openAttachment(int index);
 	void createOptionsMenu();
-	void deleteButton(HbAction* result);
 
 private slots:
     void setMessageData();
@@ -96,6 +96,7 @@
     void fetchCompleted(int result);
 
 private:
+    void deleteMessage();
     void loadMessage();
     void loadViewLayout();
     QString formatMessage();
@@ -104,6 +105,10 @@
     void setMailboxName();
     void createToolBar();
     void setAttachmentList();
+    void createAndShowWaitDialog();
+    void setWebViewWidth(int width);
+    void setWebViewHeighth(int height);
+    void handleMouseEvent(QGraphicsSceneMouseEvent *event, bool pressed);
 
 private:
     NmApplication &mApplication;
--- a/emailuis/nmailui/inc/nmviewerviewnetmanager.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/inc/nmviewerviewnetmanager.h	Fri May 28 13:56:43 2010 +0300
@@ -23,18 +23,20 @@
 
 class QNetworkRequest;
 class NmViewerView;
+class NmUiEngine;
 
 class NmViewerViewNetManager : public QNetworkAccessManager
 {
     Q_OBJECT
 public:
-    NmViewerViewNetManager();
+    NmViewerViewNetManager(NmUiEngine &uiEngine);
     ~NmViewerViewNetManager();
     void setView(NmViewerView *viewerView);
     QNetworkReply *createRequest(Operation op, const QNetworkRequest &request,
                                  QIODevice *outgoingData);
 
 private:
+	NmUiEngine &mUiEngine;
 	NmViewerView *mMessageView;    // Not owned
 
 };
--- a/emailuis/nmailui/inc/nmviewerviewnetreply.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/inc/nmviewerviewnetreply.h	Fri May 28 13:56:43 2010 +0300
@@ -20,12 +20,20 @@
 #define NMVIEWERVIEWNETREPLY_H_
 
 #include <QNetworkReply>
+#include "nmcommon.h"
+
+class NmOperation;
+class NmMessage;
+class NmUiEngine;
 
 class NmViewerViewNetReply : public QNetworkReply
 {
     Q_OBJECT
 public:
-    NmViewerViewNetReply(QVariant data);
+    NmViewerViewNetReply(QVariant data, NmUiEngine &uiEngine);
+    NmViewerViewNetReply(QVariant data, NmUiEngine &uiEngine, 
+            const NmId &mailboxId, const NmId &folderId, const NmId &messageId, 
+            const NmId &messagePartId);
     ~NmViewerViewNetReply();
     void setOriginalRequest(const QNetworkRequest &request);
     qint64 readData(char *data, qint64 maxlen);
@@ -36,9 +44,17 @@
 
 public slots:
     void signalReady();
+    void fetchCompleted(int result);
+    void fetchCancelled();
 
 private:
     QByteArray mDataArray;
+    NmUiEngine &mUiEngine;
+    NmId mMailboxId;
+    NmId mFolderId;
+    NmId mMessageId;
+    NmId mMessagePartId;
+    NmOperation *mOperation;
     qint64 mReadIndex;
 };
 
--- a/emailuis/nmailui/inc/nmviewerwebview.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/inc/nmviewerwebview.h	Fri May 28 13:56:43 2010 +0300
@@ -20,25 +20,39 @@
 
 #include <QGraphicsWebView>
 
+#include "nmcommon.h"
+
 class NmViewerView;
 class NmMessage;
 
 class QMouseEvent;
 
+class NmMailViewerWkContentItem
+{
+public:
+    NmMailViewerWkContentItem() 
+        : mData(0), mPartId(0), mIsFetched(false) {}
+    NmMailViewerWkContentItem(QVariant data, NmId partId, bool isFetched) 
+        : mData(data), mPartId(partId), mIsFetched(isFetched) {}
+    QVariant mData;
+    NmId     mPartId;
+    bool     mIsFetched;
+};
+
 class NmMailViewerWK : public QGraphicsWebView
 {
     Q_OBJECT
 public:
 	NmMailViewerWK();
 	~NmMailViewerWK();
-    virtual QVariant loadResource ( int type, const QUrl & name );
+    virtual QVariant loadResource (int type, const QUrl &name, NmId &partId, bool &isFetched);
     void setParentView(NmViewerView *parentView);
-    void addContent(QString key, QVariant val);
+    void addContent(QString key, QVariant val, NmId partId, bool isFetched);
     void sendMousePressEvent(QGraphicsSceneMouseEvent *event);
     void sendMouseReleaseEvent(QGraphicsSceneMouseEvent *event);
 
 private:
-    QMap<QString,QVariant> mContent;
+    QMap<QString,NmMailViewerWkContentItem> mContent;
     NmViewerView *mParentView;      // Not owned
 };
 
--- a/emailuis/nmailui/nmailui.pro	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/nmailui.pro	Fri May 28 13:56:43 2010 +0300
@@ -47,7 +47,7 @@
     LIBS += -lxqservice \
         -lxqserviceutil \
         -lqtcontacts \
-        -lmobcntmodel
+        -lfmfiledialog
 }
 
 HEADERS += inc/nmeditorcontent.h \
@@ -76,6 +76,7 @@
     inc/nmuidef.h \
     inc/nmrecipientfield.h \
     inc/nmsendserviceinterface.h \
+    inc/nmuriserviceinterface.h \
     inc/nmmailboxselectiondialog.h \
     inc/nmuidocumentloader.h \
     inc/nmmailboxserviceinterface.h \
@@ -107,6 +108,7 @@
     src/nmuiextensionmanager.cpp \
     src/nmrecipientfield.cpp \
     src/nmsendserviceinterface.cpp \
+    src/nmuriserviceinterface.cpp \
     src/nmmailboxselectiondialog.cpp \
     src/nmuidocumentloader.cpp \
     src/nmmailboxserviceinterface.cpp \
--- a/emailuis/nmailui/service_conf.xml	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/service_conf.xml	Fri May 28 13:56:43 2010 +0300
@@ -13,6 +13,12 @@
     <customproperty key="aiw_action_icon">qtg_large_email</customproperty>
   </interface>
   <interface>
+    <name>com.nokia.symbian.IUriView</name>
+    <version>1.0</version>
+    <description>Uri interface</description>
+    <customproperty key="schemes">mailto</customproperty>
+  </interface>
+  <interface>
     <name>com.nokia.symbian.IEmailMessageSend</name>
     <version>1.0</version>
     <description>Send interface</description>
--- a/emailuis/nmailui/src/main.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/main.cpp	Fri May 28 13:56:43 2010 +0300
@@ -23,6 +23,8 @@
 */
 int main(int argc, char *argv[])
 {
+    NM_FUNCTION;
+    
     HbApplication app(argc, argv);
  
     // Load the translation file.
--- a/emailuis/nmailui/src/nmapplication.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmapplication.cpp	Fri May 28 13:56:43 2010 +0300
@@ -47,21 +47,25 @@
 mEffects(NULL),
 mAttaManager(NULL),
 mSettingsViewLauncher(NULL),
-mViewReady(false)
+mViewReady(false),
+mQueryDialog(NULL)
 {
+    NM_FUNCTION;
+
+    // TEMPORARY WORKAROUND TO PREVENT PANIC User panic 66, where there is
+    // a PushL call to cleanup stack without any TRAP.
+#ifdef Q_OS_SYMBIAN
+    TRAP_IGNORE(mUiEngine = NmUiEngine::instance());
+#else
+    mUiEngine = NmUiEngine::instance();
+#endif
+
     // Create network access manager and cache for application use.
-    mNetManager = new NmViewerViewNetManager();
+    mNetManager = new NmViewerViewNetManager(*mUiEngine);
     QNetworkDiskCache *cache = new QNetworkDiskCache();
     cache->setCacheDirectory(QDesktopServices::storageLocation(QDesktopServices::CacheLocation));
     mNetManager->setCache(cache);
 
-    // TEMPORARY WORKAROUND TO PREVENT PANIC User panic 66, where there is
-    // a PushL call to cleanup stack without any TRAP.
-    #ifdef Q_OS_SYMBIAN
-    TRAP_IGNORE(mUiEngine = NmUiEngine::instance());
-    #else
-    mUiEngine = NmUiEngine::instance();
-    #endif
     createMainWindow();
 
     // attachment manager can be shared between viewer and editor, ownership in application class
@@ -72,6 +76,8 @@
             new NmSendServiceInterface(NmSendServiceName, NULL, *mUiEngine, this);
     mSendServiceInterface2 =
             new NmSendServiceInterface(emailFullServiceNameSend, NULL, *mUiEngine, this);
+    mUriServiceInterface =
+        new NmUriServiceInterface(NULL, *mUiEngine, this);
     mMailboxServiceInterface =
             new NmMailboxServiceInterface(NULL, *mUiEngine, this);
     mViewerServiceInterface =
@@ -86,9 +92,17 @@
 */
 NmApplication::~NmApplication()
 {
+    NM_FUNCTION;
+
+    if (mQueryDialog){
+        delete mQueryDialog;
+        mQueryDialog=NULL;
+    }
+    
 #ifndef NM_WINS_ENV
 	delete mSendServiceInterface;
 	delete mSendServiceInterface2;
+	delete mUriServiceInterface;
 	delete mMailboxServiceInterface;
 	delete mViewerServiceInterface;
 #endif
@@ -107,9 +121,10 @@
     delete mNetManager;
     mNetManager=NULL;
     }
+    // Effects needs to be deleted before MainWindow.
+    delete mEffects;
     delete mMainWindow;
     delete mAttaManager;
-    delete mEffects;
     delete mSettingsViewLauncher;
 }
 
@@ -118,7 +133,7 @@
 */
 void NmApplication::createMainWindow()
 {
-    NMLOG("nmailui: createMainWindow enter");
+    NM_FUNCTION;
 
 #ifndef NM_WINS_ENV
     bool service = XQServiceUtil::isService();
@@ -149,7 +164,7 @@
     if (mMainWindow) {
         mBackAction = new HbAction(Hb::BackNaviAction,this);
         connect(mBackAction, SIGNAL(triggered()), this, SLOT(prepareForPopView()));
-        
+
         // Show mainwindow
         // Services will active it when the view is ready
         if (!service) {
@@ -172,8 +187,8 @@
     }
 
     // Start to filter main window events to get "end key" event in all possible situations. Using
-    // event() is not enough to catch the event as it is only called if the view widget has the 
-    // focus. Note: if key capturing (xqkeycapture.h) is required it is probably best to implement 
+    // event() is not enough to catch the event as it is only called if the view widget has the
+    // focus. Note: if key capturing (xqkeycapture.h) is required it is probably best to implement
     // an own QMainWindow class and do the capturing there, not in the views.
     mMainWindow->installEventFilter(this);
 }
@@ -184,6 +199,8 @@
 */
 void NmApplication::viewReady()
 {
+    NM_FUNCTION;
+
     mViewReady = true;
     if (!mViewStack->isEmpty()) {
     	NmBaseView *currentView = mViewStack->top();
@@ -199,21 +216,23 @@
 */
 bool NmApplication::eventFilter(QObject *obj, QEvent *event)
 {
+    NM_FUNCTION;
+
     bool consumed = false;
-    
+
     if (obj && obj == mMainWindow && event && event->type() == QEvent::KeyPress) {
         QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
-        
+
         if (keyEvent->key() == Qt::Key_No) { // end key, the "red" key
-            
+
             // exit application if no pending operations are on-going
         }
     }
-    
+
     if (!consumed) {
         consumed = QObject::eventFilter(obj, event);
     }
-    
+
     return consumed;
 }
 
@@ -222,9 +241,10 @@
 */
 void NmApplication::pushView(NmBaseView *newView)
 {
-    NMLOG("nmailui: pushView enter");
+    NM_FUNCTION;
+
     if (newView) {
-        NMLOG("nmailui: view exists");
+        NM_COMMENT("nmailui: view exists");
         newView->setNavigationAction(mBackAction);
 
         // Store view to be hidden
@@ -240,7 +260,7 @@
 		}
 
         // activate new view
-    	NMLOG("nmailui: addView");
+    	NM_COMMENT("nmailui: addView");
         mMainWindow->addView(newView);
         mViewStack->push(newView);
         mMainWindow->setCurrentView(newView);
@@ -253,12 +273,12 @@
         }
 
         // hide old view
-        NMLOG("nmailui: removeView");
+        NM_COMMENT("nmailui: removeView");
         if (hideView){
             mMainWindow->removeView(hideView);
         }
 
-        NMLOG("nmailui: pushView done");
+        NM_COMMENT("nmailui: pushView done");
     }
 }
 
@@ -274,7 +294,7 @@
 
         // View will call/signal popView if exitting is ok.
         view->okToExitView();
-    }	
+    }
     // If the view stack is now empty quit the app
     // This happens also when the app has been started as a service
     else if (mViewStack->size() == 0) {
@@ -287,7 +307,8 @@
 */
 void NmApplication::popView()
 {
-    NMLOG("nmailui: popView enter");
+    NM_FUNCTION;
+
     if (mViewStack->size() > 0) {
         // Get view pointer
         NmBaseView *view = mViewStack->top();
@@ -358,7 +379,8 @@
 */
 void NmApplication::resetViewStack()
 {
-    NMLOG("nmailui: resetViewStack enter");
+    NM_FUNCTION;
+
     if (mViewStack && !mViewStack->isEmpty()) {
 	    int viewCount = mViewStack->count();
         // Pop and destroy all views
@@ -378,13 +400,12 @@
 */
 void NmApplication::enterNmUiView(NmUiStartParam* startParam)
 {
+    NM_FUNCTION;
+
     // Check the validity of start parameter object
     if (startParam) {
 
         if (startParam->service() && mMainWindow) {
-			// Store the visibility state when the service was launched
-			mForegroundService = mMainWindow->isVisible();
-
 			// When the message list is started as a service previous views are removed
 			// from the stack. Open editors are not closed.
 			// Also if the view is same than the new one, keep it open (reload the content).
@@ -429,7 +450,7 @@
                         mViewStack->top()->nmailViewId()==NmUiViewMessageEditor) {
                         break;
                     }
-                    NmMessageListModel &messageListModel = mUiEngine->messageListModel(
+                    NmMessageListModel *messageListModel = &mUiEngine->messageListModel(
                                                 startParam->mailboxId(), startParam->folderId());
                     NmMessageListView *msgList =new NmMessageListView(
                     		*this, startParam, *mUiEngine, *mMbListModel, messageListModel,
@@ -441,7 +462,7 @@
                 {
                     // Check the topmost view. If it is an editor, do not open
                     // a new mail search list view.
-                    if (startParam->service() && !mViewStack->isEmpty() && 
+                    if (startParam->service() && !mViewStack->isEmpty() &&
                         mViewStack->top()->nmailViewId() == NmUiViewMessageEditor) {
                         break;
                     }
@@ -457,11 +478,11 @@
                 }
                 break;
                 case NmUiViewMessageViewer:
-                    pushView(new NmViewerView(*this, startParam, *mUiEngine, 
+                    pushView(new NmViewerView(*this, startParam, *mUiEngine,
                             mMainWindow, *mAttaManager));
                     break;
                 case NmUiViewMessageEditor:
-                    pushView(new NmEditorView(*this, startParam, *mUiEngine));
+                    pushView(new NmEditorView(*this, startParam, *mUiEngine, *mAttaManager));
                     break;
                 default:
                     // Reset view stack and exit application
@@ -486,12 +507,15 @@
 */
 void NmApplication::exitApplication()
 {
-	NMLOG("NmApplication::exitApplication");
+    NM_FUNCTION;
+
 #ifndef NM_WINS_ENV
     delete mSendServiceInterface;
     mSendServiceInterface = NULL;
     delete mSendServiceInterface2;
     mSendServiceInterface2 = NULL;
+    delete mUriServiceInterface;
+    mUriServiceInterface = NULL;
     delete mMailboxServiceInterface;
     mMailboxServiceInterface = NULL;
     delete mViewerServiceInterface;
@@ -507,7 +531,8 @@
 */
 void NmApplication::delayedExitApplication()
 {
-    NMLOG("NmApplication::delayedExitApplication");
+    NM_FUNCTION;
+
     // Exit the application in the next event loop
     QTimer::singleShot(0, this, SLOT(exitApplication()));
 }
@@ -517,6 +542,8 @@
 */
 HbMainWindow* NmApplication::mainWindow()
 {
+    NM_FUNCTION;
+
     return mMainWindow;
 }
 
@@ -525,6 +552,8 @@
 */
 NmUiExtensionManager& NmApplication::extManager()
 {
+    NM_FUNCTION;
+
     return *mExtensionManager;
 }
 
@@ -533,6 +562,8 @@
 */
 NmViewerViewNetManager& NmApplication::networkAccessManager()
 {
+    NM_FUNCTION;
+
     return *mNetManager;
 }
 
@@ -541,6 +572,8 @@
 */
 QSize NmApplication::screenSize()
 {
+    NM_FUNCTION;
+
     QSize ret(0,0);
     if (mMainWindow){
         HbDeviceProfile currentP = HbDeviceProfile::current();
@@ -574,28 +607,68 @@
 */
 void NmApplication::handleOperationCompleted(const NmOperationCompletionEvent &event)
 {
-    bool openSettings = NmUtilities::displayOperationCompletionNote(event);
-    if(openSettings) {
-        launchSettings(event.mMailboxId);
+    NM_FUNCTION;
+
+    if(event.mCompletionCode != NmNoError && event.mCompletionCode != NmCancelError) {
+        if(event.mOperationType == Synch && event.mCompletionCode == NmAuthenticationError) {
+            mLastOperationMailbox=event.mMailboxId;
+            if (mQueryDialog){
+                delete mQueryDialog;
+                mQueryDialog=NULL;
+            }
+            mQueryDialog = NmUtilities::displayQuestionNote(hbTrId("txt_mail_dialog_address_or_password_incorrect"),
+                                                    this, SLOT(launchSettings(HbAction*)));                        
+        }
+        if(event.mOperationType == Synch && event.mCompletionCode == NmServerConnectionError) {
+            mLastOperationMailbox=event.mMailboxId;
+            if (mQueryDialog){
+                delete mQueryDialog;
+                mQueryDialog=NULL;
+            }
+            mQueryDialog = NmUtilities::displayQuestionNote(hbTrId("txt_mail_dialog_server_settings_incorrect"),
+                                                    this, SLOT(launchSettings(HbAction*)));                
+        }
+        // following applies to all operation/event types
+        if(event.mCompletionCode == NmConnectionError) {
+            NmUtilities::displayWarningNote(hbTrId("txt_mail_dialog_mail_connection_error"));
+        }
     }
 }
 
 /*!
     launches settings view of the specified mailbox
 */
-void NmApplication::launchSettings(const NmId &mailboxId)
+void NmApplication::launchSettings(HbAction* action)
 {
-    // create settingslauncher if doesn't exist
-    if(!mSettingsViewLauncher) {
-        mSettingsViewLauncher = new NmSettingsViewLauncher();
-        }
+    NM_FUNCTION;
+    
+    // Check whether yes button was pressed
+    if (mQueryDialog&& action == mQueryDialog->actions().at(0)) {
+        // create settingslauncher if doesn't exist
+        if(!mSettingsViewLauncher) {
+            mSettingsViewLauncher = new NmSettingsViewLauncher();
+            }
+    
+        if(mSettingsViewLauncher) {
+            // mailboxname required
+            NmMailboxMetaData *mailboxMetaData = mUiEngine->mailboxById(mLastOperationMailbox); // no ownership
+            if( mailboxMetaData ) {
+                // launch
+                mSettingsViewLauncher->launchSettingsView(mLastOperationMailbox, mailboxMetaData->name());
+            }
+        }     
+    }    
+}
 
-    if(mSettingsViewLauncher) {
-        // mailboxname required
-        NmMailboxMetaData *mailboxMetaData = mUiEngine->mailboxById(mailboxId); // no ownership
-        if( mailboxMetaData ) {
-            // launch
-            mSettingsViewLauncher->launchSettingsView(mailboxId, mailboxMetaData->name());
-        }
-    }
+/*!
+	Stores the visibility state, e.g. when the service was launched.
+	\return true if the app was visible
+*/
+bool NmApplication::updateVisibilityState()
+{
+    // At the moment there is no good way to check the foreground state
+    QWindowSurface *surface = mMainWindow->windowSurface();
+	mForegroundService = (surface != NULL);
+	NM_COMMENT(QString("NmApplication::updateVisibilityState fg=%1").arg(mForegroundService));
+	return mForegroundService;
 }
--- a/emailuis/nmailui/src/nmattachmentlist.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmattachmentlist.cpp	Fri May 28 13:56:43 2010 +0300
@@ -28,6 +28,8 @@
 NmAttachmentList::NmAttachmentList(NmAttachmentListWidget &listWidget)
 : mListWidget(listWidget)
 {
+    NM_FUNCTION;
+    
     updateLayout();
 }
 
@@ -36,6 +38,8 @@
 */
 NmAttachmentList::~NmAttachmentList()
 { 
+    NM_FUNCTION;
+    
     clearList();
 }
 
@@ -47,6 +51,8 @@
     const QString &fileSize,
     const NmId &attachmentPartId)
 {
+    NM_FUNCTION;
+    
     QString displayName = fullNameToDisplayName(fullFileName);
     mFullFileName.append(fullFileName);
     mDisplayFileName.append(displayName);
@@ -67,6 +73,8 @@
 void NmAttachmentList::setAttachmentPartId(const QString fullFileName, 
                                            const NmId &attachmentPartId)
 {
+    NM_FUNCTION;
+    
     for (int i=0; i<count(); ++i) {
         if (mFullFileName.at(i) == fullFileName && mAttachmentPartId.at(i).id() == 0) {
             mAttachmentPartId.replace(i, attachmentPartId);
@@ -79,6 +87,8 @@
 */
 void NmAttachmentList::setAttachmentSize(const NmId &attachmentPartId, const QString &size)
 {
+    NM_FUNCTION;
+    
     for (int i=0; i<count(); ++i) {
         if (mAttachmentPartId.at(i) == attachmentPartId) {
             mFileSize.replace(i, size);
@@ -92,6 +102,8 @@
 */
 void NmAttachmentList::removeAttachment(int arrayIndex)
 {
+    NM_FUNCTION;
+    
     if (arrayIndex < count()) {
         // Remove UI
         mListWidget.removeAttachment(arrayIndex);
@@ -108,6 +120,8 @@
 */
 QString NmAttachmentList::getFullFileNameByIndex(int arrayIndex)
 {
+    NM_FUNCTION;
+    
 	QString result;
 	
     if ( arrayIndex >= 0 && arrayIndex < mFullFileName.count() ) {
@@ -121,6 +135,8 @@
 */
 void NmAttachmentList::removeAttachment(const QString &fullFileName)
 {
+    NM_FUNCTION;
+    
     for (int i=0; i<count(); ++i) {
         if (mFullFileName.at(i) == fullFileName) {
             removeAttachment(i);
@@ -133,6 +149,8 @@
 */
 void NmAttachmentList::removeAttachment(const NmId &attachmentPartId)
 {
+    NM_FUNCTION;
+    
     for (int i=0; i<count(); ++i) {
         if (mAttachmentPartId.at(i) == attachmentPartId) {
             removeAttachment(i);
@@ -145,6 +163,8 @@
 */
 void NmAttachmentList::clearList()
 {
+    NM_FUNCTION;
+    
     for (int i=count()-1; i>=0; --i) {
         // Remove from UI
         mListWidget.removeAttachment(i);
@@ -161,6 +181,8 @@
 */
 NmAttachmentListWidget& NmAttachmentList::listWidget()
 {
+    NM_FUNCTION;
+    
     return mListWidget;
 }
 
@@ -169,6 +191,8 @@
 */
 int NmAttachmentList::count()
 {
+    NM_FUNCTION;
+    
     return mFullFileName.count();
 }
 
@@ -177,6 +201,8 @@
 */
 NmId NmAttachmentList::nmIdByIndex(int listIndex)
 {
+    NM_FUNCTION;
+    
     return mAttachmentPartId.at(listIndex);
 }
 
@@ -185,6 +211,8 @@
 */
 int NmAttachmentList::indexByNmId(const NmId &id)
 {
+    NM_FUNCTION;
+    
     for (int i=0; i<count(); ++i) {
         if (mAttachmentPartId.at(i) == id) {
             return i;
@@ -198,6 +226,8 @@
 */
 QString NmAttachmentList::fullNameToDisplayName(const QString &fullName)
 {
+    NM_FUNCTION;
+    
     return fullName.section('\\', -1);
 }
 
@@ -206,6 +236,8 @@
 */
 void NmAttachmentList::updateLayout()
 {
+    NM_FUNCTION;
+    
     // Fix this when progress bar is used
     mListWidget.setMaximumHeight(count() * 56); 
     QTimer::singleShot(1, this, SLOT(delayedLayoutChangeInfo()));
@@ -216,6 +248,8 @@
 */
 void NmAttachmentList::delayedLayoutChangeInfo()
 {
+    NM_FUNCTION;
+    
     emit attachmentListLayoutChanged();
 }
 
--- a/emailuis/nmailui/src/nmattachmentmanager.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmattachmentmanager.cpp	Fri May 28 13:56:43 2010 +0300
@@ -30,12 +30,13 @@
 NmAttachmentManager::NmAttachmentManager(NmUiEngine &uiEngine) :
     mUiEngine(uiEngine),
     mFetchOperation(NULL),
+    mMsgFetchOperation(NULL),
     mFetchObserver(NULL),
     mAttaId(0),
     mProgressValue(0),
     mIsFetching(false)
 {
-
+    NM_FUNCTION;
 }
 
 /*!
@@ -43,7 +44,9 @@
 */
 NmAttachmentManager::~NmAttachmentManager()
 {
-    // cancel fetch
+    NM_FUNCTION;
+    
+    // fetch operation deleted in cancel fetch
     cancelFetch();
 }
 
@@ -57,6 +60,7 @@
         const NmId &messageId, 
         const NmId &messagePartId)
 {
+    NM_FUNCTION;
     // cancel old fetch operation, Does nothing if fetch not ongoing
     cancelFetch();
 
@@ -67,7 +71,7 @@
         mAttaId = messagePartId;
         mIsFetching = true;
         QObject::connect(mFetchOperation, SIGNAL(operationCompleted(int)),
-                this, SLOT(attachmentFetchCompleted(int)));
+                this, SLOT(completeAttachmentFetch(int)));
         
         QObject::connect(mFetchOperation, SIGNAL(operationProgressChanged(int)),
                 this, SLOT(changeProgress(int)));
@@ -79,19 +83,19 @@
 /*!
     Fetch attachments to a message. 
     Set observer with setObserver method to get process and complete events
+    
+    \return bool true if fetch started, otherwise false.
 */
-void NmAttachmentManager::fetchAttachments(
+bool NmAttachmentManager::fetchAttachments(
         const NmId &mailboxId, 
         const NmId &folderId, 
         const NmId &messageId,
         QList<NmId> &messagePartIds)
 {
+    NM_FUNCTION;
+    bool result = false;
     // cancel old fetch operation, Does nothing if fetch not ongoing
-    // We don't wan't to cancel message fetching operation, because
-    // it might still be finishing.
-    if (!mMsgFetchOperation) {
-        cancelFetch();
-    }
+    cancelFetch();
     
     if (messagePartIds.count() > 0) {
         mFetchOperation = mUiEngine.fetchMessageParts(
@@ -99,18 +103,20 @@
             folderId,
             messageId,
             messagePartIds);
+        
+        if (mFetchOperation) {
+            mAttaId = 0;
+            mIsFetching = true;
+            QObject::connect(mFetchOperation, SIGNAL(operationCompleted(int)),
+                    this, SLOT(completeAttachmentFetch(int)));
+            
+            QObject::connect(mFetchOperation, SIGNAL(operationProgressChanged(int)),
+                    this, SLOT(changeProgress(int)));
+        
+            result = true;
+        }
     }
-    
-    if (mFetchOperation) {
-        mAttaId = 0;
-        mIsFetching = true;
-        QObject::connect(mFetchOperation, SIGNAL(operationCompleted(int)),
-                this, SLOT(attachmentFetchCompleted(int)));
-        
-        QObject::connect(mFetchOperation, SIGNAL(operationProgressChanged(int)),
-                this, SLOT(changeProgress(int)));
-        
-    }
+    return result;
 }
 
 /*!
@@ -124,20 +130,21 @@
         const NmId &folderId, 
         const NmId &messageId)
 {
-    fetchMsg = mUiEngine.message(mailboxId,folderId,messageId);
+    NM_FUNCTION;
+    mFetchMsg = mUiEngine.message(mailboxId,folderId,messageId);
     
     // Check if we have part data structure.    
-    if (fetchMsg->childParts().count() == 0 &&
-        fetchMsg->fetchedSize() < fetchMsg->size()) {
+    if (mFetchMsg->childParts().count() == 0 &&
+        mFetchMsg->fetchedSize() < mFetchMsg->size()) {
 
         // cancel old fetch operation, Does nothing if fetch not ongoing
         cancelFetch();
         
         // Fetch the message.
         mMsgFetchOperation = mUiEngine.fetchMessage(
-            fetchMsg->envelope().mailboxId(),
-            fetchMsg->envelope().folderId(),
-            fetchMsg->envelope().messageId());
+            mFetchMsg->envelope().mailboxId(),
+            mFetchMsg->envelope().folderId(),
+            mFetchMsg->envelope().messageId());
         
         mAttaId = 0;
         mIsFetching = true;
@@ -146,12 +153,12 @@
             QObject::connect(mMsgFetchOperation,
                     SIGNAL(operationCompleted(int)),
                     this,
-                    SLOT(messageFetched(int)));
+                    SLOT(completeMessageFetch(int)));
         }
         
     }
     else {
-        messageFetched(NmNoError);
+        completeMessageFetch(NmNoError);
     }
 }
 
@@ -160,6 +167,8 @@
 */
 bool NmAttachmentManager::isFetching() const
 {
+    NM_FUNCTION;
+    
     return mIsFetching;
 }
 
@@ -168,6 +177,8 @@
 */
 NmId NmAttachmentManager::partIdUnderFetch() const
 {
+    NM_FUNCTION;
+    
     return mAttaId;
 }
 
@@ -176,6 +187,7 @@
 */
 void NmAttachmentManager::cancelFetch()
 {
+    NM_FUNCTION;
     if (mFetchOperation && mFetchOperation->isRunning()) { 
         mFetchOperation->cancelOperation();
     }
@@ -192,6 +204,8 @@
 */
 void NmAttachmentManager::changeProgress(int value)
 {
+    NM_FUNCTION;
+    
     if (mFetchObserver && value > mProgressValue) {
         mProgressValue = value;
         mFetchObserver->progressChanged(value);
@@ -201,8 +215,10 @@
 /*!
     Used by message part fetch operation
 */
-void NmAttachmentManager::attachmentFetchCompleted(int result)
+void NmAttachmentManager::completeAttachmentFetch(int result)
 {
+    NM_FUNCTION;
+    
     if (mFetchObserver) {
         mFetchObserver->fetchCompleted(result);
     }
@@ -214,38 +230,48 @@
 /*!
     Used by message fetch operation
 */
-void NmAttachmentManager::messageFetched(int result)
+void NmAttachmentManager::completeMessageFetch(int result)
 {
-    QObject::disconnect(mFetchOperation,
-                SIGNAL(operationCompleted(int)),
-                this,
-                SLOT(messageFetched(int)));
+    NM_FUNCTION;
     
     if (result == NmNoError) {
         
         // Reload message
-        fetchMsg = mUiEngine.message(
-            fetchMsg->envelope().mailboxId(),
-            fetchMsg->envelope().folderId(),
-            fetchMsg->envelope().messageId());
+        mFetchMsg = mUiEngine.message(
+            mFetchMsg->envelope().mailboxId(),
+            mFetchMsg->envelope().folderId(),
+            mFetchMsg->envelope().messageId());
         
-        if (fetchMsg) {
+        if (mFetchMsg) {
             QList<NmId> partIds;
             NmMessagePart *part;
-            foreach (part, fetchMsg->childParts()) {
+            foreach (part, mFetchMsg->childParts()) {
                 if (part->size() > part->fetchedSize()) {
                     partIds.append(part->partId());
                 }
             }
             if (partIds.count() > 0) {
+                mMsgFetchOperation = NULL;
                 fetchAttachments(
-                    fetchMsg->envelope().mailboxId(),
-                    fetchMsg->envelope().folderId(),
-                    fetchMsg->envelope().messageId(),
+                    mFetchMsg->envelope().mailboxId(),
+                    mFetchMsg->envelope().folderId(),
+                    mFetchMsg->envelope().messageId(),
                     partIds);
+                
+                if (mFetchOperation) {
+                    mAttaId = 0;
+                    mIsFetching = true;
+                    QObject::connect(mFetchOperation, SIGNAL(operationCompleted(int)),
+                            this, SLOT(completeAttachmentFetch(int)));
+                    
+                    QObject::connect(mFetchOperation, SIGNAL(operationProgressChanged(int)),
+                            this, SLOT(changeProgress(int)));
+                
+                    result = true;
+                }
             }
             else {
-                mFetchObserver->fetchCompleted(result);
+                mFetchObserver->fetchCompleted(NmNoError);
             }
         }
         else {
@@ -262,6 +288,8 @@
 */
 void NmAttachmentManager::setObserver(NmAttachmentFetchObserver *observer)
 {
+    NM_FUNCTION;
+    
     mFetchObserver = observer;
     // send progress event wheng observer changes if fetch ongoing 
     // to get progress bar updating
@@ -275,6 +303,8 @@
 */
 void NmAttachmentManager::clearObserver()
 {
+    NM_FUNCTION;
+    
     mFetchObserver = NULL;
 }
 
@@ -283,6 +313,8 @@
 */
 int NmAttachmentManager::progressValue() const
 {
+    NM_FUNCTION;
+    
     return mProgressValue;
 }
 
--- a/emailuis/nmailui/src/nmattachmentpicker.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmattachmentpicker.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,8 +15,11 @@
 *
 */
 
+#include <fmfiledialog.h>
+#include <xqaiwdecl.h>
 #include "nmuiheaders.h"
-
+const int NmAttachmentPickerStillMode = 0;
+const int NmAttachmentPickerVideoMode = 1;
 
 /*!
     \class NmAttachmentPicker
@@ -30,6 +33,7 @@
     QObject(parent),
     mRequest(NULL)
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -37,6 +41,8 @@
 */
 NmAttachmentPicker::~NmAttachmentPicker()
 {
+    NM_FUNCTION;
+    
     delete mRequest;
 }
 
@@ -45,7 +51,9 @@
 */
 void NmAttachmentPicker::fetchImage()
 {
-    fetch(IMAGE_FETCHER_INTERFACE, IMAGE_FETCHER_OPERATION);
+    NM_FUNCTION;
+    
+    fetch(XQI_IMAGE_FETCH, XQOP_IMAGE_FETCH);
 }
 
 /*!
@@ -53,7 +61,9 @@
 */
 void NmAttachmentPicker::fetchAudio()
 {
-    fetch(AUDIO_FETCHER_INTERFACE, AUDIO_FETCHER_OPERATION);    
+    NM_FUNCTION;
+    
+    fetch(XQI_MUSIC_FETCH, XQOP_MUSIC_FETCH);    
 }
 
 /*!
@@ -61,7 +71,8 @@
 */
 void NmAttachmentPicker::fetchVideo()
 {
-
+    NM_FUNCTION;
+    fetch(XQI_VIDEO_FETCH, XQOP_VIDEO_FETCH);
 }
 
 /*!
@@ -69,22 +80,82 @@
 */
 void NmAttachmentPicker::fetchOther()
 {
+    NM_FUNCTION;
+    
+    QString path;
+    path = FmFileDialog::getSaveFileName(0, hbTrId("txt_mail_dialog_select_file"));
+    
+    if(!path.isEmpty()) {
+        QString temp = QDir::toNativeSeparators(path);
+        emit attachmentsFetchOk(QVariant(temp));    
+    }
+}
 
+/*!
+    Send request to retrieve image from camera
+*/
+void NmAttachmentPicker::fetchCameraStill()
+{
+    NM_FUNCTION;
+    fetchFromCamera(NmAttachmentPickerStillMode);
+}
+
+/*!
+    Send request to retrieve video from camera
+*/
+void NmAttachmentPicker::fetchCameraVideo()
+{
+    NM_FUNCTION;
+    fetchFromCamera(NmAttachmentPickerVideoMode);
 }
 
 /*!
+    Send request to retrieve image/video from camera
+*/
+void NmAttachmentPicker::fetchFromCamera(int mode)
+{
+    NM_FUNCTION;
+
+    int cameraIndex = 0;            //primary camera
+    int quality = 0;                //default
+    bool allowModeSwitch = false;   //not allowed to change
+    bool allowCameraSwitch = true;  //allow changes
+    bool allowQualityChange = true; //allow changes
+    
+    QVariantMap parameters;
+    parameters.insert(XQCAMERA_INDEX, cameraIndex);
+    parameters.insert(XQCAMERA_QUALITY, quality);
+    parameters.insert(XQCAMERA_MODE_SWITCH, allowModeSwitch);
+    parameters.insert(XQCAMERA_INDEX_SWITCH, allowCameraSwitch);
+    parameters.insert(XQCAMERA_QUALITY_CHANGE, allowQualityChange); 
+ 
+    QList<QVariant> args;
+    args << mode;
+    args << parameters;
+    
+    fetch(XQI_CAMERA_CAPTURE, "capture(int,QVariantMap)", &args);
+}
+/*!
     Construct & send appmgr request to start appropriate picker   
+    param <interface> the interface to be connected to
+    param <operation> the operation of the interface
+    param <args> the arguments that needed by the operation
 */
 void NmAttachmentPicker::fetch(const QString& interface, 
-    const QString& operation)
+    const QString& operation, const QList<QVariant>* args)
 {
+    NM_FUNCTION;
+    
     delete mRequest;
     mRequest = NULL;
     XQApplicationManager appMgr;
     mRequest = appMgr.create(interface, operation, true);
-
+   
     if (mRequest) {
         mRequest->setSynchronous(false);
+        if (args) {
+            mRequest->setArguments(*args);
+        }
         connect(mRequest, SIGNAL(requestOk(const QVariant&)),
                 this, SIGNAL(attachmentsFetchOk(const QVariant&)));
 
--- a/emailuis/nmailui/src/nmbaseview.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmbaseview.cpp	Fri May 28 13:56:43 2010 +0300
@@ -33,6 +33,7 @@
 mStartParam(startParam),
 mApplication(application)
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -40,6 +41,8 @@
 */
 NmBaseView::~NmBaseView()
 {
+    NM_FUNCTION;
+    
     delete mStartParam;
 }
 
@@ -50,6 +53,8 @@
 */
 void NmBaseView::okToExitView()
 {
+	NM_FUNCTION;
+	
 	mApplication.popView();
 }
 
@@ -60,6 +65,7 @@
 */
 void NmBaseView::aboutToExitView()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -68,7 +74,8 @@
     if it makes sense to construct items after main view is shown. 
 */
 void NmBaseView::viewReady()
-{    
+{
+    NM_FUNCTION;
 }
 
 /*!
@@ -77,6 +84,7 @@
 */
 void NmBaseView::aboutToChangeOrientation()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -85,6 +93,8 @@
 */
 void NmBaseView::orientationChanged(Qt::Orientation orientation)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(orientation);
 }
 
@@ -94,6 +104,8 @@
 */
 void NmBaseView::handleMouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(event);
 }
 
@@ -103,6 +115,8 @@
 */
 void NmBaseView::handleMousePressEvent(QGraphicsSceneMouseEvent *event)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(event);
 }
 
@@ -113,6 +127,8 @@
 */
 void NmBaseView::handleMouseMoveEvent(QGraphicsSceneMouseEvent *event)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(event);
 }
 
--- a/emailuis/nmailui/src/nmeditorcontent.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmeditorcontent.cpp	Fri May 28 13:56:43 2010 +0300
@@ -20,9 +20,6 @@
 // Layout
 static const char *NMUI_EDITOR_BODY = "BodyTextEdit";
 
-static const double Un = 6.66;
-static const double HeaderAreaMarginsTotal = 3 * Un;
-
 /*!
     Constructor
 */
@@ -38,14 +35,14 @@
     mEditorWidget(NULL),
     mBackgroundScrollArea((NmBaseViewScrollArea*)parent)
 {
-    mBackgroundScrollArea->setLongPressEnabled(true);
+    NM_FUNCTION;
 
     // Add header area handling widget into layout
-    mHeaderWidget = new NmEditorHeader(documentLoader, this);
+    mHeaderWidget = new NmEditorHeader(documentLoader);
 
     // Get pointer to body text area handling widget
     mEditorWidget = qobject_cast<NmEditorTextEdit *>(documentLoader->findWidget(NMUI_EDITOR_BODY));
-
+    
     // Set body editor to use NmEditorTextDocument
     NmEditorTextDocument *textDocument = new NmEditorTextDocument(manager);
     mEditorWidget->setDocument(textDocument); 
@@ -68,6 +65,8 @@
 */
 NmEditorContent::~NmEditorContent()
 {
+    NM_FUNCTION;
+    
    delete mHeaderWidget;
 }
 
@@ -76,34 +75,16 @@
     present, reply header is generated and set to editor. Reply
     envelope ownership is not transferred here.
  */
-void NmEditorContent::setMessageData(const NmMessage &message,
-                                     NmMessageEnvelope *replyMsgEnvelope)
+void NmEditorContent::setMessageData(const NmMessage &originalMessage)
 {
-    // Check which part is present. Html or plain text part
-    const NmMessagePart *htmlPart = message.htmlBodyPart();
-    const NmMessagePart *plainPart = message.plainTextBodyPart();
-
-    QList<NmMessagePart*> parts;
-    message.attachmentList(parts);
-    NmMessagePart* attachmentHtml = NULL;
+    NM_FUNCTION;
+    // Check which part is present. Html or plain text part. We use the original message parts.
+    const NmMessagePart *htmlPart = originalMessage.htmlBodyPart();
 
-    foreach(NmMessagePart* part, parts) {
-        if (part->contentDescription().startsWith( NmContentDescrAttachmentHtml )) {
-                attachmentHtml = part;
-            }
-        }
-    
-    if (htmlPart) {	    
-        // Html part was present, set it to HbTextEdit
-        // This will generate contentsChanged() event which is used to
-        // set new height for the editor widget and content.
-        if(attachmentHtml){
-            QString htmlText = htmlPart->textContent() + attachmentHtml->textContent();
-            emit setHtml(htmlText);
-        } 
-        else{
-            emit setHtml(htmlPart->textContent());    
-        }
+    const NmMessagePart *plainPart = originalMessage.plainTextBodyPart();
+
+    if (htmlPart) {
+        emit setHtml(htmlPart->textContent());    
         mMessageBodyType = HTMLText;
     }
     else if (plainPart) {
@@ -112,11 +93,11 @@
         mMessageBodyType = PlainText;
     }
     
-    // Original message text to editor content fiel
-    if (replyMsgEnvelope && mEditorWidget) {          
+    // We create the "reply" header (also for forward message)
+    if (mEditorWidget) {          
         QTextCursor cursor = mEditorWidget->textCursor();
         cursor.setPosition(0);
-        cursor.insertHtml(NmUtilities::createReplyHeader(*replyMsgEnvelope));
+        cursor.insertHtml(NmUtilities::createReplyHeader(originalMessage.envelope()));
     }
 }  
 
@@ -126,15 +107,16 @@
  */
 void NmEditorContent::setEditorContentHeight()
 {
+    NM_FUNCTION;
+    
 	const QSizeF reso = HbDeviceProfile::current().logicalSize();
-    qreal containerHeight =
-        mEditorWidget->contentHeight() + mHeaderWidget->headerHeight() + HeaderAreaMarginsTotal;
+    qreal containerHeight = mEditorWidget->contentHeight() + mHeaderWidget->headerHeight();
     if (containerHeight < reso.height()) {
         //Currently content height is too long because Chrome hiding is not supported.
         //Fix this when Chrome works.
         containerHeight = reso.height();
         qreal bodyContentHeight =
-            reso.height() - mHeaderWidget->headerHeight() - HeaderAreaMarginsTotal;
+            reso.height() - mHeaderWidget->headerHeight();
         mEditorWidget->setPreferredHeight(bodyContentHeight);
         mEditorWidget->setMaximumHeight(bodyContentHeight);
     }
@@ -148,6 +130,8 @@
  */
 void NmEditorContent::createConnections()
 {
+    NM_FUNCTION;
+    
     // Body edit widget is also interested about bg scroll position change
     connect(mBackgroundScrollArea, SIGNAL(scrollPositionChanged(QPointF)),
             mEditorWidget, SLOT(updateScrollPosition(QPointF)));
@@ -167,6 +151,8 @@
  */
 NmEditorTextEdit* NmEditorContent::editor() const
 {
+    NM_FUNCTION;
+    
     return mEditorWidget;
 }
 
@@ -175,6 +161,8 @@
  */
 NmEditorHeader* NmEditorContent::header() const
 {
+    NM_FUNCTION;
+    
     return mHeaderWidget;
 }
 
--- a/emailuis/nmailui/src/nmeditorheader.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmeditorheader.cpp	Fri May 28 13:56:43 2010 +0300
@@ -11,35 +11,36 @@
 *
 * Contributors:
 *
-* Description: Message editor header widget
+* Description: Message editor header container class. Collects the header widgets.
 *
 */
 
 #include "nmuiheaders.h"
 
 // Layout
-static const char *NMUI_EDITOR_RECIPIENT_FIELDS = "RecipientFields";
-static const char *NMUI_EDITOR_SUBJECT_LABEL = "EditorHeaderSubjectLabel";
-static const char *NMUI_EDITOR_SUBJECT_EDIT = "EditorHeaderSubjectEdit";
-static const char *NMUI_EDITOR_PRIORITY_ICON = "labelPriorityIcon";
+// These match to the defintions in nmeditorview.docml
+static const char *NMUI_EDITOR_CONTAINER = "containerContents";
+static const char *NMUI_EDITOR_SUBJECT_FIELD = "editorSubjectField";
+static const char *NMUI_EDITOR_SUBJECT_EDIT = "editorSubjectEdit";
+static const char *NMUI_EDITOR_CC_FIELD = "editorCcField";
+static const char *NMUI_EDITOR_BCC_FIELD = "editorBccField";
+static const char *NMUI_EDITOR_PRIORITY_ICON = "editPriorityIcon";
+static const char *NMUI_EDITOR_FOLLOWUP_ICON = "editFollowUpIcon";
 static const char *NMUI_EDITOR_ATTACHMENT_LIST = "attachmentListWidget";
+static const char *NMUI_EDITOR_PREFIX_TO = "editorTo";
+static const char *NMUI_EDITOR_PREFIX_CC = "editorCc";
+static const char *NMUI_EDITOR_PREFIX_BCC = "editorBcc";
 
-// Following constants are removed when header fields will offer these
-static const double Un = 6.66;
-static const double FieldHeightWhenSecondaryFont = 5 * Un;
-static const double Margin = 2 * Un;
-static const double IconFieldWidth = 5 * Un;
+static const int MaxRows = 10000;
 
 static const int nmLayoutSystemWaitTimer = 10;
 
 /*!
     Constructor
 */
-NmEditorHeader::NmEditorHeader(HbDocumentLoader *documentLoader, QGraphicsItem *parent) :
-    HbWidget(parent),
+NmEditorHeader::NmEditorHeader(HbDocumentLoader *documentLoader) :
     mDocumentLoader(documentLoader),
     mHeaderHeight(0),
-    mSubjectLabel(NULL),
     mIconVisible(false),
     mSubjectEdit(NULL),
     mRecipientFieldsEmpty(true),
@@ -49,8 +50,9 @@
     mBccField(NULL),
     mCcBccFieldVisible(false)
 {
+    NM_FUNCTION;
+    
     loadWidgets();
-    rescaleHeader();
     createConnections();
 }
 
@@ -59,10 +61,7 @@
 */
 NmEditorHeader::~NmEditorHeader()
 {
-    if (mAttachmentList) {
-        mAttachmentList->clearList();
-        delete mAttachmentList;
-    }
+    NM_FUNCTION;
 }
 
 /*!
@@ -70,39 +69,58 @@
 */
 void NmEditorHeader::loadWidgets()
 {
-	// Add "To:", "CC:" and "BCC:" fields
-	mHeader = qobject_cast<HbWidget *>
-	        (mDocumentLoader->findWidget(NMUI_EDITOR_RECIPIENT_FIELDS));
+    NM_FUNCTION;
+	
+    // Load widgets from docml and construct handlers. Those widgets that are not shown by default
+    // are hidden and removed from the layout at this phase.    
+    HbWidget *contentWidget =
+        qobject_cast<HbWidget *>(mDocumentLoader->findWidget(NMUI_EDITOR_CONTAINER));
+    mLayout = static_cast<QGraphicsLinearLayout *>(contentWidget->layout());
 
-	mLayout = new QGraphicsLinearLayout(Qt::Vertical);
-	mLayout->setContentsMargins(0,Un,0,0);
-
-	mToField = new NmRecipientField(QString("To:"), mHeader);
-	mCcField = new NmRecipientField(QString("Cc:"), mHeader);
-	mBccField = new NmRecipientField(QString("Bcc:"), mHeader);
+    // base class QObject takes the deleting responsibility
+    mToField = new NmRecipientField(this, *mDocumentLoader, NMUI_EDITOR_PREFIX_TO);
+    mCcField = new NmRecipientField(this, *mDocumentLoader, NMUI_EDITOR_PREFIX_CC);
+    mBccField = new NmRecipientField(this, *mDocumentLoader, NMUI_EDITOR_PREFIX_BCC);
 
-    // Only 'To:' field is visible at startup
-	mLayout->addItem(mToField);
-	mCcField->hide();
-	mBccField->hide();
+    // Cc field is not shown by default. It needs to be both hidden and removed from the layout.
+	mCcWidget = qobject_cast<HbWidget *>(mDocumentLoader->findWidget(NMUI_EDITOR_CC_FIELD));
+    mCcWidget->hide();
+    mLayout->removeItem(mCcWidget);
+    
+    // Bcc field is not shown by default. It needs to be both hidden and removed from the layout.
+    mBccWidget = qobject_cast<HbWidget *>(mDocumentLoader->findWidget(NMUI_EDITOR_BCC_FIELD));
+    mBccWidget->hide();
+    mLayout->removeItem(mBccWidget);
 
-	mHeader->setLayout(mLayout);
-	mHeader->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::MinimumExpanding);
-
+    mSubjectWidget =
+        qobject_cast<HbWidget *>(mDocumentLoader->findWidget(NMUI_EDITOR_SUBJECT_FIELD));
+    mSubjectLayout = static_cast<QGraphicsLinearLayout *>(mSubjectWidget->layout());
+    
     // Add Subject: field
-    mSubjectLabel = qobject_cast<HbLabel *>
-        (mDocumentLoader->findWidget(NMUI_EDITOR_SUBJECT_LABEL));
     mSubjectEdit = qobject_cast<NmHtmlLineEdit *>
         (mDocumentLoader->findWidget(NMUI_EDITOR_SUBJECT_EDIT));
+    mSubjectEdit->setMaxRows(MaxRows);
 
     // Add attachment list
     NmAttachmentListWidget *attachmentList = qobject_cast<NmAttachmentListWidget *>
         (mDocumentLoader->findWidget(NMUI_EDITOR_ATTACHMENT_LIST));
     // Create attachment list handling object
     mAttachmentList = new NmAttachmentList(*attachmentList);
+    mAttachmentList->setParent(this); // ownership changes
+    attachmentList->hide();
+    mLayout->removeItem(attachmentList);
 
-    mPriorityIconLabel = qobject_cast<HbLabel *>
+    // Add priority icon
+    mPriorityIcon = qobject_cast<HbLabel *>
         (mDocumentLoader->findWidget(NMUI_EDITOR_PRIORITY_ICON));
+    mPriorityIcon->hide();
+    mSubjectLayout->removeItem(mPriorityIcon);
+
+    // follow-up icon is not yet supported
+    HbLabel *followUpIcon = qobject_cast<HbLabel *>
+        (mDocumentLoader->findWidget(NMUI_EDITOR_FOLLOWUP_ICON));
+    followUpIcon->hide();
+    mSubjectLayout->removeItem(followUpIcon);
 }
 
 /*!
@@ -110,6 +128,8 @@
 */
 void NmEditorHeader::createConnections()
 {
+    NM_FUNCTION;
+    
     // Signals for checking if the recipient fields have text.
     connect(mToField, SIGNAL(textChanged(const QString &)),
             this, SLOT(editorContentChanged()));
@@ -120,12 +140,12 @@
 
     // Signals for handling the recipient field expanding
     connect(mToField, SIGNAL(textChanged(const QString &)),
-            this, SLOT(fixHeaderFieldHeights()));
+            this, SLOT(sendDelayedHeaderHeightChanged()));
     connect(mCcField, SIGNAL(textChanged(const QString &)),
-            this, SLOT(fixHeaderFieldHeights()));
+            this, SLOT(sendDelayedHeaderHeightChanged()));
     connect(mBccField, SIGNAL(textChanged(const QString &)),
-            this, SLOT(fixHeaderFieldHeights()));
-    connect(mSubjectEdit, SIGNAL(contentsChanged()), this, SLOT(fixHeaderFieldHeights()));
+            this, SLOT(sendDelayedHeaderHeightChanged()));
+    connect(mSubjectEdit, SIGNAL(contentsChanged()), this, SLOT(sendDelayedHeaderHeightChanged()));
 
     // Signals for handling the attachment list
     connect(&mAttachmentList->listWidget(), SIGNAL(itemActivated(int)),
@@ -144,96 +164,66 @@
 	if ( mCcBccFieldVisible != isVisible ) {
 		mCcBccFieldVisible = isVisible;
 		if (mCcBccFieldVisible) {
-			mCcField->show();
-			mBccField->show();
-			mLayout->addItem(mCcField);
-			mLayout->addItem(mBccField);
+            mLayout->insertItem(1, mBccWidget);
+			mLayout->insertItem(1, mCcWidget);
+			mCcWidget->show();
+            mBccWidget->show();
 		}
 		else {
-			mCcField->hide();
-			mBccField->hide();
-			mLayout->removeItem(mCcField);
-			mLayout->removeItem(mBccField);
+            mCcWidget->hide();
+            mBccWidget->hide();
+			mLayout->removeItem(mCcWidget);
+			mLayout->removeItem(mBccWidget);
 		}
 
-		QTimer::singleShot(nmLayoutSystemWaitTimer*2, this, SLOT(fixHeaderFieldHeights()));
+		QTimer::singleShot(
+		    nmLayoutSystemWaitTimer * 2, this, SLOT(sendDelayedHeaderHeightChanged()));
 	}
 }
 
 /*!
-    Function can be used to rescale the header area.
-*/
-void NmEditorHeader::rescaleHeader()
-{
-}
-
-/*!
     Return the height of the whole header widget.
-    (Should find beter way to get the height of the header area.)
  */
-int NmEditorHeader::headerHeight() const
+qreal NmEditorHeader::headerHeight() const
 {
-    qreal toHeight = mToField->height();
-    qreal ccHeight = 0;
-    qreal bccHeight = 0;
+    NM_FUNCTION;
+
+    // get the layout's vertical spacing
+    qreal spacing = 0;
+    HbStyle().parameter("hb-param-margin-gene-middle-vertical", spacing);
+
+    // calculate the height
+    qreal height = 0;
+    
+    height += mToField->height(); // returns widget's geometry height
+    height += spacing;
+    
     if (mCcBccFieldVisible) {
-		ccHeight = mCcField->height();
-		bccHeight = mBccField->height();
-    }
-    qreal subjectHeight = mSubjectEdit->geometry().height() + Margin;
-
-    // When called first time, height is wrongly 'Margin'
-    if (toHeight == Margin) {
-        toHeight = FieldHeightWhenSecondaryFont;
-    	ccHeight = FieldHeightWhenSecondaryFont;
-    	bccHeight = FieldHeightWhenSecondaryFont;
-        subjectHeight = FieldHeightWhenSecondaryFont;
+        height += mCcField->height(); // returns widget's geometry height
+        height += spacing;
+        
+        height += mBccField->height(); // returns widget's geometry height
+        height += spacing;
     }
 
-    qreal attHeight = 0;
-    if (mAttachmentList && mAttachmentList->count() > 0) {
-        attHeight = mAttachmentList->listWidget().geometry().height();
+    height += mSubjectWidget->geometry().height();
+    height += spacing;
+
+    if (mAttachmentList->listWidget().isVisible()) {
+        height += mAttachmentList->listWidget().geometry().height();
+        height += spacing;
     }
 
-    return (int)(toHeight + ccHeight + bccHeight + subjectHeight + attHeight);
+    return height;
 }
 
 /*!
     Send signal to inform that one of the recipient fields height has been changed.
  */
-void NmEditorHeader::fixHeaderFieldHeights()
+void NmEditorHeader::sendDelayedHeaderHeightChanged()
 {
-    // Adjust height of recipient fields 
-	adjustFieldSizeValues(mToField->editor(), mToField->editor()->document()->size().height());
-	adjustFieldSizeValues(mCcField->editor(), mCcField->editor()->document()->size().height());
-	adjustFieldSizeValues(mBccField->editor(), mBccField->editor()->document()->size().height());
-
-    // Adjust height of the subject field 
-	if (mSubjectEdit->document()->size().height() > FieldHeightWhenSecondaryFont) {
-	mSubjectEdit->setPreferredHeight(
-			mSubjectEdit->document()->size().height() + Margin );
-	}
-	else {
-		mSubjectEdit->setPreferredHeight( FieldHeightWhenSecondaryFont );
-	}
-
-	QTimer::singleShot(nmLayoutSystemWaitTimer*5, this, SLOT(sendHeaderHeightChanged()));	
-}
-
-
-/*!
-    Private routine to adjust heights of the recipient fields
- */
-void NmEditorHeader::adjustFieldSizeValues( NmRecipientLineEdit *widget, qreal height )
-{
-	if (height > FieldHeightWhenSecondaryFont) {
-		widget->setMaximumHeight( height + Margin );
-		widget->setMinimumHeight( height + Margin );
-	}
-	else {
-		widget->setMaximumHeight( FieldHeightWhenSecondaryFont );	
-		widget->setMinimumHeight( FieldHeightWhenSecondaryFont );	
-	}	
+    NM_FUNCTION;
+	QTimer::singleShot(nmLayoutSystemWaitTimer * 5, this, SLOT(sendHeaderHeightChanged()));
 }
 
 /*!
@@ -241,7 +231,7 @@
  */
 void NmEditorHeader::sendHeaderHeightChanged()
 {
-    int hHeight = headerHeight();
+    qreal hHeight = headerHeight();
     if (mHeaderHeight != hHeight) {
         mHeaderHeight = hHeight;
         emit headerHeightChanged(mHeaderHeight);
@@ -253,6 +243,8 @@
  */
 NmRecipientLineEdit* NmEditorHeader::toEdit() const
 {
+    NM_FUNCTION;
+    
     return mToField->editor();
 }
 
@@ -261,6 +253,8 @@
  */
 NmRecipientLineEdit* NmEditorHeader::ccEdit() const
 {
+    NM_FUNCTION;
+    
     return mCcField->editor();
 }
 
@@ -269,6 +263,8 @@
  */
 NmRecipientLineEdit* NmEditorHeader::bccEdit() const
 {
+    NM_FUNCTION;
+    
     return mBccField->editor();
 }
 
@@ -277,6 +273,8 @@
  */
 NmHtmlLineEdit* NmEditorHeader::subjectEdit() const
 {
+    NM_FUNCTION;
+    
     return mSubjectEdit;
 }
 
@@ -286,6 +284,8 @@
 */
 void NmEditorHeader::editorContentChanged()
 {
+    NM_FUNCTION;
+    
     bool recipientsFieldsEmpty = true;
     if (mToField->text().length()) {
         recipientsFieldsEmpty = false;
@@ -307,6 +307,8 @@
  */
 void NmEditorHeader::setPriority(NmMessagePriority priority)
 {
+    NM_FUNCTION;
+    
     switch (priority) {
     case NmMessagePriorityHigh:
         setPriority(NmActionResponseCommandPriorityHigh);
@@ -325,37 +327,41 @@
  */
 void NmEditorHeader::setPriority(NmActionResponseCommand prio)
 {
+    NM_FUNCTION;
+    
     switch(prio) {
     case NmActionResponseCommandPriorityHigh:
         if (!mIconVisible) {
             mIconVisible = true;
-            mPriorityIconLabel->setMaximumWidth(IconFieldWidth);
-            mSubjectEdit->setMaximumWidth(mSubjectEdit->geometry().width() - IconFieldWidth);
+            // icon widget is just after the subject line edit (see docml)
+            mSubjectLayout->insertItem(2, mPriorityIcon);
+            mPriorityIcon->show();
         }
-        mPriorityIconLabel->setIcon(
+        mPriorityIcon->setIcon(
             NmIcons::getIcon(NmIcons::NmIconPriorityHigh));
         break;
     case NmActionResponseCommandPriorityLow:
         if (!mIconVisible) {
             mIconVisible = true;
-            mPriorityIconLabel->setMaximumWidth(IconFieldWidth);
-            mSubjectEdit->setMaximumWidth(mSubjectEdit->geometry().width() - IconFieldWidth);
+            // icon widget is just after the subject line edit (see docml)
+            mSubjectLayout->insertItem(2, mPriorityIcon);
+            mPriorityIcon->show();
         }
-        mPriorityIconLabel->setIcon(
+        mPriorityIcon->setIcon(
             NmIcons::getIcon(NmIcons::NmIconPriorityLow));
         break;
     default:
         if (mIconVisible) {
             mIconVisible = false;
             HbIcon emptyIcon;
-            mPriorityIconLabel->setIcon(emptyIcon);
-            mPriorityIconLabel->setMaximumWidth(0);
-            mSubjectEdit->setMaximumWidth(mSubjectEdit->geometry().width() + IconFieldWidth);
+            mPriorityIcon->setIcon(emptyIcon);
+            mSubjectLayout->removeItem(mPriorityIcon);
+            mPriorityIcon->hide();
         }
         break;
     }
     // Update subject field height because row amount might have been changed.
-    QTimer::singleShot(nmLayoutSystemWaitTimer * 3, this, SLOT(fixHeaderFieldHeights()));
+    QTimer::singleShot(nmLayoutSystemWaitTimer * 3, this, SLOT(sendDelayedHeaderHeightChanged()));
 }
 
 /*!
@@ -364,7 +370,14 @@
 void NmEditorHeader::addAttachment(
     const QString &fileName, const QString &fileSize, const NmId &nmid)
 {
+    NM_FUNCTION;
+    
     mAttachmentList->insertAttachment(fileName, fileSize, nmid);
+    if (!mAttachmentList->listWidget().isVisible()) {
+        // attachment list is inserted just before the body widget (see docml).
+        mLayout->insertItem(mLayout->count() - 1, &mAttachmentList->listWidget());
+        mAttachmentList->listWidget().show();
+    }
     sendHeaderHeightChanged();
 }
 
@@ -374,7 +387,13 @@
  */
 void NmEditorHeader::removeAttachment(const QString &fileName)
 {
+    NM_FUNCTION;
+    
     mAttachmentList->removeAttachment(fileName);
+    if (mAttachmentList->count() == 0) {
+        mAttachmentList->listWidget().hide();
+        mLayout->removeItem(&mAttachmentList->listWidget());
+    }
     sendHeaderHeightChanged();
 }
 
@@ -384,6 +403,8 @@
  */
 void NmEditorHeader::removeAttachment(const NmId &nmid)
 {
+    NM_FUNCTION;
+    
     mAttachmentList->removeAttachment(nmid);
     sendHeaderHeightChanged();
 }
@@ -397,6 +418,8 @@
     const QString &fileSize,
     int result)
 {
+    NM_FUNCTION;
+    
     if (result == NmNoError) {
         // Attachment adding succesful, set message part id and size for attachment
         mAttachmentList->setAttachmentPartId(fileName, msgPartId);
@@ -409,6 +432,8 @@
  */
 void NmEditorHeader::launchAttachment(const NmId &itemId)
 {
+    NM_FUNCTION;
+    
     attachmentActivated(mAttachmentList->indexByNmId(itemId));
 }
 
@@ -417,6 +442,8 @@
  */
 void NmEditorHeader::attachmentActivated(int arrayIndex)
 {
+    NM_FUNCTION;
+    
     QFile launchFile(mAttachmentList->getFullFileNameByIndex(arrayIndex));
     if (NmUtilities::openFile( launchFile ) == NmNotFoundError) {
         NmUtilities::displayErrorNote(hbTrId("txt_mail_dialog_unable_to_open_attachment_file_ty")); 
@@ -428,6 +455,8 @@
  */
 void NmEditorHeader::attachmentLongPressed(int arrayIndex, QPointF point)
 {
+    NM_FUNCTION;
+    
     // Remove selected attachment
     emit attachmentLongPressed(mAttachmentList->nmIdByIndex(arrayIndex), point);
 }
--- a/emailuis/nmailui/src/nmeditortextdocument.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmeditortextdocument.cpp	Fri May 28 13:56:43 2010 +0300
@@ -31,6 +31,8 @@
 NmEditorTextDocument::NmEditorTextDocument(QNetworkAccessManager &manager) :
     mManager(manager)
 {
+    NM_FUNCTION;
+    
     connect(&mManager, SIGNAL(finished(QNetworkReply*)),
         this, SLOT(replyFinished(QNetworkReply*)));
 }
@@ -40,6 +42,8 @@
 */
 NmEditorTextDocument::~NmEditorTextDocument()
 {
+    NM_FUNCTION;
+    
     foreach(QNetworkReply *reply, mReplyList) {
         if(reply) {
             reply->abort();
@@ -53,6 +57,8 @@
 */
 void NmEditorTextDocument::replyFinished(QNetworkReply *reply)
 {
+    NM_FUNCTION;
+    
     if(reply) {
         if(reply->error() == QNetworkReply::NoError) {
             QPixmap image;
@@ -71,6 +77,8 @@
 */
 QVariant NmEditorTextDocument::loadResource(int type, const QUrl &name)
 {
+    NM_FUNCTION;
+    
     QVariant retVal;
     
     if(type == QTextDocument::ImageResource) {    
--- a/emailuis/nmailui/src/nmeditorview.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmeditorview.cpp	Fri May 28 13:56:43 2010 +0300
@@ -38,10 +38,12 @@
     NmApplication &application,
     NmUiStartParam* startParam,
     NmUiEngine &uiEngine,
+    NmAttachmentManager &attaManager,
     QGraphicsItem *parent)
     : NmBaseView(startParam, application, parent),
       mApplication(application),
       mUiEngine(uiEngine),
+      mAttaManager(attaManager),
       mDocumentLoader(NULL),
       mScrollArea(NULL),
       mEditWidget(NULL),
@@ -52,12 +54,14 @@
       mMessageCreationOperation(NULL),
       mAddAttachmentOperation(NULL),
       mRemoveAttachmentOperation(NULL),
-      mCheckOutboxOperation(NULL),
       mWaitDialog(NULL),
       mQueryDialog(NULL),
       mAttachmentPicker(NULL),
-      mCcBccFieldVisible(false)
+      mCcBccFieldVisible(false),
+      mServiceSendingDialog(NULL)
 {
+    NM_FUNCTION;
+    
     mDocumentLoader	= new HbDocumentLoader();
     // Set object name
     setObjectName("NmEditorView");
@@ -72,6 +76,8 @@
 */
 NmEditorView::~NmEditorView()
 {
+    NM_FUNCTION;
+    
     if (mRemoveAttachmentOperation && mRemoveAttachmentOperation->isRunning()) {
         mRemoveAttachmentOperation->cancelOperation();
     }
@@ -81,9 +87,6 @@
     if (mMessageCreationOperation && mMessageCreationOperation->isRunning()) {
         mMessageCreationOperation->cancelOperation();
     }
-    if (mCheckOutboxOperation && mCheckOutboxOperation->isRunning()) {
-        mCheckOutboxOperation->cancelOperation();
-    }
     delete mMessage;
     mWidgetList.clear();
     delete mDocumentLoader;
@@ -97,6 +100,8 @@
     delete mWaitDialog;
     delete mQueryDialog;
     delete mAttachmentPicker;    
+    mAttaManager.clearObserver();
+    mAttaManager.cancelFetch();
 }
 
 /*!
@@ -104,6 +109,8 @@
 */
 void NmEditorView::loadViewLayout()
 {
+    NM_FUNCTION;
+    
     mPrioritySubMenu = NULL;
 
     // Use document loader to load the view
@@ -144,6 +151,8 @@
 */
 void NmEditorView::reloadViewContents(NmUiStartParam* startParam)
 {
+    NM_FUNCTION;
+    
     // Check start parameter validity.
     if (startParam&&startParam->viewId()==NmUiViewMessageEditor) {
         // Delete existing start parameter data
@@ -155,10 +164,10 @@
         // editor with new start parameters.
         // ..
         // Reload editor with new message data
-        setMessageData();
+        fetchMessageIfNeeded();
     }
     else {
-        NMLOG("nmailui: Invalid editor start parameter");
+        NM_ERROR(1,"nmailui: Invalid editor start parameter");
         // Unused start parameter needs to be deleted
         delete startParam;
         startParam = NULL;
@@ -172,6 +181,8 @@
 */
 void NmEditorView::orientationChanged(Qt::Orientation orientation)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(orientation);
     // Adjust content height
     QTimer::singleShot(NmOrientationTimer, this, SLOT(adjustViewDimensions()));
@@ -183,6 +194,8 @@
 */
 void NmEditorView::adjustViewDimensions()
 {
+    NM_FUNCTION;
+    
     if (mScrollAreaContents) {
         const QSize reso = mApplication.screenSize();
         mScrollAreaContents->setMinimumWidth(reso.width());
@@ -195,6 +208,8 @@
 */
 NmUiViewId NmEditorView::nmailViewId() const
 {
+    NM_FUNCTION;
+    
     return NmUiViewMessageEditor;
 }
 
@@ -203,6 +218,8 @@
 */
 HbWidget* NmEditorView::scrollAreaContents()
 {
+    NM_FUNCTION;
+    
     return mScrollAreaContents;
 }
 
@@ -211,6 +228,8 @@
 */
 void NmEditorView::okToExitView()
 {
+    NM_FUNCTION;
+    
     NmEditorHeader *header = mContentWidget->header();
     
     bool okToExit = true;
@@ -218,21 +237,6 @@
     // show the query if the message has not been sent
     if (mMessage && header) {
         // see if editor has any content
-        int toTextLength = 0;
-        if (header->toEdit()) {
-            toTextLength = header->toEdit()->text().length();
-        }
-        
-        int ccTextLength = 0;
-        if (header->ccEdit()) {
-            ccTextLength = header->ccEdit()->text().length();
-        }
-
-        int bccTextLength = 0;
-        if (header->bccEdit()) {
-            bccTextLength = header->bccEdit()->text().length();
-        }
-        
         int subjectLength = 0;
         if (header->subjectEdit()) {
             subjectLength = header->subjectEdit()->text().length();
@@ -241,9 +245,7 @@
         QList<NmMessagePart*> attachmentList;
         mMessage->attachmentList(attachmentList);
                     
-        okToExit = (toTextLength == 0 && ccTextLength == 0 && bccTextLength == 0 && 
-            subjectLength == 0 && mContentWidget->editor()->document()->isEmpty() &&
-            attachmentList.count() < 1);
+        okToExit = (subjectLength == 0 && mContentWidget->editor()->document()->isEmpty());
 
         // content exists, verify exit from user
         if (!okToExit) {
@@ -252,7 +254,8 @@
                 mQueryDialog = 0;
             }
             // Launch query dialog.
-            mQueryDialog = NmUtilities::displayQuestionNote(hbTrId("txt_mail_dialog_delete_message"),
+            mQueryDialog = 
+                NmUtilities::displayQuestionNote(hbTrId("txt_mail_dialog_save_message_to_drafts"),
                                                             this,
                                                             SLOT(okToExitQuery(HbAction*)));
         }
@@ -271,12 +274,31 @@
 */
 void NmEditorView::okToExitQuery(HbAction* action)
 {
-    // Check that 'Yes' button was pressed. Use loc string 'txt_mail_dialog_yes' when possible.
-    if (action->text() == "Yes") {
-        QMetaObject::invokeMethod(&mApplication,
-                                  "popView",
-                                  Qt::QueuedConnection);
-    }
+    NM_FUNCTION;
+    
+    HbMessageBox *dlg = static_cast<HbMessageBox*>(sender());
+    // The first action in dialogs action list is for the "Yes"-button.
+    if (action == dlg->actions().at(0)) {
+        
+        // Save message to drafts
+        QList<NmOperation *> preliminaryOperations;
+        if (mAddAttachmentOperation && mAddAttachmentOperation->isRunning()) {
+            preliminaryOperations.append(mAddAttachmentOperation);
+        }
+        if (mRemoveAttachmentOperation && mRemoveAttachmentOperation->isRunning()) {
+            preliminaryOperations.append(mRemoveAttachmentOperation);
+        }
+        // ownership of mMessage is transferred
+        // NmOperations are automatically deleted after completion
+        mUiEngine.saveDraftMessage(mMessage, preliminaryOperations);
+        mMessage = NULL;
+        preliminaryOperations.clear();
+    }    
+    
+    // Close the view
+    QMetaObject::invokeMethod(&mApplication,
+                              "popView",
+                              Qt::QueuedConnection);
 }
 
 /*!
@@ -286,39 +308,8 @@
 */
 void NmEditorView::aboutToExitView()
 {
-    if (mStartParam && mStartParam->service() && mUiEngine.isSendingMessage()) {
-        // The application was started as a service and is about to close.
-        // A message is still being sent and in order to make sure that the
-        // send operation is not cancelled, let us display a modal wait dialog.
-
-        // When the send operation is completed, the dialog is automatically
-        // closed.
-        connect(&mUiEngine, SIGNAL(sendOperationCompleted()),
-                this, SLOT(handleSendOperationCompleted()));
-
-        // Close and delete the previous wait dialog if one exists.
-        if (mWaitDialog) {
-            mWaitDialog->close();
-            delete mWaitDialog;
-        }
-
-        // Construct and setup the wait dialog.
-        mWaitDialog = new HbProgressDialog();
-        mWaitDialog->setText(hbTrId("txt_mail_shareui_sending_please_wait"));
-
-        if (!XQServiceUtil::isEmbedded()) {
-            // Hide the application.
-            XQServiceUtil::toBackground(true);
-        }
-
-        // Display the wait dialog.
-        mWaitDialog->setModal(false);
-        mWaitDialog->setBackgroundFaded(false);
-        mWaitDialog->show();
-        delete mWaitDialog;
-        mWaitDialog = NULL;
-    }
-
+    NM_FUNCTION;
+    
     // These operations need to be stopped before message can be deleted
     if (mAddAttachmentOperation && mAddAttachmentOperation->isRunning()) {
         mAddAttachmentOperation->cancelOperation();
@@ -329,10 +320,8 @@
 
     if (mMessage) { // this is NULL if sending is started
         // Delete message from drafts
-        NmId mailboxId = mMessage->envelope().mailboxId();
-        NmId folderId = mMessage->envelope().folderId();
-        NmId msgId = mMessage->envelope().messageId();
-        mUiEngine.removeMessage(mailboxId, folderId, msgId);
+        mUiEngine.removeDraftMessage(mMessage);
+        mMessage = NULL;
     }
 }
 
@@ -341,17 +330,8 @@
 */
 void NmEditorView::viewReady()
 {
-    // Connect signals from background scroll area
-    connect(mScrollArea, SIGNAL(handleMousePressEvent(QGraphicsSceneMouseEvent*)),
-            this, SLOT(sendMousePressEventToScroll(QGraphicsSceneMouseEvent*)));
-    connect(mScrollArea, SIGNAL(handleMouseReleaseEvent(QGraphicsSceneMouseEvent*)),
-            this, SLOT(sendMouseReleaseEventToScroll(QGraphicsSceneMouseEvent*)));
-    connect(mScrollArea, SIGNAL(handleMouseMoveEvent(QGraphicsSceneMouseEvent*)),
-            this, SLOT(sendMouseMoveEventToScroll(QGraphicsSceneMouseEvent*)));
-
-    connect(mScrollArea, SIGNAL(handleLongPressGesture(const QPointF &)),
-                this, SLOT(sendLongPressGesture(const QPointF &)));
-
+    NM_FUNCTION;
+    
     // Connect options menu about to show to create options menu function
     // Menu needs to be create "just-in-time"
     connect(menu(), SIGNAL(aboutToShow()), this, SLOT(createOptionsMenu()));
@@ -376,38 +356,96 @@
             this, SLOT(attachmentLongPressed(NmId, QPointF)));
     
     // Set message data
-    setMessageData();
+    fetchMessageIfNeeded();
 }
 
 /*!
-    Find message data based on start parameters.  Method is called
-    when editor is started. If message data is found it means that
-    operation is forward or reply message.
+    If entering editor for forwarding or replying, use attachment manager
+    to check that we have all message parts fetched. Also show dialog for
+    fetching progress.
 */
-void NmEditorView::setMessageData()
+void NmEditorView::fetchMessageIfNeeded()
 {
-    // Check the outbox.
-    if (mCheckOutboxOperation && mCheckOutboxOperation->isRunning()) {
-        mCheckOutboxOperation->cancelOperation();
-        NMLOG("NmEditorView::setMessageData old mCheckOutboxOperation running");
-    }
-	
-    mCheckOutboxOperation = mUiEngine.checkOutbox(mStartParam->mailboxId());
+    NM_FUNCTION;
     
-    if (mCheckOutboxOperation) {
-        connect(mCheckOutboxOperation, SIGNAL(operationCompleted(int)),
-                this, SLOT(outboxChecked(int)));
+    if (mStartParam->editorStartMode() == NmUiEditorForward ||
+        mStartParam->editorStartMode() == NmUiEditorReply ||
+        mStartParam->editorStartMode() == NmUiEditorReplyAll) {
+        
+        fetchProgressDialogShow();
+        mAttaManager.clearObserver();
+        mAttaManager.setObserver(this);
+        mAttaManager.fetchAllMessageParts(
+            mStartParam->mailboxId(),
+            mStartParam->folderId(),
+            mStartParam->messageId());
     }
     else {
-        startMessageCreation( mStartParam->editorStartMode() );
+        startMessageCreation(mStartParam->editorStartMode());
     }
 }
 
 /*!
+    Slot. Called when attachments fetch progress changes.
 */
+void NmEditorView::progressChanged(int value)
+{
+    NM_FUNCTION;
+    
+    Q_UNUSED(value);
+}
+
+/*!
+    Slot. Called when attachments fetch is completed. We can start
+    message creation. 
+*/
+void NmEditorView::fetchCompleted(int result)
+{
+    NM_FUNCTION;
+    
+    if (result == NmNoError) {
+        startMessageCreation(mStartParam->editorStartMode());
+    }
+    else {
+        mWaitDialog->close();
+        QMetaObject::invokeMethod(&mApplication, "popView", Qt::QueuedConnection);
+    }
+}
+
+void NmEditorView::fetchProgressDialogShow()
+{
+    NM_FUNCTION;
+    
+    delete mWaitDialog;
+    mWaitDialog = NULL;
+    // Create new wait dialog and set it to me modal with dimmed background
+    mWaitDialog = new HbProgressDialog(HbProgressDialog::WaitDialog);
+    mWaitDialog->setModal(true);
+    mWaitDialog->setBackgroundFaded(true);
+    connect(mWaitDialog, SIGNAL(cancelled()), this, SLOT(fetchProgressDialogCancelled()));
+    mWaitDialog->setText(hbTrId("txt_mail_dialog_loading_mail_content"));
+    // Display wait dialog
+    mWaitDialog->show();
+}
+
+/*!
+    This is called by mFetchProgressDialog when the note is cancelled
+ */
+void NmEditorView::fetchProgressDialogCancelled()
+{
+    NM_FUNCTION;
+    
+    if (mAttaManager.isFetching()) {
+        mAttaManager.cancelFetch();
+        mAttaManager.clearObserver();
+    }
+    QMetaObject::invokeMethod(&mApplication, "popView", Qt::QueuedConnection);
+}
+
 void NmEditorView::startMessageCreation(NmUiEditorStartMode startMode)
 {
-    NMLOG("NmEditorView::startMessageCreation ");
+    NM_FUNCTION;
+    
     NmId mailboxId = mStartParam->mailboxId();
     NmId folderId = mStartParam->folderId();
     NmId msgId = mStartParam->messageId();
@@ -443,6 +481,8 @@
 */
 void NmEditorView::startSending()
 {
+    NM_FUNCTION;
+    
     // The message contents should be verified
     updateMessageWithEditorContents();
     
@@ -479,19 +519,55 @@
 */
 void NmEditorView::finalizeSending()
 {
+    NM_FUNCTION;
+    
     QList<NmOperation *> preliminaryOperations;
-    preliminaryOperations.append(mAddAttachmentOperation);
-    preliminaryOperations.append(mRemoveAttachmentOperation);
+    if (mAddAttachmentOperation && mAddAttachmentOperation->isRunning()) {
+        preliminaryOperations.append(mAddAttachmentOperation);
+    }
+    if (mRemoveAttachmentOperation && mRemoveAttachmentOperation->isRunning()) {
+        preliminaryOperations.append(mRemoveAttachmentOperation);
+    }
     // ownership of mMessage is transferred
     // NmOperations are automatically deleted after completion
     mUiEngine.sendMessage(mMessage, preliminaryOperations);
     mMessage = NULL;
     preliminaryOperations.clear();
-    // Must use delayed editor view destruction so that query dialog
-    // (which has signaled this) gets time to complete.
-    QMetaObject::invokeMethod(&mApplication,
-                              "popView",
-                              Qt::QueuedConnection);
+
+#ifndef NM_WINS_ENV
+    bool service = XQServiceUtil::isService();
+#else
+    bool service = false;
+#endif
+
+    // If sending is started as a service, progress dialog needs to be shown
+    // so long that sending is finished otherwise we can close pop current view.
+    if (service && mUiEngine.isSendingMessage()) {
+        connect(&mUiEngine, SIGNAL(sendOperationCompleted()),
+            this, SLOT(handleSendOperationCompleted()), Qt::UniqueConnection);
+
+        // Construct and setup the wait dialog.
+        mServiceSendingDialog = new HbProgressDialog(HbProgressDialog::WaitDialog);
+        mServiceSendingDialog->setAttribute(Qt::WA_DeleteOnClose);
+        mServiceSendingDialog->setText(hbTrId("txt_mail_shareui_sending_please_wait"));
+        connect(mServiceSendingDialog, SIGNAL(cancelled()),
+            this, SLOT(sendProgressDialogCancelled()));
+
+#ifndef NM_WINS_ENV
+        if (!XQServiceUtil::isEmbedded()) {
+            // Hide the application.
+            XQServiceUtil::toBackground(true);
+        }
+#endif
+         // Display the wait dialog.
+         mServiceSendingDialog->setModal(true);
+         mServiceSendingDialog->setBackgroundFaded(true);
+         mServiceSendingDialog->show();
+    } else {
+        // Must use delayed editor view destruction so that query dialog
+        // (which has signaled this) gets time to complete.
+        QMetaObject::invokeMethod(&mApplication, "popView", Qt::QueuedConnection);
+    }
 }
 
 /*!
@@ -499,8 +575,11 @@
 */
 void NmEditorView::invalidAddressQuery(HbAction* action)
 {
-    // Check that 'Yes' button was pressed. Use loc string 'txt_mail_dialog_yes' when possible.
-    if (action->text() == "Yes") {
+    NM_FUNCTION;
+
+    HbMessageBox *dlg = static_cast<HbMessageBox*>(sender());
+    // The first action in dialogs action list is for the "Yes"-button.
+    if (action == dlg->actions().at(0)) {
         finalizeSending();
     }
 }
@@ -510,9 +589,16 @@
 */
 void NmEditorView::messageCreated(int result)
 {
+    NM_FUNCTION;
+    
     delete mMessage;
     mMessage = NULL;
 
+    // Close wait dialog here
+    if (mWaitDialog) {
+        mWaitDialog->close();
+    }
+    
     if (result == NmNoError && mMessageCreationOperation) {
         NmUiEditorStartMode startMode = mStartParam->editorStartMode();
         
@@ -531,6 +617,8 @@
 */
 void NmEditorView::updateMessageWithEditorContents()
 {
+    NM_FUNCTION;
+    
     if (mMessage) {
         if (mContentWidget && mContentWidget->editor()) {
             NmMessagePart* bodyPart = mMessage->htmlBodyPart();
@@ -584,6 +672,8 @@
 */
 void NmEditorView::fillEditorWithMessageContents()
 {
+    NM_FUNCTION;
+    
     if (!mMessage || !mContentWidget) {
         return;
     }
@@ -636,14 +726,6 @@
         }
     }
     else {
-        // If a message is taken from the outbox, no subject formatting is done.
-        NmId notUsed(0);
-
-        if (mCheckOutboxOperation &&
-            mCheckOutboxOperation->getMessageId(notUsed)) {
-            editorStartMode = NmUiEditorCreateNew;
-        }
-
         // Construct the subject field.
         mContentWidget->header()->subjectEdit()->setPlainText(
             addSubjectPrefix(editorStartMode, messageEnvelope.subject()));
@@ -653,58 +735,39 @@
     mHeaderWidget->setPriority(messageEnvelope.priority());
     
     // Set the message body.
-    // Fetch plain text part form message store.
-    NmMessagePart *plainPart = mMessage->plainTextBodyPart();
-
-    if (plainPart) {
-        mUiEngine.contentToMessagePart(mMessage->envelope().mailboxId(),
-                                       mMessage->envelope().folderId(),
-                                       mMessage->envelope().messageId(),
-                                       *plainPart);
-    }
-
-    // Fetch html part form message store.
-    NmMessagePart *htmlPart = mMessage->htmlBodyPart();
-
-    if (htmlPart) {
-        mUiEngine.contentToMessagePart(mMessage->envelope().mailboxId(),
-                                       mMessage->envelope().folderId(),
-                                       mMessage->envelope().messageId(),
-                                       *htmlPart);
-    }
-
-    // Fetch attachment.html part form message store if such exists.
-    QList<NmMessagePart*> parts;
-    mMessage->attachmentList(parts);
-    NmMessagePart *attachmentHtml = NULL;
-
-    foreach(NmMessagePart *part, parts) {
-        if (part->contentDescription().startsWith(NmContentDescrAttachmentHtml)) {
-            attachmentHtml = part;
-        }
-    }
-
-    if (attachmentHtml) {
-        mUiEngine.contentToMessagePart(mMessage->envelope().mailboxId(),
-                                       mMessage->envelope().folderId(),
-                                       mMessage->envelope().messageId(),
-                                       *attachmentHtml);
-    }
-
-    // Set content data
     if (editorStartMode==NmUiEditorReply||
         editorStartMode==NmUiEditorReplyAll||
         editorStartMode==NmUiEditorForward){
-        // Pass envelope ptr only when needed for reaply header creation
+
+        // Use the body from the original message.
         NmMessage *originalMessage = mUiEngine.message(mStartParam->mailboxId(), 
                                                        mStartParam->folderId(), 
                                                        mStartParam->messageId());
-        mContentWidget->setMessageData(*mMessage, &originalMessage->envelope()); 
+
+        if (originalMessage) {
+            NmMessagePart *plainPart = originalMessage->plainTextBodyPart();
+
+            if (plainPart) {
+                mUiEngine.contentToMessagePart(originalMessage->envelope().mailboxId(),
+                                               originalMessage->envelope().folderId(),
+                                               originalMessage->envelope().messageId(),
+                                               *plainPart);
+            }
+
+            NmMessagePart *htmlPart = originalMessage->htmlBodyPart();
+
+            if (htmlPart) {
+                mUiEngine.contentToMessagePart(originalMessage->envelope().mailboxId(),
+                                               originalMessage->envelope().folderId(),
+                                               originalMessage->envelope().messageId(),
+                                               *htmlPart);
+            }
+
+            mContentWidget->setMessageData(*originalMessage);
+        }
+
         delete originalMessage;
-    }
-    else{
-        // Reply header not needed, do not pass envelope ptr
-        mContentWidget->setMessageData(*mMessage);     
+        originalMessage = NULL;
     }
     
     // Get list of attachments from the message and set those into UI attachment list
@@ -739,6 +802,8 @@
 */
 void NmEditorView::createToolBar()
 {
+    NM_FUNCTION;
+    
     HbToolBar *tb = toolBar();
     NmUiExtensionManager &extMngr = mApplication.extManager();
     if (tb && &extMngr && mStartParam) {
@@ -771,10 +836,21 @@
                     connect(actionMusic, SIGNAL(triggered()), mAttachmentPicker, SLOT(fetchAudio()));
                     
                     HbAction* actionVideo = 
-                        extension->addAction(hbTrId("txt_mail_list_video"), extension, SLOT(close()));                
+                        extension->addAction(hbTrId("txt_mail_list_video"), extension, SLOT(close()));
+                    connect(actionVideo, SIGNAL(triggered()), mAttachmentPicker, SLOT(fetchVideo()));
+                    
                     HbAction* actionOther = 
                         extension->addAction(hbTrId("txt_mail_list_other"), extension, SLOT(close()));
+                    connect(actionOther, SIGNAL(triggered()), mAttachmentPicker, SLOT(fetchOther()));
+                    
+                    HbAction* actionCameraStill = 
+                       extension->addAction(hbTrId("txt_mail_list_new_photo"), extension, SLOT(close()));
+                    connect(actionCameraStill, SIGNAL(triggered()), mAttachmentPicker, SLOT(fetchCameraStill()));
             
+                    HbAction* actionCameraVideo = 
+                        extension->addAction(hbTrId("txt_mail_list_new_video"), extension, SLOT(close()));
+                    connect(actionCameraVideo, SIGNAL(triggered()), mAttachmentPicker, SLOT(fetchCameraVideo()));
+                                        
                     list[i]->setToolBarExtension(extension);
                 }
             }            
@@ -788,6 +864,8 @@
 */
 void NmEditorView::createOptionsMenu()
 {
+    NM_FUNCTION;
+    
     menu()->clearActions();
 
 	// Create CC/BCC options menu object
@@ -822,6 +900,8 @@
 */
 void NmEditorView::switchCcBccFieldVisibility()
 {
+    NM_FUNCTION;
+    
     if (mCcBccFieldVisible) {
     	mCcBccFieldVisible = false;
     }
@@ -839,6 +919,8 @@
 */
 void NmEditorView::handleActionCommand(NmActionResponse &actionResponse)
 {
+    NM_FUNCTION;
+    
     NmActionResponseCommand responseCommand = actionResponse.responseCommand();
     
     // Handle options menu
@@ -850,8 +932,7 @@
         case NmActionResponseCommandSendMail: {
             // Just in case send mail would be somehow accessible during message creation or
             // outobox checking
-            if ((!mCheckOutboxOperation || !mCheckOutboxOperation->isRunning()) 
-                && (!mMessageCreationOperation || !mMessageCreationOperation->isRunning())) {
+            if (!mMessageCreationOperation || !mMessageCreationOperation->isRunning()) {
                 startSending();
             }
             break;
@@ -877,72 +958,30 @@
 }
 
 /*!
-    This function converts background scroll area coordinate point into
-    body text editor coordinate point.
+    Slot. Cancelled sending progress dialog.
 */
-QPointF NmEditorView::viewCoordinateToEditCoordinate(QPointF orgPoint)
-{
-    QPointF contentWidgetPos = mScrollAreaContents->pos();
-    qreal y = orgPoint.y() - mHeaderWidget->headerHeight();
-    y -= contentWidgetPos.y();
-    qreal x = orgPoint.x() - contentWidgetPos.x();
-    return QPointF(x, y);
-}
-
-/*!
-   Send mouse press event to body edit widget
-*/
-void NmEditorView::sendMousePressEventToScroll(QGraphicsSceneMouseEvent *event)
-{
-    if (event && mEditWidget && mHeaderWidget) {
-        event->setPos(viewCoordinateToEditCoordinate(event->pos()));
-        event->setAccepted(true);
-        mEditWidget->sendMousePressEvent(event);
-    }
-}
-
-/*!
-   Send mouse release event to body edit widget
-*/
-void NmEditorView::sendMouseReleaseEventToScroll(QGraphicsSceneMouseEvent *event)
+void NmEditorView::sendProgressDialogCancelled()
 {
-    if (event&& mEditWidget && mHeaderWidget) {
-        event->setPos(viewCoordinateToEditCoordinate(event->pos()));
-        event->setAccepted(true);
-        mEditWidget->sendMouseReleaseEvent(event);
+    // Needs to be called before closing the application otherwise nmail panics
+    // in destruction.
+    QGraphicsScene *graphicsScene = scene();
+    if (graphicsScene) {
+        graphicsScene->clearFocus();
     }
-}
 
-/*!
-   Send mouse move event to body edit widget
-*/
-void NmEditorView::sendMouseMoveEventToScroll(QGraphicsSceneMouseEvent *event)
-{
-    if (event&& mEditWidget && mHeaderWidget) {
-        event->setPos(viewCoordinateToEditCoordinate(event->pos()));
-        event->setAccepted(true);
-        mEditWidget->sendMouseMoveEvent(event);
-    }
+    // Must use delayed editor view destruction so that dialog
+    // gets time to complete, closes also nmail.
+    QMetaObject::invokeMethod(&mApplication, "popView", Qt::QueuedConnection);
 }
 
-void NmEditorView::sendLongPressGesture(const QPointF &point)
-{
-    if (mEditWidget && mHeaderWidget) {
-        QPointF scenePos = mEditWidget->scenePos();
-        QPointF newPoint = QPointF(point.x()-scenePos.x(), point.y()-scenePos.y());
-        if(mEditWidget->contains(newPoint)) {
-            mEditWidget->sendLongPressEvent(point);
-        }
-    }
-}
-
-
 /*!
    Sets all toolbar and VKB buttons dimmed state. All actions that have the
    availability condition NmSendable set, will be enabled/disabled.
 */
 void NmEditorView::setButtonsDimming(bool enabled)
 {
+    NM_FUNCTION;
+    
     // Set the toolbar action states
     HbToolBar *tb = toolBar();
     if (tb) {
@@ -976,6 +1015,8 @@
 */
 void NmEditorView::initializeVKB()
 {
+    NM_FUNCTION;
+    
     NmActionRequest request(this, NmActionVKB, NmActionContextViewEditor,
          NmActionContextDataNone, mStartParam->mailboxId(), mStartParam->folderId() );
     NmUiExtensionManager &extMngr = mApplication.extManager();
@@ -1013,6 +1054,8 @@
 */
 void NmEditorView::setMailboxName()
 {
+    NM_FUNCTION;
+    
     if (mStartParam){
         NmMailboxMetaData *meta = mUiEngine.mailboxById(mStartParam->mailboxId());
         if (meta){
@@ -1027,6 +1070,8 @@
 */
 QString NmEditorView::addSubjectPrefix( NmUiEditorStartMode startMode, const QString &subject )
 {
+    NM_FUNCTION;
+    
     QString newSubject(subject.trimmed());
     
     if (startMode == NmUiEditorReply || startMode == NmUiEditorReplyAll || 
@@ -1072,6 +1117,8 @@
 */
 void NmEditorView::onAttachmentReqCompleted(const QVariant &value)
 {
+    NM_FUNCTION;
+    
     //temporary fix for music picker back button:
     //it shouldn't emit requestOk signal when nothing is selected
 	if (value.canConvert<QStringList>()) {
@@ -1082,6 +1129,17 @@
     }
 }
 
+/*!
+    This slot is called when 'attachment picker' request has been unsuccesfull
+    Parameter 'errorCode' is the error code returned by the service
+    Parameter 'errorMessage' is the error message returned by the service
+*/
+void NmEditorView::onAttachmentsFetchError(int errorCode, const QString& errorMessage)
+{
+    NM_FUNCTION;
+    NM_COMMENT(QString("Error code: %1").arg(errorCode));
+    NM_COMMENT(QString("Error message: %1").arg(errorMessage));
+}
 
 /*!
     Closes the wait dialog if one exists.
@@ -1092,24 +1150,36 @@
 */
 void NmEditorView::handleSendOperationCompleted()
 {
-    if (mWaitDialog) {
-        mWaitDialog->close();
+    NM_FUNCTION;
+
+    if (mServiceSendingDialog) {
+        mServiceSendingDialog->close();
     }
+
+    // Needs to be called before closing the application otherwise nmail panics
+    // in destruction.
+    QGraphicsScene *graphicsScene = scene();
+    if (graphicsScene) {
+        graphicsScene->clearFocus();
+    }
+
+    // Must use delayed editor view destruction so that dialog
+    // gets time to complete, closes also nmail.
+    QMetaObject::invokeMethod(&mApplication, "popView", Qt::QueuedConnection);
 }
 
-
 /*!
     Add list of attachments
 */
 void NmEditorView::addAttachments(const QStringList& fileNames) 
 {
-    NMLOG("NmEditorView::addAttachments");
-
+    NM_FUNCTION;
+    
     // Add attachment name into UI
     foreach (QString fileName, fileNames)  {
         // At this phase attachment size and nmid are not known
         mHeaderWidget->addAttachment(fileName, QString("0"), NmId(0));
-        NMLOG(fileName);
+        NM_COMMENT(fileName);
     }
     //  Cancel previous operation if it's not running.
     if (mAddAttachmentOperation) {
@@ -1143,6 +1213,8 @@
 */
 void NmEditorView::attachmentLongPressed(NmId attachmentPartId, QPointF point)
 {
+    NM_FUNCTION;
+    
     // Store id of the attachment to be removed into member.
     // It is used by removeAttachmentTriggered later if 'remove' selected.
     mSelectedAttachment = attachmentPartId;
@@ -1175,6 +1247,8 @@
 */
 void NmEditorView::oneAttachmentAdded(const QString &fileName, const NmId &msgPartId, int result)
 {
+    NM_FUNCTION;
+    
     if (result == NmNoError && mMessage) {
         // Need to get the message again because new attachment part has been added.
         NmId mailboxId = mMessage->envelope().mailboxId();
@@ -1205,7 +1279,7 @@
     }
     else {
         // Attachment adding failed. Show an error note and remove from UI attachment list.
-        NMLOG(QString("nmailui: attachment adding into message failed: %1").arg(fileName));
+        NM_ERROR(1,QString("nmailui: attachment adding into message failed: %1").arg(fileName));
         mHeaderWidget->removeAttachment(fileName);
     }
 }
@@ -1216,6 +1290,8 @@
 */
 void NmEditorView::allAttachmentsAdded(int result)
 {
+    NM_FUNCTION;
+    
     enableToolBarAttach(true);
     if (result != NmNoError) {
         NmUtilities::displayWarningNote(hbTrId("txt_mail_dialog_unable_to_add_attachment"));
@@ -1223,48 +1299,12 @@
 }
 
 /*!
-    This is signalled by mCheckOutboxOperation when the operation is complete.
-*/
-void NmEditorView::outboxChecked(int result)
-{
-    bool messageInOutbox = false;
-    
-    if (result == NmNoError && mCheckOutboxOperation) {
-
-        NmId messageId;
-        messageInOutbox = mCheckOutboxOperation->getMessageId(messageId);
-        
-        if (messageInOutbox) {
-            delete mMessage;
-            mMessage = NULL;
-
-            mMessage = mUiEngine.message(
-                mStartParam->mailboxId(), 
-                mUiEngine.standardFolderId(
-                    mStartParam->mailboxId(), NmFolderOutbox), 
-                messageId);
-            
-            fillEditorWithMessageContents();
-            
-            if (mMessage) {
-                NmUtilities::displayWarningNote(
-                    hbTrId("txt_mail_dialog_sending failed").arg(
-                        NmUtilities::truncate(
-                            mMessage->envelope().subject(), 20)));
-            }
-        }
-    }
-
-    if (!messageInOutbox) {
-        startMessageCreation(mStartParam->editorStartMode());
-    }
-}
-
-/*!
    Sets priority for the message object that is being edited 
 */
 void NmEditorView::setPriority(NmActionResponseCommand priority)
 {
+    NM_FUNCTION;
+    
     mHeaderWidget->setPriority(priority);
 
     if (mMessage) {
@@ -1290,6 +1330,8 @@
 */
 QString NmEditorView::addressListToString(const QList<NmAddress*> &list) const
 {
+    NM_FUNCTION;
+    
     QString addressesString;
     QList<NmAddress*>::const_iterator i = list.constBegin();
     
@@ -1316,6 +1358,8 @@
 */
 QString NmEditorView::addressListToString(const QList<NmAddress> &list) const
 {
+    NM_FUNCTION;
+    
     QString addressesString;
     QList<NmAddress>::const_iterator i = list.constBegin();
     
@@ -1337,6 +1381,8 @@
 */
 void NmEditorView::removeAttachmentTriggered()
 {
+    NM_FUNCTION;
+    
     // Cancel will delete previous operation
     if (mRemoveAttachmentOperation) {
         if (!mRemoveAttachmentOperation->isRunning()) {
@@ -1362,6 +1408,8 @@
  */
 void NmEditorView::attachmentRemoved(int result)
 {
+    NM_FUNCTION;
+    
     // It is not desided yet what to do if operation fails
     Q_UNUSED(result);
     
@@ -1383,6 +1431,8 @@
 */
 void NmEditorView::openAttachmentTriggered()
 {
+    NM_FUNCTION;
+    
     mHeaderWidget->launchAttachment(mSelectedAttachment);
 }
 
@@ -1391,6 +1441,8 @@
 */
 void NmEditorView::enableToolBarAttach(bool enable)
 {
+    NM_FUNCTION;
+    
     HbToolBar *tb = toolBar();
     if (tb) {
         QList<QAction *> toolbarList = tb->actions();
--- a/emailuis/nmailui/src/nmmailboxlistview.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmmailboxlistview.cpp	Fri May 28 13:56:43 2010 +0300
@@ -46,6 +46,8 @@
 mDocumentLoader(documentLoader),
 mViewReady(false)
 {
+    NM_FUNCTION;
+    
     // Load view layout
     loadViewLayout();
     
@@ -58,6 +60,8 @@
 */
 NmMailboxListView::~NmMailboxListView()
 {
+    NM_FUNCTION;
+    
     delete mDocumentLoader;
     mWidgetList.clear();
     if (mItemContextMenu){
@@ -71,6 +75,8 @@
 */
 void NmMailboxListView::loadViewLayout()
 {
+    NM_FUNCTION;
+    
     // Use document loader to load the view
     bool ok = false;
     setObjectName(QString(NMUI_MAILBOX_LIST_VIEW));
@@ -90,7 +96,7 @@
         mMailboxListWidget = qobject_cast<HbListView *>
             (mDocumentLoader->findWidget(NMUI_MAILBOX_LIST_WIDGET));
         if (mMailboxListWidget) {
-            NMLOG("nmailui: mailboxlistview: List object loaded");
+            NM_COMMENT("nmailui: mailboxlistview: list object loaded");
             // Set item prototype.
             mMailboxListWidget->setItemPrototype(new NmMailboxListViewItem(this));
             mMailboxListWidget->setItemRecycling(true);
@@ -101,11 +107,11 @@
             mMailboxListWidget->setFrictionEnabled(true);
         }
         else {
-            NMLOG("nmailui: mailboxlistview: List object loading failed");
+            NM_ERROR(1,"nmailui: mailboxlistview: list object loading failed");
         }
     }
     else {
-         NMLOG("nmailui: mailboxlistview: Reasource loading failed");
+         NM_ERROR(1,"nmailui: mailboxlistview: resource loading failed");
     }
 }
 
@@ -114,6 +120,8 @@
 */
 void NmMailboxListView::viewReady()
 {
+    NM_FUNCTION;
+    
     if (!mViewReady){
         // Set title
         setTitle(hbTrId("txt_mail_title_mail"));
@@ -130,6 +138,8 @@
 */
 void NmMailboxListView::reloadViewContents(NmUiStartParam* startParam)
 {
+    NM_FUNCTION;
+    
     // Check start parameter validity.
     if (startParam&&startParam->viewId()==NmUiViewMailboxList) {
         // Delete existing start parameter data
@@ -141,7 +151,7 @@
         refreshList();
     }
     else {
-        NMLOG("nmailui: mailboxlistview: Invalid start parameter");
+        NM_ERROR(1,"nmailui: mailboxlistview: invalid start parameter");
         // Unused start parameter needs to be deleted
         delete startParam;
         startParam = NULL;
@@ -153,6 +163,8 @@
 */
 NmUiViewId NmMailboxListView::nmailViewId() const
 {
+    NM_FUNCTION;
+    
     return NmUiViewMailboxList;
 }
 
@@ -161,6 +173,8 @@
 */
 void NmMailboxListView::refreshList()
 {
+    NM_FUNCTION;
+    
 	if (mMailboxListWidget) {
         mMailboxListWidget->setModel(&mListModel);
 	}
@@ -171,6 +185,8 @@
 */
 void NmMailboxListView::itemActivated(const QModelIndex &index)
 {
+    NM_FUNCTION;
+    
     mActivatedIndex = index;
     QMetaObject::invokeMethod(this, "openSelectedMailBox", Qt::QueuedConnection);
 }
@@ -181,6 +197,8 @@
 */
 void NmMailboxListView::openSelectedMailBox()
 {
+    NM_FUNCTION;
+    
     // Get mailbox meta data
     NmMailboxMetaData *mailbox =
         mListModel.data(mActivatedIndex, Qt::DisplayRole).value<NmMailboxMetaData*>();
@@ -200,6 +218,8 @@
 
 void NmMailboxListView::handleActionCommand(NmActionResponse &actionResponse)
 {
+    NM_FUNCTION;
+    
     // Handle context menu commands here
     Q_UNUSED(actionResponse);
 }
--- a/emailuis/nmailui/src/nmmailboxlistviewitem.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmmailboxlistviewitem.cpp	Fri May 28 13:56:43 2010 +0300
@@ -17,6 +17,9 @@
 
 #include "nmuiheaders.h"
 
+const QString NmMailboxListViewItemIcon = "MailboxListViewMailboxIcon";
+const QString NmMailboxListViewItemName = "MailboxListViewMailboxName";
+
 /*!
     \class NmMailboxListViewItem
     \brief Mailbox list view item inherited from HbListViewItem
@@ -29,6 +32,7 @@
 : HbListViewItem(parent),
 mLayout(NULL)
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -36,6 +40,7 @@
 */
 NmMailboxListViewItem::~NmMailboxListViewItem()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -43,6 +48,8 @@
 */
 HbListViewItem* NmMailboxListViewItem::createItem()
 {
+    NM_FUNCTION;
+    
     return new NmMailboxListViewItem(*this);
 }
 
@@ -51,6 +58,8 @@
 */
 void NmMailboxListViewItem::updateChildItems()
 {
+    NM_FUNCTION;
+    
     // To create primitives
     HbListViewItem::updateChildItems();
 
@@ -58,12 +67,17 @@
     
     NmMailboxMetaData *mailbox =
             modelIndex().data(Qt::DisplayRole).value<NmMailboxMetaData*>();
-    if (mailbox){
+    
+    HbLabel *textLabel = findChild<HbLabel *>(NmMailboxListViewItemName);
+    HbLabel *icon = findChild<HbLabel *>(NmMailboxListViewItemIcon);
+    
+    if (mailbox && !textLabel && !icon){
         mLayout = new QGraphicsLinearLayout(Qt::Horizontal, 0);
         mLayout->setContentsMargins(0,0,0,0);
 
         HbLabel *mbIcon = new HbLabel();
-        mbIcon->setObjectName("MailboxListViewMailboxIcon");
+        mbIcon->setParent(this);
+        mbIcon->setObjectName(NmMailboxListViewItemIcon);
         
         QString domainName = mailbox->address();
         QString iconName = mailboxInfo.mailboxIcon(domainName);
@@ -71,7 +85,8 @@
         mbIcon->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Preferred);
 
         HbLabel *mbName = new HbLabel();
-        mbName->setObjectName("MailboxListViewMailboxName");
+        mbName->setParent(this);
+        mbName->setObjectName(NmMailboxListViewItemName);
         mbName->setPlainText(mailbox->name());
         mbName->setAlignment(Qt::AlignVCenter);
         mbName->setFontSpec(HbFontSpec(HbFontSpec::Primary));
@@ -82,6 +97,17 @@
         mLayout->setItemSpacing(0,0);
 
         setLayout(mLayout); // Ownership is transferred
+    } else if (mailbox) {
+        
+        if (textLabel) {
+            textLabel->setPlainText(mailbox->name());
+        }
+        
+        QString iconName = mailboxInfo.mailboxIcon(mailbox->address());
+        if (icon && !iconName.isEmpty()) {
+            icon->setIcon(HbIcon(iconName));
+        }
+        
     }
 }
 
@@ -90,6 +116,8 @@
 */
 bool NmMailboxListViewItem::canSetModelIndex(const QModelIndex &index)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(index);
     return true;
 }
@@ -99,6 +127,8 @@
 */
 void NmMailboxListViewItem::polishEvent()
 {
+    NM_FUNCTION;
+    
     QGraphicsWidget::polishEvent();
 }
 
@@ -110,6 +140,8 @@
     const QStyleOptionGraphicsItem *option,
     QWidget *widget)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(option);
     Q_UNUSED(widget);
     Q_UNUSED(painter);
--- a/emailuis/nmailui/src/nmmailboxselectiondialog.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmmailboxselectiondialog.cpp	Fri May 28 13:56:43 2010 +0300
@@ -42,6 +42,8 @@
       mParent(parent),
       mMailboxId(0)
 {
+    NM_FUNCTION;
+    
     // No implementation required.
 }
 
@@ -51,6 +53,8 @@
 */
 NmMailboxSelectionDialog::~NmMailboxSelectionDialog()
 {
+    NM_FUNCTION;
+    
     delete mContentItemModel;
     delete mMailboxListView;
     delete mMailboxSelectionDialog;
@@ -63,7 +67,8 @@
 */
 void NmMailboxSelectionDialog::open()
 {
-    NMLOG("NmMailboxSelectionDialog::open()");
+    NM_FUNCTION;
+    
     mMailboxId = 0;
 
     // Initialize the UI and fetch the mailbox items into the list.
@@ -79,10 +84,12 @@
  */
 void NmMailboxSelectionDialog::dialogClosed(HbAction *action)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(action);
 
     // Store the ID of the selected mailbox into the given argument.
-    NMLOG(QString("NmMailboxSelectionDialog::dialogClosed() return %1").
+    NM_COMMENT(QString("NmMailboxSelectionDialog::dialogClosed() return %1").
         arg(mMailboxId.id()));
 
     emit selectionDialogClosed(mMailboxId);
@@ -96,8 +103,8 @@
 */
 bool NmMailboxSelectionDialog::initializeUi()
 {
-    NMLOG("NmMailboxSelectionDialog::initializeUi()");
-
+    NM_FUNCTION;
+    
     // Use the document loader to load the widgets.
     HbDocumentLoader documentLoader;
     bool documentLoaded = false;
@@ -118,7 +125,7 @@
     }
 
     if (!mMailboxSelectionDialog || !mMailboxListView) {
-        NMLOG("NmMailboxSelectionDialog::initializeUi(): Failed to load widgets!");
+        NM_ERROR(1,"NmMailboxSelectionDialog::initializeUi(): Failed to load widgets!");
         return false;
     }
 
@@ -153,7 +160,8 @@
 */
 bool NmMailboxSelectionDialog::populateListItems()
 {
-    NMLOG("NmMailboxSelectionDialog::populateListItems()");
+    NM_FUNCTION;
+    
     const int count = mMailboxListModel.rowCount();
 
     if (!mContentItemModel || count == 0) {
@@ -191,6 +199,8 @@
 */
 NmMailboxMetaData *NmMailboxSelectionDialog::mailboxMetaData(int index) const
 {
+    NM_FUNCTION;
+    
     QVariant mailbox = mMailboxListModel.data(mMailboxListModel.index(index, 0));
     NmMailboxMetaData *mailboxMetaData = mailbox.value<NmMailboxMetaData*>();
     return mailboxMetaData;
@@ -204,6 +214,8 @@
 */
 void NmMailboxSelectionDialog::itemActivated(QModelIndex index)
 {
+    NM_FUNCTION;
+    
     const int rowIndex = index.row();
     NmMailboxMetaData *metaData = mailboxMetaData(rowIndex);
 
--- a/emailuis/nmailui/src/nmmailboxserviceinterface.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmmailboxserviceinterface.cpp	Fri May 28 13:56:43 2010 +0300
@@ -53,6 +53,7 @@
 */
 NmMailboxServiceInterface::~NmMailboxServiceInterface()
 {
+    NM_FUNCTION;
 }
 
 
@@ -63,7 +64,7 @@
 */
 void NmMailboxServiceInterface::displayInboxByMailboxId(QVariant data)
 {
-    NMLOG("NmMailboxServiceInterface::displayInboxByMailboxId()");
+    NM_FUNCTION;
 
 #ifndef NM_WINS_ENV
 
@@ -72,6 +73,9 @@
 
     mAsyncReqId = setCurrentRequestAsync();
 
+    // Make sure that app stays background if user presses back in message list view
+    bool visible = mApplication->updateVisibilityState();
+
     // Verify that the ID matches one of the existing mailboxes.
     if (mailboxExistsById(mailboxNmId)) {
 
@@ -101,7 +105,7 @@
         // No mailbox found with the given ID.
 
         // if started as embedded, do not hide the app
-		if (!XQServiceUtil::isEmbedded()) {
+		if (!XQServiceUtil::isEmbedded() && !visible) {
 			XQServiceUtil::toBackground(true);
 		}
 
@@ -124,7 +128,7 @@
 */
 bool NmMailboxServiceInterface::mailboxExistsById(const NmId &mailboxId) const
 {
-    NMLOG("NmMailboxServiceInterface::mailboxExistsById()");
+    NM_FUNCTION;
 
     const NmMailboxListModel& mailboxListModel = mUiEngine.mailboxListModel();
     int mailboxCount = mailboxListModel.rowCount();
--- a/emailuis/nmailui/src/nmmessagelistview.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmmessagelistview.cpp	Fri May 28 13:56:43 2010 +0300
@@ -20,11 +20,12 @@
 static const char *NMUI_MESSAGE_LIST_TREE_LIST = "MessageTreeList";
 static const char *NMUI_MESSAGE_LIST_NO_MESSAGES = "MessageListNoMessages";
 static const char *NMUI_MESSAGE_LIST_FOLDER_LABEL = "labelGroupBox";
-static const char *NMUI_MESSAGE_LIST_SYNC_ICON = "syncIcon";
+// Old sync icon implementation commented out but preserved so it could be put back if need be
+// static const char *NMUI_MESSAGE_LIST_SYNC_ICON = "syncIcon";
 
 #include "nmuiheaders.h"
 
-/*!
+/*! 
 	\class NmMessageListView
 	\brief Message list view
 */
@@ -37,7 +38,7 @@
     NmUiStartParam* startParam,
     NmUiEngine &uiEngine,
     NmMailboxListModel &mailboxListModel,
-    NmMessageListModel &messageListModel,
+    NmMessageListModel *messageListModel,
     HbDocumentLoader *documentLoader,
     QGraphicsItem *parent)
 : NmBaseView(startParam, application, parent),
@@ -56,10 +57,14 @@
 mCurrentFolderType(NmFolderInbox),
 mSettingsLaunched(false)
 {
+    NM_FUNCTION;
+
     // Load view layout
     loadViewLayout();
     // Init tree view
     initTreeView();
+    // set title
+    setMailboxName();
     // Set folder name
     setFolderName();
 }
@@ -69,6 +74,8 @@
 */
 NmMessageListView::~NmMessageListView()
 {
+    NM_FUNCTION;
+
     delete mDocumentLoader;
     mWidgetList.clear();
     if (mItemContextMenu){
@@ -82,6 +89,8 @@
 */
 void NmMessageListView::loadViewLayout()
 {
+    NM_FUNCTION;
+
     // Use document loader to load the view
     bool ok = false;
     setObjectName(QString(NMUI_MESSAGE_LIST_VIEW));
@@ -98,32 +107,42 @@
         // Get message list widget
         mMessageListWidget = qobject_cast<HbTreeView *>
             (mDocumentLoader->findWidget(NMUI_MESSAGE_LIST_TREE_LIST));
+
         if (mMessageListWidget) {
-            NMLOG("nmailui: List object loaded");
+            NM_COMMENT("nmailui: list object loaded");
+
             // Set item prototype.
             mMessageListWidget->setItemPrototype(new NmMessageListViewItem());
+
+            // Set the list widget properties.
             mMessageListWidget->setItemRecycling(true);
             mMessageListWidget->contentWidget()->setProperty("indentation", 0);
             mMessageListWidget->setScrollDirections(Qt::Vertical);
             mMessageListWidget->setClampingStyle(HbScrollArea::BounceBackClamping);
             mMessageListWidget->setFrictionEnabled(true);
+
+            // Enable animations to display an email as soon as it is added to
+            // the list.
+            mMessageListWidget->setEnabledAnimations(HbAbstractItemView::Appear &
+                                                     HbAbstractItemView::Expand);
         }
         else {
-            NMLOG("nmailui: List object loading failed");
+            NM_ERROR(1,"nmailui: list object loading failed");
         }
+
         mNoMessagesLabel = qobject_cast<HbLabel *>
             (mDocumentLoader->findWidget(NMUI_MESSAGE_LIST_NO_MESSAGES));
         if (mNoMessagesLabel) {
             mNoMessagesLabel->hide();
         }
         else{
-            NMLOG("nmailui: (no messages) object loading failed");
+            NM_ERROR(1,"nmailui: (no messages) object loading failed");
         }
 
         mFolderLabel = qobject_cast<HbGroupBox *>(mDocumentLoader->findWidget(NMUI_MESSAGE_LIST_FOLDER_LABEL));
 
-        // Disable the old sync icon implementation for the time being
-        mSyncIcon = qobject_cast<HbLabel *>(mDocumentLoader->findWidget(NMUI_MESSAGE_LIST_SYNC_ICON));
+        // Disable the old sync icon implementation for the time being (commment out loading the icon here)
+        //mSyncIcon = qobject_cast<HbLabel *>(mDocumentLoader->findWidget(NMUI_MESSAGE_LIST_SYNC_ICON));
         if (mSyncIcon) {
             mSyncIcon->setIcon(NmIcons::getIcon(NmIcons::NmIconOffline));
         }
@@ -141,7 +160,7 @@
         menu()->addAction(dummy);
     }
     else {
-        NMLOG("nmailui: Resource loading failed");
+        NM_ERROR(1,"nmailui: resource loading failed");
     }
 }
 
@@ -150,6 +169,8 @@
 */
 void NmMessageListView::viewReady()
 {
+    NM_FUNCTION;
+
     if (!mViewReady){
         // Set mailbox name to title pane
         setMailboxName();
@@ -167,24 +188,28 @@
 */
 NmFolderType NmMessageListView::folderType()
 {
+    NM_FUNCTION;
+
     return mCurrentFolderType;
 }
 
 /*!
-    okToExitView. Message list view determines whether it is 
+    okToExitView. Message list view determines whether it is
     ok to exit view and calls mapplication popview.
 */
 void NmMessageListView::okToExitView()
 {
+    NM_FUNCTION;
+
     // Close view if current folder is inbox
     if (mCurrentFolderType==NmFolderInbox){
         mApplication.popView();
     }
-    // Switch to inbox 
+    // Switch to inbox
     else{
-        NmId mailboxId = mStartParam->mailboxId();
-        NmId folderId = mUiEngine.standardFolderId(mailboxId,NmFolderInbox);
-        folderSelected(mailboxId,folderId);
+        mSelectedMailboxId=mStartParam->mailboxId();
+        mSelectedFolderId=mUiEngine.standardFolderId(mSelectedMailboxId,NmFolderInbox);
+        QMetaObject::invokeMethod(this, "folderSelected", Qt::QueuedConnection);
     }
 }
 
@@ -193,6 +218,8 @@
 */
 void NmMessageListView::initTreeView()
 {
+    NM_FUNCTION; 
+
     // Get mailbox widget pointer and set parameters
     if (mMessageListWidget){
         QObject::connect(mMessageListWidget,
@@ -214,6 +241,8 @@
 */
 void NmMessageListView::reloadViewContents(NmUiStartParam* startParam)
 {
+    NM_FUNCTION;
+
     // Check start parameter validity, message view cannot
     // be updated if given parameter is zero.
     if (startParam&&startParam->viewId()==NmUiViewMessageList&&
@@ -224,24 +253,26 @@
         // Store new start parameter data
         mStartParam=startParam;
         // Update the model with new parameters
-        mUiEngine.messageListModel(startParam->mailboxId(), startParam->folderId());
+        mMessageListModel = &mUiEngine.messageListModel(startParam->mailboxId(), startParam->folderId());
         refreshList();
         // Refresh the mailboxname
         setMailboxName();
     }
     else {
-        NMLOG("nmailui: Invalid message list start parameter");
+        NM_ERROR(1,"nmailui: invalid message list start parameter");
         // Unused start parameter needs to be deleted
         delete startParam;
     }
 }
 
-
+ 
 /*!
     Return view id
 */
 NmUiViewId NmMessageListView::nmailViewId() const
 {
+    NM_FUNCTION;
+
     return NmUiViewMessageList;
 }
 
@@ -250,8 +281,10 @@
 */
 void NmMessageListView::refreshList()
 {
-    NmId mailboxId = mMessageListModel.currentMailboxId();
-    if (mSyncIcon && mailboxId == mMessageListModel.currentMailboxId()) {
+    NM_FUNCTION;
+
+    NmId mailboxId = mMessageListModel->currentMailboxId();
+    if (mSyncIcon && mailboxId == mMessageListModel->currentMailboxId()) {
         if (mUiEngine.syncState(mailboxId) == Synchronizing) {
             mSyncIcon->setIcon(NmIcons::getIcon(NmIcons::NmIconSynching));
         }
@@ -273,17 +306,20 @@
 
     // Set item model to message list widget
     if (mMessageListWidget) {
-        mMessageListWidget->setModel(static_cast<QStandardItemModel*>(&mMessageListModel));
-        QObject::connect(&mMessageListModel, SIGNAL(rowsInserted(const QModelIndex&,int,int)),
+        mMessageListWidget->setModel(static_cast<QStandardItemModel*>(mMessageListModel));
+        QObject::connect(mMessageListModel, SIGNAL(rowsInserted(const QModelIndex&,int,int)),
                 this, SLOT(itemsAdded(const QModelIndex&,int,int)));
-        QObject::connect(&mMessageListModel, SIGNAL(rowsRemoved(const QModelIndex&,int,int)),
+        QObject::connect(mMessageListModel, SIGNAL(rowsRemoved(const QModelIndex&,int,int)),
                 this, SLOT(itemsRemoved()));
-        QObject::connect(&mMessageListModel, SIGNAL(setNewParam(NmUiStartParam*)),
+        QObject::connect(mMessageListModel, SIGNAL(setNewParam(NmUiStartParam*)),
                 this, SLOT(reloadViewContents(NmUiStartParam*)));
 
-        if (mMessageListModel.rowCount()==0){
+        if (mMessageListModel->rowCount()==0){
             showNoMessagesText();
         }
+        else{
+            hideNoMessagesText();
+        }
     }
 }
 
@@ -292,7 +328,9 @@
 */
 void NmMessageListView::handleSyncStateEvent(NmSyncState syncState, const NmId & mailboxId)
 {
-    if (mSyncIcon && mailboxId == mMessageListModel.currentMailboxId()) {
+    NM_FUNCTION;
+
+    if (mSyncIcon && mailboxId == mMessageListModel->currentMailboxId()) {
         if (syncState == Synchronizing) {
             mSyncIcon->setIcon(NmIcons::getIcon(NmIcons::NmIconSynching));
             // before first sync inbox id might be zero
@@ -320,7 +358,9 @@
 */
 void NmMessageListView::handleConnectionEvent(NmConnectState connectState, const NmId &mailboxId)
 {
-    if (mSyncIcon && mailboxId == mMessageListModel.currentMailboxId() && mUiEngine.syncState(mailboxId) != Synchronizing) {
+    NM_FUNCTION;
+
+    if (mSyncIcon && mailboxId == mMessageListModel->currentMailboxId() && mUiEngine.syncState(mailboxId) != Synchronizing) {
         if (connectState == Connected) {
             mSyncIcon->setIcon(NmIcons::getIcon(NmIcons::NmIconOnline));
         }
@@ -330,18 +370,23 @@
     }
 }
 
-/*!
+/*! 
     folder selection handling within current mailbox
 */
-void NmMessageListView::folderSelected(NmId mailbox, NmId folder)
+void NmMessageListView::folderSelected()
 {
+    NM_FUNCTION;
+
     // Reload view contents with new startparams if mailbox or folder
     // id is different than current values.
-    if (mStartParam && (mStartParam->mailboxId()!=mailbox||mStartParam->folderId()!=folder)){
+    if (mStartParam && (mStartParam->mailboxId()!=mSelectedMailboxId||
+                        mStartParam->folderId()!=mSelectedFolderId)){
         // Create start params
-        NmUiStartParam* startParam = new NmUiStartParam(NmUiViewMessageList,mailbox,folder);    
+        NmUiStartParam* startParam = new NmUiStartParam(NmUiViewMessageList,
+                                                        mSelectedMailboxId,
+                                                        mSelectedFolderId);
         // Store active folder type
-        mCurrentFolderType = mUiEngine.folderTypeById(startParam->mailboxId(),startParam->folderId());  
+        mCurrentFolderType = mUiEngine.folderTypeById(startParam->mailboxId(),startParam->folderId());
         // Reload view, ownership of the startparams is passed and old startparams
         // are deleted within reloadViewContents function
         reloadViewContents(startParam);
@@ -352,17 +397,19 @@
 
 
 /*!
-    Long keypress handling
+    Long keypress handling 
 */
 void NmMessageListView::showItemContextMenu(HbAbstractViewItem *listViewItem, const QPointF &coords)
 {
+    NM_FUNCTION;
+
     if (listViewItem) {
         // Store long press item for later use with response
-        mLongPressedItem = mMessageListModel.data(
+        mLongPressedItem = mMessageListModel->data(
                 listViewItem->modelIndex(), Qt::DisplayRole).value<NmMessageListModelItem*>();
         if (mItemContextMenu && mLongPressedItem && mLongPressedItem->itemType() ==
             NmMessageListModelItem::NmMessageItemMessage) {
-    
+
             // Clear previous items from context menu
             mItemContextMenu->clearActions();
             NmUiExtensionManager &extMngr = mApplication.extManager();
@@ -390,6 +437,8 @@
 */
 void NmMessageListView::itemActivated(const QModelIndex &index)
 {
+    NM_FUNCTION;
+
     mActivatedIndex = index;
     QMetaObject::invokeMethod(this, "handleSelection", Qt::QueuedConnection);
 }
@@ -400,8 +449,10 @@
 */
 void NmMessageListView::handleSelection()
 {
+    NM_FUNCTION;
+
     // Do expand/collapse for title divider items
-    NmMessageListModelItem* modelItem = mMessageListModel.data(
+    NmMessageListModelItem* modelItem = mMessageListModel->data(
             mActivatedIndex, Qt::DisplayRole).value<NmMessageListModelItem*>();
     if (modelItem && modelItem->itemType()==
         NmMessageListModelItem::NmMessageItemTitleDivider) {
@@ -413,7 +464,7 @@
             mMessageListWidget->setExpanded(mActivatedIndex, false);
             modelItem->setExpanded(false);
         }
-    } 
+    }
     if (modelItem && modelItem->itemType() == NmMessageListModelItem::NmMessageItemMessage
         && !mSettingsLaunched)
     {
@@ -423,15 +474,15 @@
             NmUiStartParam *startParam = new NmUiStartParam(NmUiViewMessageEditor,
                 mStartParam->mailboxId(), mStartParam->folderId(),
                 modelItem->envelope().messageId(),NmUiEditorFromDrafts);
-            mApplication.enterNmUiView(startParam);            
+            mApplication.enterNmUiView(startParam);
         }
         else if (folderType!=NmFolderOutbox){
             NmUiStartParam *startParam = new NmUiStartParam(NmUiViewMessageViewer,
                 mStartParam->mailboxId(), mStartParam->folderId(),
                 modelItem->envelope().messageId());
-            mApplication.enterNmUiView(startParam);        
+            mApplication.enterNmUiView(startParam);
         }
-    }    
+    }
 }
 
 
@@ -442,6 +493,8 @@
 */
 void NmMessageListView::createOptionsMenu()
 {
+    NM_FUNCTION;
+
     menu()->clearActions();
     NmActionRequest request(this, NmActionOptionsMenu, NmActionContextViewMessageList,
     		NmActionContextDataNone, mStartParam->mailboxId(), mStartParam->folderId() );
@@ -459,6 +512,8 @@
 */
 void NmMessageListView::handleActionCommand(NmActionResponse &actionResponse)
 {
+    NM_FUNCTION;
+
     // Handle context menu commands here
     if (actionResponse.menuType() == NmActionOptionsMenu) {
         switch (actionResponse.responseCommand()) {
@@ -481,7 +536,9 @@
 				break;
             }
             case NmActionResponseCommandSwitchFolder: {
-                folderSelected(actionResponse.mailboxId(), actionResponse.folderId());
+                mSelectedFolderId=actionResponse.folderId();
+                mSelectedMailboxId=actionResponse.mailboxId();
+                QMetaObject::invokeMethod(this, "folderSelected", Qt::QueuedConnection);
                 break;
             }
             case NmActionResponseCommandSettings: {
@@ -493,7 +550,7 @@
             }
         }
     }
-    
+
     // Handle context menu commands here
     else if (actionResponse.menuType()==NmActionContextMenu){
         switch (actionResponse.responseCommand()){
@@ -511,7 +568,7 @@
                break;
         }
     }
-    
+
     // Handle toolbar commands here
     else if ( actionResponse.menuType() == NmActionToolbar ) {
         if ( actionResponse.responseCommand() == NmActionResponseCommandNewMail ) {
@@ -520,7 +577,7 @@
                 if (mUiEngine.isSendingMessage()) {
                     // sending is ongoing so just show a note
                     QString noteText = hbTrId("txt_mail_dialog_still_sending");
-                    
+
                     // get message subject from the message being sent
                     const NmMessage *message = mUiEngine.messageBeingSent();
                     if (message) {
@@ -573,6 +630,8 @@
 */
 void NmMessageListView::setMailboxName()
 {
+    NM_FUNCTION;
+
     if (mStartParam){
         NmMailboxMetaData *meta = mUiEngine.mailboxById(mStartParam->mailboxId());
         if (meta){
@@ -588,6 +647,8 @@
 */
 void NmMessageListView::createToolBar()
 {
+    NM_FUNCTION;
+
     HbToolBar *tb = toolBar();
     if (!tb) {
         return;
@@ -610,7 +671,9 @@
     setFolderName. Function sets folder name to status bar
 */
 void NmMessageListView::setFolderName()
-{   
+{
+    NM_FUNCTION;
+
     if (mStartParam&&mFolderLabel){
         switch (mCurrentFolderType) {
         case NmFolderOutbox:
@@ -638,43 +701,65 @@
             {
             mFolderLabel->setHeading(hbTrId("txt_mail_subhead_inbox"));
             }
-            break;        
-        }       
+            break;
+        }
     }
 }
 
+
 /*!
-    Observe items added
+    Handles the addition of a new item. Makes sure the message list widget is
+    visible and keeps the scroll position on the top of the list.
+
+    \param parent Not used.
+    \param start 
+    \param end Not used.
 */
 void NmMessageListView::itemsAdded(const QModelIndex &parent, int start, int end)
 {
-    NMLOG("nmailui: NmMessageListView::itemsAdded");
+    NM_FUNCTION;
+
     Q_UNUSED(parent);
     Q_UNUSED(end);
+
+    // If "no messages" label is shown, hide it and display the message list
+    // widget.
     if (mNoMessagesLabel && mNoMessagesLabel->isVisible()) {
         mNoMessagesLabel->hide();
         mMessageListWidget->show();
     }
-    if (0 == start && mMessageListWidget) {
+
+    // Make sure the top of the list is kept visible by scrolling back to the
+    // top if necessary.
+    if (start == 0 && mMessageListWidget) {
         QList<HbAbstractViewItem*> items = mMessageListWidget->visibleItems();
+
         if (items.count()) {
             QModelIndex index = items.at(0)->modelIndex();
-            if (1 == index.row()) {
-                QModelIndex previous = mMessageListWidget->modelIterator()->previousIndex(index);
+
+            while (index.row() > 0) {
+                QModelIndex previous =
+                    mMessageListWidget->modelIterator()->previousIndex(index);
+
                 if (previous.isValid()) {
                     mMessageListWidget->scrollTo(previous);
                 }
+
+                index = previous;
             }
         }
     }
 }
 
+
 /*!
     Observe items removed
 */
 void NmMessageListView::itemsRemoved()
 {
-    if (mNoMessagesLabel && mMessageListModel.rowCount() == 0){
+    NM_FUNCTION;
+
+    if (mMessageListModel && mMessageListModel->rowCount() == 0){
         showNoMessagesText();
     }
 }
@@ -684,8 +769,24 @@
 */
 void NmMessageListView::showNoMessagesText()
 {
-    if (mNoMessagesLabel) {
+    NM_FUNCTION;
+
+    if (mNoMessagesLabel&&mMessageListWidget) {
         mMessageListWidget->hide();
         mNoMessagesLabel->show();
     }
 }
+
+/*!
+    Hide "(no messages)" text at the middle of the screen.
+*/
+void NmMessageListView::hideNoMessagesText()
+{
+    NM_FUNCTION;
+
+    if (mNoMessagesLabel&&mMessageListWidget) {
+        mNoMessagesLabel->hide();
+        mMessageListWidget->show();
+    }
+}
+
--- a/emailuis/nmailui/src/nmmessagelistviewitem.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmmessagelistviewitem.cpp	Fri May 28 13:56:43 2010 +0300
@@ -39,6 +39,7 @@
     mSecondarySize(0),
     mTinySize(0)    
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -46,13 +47,15 @@
 */
 NmMessageListViewItem::~NmMessageListViewItem()
 {
-
+    NM_FUNCTION;
 }
 
 /*!
 */
 HbTreeViewItem *NmMessageListViewItem::createItem()
 {
+    NM_FUNCTION;
+    
     return new NmMessageListViewItem(*this);
 }
 
@@ -62,6 +65,8 @@
 */
 bool NmMessageListViewItem::canSetModelIndex(const QModelIndex &index) const
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(index);
     // This item class can handle all items in message list
     return true;
@@ -73,6 +78,8 @@
 */
 void NmMessageListViewItem::updateChildItems()
 {
+    NM_FUNCTION;
+    
     // Get model pointer
     NmMessageListModelItem *msgModelItem = modelIndex().data(
             Qt::DisplayRole).value<NmMessageListModelItem*>();
@@ -97,6 +104,8 @@
 */
 void NmMessageListViewItem::createMessageItemLayout()
 { 
+    NM_FUNCTION;
+    
     getFontSizes();
     // Create sender label and set name from widgetml
     if (!mSender){
@@ -146,6 +155,8 @@
 void NmMessageListViewItem::setContentsToMessageItem(const NmMessageEnvelope &envelope, 
                                                      bool dividersActive)
 {
+    NM_FUNCTION;
+    
     // member variables are created in previous function
     // sender
     mSender->setText(senderFieldText(envelope));
@@ -231,6 +242,8 @@
     const QStyleOptionGraphicsItem *option,
     QWidget *widget)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(option);
     Q_UNUSED(widget);
     Q_UNUSED(painter);
@@ -241,6 +254,8 @@
 */
 void  NmMessageListViewItem::setFontsUnread()
 {    
+    NM_FUNCTION;
+    
     static QColor colorRole = HbColorScheme::color("qtc_list_item_title_normal");
     HbFontSpec spekki(HbFontSpec::Primary);
     setFonts(colorRole, spekki);
@@ -251,6 +266,8 @@
 */
 void  NmMessageListViewItem::setFontsRead()
 {
+    NM_FUNCTION;
+    
     static QColor colorRole = HbColorScheme::color("qtc_list_item_content_normal");
     HbFontSpec spekki(HbFontSpec::Secondary);
     setFonts(colorRole, spekki);
@@ -261,6 +278,8 @@
 */
 void  NmMessageListViewItem::getFontSizes()
 {
+    NM_FUNCTION;
+    
     // Get font sizes from style  
     qreal currentSize;
     HbStyle mystyle;
@@ -284,6 +303,8 @@
 void  NmMessageListViewItem::setFonts(const QColor &colorRole, 
         HbFontSpec &spekki)
 {
+    NM_FUNCTION;
+    
     // Change sizes explicitly since css is overwritten in polish now.    
     if (mSender && mSubject && mTime) {
         
@@ -313,6 +334,8 @@
 */
 QString NmMessageListViewItem::senderFieldText(const NmMessageEnvelope &envelope)
 {
+    NM_FUNCTION;
+    
     QString ret;  
     QVariant folderType = modelIndex().data(
             NmFolderTypeRole).value<QVariant>();
--- a/emailuis/nmailui/src/nmmessagesearchlistview.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmmessagesearchlistview.cpp	Fri May 28 13:56:43 2010 +0300
@@ -19,7 +19,7 @@
 static const char *NMUI_MESSAGE_SEARCH_LIST_VIEW = "NmMessageListView";
 static const char *NMUI_MESSAGE_SEARCH_LIST_TREE_LIST = "MessageTreeList";
 static const char *NMUI_MESSAGE_SEARCH_LIST_NO_MESSAGES = "MessageListNoMessages";
-static const char *NMUI_MESSAGE_SEARCH_LIST_INFO_LABEL = "InfoLabel";
+static const char *NMUI_MESSAGE_SEARCH_LIST_INFO_LABEL = "LabelGroupBox";
 static const char *NMUI_MESSAGE_SEARCH_LIST_LINE_EDIT = "LineEdit";
 static const char *NMUI_MESSAGE_SEARCH_LIST_PUSH_BUTTON = "PushButton";
 
@@ -58,6 +58,8 @@
   mViewReady(false),
   mSearchInProgress(false)
 {
+    NM_FUNCTION;
+    
     loadViewLayout();
     initTreeView();
 }
@@ -68,6 +70,8 @@
 */
 NmMessageSearchListView::~NmMessageSearchListView()
 {
+    NM_FUNCTION;
+    
     delete mDocumentLoader;
 
     mWidgetList.clear();
@@ -89,6 +93,8 @@
 */
 NmUiViewId NmMessageSearchListView::nmailViewId() const
 {
+    NM_FUNCTION;
+    
     return NmUiViewMessageSearchList;
 }
 
@@ -100,6 +106,8 @@
 */
 void NmMessageSearchListView::viewReady()
 {
+    NM_FUNCTION;
+    
     if (!mViewReady){
         // Set the mailbox name to the title pane.
         setViewTitle();
@@ -125,6 +133,8 @@
 */
 void NmMessageSearchListView::handleActionCommand(NmActionResponse &actionResponse)
 {
+    NM_FUNCTION;
+    
     // Handle options menu commands here.
     if (actionResponse.menuType() == NmActionOptionsMenu) {
         switch (actionResponse.responseCommand()) {
@@ -145,7 +155,7 @@
     if (actionResponse.menuType() == NmActionContextMenu) {
         if (mLongPressedItem){
             NmUiStartParam *startParam = new NmUiStartParam(NmUiViewMessageViewer,
-                mStartParam->mailboxId(), mStartParam->folderId(),
+                mStartParam->mailboxId(), mLongPressedItem->envelope().folderId(),
                 mLongPressedItem->envelope().messageId());
 
             mApplication.enterNmUiView(startParam);
@@ -162,6 +172,8 @@
 */
 void NmMessageSearchListView::loadViewLayout()
 {
+    NM_FUNCTION;
+    
     // Use the document loader to load the view layout.
     bool ok(false);
     setObjectName(QString(NMUI_MESSAGE_SEARCH_LIST_VIEW));
@@ -181,24 +193,29 @@
             mDocumentLoader->findWidget(NMUI_MESSAGE_SEARCH_LIST_TREE_LIST));
 
         if (mMessageListWidget) {
-            NMLOG("NmMessageSearchListView: Message list widget loaded.");
+            NM_COMMENT("NmMessageSearchListView: message list widget loaded");
 
             // Set the item prototype.
             mMessageListWidget->setItemPrototype(new NmMessageListViewItem());
+
+            // Set the list widget properties.
             mMessageListWidget->setItemRecycling(true);
             mMessageListWidget->contentWidget()->setProperty("indentation", 0);
             mMessageListWidget->setScrollDirections(Qt::Vertical);
             mMessageListWidget->setClampingStyle(HbScrollArea::BounceBackClamping);
             mMessageListWidget->setFrictionEnabled(true);
+
+            // We want the search results to appear one by one.
+            mMessageListWidget->setEnabledAnimations(HbAbstractItemView::Appear &
+                                                     HbAbstractItemView::Expand);
         }
 
         // Load the info label.
-        mInfoLabel = qobject_cast<HbLabel *>(
+        mInfoLabel = qobject_cast<HbGroupBox *>(
             mDocumentLoader->findWidget(NMUI_MESSAGE_SEARCH_LIST_INFO_LABEL));
 
         if (mInfoLabel) {
-            NMLOG("NmMessageSearchListView: Info label loaded.");
-            mInfoLabel->setPlainText(hbTrId("txt_mail_subhead_inbox"));
+            NM_COMMENT("NmMessageSearchListView: info label loaded");
             mInfoLabel->hide();
         }
 
@@ -230,7 +247,7 @@
         }
     }
     else {
-        NMLOG("NmMessageSearchListView: Failed to load widgets from XML!");
+        NM_ERROR(1, "NmMessageSearchListView: failed to load widgets from XML");
     }
 }
 
@@ -240,6 +257,8 @@
 */
 void NmMessageSearchListView::initTreeView()
 {
+    NM_FUNCTION;
+    
     // Get the mailbox widget pointer and set the parameters.
     if (mMessageListWidget) {
         connect(mMessageListWidget, SIGNAL(activated(const QModelIndex &)),
@@ -262,6 +281,8 @@
 */
 void NmMessageSearchListView::setViewTitle()
 {
+    NM_FUNCTION;
+    
     if (mStartParam){
         NmMailboxMetaData *meta = mUiEngine.mailboxById(mStartParam->mailboxId());
 
@@ -281,6 +302,8 @@
 */
 void NmMessageSearchListView::noMessagesLabelVisibility(bool visible)
 {
+    NM_FUNCTION;
+    
     if (visible) {
         // Hide the message list widget and display the "no messages" label.
         if (mMessageListWidget) {
@@ -305,12 +328,50 @@
 
 
 /*!
+    Updates the search result count information. If the message list does not
+    contain any items, a "no messages" label is displayed. Otherwise the result
+    count in the information label is updated according to the number of
+    messages in the list.
+*/
+void NmMessageSearchListView::updateSearchResultCountInfo()
+{
+    NM_FUNCTION;
+
+    const int resultCount = mMsgListModel.rowCount();
+
+    if (resultCount) {
+        if (mInfoLabel) {
+            // Display the result count on the info label.
+            QString resultsString(hbTrId("txt_mail_list_search_results").arg(resultCount));
+            mInfoLabel->setHeading(resultsString);
+
+            if (!mInfoLabel->isVisible()) {
+                mInfoLabel->show();
+            }
+        }
+    }
+    else {
+        // No search results!
+        if (mInfoLabel && mInfoLabel->isVisible()) {
+            mInfoLabel->hide();
+        }
+
+        // Display the "no messages" label and highlight the search term.
+        noMessagesLabelVisibility(true);
+    }
+    
+}
+
+
+/*!
     Sets the mode for the search input.
 
     \param mode The mode to set.
 */
 void NmMessageSearchListView::setSearchInputMode(NmSearchInputMode mode)
 {
+    NM_FUNCTION;
+    
     if (!mLineEdit) {
         // No line edit widget!
         return;
@@ -343,10 +404,9 @@
 */
 void NmMessageSearchListView::reloadViewContents(NmUiStartParam *startParam)
 {
-    // Check the start parameter's validity; message view cannot be updated if
-    // the given parameter is zero.
-    if (startParam&&startParam->viewId() == NmUiViewMessageSearchList &&
-        startParam->folderId() != 0) {
+    NM_FUNCTION;
+    
+    if (startParam && startParam->viewId() == NmUiViewMessageSearchList) {
         // Delete the existing start parameter data.
         delete mStartParam;
         mStartParam = NULL;
@@ -364,7 +424,7 @@
     else {
         // Invalid start parameter data! Unused start parameter needs to be
         // deleted.
-        NMLOG("NmMessageSearchListView: Invalid message list start parameter!");
+        NM_ERROR(1, "NmMessageSearchListView: invalid message list start parameter");
         delete startParam;
     }
 }
@@ -379,7 +439,8 @@
 */
 void NmMessageSearchListView::criteriaChanged(QString text) 
 {
-    NMLOG(QString("NmMessageSearchListView::criteriaChanged %1").arg(text));
+    NM_FUNCTION;
+    NM_COMMENT(QString("NmMessageSearchListView::criteriaChanged %1").arg(text));
     
     // Check if the button should be disabled/enabled.
     bool enabled = mPushButton->isEnabled();
@@ -400,6 +461,8 @@
 void NmMessageSearchListView::showItemContextMenu(
     HbAbstractViewItem *listViewItem, const QPointF &coords)
 {
+    NM_FUNCTION;
+    
     // Store long press item for later use with response.
     mLongPressedItem = 
         mMsgListModel.data(listViewItem->modelIndex(),
@@ -417,17 +480,9 @@
 
         if (envelope){
             NmActionRequest request(this, NmActionContextMenu,
-                NmActionContextViewMessageList, NmActionContextDataMessage,
-                mStartParam->mailboxId(), mStartParam->folderId(),
-                envelope->messageId(),QVariant::fromValue(envelope));
-
-            extMngr.getActions(request, list);
-        }
-        else{
-            NmActionRequest request(this, NmActionContextMenu,
-                NmActionContextViewMessageList, NmActionContextDataMessage,
-                mStartParam->mailboxId(), mStartParam->folderId(),
-                envelope->messageId());
+                NmActionContextViewMessageSearchList, NmActionContextDataMessage,
+                mStartParam->mailboxId(), envelope->folderId(),
+                envelope->messageId(), QVariant::fromValue(envelope));
 
             extMngr.getActions(request, list);
         }
@@ -450,6 +505,8 @@
 */
 void NmMessageSearchListView::itemActivated(const QModelIndex &index)
 {
+    NM_FUNCTION;
+    
     mActivatedIndex = index;
     QMetaObject::invokeMethod(this, "handleSelection", Qt::QueuedConnection);
 }
@@ -460,6 +517,8 @@
 */
 void NmMessageSearchListView::handleSelection()
 {
+    NM_FUNCTION;
+    
     // Do expand/collapse for title divider items
     NmMessageListModelItem* modelItem = mMsgListModel.data(
         mActivatedIndex, Qt::DisplayRole).value<NmMessageListModelItem*>();
@@ -474,7 +533,7 @@
 
         // Open the message.
         NmUiStartParam *startParam = new NmUiStartParam(NmUiViewMessageViewer,
-            mStartParam->mailboxId(), mStartParam->folderId(),
+            mStartParam->mailboxId(), modelItem->envelope().folderId(),
             modelItem->envelope().messageId());
 
         mApplication.enterNmUiView(startParam);
@@ -488,13 +547,19 @@
 */
 void NmMessageSearchListView::itemsAdded(const QModelIndex &parent, int start, int end)
 {
-    NMLOG("nmailui: NmMessageSearchListView::itemsAdded()");
-
+    NM_FUNCTION;
+    
     Q_UNUSED(parent);
     Q_UNUSED(end);
 
-    // Display the message list widget if not visible.
-    noMessagesLabelVisibility(false);
+    // The search is an asynchronous operation. If a user stops the search, it
+    // might take a short while before the search is actually stopped and during
+    // this time it is possible that messages matching the search are added.
+    // Therefore, update the result count info if items are added after the
+    // search has been stopped by the user.
+    if (!mSearchInProgress) {
+        updateSearchResultCountInfo();
+    }
 
     if (!start && mMessageListWidget) {
         QList<HbAbstractViewItem*> items = mMessageListWidget->visibleItems();
@@ -502,12 +567,15 @@
         if (items.count()) {
             QModelIndex index = items.at(0)->modelIndex();
 
-            if (1 == index.row()) {
-                QModelIndex previous = mMessageListWidget->modelIterator()->previousIndex(index);
+            while (index.row() > 0) {
+                QModelIndex previous =
+                    mMessageListWidget->modelIterator()->previousIndex(index);
 
                 if (previous.isValid()) {
                     mMessageListWidget->scrollTo(previous);
                 }
+
+                index = previous;
             }
         }
     }
@@ -515,29 +583,16 @@
 
 
 /*!
-    This method gets called when an item is removed from the list. If the list
-    contains no items, the info label (if visible) is hidden and the "no
-    messages" label is displayed. Otherwise, only the result count in the info
-    label is updated.
+    This method gets called when an item is removed from the list. If the
+    search has completed (or stopped), the search result count information is
+    updated according to the number of messages in the list.
 */
 void NmMessageSearchListView::itemsRemoved()
 {
-    const int itemCount = mMsgListModel.rowCount();
-
-    if (itemCount == 0) {
-        if (mInfoLabel && mInfoLabel->isVisible()) {
-            // Hide the info label.
-            mInfoLabel->hide();
-        }
-
-        // Display the "no messages" label.
-        noMessagesLabelVisibility(true);
-    }
-    else if (mInfoLabel && mInfoLabel->isVisible()) {
-        // Update the search result count in the info label.
-        QString resultsString(hbTrId("txt_mail_list_search_results"));
-        resultsString.arg(itemCount);
-        mInfoLabel->setPlainText(resultsString);
+    NM_FUNCTION;
+    
+    if (!mSearchInProgress) {
+        updateSearchResultCountInfo();
     }
 }
 
@@ -547,6 +602,8 @@
 */
 void NmMessageSearchListView::refreshList()
 {
+    NM_FUNCTION;
+    
     if (mMessageListWidget) {
         // Set the model.
         mMessageListWidget->setModel(
@@ -577,6 +634,8 @@
 */
 void NmMessageSearchListView::toggleSearch()
 {
+    NM_FUNCTION;
+    
     if (mSearchInProgress) {
         // Search is in progress - do cancel.
         mUiEngine.cancelSearch(mStartParam->mailboxId());
@@ -607,7 +666,7 @@
 
         // Display the info label.
         if (mInfoLabel) {
-            mInfoLabel->setPlainText(hbTrId("txt_mail_list_searching"));
+            mInfoLabel->setHeading(hbTrId("txt_mail_list_searching"));
             mInfoLabel->show();
         }
 
@@ -626,7 +685,8 @@
 */
 void NmMessageSearchListView::handleSearchComplete()
 {
-    NMLOG("NmMessageSearchListView::handleSearchComplete()");
+    NM_FUNCTION;
+    
     mSearchInProgress = false;
     
     // Change the push button text.
@@ -634,30 +694,17 @@
         mPushButton->setIcon(HbIcon("qtg_mono_search"));
     }
 
+    // Display the search result count.
+    updateSearchResultCountInfo();
+
     const int resultCount = mMsgListModel.rowCount();
 
     if (resultCount) {
-        if (mInfoLabel) {
-            // Display the result count on the info label.
-            QString resultsString(hbTrId("txt_mail_list_search_results"));
-            resultsString.arg(resultCount);
-            mInfoLabel->setPlainText(resultsString);
-
-            if (!mInfoLabel->isVisible()) {
-                mInfoLabel->show();
-            }
-        }
-
         // Undim the search input.
         setSearchInputMode(NmNormalMode);
     }
     else {
-        // No search results!
-        if (mInfoLabel && mInfoLabel->isVisible()) {
-            mInfoLabel->hide();
-        }
-
-        // Display the "no messags" label and highlight the search term.
+        // Highlight the search field.
         noMessagesLabelVisibility(true);
         setSearchInputMode(NmHighlightedMode);
     }
--- a/emailuis/nmailui/src/nmrecipientfield.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmrecipientfield.cpp	Fri May 28 13:56:43 2010 +0300
@@ -17,65 +17,41 @@
 
 #include "nmuiheaders.h"
 
-static const double Un = 6.66;
-static const double Margin = 2 * Un;
+static const QString ContactsServiceName = "com.nokia.services.phonebookservices";
+static const QString ContactsInterfaceName = "Fetch";
+static const QString ContactsOperationName = "fetch(QString,QString,QString)";
+
 static const int MaxRows = 10000;
-static const double LabelFieldWidth = 12.5 * Un;
-static const double ButtonWidth = 9.5 * Un;
-static const double FieldHeight = 5 * Un;
-static const char *ContactsServiceName = "com.nokia.services.phonebookservices";
-static const char *ContactsInterfaceName = "Fetch";
-static const char *ContactsOperationName = "fetch(QString,QString,QString)";
 
 /*!
    widget is created using AD/docml
 */
-NmRecipientField::NmRecipientField(const QString &labelString, QGraphicsItem *parent):
-    HbWidget(parent),
+NmRecipientField::NmRecipientField(
+        QObject *parent, HbDocumentLoader &docLoader, const QString &objPrefix):
+    QObject(parent),
+    mDocumentLoader(docLoader),
+    mObjectPrefix(objPrefix),
     mLabel(NULL),
     mRecipientsEditor(NULL),
-    mLaunchContactsPickerButton(NULL),
-    mOwned(true)
+    mLaunchContactsPickerButton(NULL)
 {
-    //construct default ui.    
-    mLayoutHorizontal = new QGraphicsLinearLayout(Qt::Horizontal);
-
-    mLabel = new HbLabel(labelString);
-    if (mLabel) {
-        mLayoutHorizontal->addItem(mLabel);
-        mLabel->setPreferredWidth(LabelFieldWidth);
-        mLabel->setFontSpec(HbFontSpec(HbFontSpec::Secondary));
-    }
+    NM_FUNCTION;
+    
+    // Load the widgets from nmeditorview.docml. The names match to the definitions in that docml.
+    mWidget = qobject_cast<HbWidget *>
+        (mDocumentLoader.findWidget(mObjectPrefix + "Field"));
 
-    mRecipientsEditor = new NmRecipientLineEdit();
-    if (mRecipientsEditor) {
-    	mLayoutHorizontal->addItem(mRecipientsEditor);
-        mRecipientsEditor->setMaxRows(MaxRows);
-        mRecipientsEditor->setFontSpec(HbFontSpec(HbFontSpec::Secondary));
-        mRecipientsEditor->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
-        mRecipientsEditor->setMinimumHeight(FieldHeight);
-        mRecipientsEditor->setPreferredHeight(FieldHeight);
-        mRecipientsEditor->setMaximumHeight(FieldHeight);
-    }
+    mLabel = qobject_cast<HbLabel *>
+        (mDocumentLoader.findWidget(mObjectPrefix + "Label"));
 
-    mLaunchContactsPickerButton = new HbPushButton();
-    if (mLaunchContactsPickerButton) {
-    	mLayoutHorizontal->addItem(mLaunchContactsPickerButton);
-    	mLayoutHorizontal->setAlignment(mLaunchContactsPickerButton, Qt::AlignTop);
-        mLaunchContactsPickerButton->setPreferredHeight(FieldHeight);
-        mLaunchContactsPickerButton->setPreferredWidth(ButtonWidth);
-        mLaunchContactsPickerButton->setMaximumHeight(FieldHeight);
+    mRecipientsEditor = qobject_cast<NmRecipientLineEdit *>
+        (mDocumentLoader.findWidget(mObjectPrefix + "Edit"));
+    mRecipientsEditor->setMaxRows(MaxRows);
 
-        mLaunchContactsPickerButton->setIcon(NmIcons::getIcon(NmIcons::NmIconContacts));
-    }
+    mLaunchContactsPickerButton = qobject_cast<HbPushButton *>
+        (mDocumentLoader.findWidget(mObjectPrefix + "Button"));
 
-    mLayoutHorizontal->setContentsMargins(0, 0, 0, 0);
-    // Set the spacing between the line edit  and the Add button to
-    mLayoutHorizontal->setItemSpacing(1, Un);
-    // Set the spacing between the label and the line edit to 0.0
-    mLayoutHorizontal->setItemSpacing(0, 0.0);
-    
-    this->setLayout(mLayoutHorizontal);
+    mLaunchContactsPickerButton->setIcon(NmIcons::getIcon(NmIcons::NmIconContacts));
 
     createConnections();
 }
@@ -85,6 +61,8 @@
 */
 void NmRecipientField::createConnections()
 {
+    NM_FUNCTION;
+    
     connect(mRecipientsEditor, SIGNAL(textChanged(const QString &)),
         this, SIGNAL(textChanged(const QString &)));
     connect(mRecipientsEditor, SIGNAL(cursorPositionChanged(int, int)),
@@ -107,21 +85,7 @@
 */
 NmRecipientField::~NmRecipientField()
 {
-    if (mOwned)
-    {
-        if (mLaunchContactsPickerButton) {
-            delete mLaunchContactsPickerButton;
-            mLaunchContactsPickerButton = 0;
-        }
-        if (mRecipientsEditor) {
-            delete mRecipientsEditor;
-            mRecipientsEditor = 0;
-        }
-        if (mLabel) {
-            delete mLabel;
-            mLabel = 0;
-        }
-    }
+    NM_FUNCTION;
 }
 
 /*!
@@ -129,7 +93,9 @@
 */
 qreal NmRecipientField::height()
 {
-    return mRecipientsEditor->geometry().height() + Margin;
+    NM_FUNCTION;
+    
+    return mWidget->geometry().height();
 }
 
 /*!
@@ -137,6 +103,8 @@
 */
 NmRecipientLineEdit *NmRecipientField::editor() const
 {
+    NM_FUNCTION;
+    
     return mRecipientsEditor;
 }
 
@@ -146,6 +114,8 @@
 */
 const QString NmRecipientField::text() const
 {
+    NM_FUNCTION;
+    
     return mRecipientsEditor->text();
 }
 
@@ -155,6 +125,8 @@
 */
 void NmRecipientField::setText(const QString &newText)
 {
+    NM_FUNCTION;
+    
     if (newText != mRecipientsEditor->text()) {
         mRecipientsEditor->setText(newText);
         emit textChanged(newText);
@@ -168,6 +140,8 @@
 */
 void NmRecipientField::launchContactsPicker()
 {
+    NM_FUNCTION;
+    
     XQApplicationManager mAppmgr;
     XQAiwRequest *launchContactsPickerRequest;
     
@@ -181,14 +155,20 @@
     }
     else {
         // Failed creating request 
-        NMLOG("XQApplicationManager: failed creating fecth contactspicker request.");
+        NM_ERROR(1,"XQApplicationManager: failed creating fecth contactspicker request");
 	    return;
     }
 
+    QVariantList args; 
+    args << "Non-filtered multi-fetch";
+    args << KCntActionAll; 
+    args << KCntFilterDisplayAll; 
+    launchContactsPickerRequest->setArguments(args); 
+    
     // Send request
     if (!launchContactsPickerRequest->send()) {
        //Failed sending request 
-       NMLOG("XQApplicationManager: failed sending request.");
+       NM_ERROR(1,"XQApplicationManager: failed sending request");
     }
         
     delete launchContactsPickerRequest;
--- a/emailuis/nmailui/src/nmsendserviceinterface.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmsendserviceinterface.cpp	Fri May 28 13:56:43 2010 +0300
@@ -38,6 +38,7 @@
       mAttachmentList(0),
       mEditorStartMode(NmUiEditorCreateNew)
     {
+        NM_FUNCTION;
     }
 
     /*!
@@ -45,6 +46,7 @@
     */
     inline ~NmStartParamDataHelper()
     {
+        NM_FUNCTION;
     }
 
     /*!
@@ -54,6 +56,8 @@
     */
     inline bool extractData(const QVariant &data)
     {
+        NM_FUNCTION;
+        
         bool success = false;
 
         if (data.canConvert(QVariant::Map)) {
@@ -68,8 +72,7 @@
         }
         else {
             // Data type not supported!
-            NMLOG(QString("NmStartParamDataHelper::extractData(): Data type %1 not supported!").
-                arg(data.type()));
+            NM_ERROR(1,"NmStartParamDataHelper::extractData(): data type not supported");
         }
 
         // Determine the editor start mode.
@@ -89,6 +92,8 @@
     */
     inline void deleteData()
     {
+        NM_FUNCTION;
+        
         delete mSubject;
         mSubject = 0;
 
@@ -124,6 +129,8 @@
     */
     inline bool processMap(const QMap<QString, QVariant> &map)
     {
+        NM_FUNCTION;
+        
         QMap<QString, QVariant>::const_iterator i = map.constBegin();
         QString key;
         QVariant value;
@@ -173,7 +180,8 @@
     inline void addAddressesToList(const QVariant &addresses,
                                    QList<NmAddress*> **list)
     {
-
+        NM_FUNCTION;
+        
         if (!list) {
             // Invalid argument!
             return;
@@ -264,6 +272,8 @@
 */
 NmSendServiceInterface::~NmSendServiceInterface()
 {
+    NM_FUNCTION;
+    
     delete mStartParam;
     delete mSelectionDialog;
 }
@@ -276,7 +286,8 @@
 */
 void NmSendServiceInterface::selectionDialogClosed(NmId &mailboxId)
 {
-    NMLOG(QString("NmSendServiceInterface::selectionDialogClosed %1").arg(mailboxId.id()));
+    NM_FUNCTION;
+    
     if (mailboxId.id()) { // mailbox selected
         launchEditorView(mailboxId);
     }
@@ -298,9 +309,13 @@
 */
 void NmSendServiceInterface::send(QVariant data)
 {
-    NMLOG("NmSendServiceInterface::send()");
-
+    NM_FUNCTION;
+    
 #ifndef NM_WINS_ENV
+    
+    // Make sure that qmail stays background if user presses back in editorview
+    mApplication->updateVisibilityState();
+    
     HbMainWindow *mainWindow = mApplication->mainWindow();
     mCurrentView = mainWindow->currentView();
 
@@ -321,7 +336,7 @@
 
     if (!validData) {
         // Failed to extract the data!
-        NMLOG("NmSendServiceInterface::send(): Failed to process the given data!");
+        NM_ERROR(1,"NmSendServiceInterface::send(): failed to process the given data");
         cancelService();
     }
     else if (count == 0) {
@@ -378,7 +393,9 @@
  */
 void NmSendServiceInterface::launchEditorView(NmId mailboxId)
 {
-    NMLOG(QString("NmSendServiceInterface::launchEditorView %1").arg(mailboxId.id()));
+    NM_FUNCTION;
+    NM_COMMENT(QString("NmSendServiceInterface::launchEditorView(): mailboxId=%1").arg(mailboxId.id()));
+    
     // Make the previous view visible again.
     if (mCurrentView) {
         mCurrentView->show();
@@ -396,7 +413,8 @@
 
 void NmSendServiceInterface::cancelService()
 {
-    NMLOG("NmSendServiceInterface::cancelService");
+    NM_FUNCTION;
+    
     delete mStartParam;
     mStartParam = NULL;
 
--- a/emailuis/nmailui/src/nmuidocumentloader.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmuidocumentloader.cpp	Fri May 28 13:56:43 2010 +0300
@@ -22,6 +22,7 @@
 */
 NmUiDocumentLoader::NmUiDocumentLoader(const HbMainWindow *window) : HbDocumentLoader(window)
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -29,6 +30,7 @@
 */
 NmUiDocumentLoader::~NmUiDocumentLoader()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -36,6 +38,8 @@
 */
 QObject *NmUiDocumentLoader::createObject(const QString& type, const QString &name)
 {
+    NM_FUNCTION;
+    
     QObject *res = NULL;
     if( type == NmMailViewerWK::staticMetaObject.className() ) {
         res = new NmMailViewerWK();
--- a/emailuis/nmailui/src/nmuieffects.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmuieffects.cpp	Fri May 28 13:56:43 2010 +0300
@@ -32,6 +32,7 @@
     mSendAnimationScreenShot(NULL),
     mDoSendAnimation(false)
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -39,6 +40,8 @@
 */
 NmUiEffects::~NmUiEffects()
 {
+    NM_FUNCTION;
+    
     // Clean send animation if sendAnimationComplete slot is not called for some reason.
     // E.g. red key pressed.
     resetSendAnimation();
@@ -49,6 +52,8 @@
 */
 void NmUiEffects::prepareEffect(NmUiEffectType effect)
 {
+    NM_FUNCTION;
+    
     switch (effect) {
     case NmEditorSendMessageAnimation:
         // delete any existing stuff
@@ -65,6 +70,9 @@
         mSendAnimationScreenShot->hide();
         mSendAnimationScreenShot->setPos(0,0);
         mSendAnimationScreenShot->setZValue(0);
+
+        // Adds or moves the item and all its childen to this scene.
+        // This scene takes ownership of the item.
         mMainWindow.scene()->addItem(mSendAnimationScreenShot);
 
         // Set editor screen capture visible before old view is popped.
@@ -81,6 +89,8 @@
 */
 void NmUiEffects::startEffect(NmUiEffectType effect)
 {
+    NM_FUNCTION;
+    
     switch (effect) {
     case NmEditorSendMessageAnimation:
         // Send message animation for editor view.
@@ -99,6 +109,8 @@
  */
 QGraphicsPixmapItem *NmUiEffects::screenShot()
 {
+    NM_FUNCTION;
+    
     // Grab whole view into pixmap image (also chrome is included)
     QPixmap screenCapture = QPixmap::grabWindow(mMainWindow.internalWinId());
 
@@ -122,9 +134,16 @@
  */
 void NmUiEffects::resetSendAnimation()
 {
+    NM_FUNCTION;
+    
     if (mSendAnimationScreenShot) {
         // Clean send animation
         HbEffect::remove(mSendAnimationScreenShot, SendAnimation, "mail_send");
+        // Ownership of QGraphicsPixmapItem is tranferred to GraphicsScene when it has been added
+        // to it GraphicsScene.
+        // GraphicsPixmapItem needs to be removed from the GraphicsScene before deleting
+        // it to prevent double deletion.
+        mMainWindow.scene()->removeItem(mSendAnimationScreenShot);
         delete mSendAnimationScreenShot;
         mSendAnimationScreenShot = NULL;
         mDoSendAnimation = false;
@@ -136,6 +155,8 @@
 */
 void NmUiEffects::sendAnimationComplete(HbEffect::EffectStatus status)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(status);
     resetSendAnimation();
 }
--- a/emailuis/nmailui/src/nmuiextensionmanager.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmuiextensionmanager.cpp	Fri May 28 13:56:43 2010 +0300
@@ -17,7 +17,6 @@
 
 #include "nmuiheaders.h"
 
-const QString NmsPluginExtensionName = "nmsclientplugin.qtplugin"; 
 /*!
     \class NmUiExtensionManager
     \brief Handles ui extension plugins
@@ -31,8 +30,8 @@
 */
 QStringList NmUiExtensionManager::pluginFolders()
 {
-    NMLOG(QString("NmUiExtensionManager - HELPER FUNCTIONS - pluginFolders"));
-
+    NM_FUNCTION;
+    
     const QString NmSettingsPluginFolderPath("/resource/qt/plugins/nmail/uiext");
     QStringList pluginDirectories;
     QFileInfoList driveList = QDir::drives();
@@ -45,13 +44,14 @@
             pluginDirectories.append(pluginDirectory);
         }
     }
-
-    NMLOG(QString("NmUiExtensionManager - HELPER FUNCTIONS - pluginFolders - OK"));
+    
     return pluginDirectories;
 }
 
 NmUiExtensionManager::NmUiExtensionManager()
 {
+    NM_FUNCTION;
+    
     // load the protocol extension plugins
     loadExtensionPlugins();
 }
@@ -61,6 +61,8 @@
  */
 NmUiExtensionManager::~NmUiExtensionManager()
 {
+    NM_FUNCTION;
+    
     // delete plugins from array
     qDeleteAll(mExtensions.begin(), mExtensions.end());
     mExtensions.clear();
@@ -76,6 +78,8 @@
     const NmActionRequest &menuRequest,
     QList<NmAction*> &actionList)
 {
+    NM_FUNCTION;
+    
     for (int i = 0; i < mExtensions.count(); i++) {
     	NmUiExtensionInterface* interface = mExtensions[i];
         interface->getActions(menuRequest, actionList);
@@ -87,7 +91,7 @@
  */
 void NmUiExtensionManager::loadExtensionPlugins()
 {
-    NMLOG(QString("NmUiExtensionManager::loadExtensionPlugins -->"));
+    NM_FUNCTION;
     
     QStringList directories(pluginFolders());
     foreach (const QString &directoryPath, directories) {
@@ -95,7 +99,7 @@
         QFileInfoList fileList(directory.entryInfoList());
 
         foreach (const QFileInfo &fileInfo, fileList) {
-            NMLOG(QString("Plugin absolute FilePath : %1").arg(fileInfo.absoluteFilePath()));  
+            NM_COMMENT(QString("Plugin absolute FilePath : %1").arg(fileInfo.absoluteFilePath()));  
             QScopedPointer<QPluginLoader> loader(
                 new QPluginLoader(fileInfo.absoluteFilePath()));
             mPluginLoaders.append(loader.data());
@@ -105,17 +109,14 @@
     
     NmUiExtensionInterface *interface = NULL;    
     foreach (QPluginLoader *loader, mPluginLoaders) {      
-        NMLOG(QString("Plugin fileName() : %1").arg(loader->fileName()));
-        QString fileName = loader->fileName();
-        if (fileName.contains(NmsPluginExtensionName, Qt::CaseInsensitive) == false) {
-            QObject *pluginInstance = loader->instance();
-            interface = qobject_cast<NmUiExtensionInterface*>(pluginInstance);
-            if (interface) {
-                mExtensions.append(interface);
-            }
+        NM_COMMENT(QString("Plugin fileName() : %1").arg(loader->fileName()));
+        QString fileName = loader->fileName();        
+        QObject *pluginInstance = loader->instance();
+        interface = qobject_cast<NmUiExtensionInterface*>(pluginInstance);
+        if (interface) {
+            mExtensions.append(interface);
         }
-    }            
-    NMLOG(QString("<-- NmUiExtensionManager::loadExtensionPlugins"));
+    }
 }
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/nmailui/src/nmuriserviceinterface.cpp	Fri May 28 13:56:43 2010 +0300
@@ -0,0 +1,360 @@
+/*
+* Copyright (c) 2010 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: NMail Application Launcher interface used for interfacing between
+*              QT highway and other applications
+*
+*/
+
+//  INCLUDES
+#include <xqaiwdecl.h>
+#include "nmuiheaders.h"
+
+/*!
+    \class NmStartParamDataHelper
+    \brief A helper class for processing the data given to the actual service.
+*/
+class NmStartParamDataHelper
+{
+public:
+
+    /*!
+        Class constructor.
+    */
+    inline NmStartParamDataHelper()
+    : mSubject(0),
+      mToAddresses(0),
+      mCcAddresses(0),
+      mBccAddresses(0)
+    {
+        NM_FUNCTION;
+    }
+
+    /*!
+        Class destructor.
+    */
+    inline ~NmStartParamDataHelper()
+    {
+        NM_FUNCTION;
+    }
+
+    /*!
+        Extracts the data from the given QString into the class members.
+        \param data QString containing the data.
+        \return True if success, false otherwise.
+    */
+    inline bool extractData(const QString &data)
+    {
+        NM_FUNCTION;
+        
+        bool success = false;
+        
+        QUrl uri(data);
+        
+        if (uri.isValid()) {
+            
+            mSubject = new QString(uri.queryItemValue(emailSendSubjectKey));
+            QString to = uri.path();
+            QString cc = uri.queryItemValue(emailSendCcKey);
+            QString bcc = uri.queryItemValue(emailSendBccKey);
+            
+            addAddressesToList(to, &mToAddresses);
+            addAddressesToList(cc, &mCcAddresses);
+            addAddressesToList(bcc, &mBccAddresses);
+            
+            success = true;
+        }
+        
+        return success;
+    }
+
+    /*!
+        Appends the given addresses into the given list.
+        \param address The addresses to append.
+        \param list The list where the addresses are appended to.
+    */
+    inline void addAddressesToList(QString &addresses,
+                                   QList<NmAddress*> **list)
+    {
+        NM_FUNCTION;
+        
+        if (!addresses.isEmpty()) {
+
+            QList<NmAddress*> foundAddresses;
+                    
+            // Process multiple addresses.
+            if (addresses.contains(",")) {
+                QString str;               
+                while (addresses.contains(",")) {
+                    str = addresses.section(",", 0, 0); // Get the occurance.
+                    addresses.remove(0, (addresses.indexOf(",")+1)); // Remove the occurance.
+                    if (!str.isEmpty()) { // In case str would be empty on some error data. 
+                        NmAddress *address = new NmAddress(str);
+                        foundAddresses.append(address);    
+                    }
+                }
+            }
+            if (!addresses.isEmpty()) { // In case addresses would be empty on some error data. 
+                // Last one or single address.
+                NmAddress *address = new NmAddress(addresses);
+                foundAddresses.append(address);
+            }
+            // Append the found addresses into the given list.
+            *list = new QList<NmAddress*>();
+            (*list)->append(foundAddresses);
+        }
+    }
+        
+    /*!
+        Deletes the class members. Must be used if NmUiStartParam does not
+        take ownership of the members.
+    */
+    inline void deleteData()
+    {
+        NM_FUNCTION;
+        
+        delete mSubject;
+        mSubject = 0;
+
+        if (mToAddresses) {
+            qDeleteAll(*mToAddresses);
+            delete mToAddresses;
+            mToAddresses = 0;
+        }
+
+        if (mCcAddresses) {
+            qDeleteAll(*mCcAddresses);
+            delete mCcAddresses;
+            mCcAddresses = 0;
+        }
+
+        if (mBccAddresses) {
+            qDeleteAll(*mBccAddresses);
+            delete mBccAddresses;
+            mBccAddresses = 0;
+        }
+    }
+
+public: // Data
+
+    QString *mSubject; // Not owned.
+    QList<NmAddress*> *mToAddresses; // Not owned.
+    QList<NmAddress*> *mCcAddresses; // Not owned.
+    QList<NmAddress*> *mBccAddresses; // Not owned.
+};
+
+/*!
+    \class NmUriServiceInterface
+    \brief NMail application service interface which provides an email sending
+           interface for other application using the Qt Highway.
+*/
+
+/*!
+    Class constructor.
+*/
+NmUriServiceInterface::NmUriServiceInterface(QObject *parent,
+                                               NmUiEngine &uiEngine,
+                                               NmApplication *application)
+#ifndef NM_WINS_ENV
+    : XQServiceProvider(emailServiceName+"."+XQI_URI_VIEW, parent),
+#else
+    : QObject(parent),
+#endif
+      mApplication(application),
+      mUiEngine(uiEngine),
+      mAsyncReqId(0),
+      mStartParam(NULL),
+      mSelectionDialog(NULL),
+      mCurrentView(NULL)
+{
+#ifndef NM_WINS_ENV
+    publishAll();
+#endif
+}
+
+
+/*!
+    Class desctructor.
+*/
+NmUriServiceInterface::~NmUriServiceInterface()
+{
+    NM_FUNCTION;
+    
+    delete mStartParam;
+    delete mSelectionDialog;
+}
+
+
+/*!
+    Queries the user for a mailbox to use.
+    \param mailboxId Where the ID of the selected mailbox is set.
+    \return True if a mailbox was selected, false otherwise.
+*/
+void NmUriServiceInterface::selectionDialogClosed(NmId &mailboxId)
+{
+    NM_FUNCTION;
+    
+    if (mailboxId.id()) { // mailbox selected
+        launchEditorView(mailboxId);
+    }
+    else {
+        cancelService();
+    }
+}
+
+
+/*!
+    Used from external applications to handle mailto: uri's.
+
+    \param data <mailto:> uri
+*/
+bool NmUriServiceInterface::view(const QString& uri)
+{
+    NM_FUNCTION;
+    
+#ifndef NM_WINS_ENV
+    
+    // Make sure that nmail stays background if user presses back in editorview
+    mApplication->updateVisibilityState();
+    
+    HbMainWindow *mainWindow = mApplication->mainWindow();
+    mCurrentView = mainWindow->currentView();
+
+    // Hide the current view.
+    if (mCurrentView) {
+        mCurrentView->hide();
+    }
+    
+    // Check the given data.
+    NmStartParamDataHelper dataHelper;
+    bool validData = dataHelper.extractData(uri);
+     
+    NmMailboxListModel &mailboxListModel = mUiEngine.mailboxListModel();
+    const int count = mailboxListModel.rowCount();
+    NmId mailboxId(0);
+
+    mAsyncReqId = setCurrentRequestAsync();
+
+    if (!validData) {
+        // Failed to extract the data!
+        NM_ERROR(1,"NmUriServiceInterface::view(): failed to process the given data");
+        cancelService();
+    }
+    else if (count == 0) {
+        HbDeviceMessageBox note(hbTrId("txt_mail_dialog_no_mailboxes_defined"),
+                          HbMessageBox::MessageTypeInformation);
+        note.setTimeout(HbMessageBox::NoTimeout);
+        note.show();
+        cancelService();
+    }
+    else { // count > 0
+        // Make sure the NMail application is in the foreground.
+        XQServiceUtil::toBackground(false);
+        mainWindow->show();
+
+    	mStartParam = new NmUiStartParam(
+        	NmUiViewMessageEditor,
+	        0, // account id
+	        0, // folder id
+    	    0, // message id
+    	    NmUiEditorMailto, // editor start mode
+	        dataHelper.mToAddresses, // address list
+    	    0, // attachment list
+        	true, // start as service
+	        dataHelper.mSubject, // message subject
+	        dataHelper.mCcAddresses, // list containing cc recipient addresses
+    	    dataHelper.mBccAddresses // list containing bcc recipient addresses
+	    );
+
+        if (count == 1) {
+            // A single mailbox exists.
+            QModelIndex modelIndex = mailboxListModel.index(0, 0);
+            QVariant mailbox(mailboxListModel.data(modelIndex));
+            NmMailboxMetaData *mailboxMetaData = mailbox.value<NmMailboxMetaData*>();
+            mailboxId = mailboxMetaData->id();
+        	launchEditorView(mailboxId);
+        }
+        else { // count > 1
+            if (!mSelectionDialog) {
+                mSelectionDialog =
+                    new NmMailboxSelectionDialog(mUiEngine.mailboxListModel());
+            }
+            connect(mSelectionDialog,SIGNAL(selectionDialogClosed(NmId&)),
+                this,SLOT(selectionDialogClosed(NmId&)));
+            mSelectionDialog->open();
+
+            // launch the editor when the dialog is closed
+        }
+    }
+    
+    return true;
+}
+
+/*!
+    Called when mailbox id is known and editor can be opened
+    \param mailboxId mailbox using in editor
+ */
+void NmUriServiceInterface::launchEditorView(NmId mailboxId)
+{
+    NM_FUNCTION;
+    NM_COMMENT(QString("NmUriServiceInterface::launchEditorView(): mailboxId=%1").arg(mailboxId.id()));
+    
+    // Make the previous view visible again.
+    if (mCurrentView) {
+        mCurrentView->show();
+        mCurrentView = NULL;
+    }
+
+    if (mStartParam) {
+        mStartParam->setMailboxId(mailboxId);
+        mApplication->enterNmUiView(mStartParam);
+        mStartParam = NULL; // ownership passed
+    }
+    completeRequest(mAsyncReqId, 1);
+    mAsyncReqId = 0;
+}
+
+void NmUriServiceInterface::cancelService()
+{
+    NM_FUNCTION;
+    
+    delete mStartParam;
+    mStartParam = NULL;
+
+    // If the service was started as embedded, do not hide the app.
+    if (!XQServiceUtil::isEmbedded()) {
+        XQServiceUtil::toBackground(true);
+    }
+
+    completeRequest(mAsyncReqId, 0);
+    mAsyncReqId = 0;
+
+    // If started as service, the application must be closed now.
+    if (XQServiceUtil::isService()) {
+        connect(this, SIGNAL(returnValueDelivered()),
+            mApplication, SLOT(delayedExitApplication()));
+    }
+    else {
+        // Make the previous view visible again
+        if (mCurrentView) {
+            mCurrentView->show();
+            mCurrentView = NULL;
+        }
+    }
+}
+
+#endif /* NM_WINS_ENV */
+
+
+
+// End of file.
--- a/emailuis/nmailui/src/nmutilities.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmutilities.cpp	Fri May 28 13:56:43 2010 +0300
@@ -47,6 +47,8 @@
     QList<NmAddress> &recipients,
     NmAddressValidationType type )
 {
+    NM_FUNCTION;
+    
     // validate TO addresses
     QList<NmAddress> toRecipients = message.envelope().toRecipients();
     int recipientCount = toRecipients.count();
@@ -95,6 +97,8 @@
 */
 bool NmUtilities::isValidEmailAddress( const QString &emailAddress )
 {
+    NM_FUNCTION;
+    
     return EmailAddressPattern.exactMatch(emailAddress);
 }
 
@@ -103,6 +107,8 @@
 */
 QString NmUtilities::addressToDisplayName( const NmAddress &address )
 {
+    NM_FUNCTION;
+    
     QString emailAddress = address.address();
     QString displayName = address.displayName();
 
@@ -121,6 +127,8 @@
 */
 bool NmUtilities::parseEmailAddress( const QString &emailAddress, NmAddress &address )
 {
+    NM_FUNCTION;
+    
     bool foundAddress = false;
 
     QRegExp rx(EmailAddressPattern);
@@ -147,6 +155,8 @@
 */
 QString NmUtilities::cleanupDisplayName( const QString &displayName )
 {
+    NM_FUNCTION;
+    
     // find the first and last position that is NOT one of the characters below
     QRegExp rx("[^\\s\"<>]");
     int firstPos = std::max(rx.indexIn(displayName), 0);
@@ -165,6 +175,8 @@
 */
 int NmUtilities::openFile(QFile &file)
 {
+    NM_FUNCTION;
+    
     int ret(NmNotFoundError);
     XQApplicationManager aiwMgr;
     XQAiwRequest *request(NULL);
@@ -193,6 +205,8 @@
 */
 int NmUtilities::openFile(XQSharableFile &file)
 {
+    NM_FUNCTION;
+    
     int ret(NmNotFoundError);
     XQApplicationManager aiwMgr;
     XQAiwRequest *request(NULL);
@@ -220,6 +234,8 @@
  */
 QString NmUtilities::truncate( const QString &string, int length )
 {
+    NM_FUNCTION;
+    
     if (string.length() <= length) {
         return string;
     }
@@ -235,6 +251,8 @@
  */
 void NmUtilities::displayErrorNote(QString noteText)
 {
+    NM_FUNCTION;
+    
 	HbNotificationDialog *note = new HbNotificationDialog();
 	
 	note->setIcon(HbIcon(QLatin1String("note_warning")));
@@ -253,6 +271,8 @@
  */
 QString NmUtilities::attachmentSizeString(const int sizeInBytes)
 {
+    NM_FUNCTION;
+    
     qreal sizeMb = (qreal)sizeInBytes / (qreal)NmMegabyte;
     if (sizeMb < 0.1) {
         // 0.1 Mb is the minimum size shown for attachment
@@ -262,35 +282,6 @@
 }
 
 /*!
-    takes care of necessary error/information note displaying based on the given operation completion event
-    returns boolean whether settings should be opened or not
-*/
-bool NmUtilities::displayOperationCompletionNote(const NmOperationCompletionEvent &event)
-{
-    bool openSettings(false);
-    // nothing to do in successfull or cancelled case
-    if(event.mCompletionCode != NmNoError && event.mCompletionCode != NmCancelError) {
-        if(event.mOperationType == Synch && event.mCompletionCode == NmAuthenticationError) {
-/*
- * Commented out temporarily, because of wk18 HbDialog API deprecation.
- *         openSettings = displayQuestionNote(hbTrId("txt_mail_dialog_address_or_password_incorrect"));
- */
-        }
-        if(event.mOperationType == Synch && event.mCompletionCode == NmServerConnectionError) {
-/*
- * Commented out temporarily, because of wk18 HbDialog API deprecation.
- *         openSettings = displayQuestionNote(hbTrId("txt_mail_dialog_server_settings_incorrect"));
- */
-        }
-        // following applies to all operation/event types
-        if(event.mCompletionCode == NmConnectionError) {
-            displayWarningNote(hbTrId("txt_mail_dialog_mail_connection_error"));
-        }
-    }
-    return openSettings;
-}
-
-/*!
     Displays a note with Yes/No buttons. Note has no timeout, i.e. it has to be dismissed manually.
     Returns pointer to dialog so that caller can take ownership and handle deletion.
     Parameter 'receiver' is the object and 'member' is the slot where user selection is passed. 
@@ -298,6 +289,8 @@
 HbMessageBox* NmUtilities::displayQuestionNote(
     QString noteText, QObject* receiver, const char* member)
 {
+    NM_FUNCTION;
+    
     HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
     messageBox->setText(noteText);
     messageBox->setTimeout(HbMessageBox::NoTimeout); // Note has to be dismissed manually
@@ -310,6 +303,8 @@
  */
 void NmUtilities::displayWarningNote(QString noteText)
 {
+    NM_FUNCTION;
+    
     HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeWarning);
     messageBox->setText(noteText);
     messageBox->setTimeout(NmShortInterval);
@@ -327,6 +322,8 @@
 */
 QString NmUtilities::createReplyHeader(const NmMessageEnvelope &env)
 {
+    NM_FUNCTION;
+    
     QString ret = "<html><body><br><br>";
     // Append "----- Original message ----" text
     ret+=hbTrId("txt_mail_editor_reply_original_msg");                  
--- a/emailuis/nmailui/src/nmviewerheader.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmviewerheader.cpp	Fri May 28 13:56:43 2010 +0300
@@ -38,6 +38,8 @@
     mRecipientsBox(NULL),
     mViewerView(NULL)
 {
+    NM_FUNCTION;
+    
     loadWidgets();
 }
 
@@ -46,6 +48,7 @@
 */
 NmViewerHeader::~NmViewerHeader()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -53,6 +56,8 @@
 */
 void NmViewerHeader::setView(NmViewerView* view)
 {
+    NM_FUNCTION;
+    
     mViewerView = view;
 }
 
@@ -61,6 +66,8 @@
 */
 void NmViewerHeader::loadWidgets()
 {
+    NM_FUNCTION;
+    
     // Scale header widget to screen width
     setSizePolicy(QSizePolicy::Minimum, QSizePolicy::MinimumExpanding); 
 
@@ -105,6 +112,8 @@
     const QStyleOptionGraphicsItem *option,
     QWidget *widget)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(option);
     Q_UNUSED(widget);
     if (painter) {
@@ -126,6 +135,8 @@
 */
 void NmViewerHeader::setMessage(NmMessage* message)
 {
+    NM_FUNCTION;
+    
     mMessage=message;
     setHeaderData();
 }
@@ -139,6 +150,8 @@
 */
 void NmViewerHeader::updateMessageData(NmMessage* message)
 {
+    NM_FUNCTION;
+    
     if (message){
         mMessage=message;
         // Set recipients to text edit field as html 
@@ -156,6 +169,8 @@
 */
 void NmViewerHeader::setHeaderData()
 {
+    NM_FUNCTION;
+    
     if (mMessage) {
         // Background is all white always, so force text color to black
         QColor textColor(Qt::black);
@@ -222,6 +237,8 @@
 */ 
 void NmViewerHeader::rescaleHeader(const QSizeF layoutReso)
 {  
+    NM_FUNCTION;
+    
     setMinimumWidth(layoutReso.width());
     setMaximumWidth(layoutReso.width());
 }
@@ -231,6 +248,8 @@
 */
 void NmViewerHeader::createExpandableHeader()
 {
+    NM_FUNCTION;
+    
     if (mHeaderBox) {        // Initialize recipient box
         if (!mRecipientsBox){
             mRecipientsBox = new HbTextEdit();
@@ -267,6 +286,8 @@
                                             const QList<NmAddress> &to,
                                             const QList<NmAddress> &cc)
 {
+    NM_FUNCTION;
+    
     QString result;
     result.append("<html><body link=\"blue\" topmargin=\"0\" leftmargin=\"0\" marginheight=\"0\"");
     result.append("marginwidth=\"0\" bgcolor=\"white\" text=\"black\">");    
@@ -332,6 +353,8 @@
 */
 QString NmViewerHeader::addressToDisplayInHtml(const NmAddress &addr)
 {
+    NM_FUNCTION;
+    
     QString dispName;
     if (addr.displayName().length()!=0){
         dispName.append(NmUtilities::cleanupDisplayName(addr.displayName()));
@@ -353,6 +376,8 @@
 */
 void NmViewerHeader::cursorPositionChanged(int oldPos, int newPos)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(oldPos);
     QString string = mRecipientsBox->anchorAt(newPos); 
     if (mViewerView&&string.contains("mailto:",Qt::CaseSensitive)){
--- a/emailuis/nmailui/src/nmviewerserviceinterface.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmviewerserviceinterface.cpp	Fri May 28 13:56:43 2010 +0300
@@ -51,6 +51,7 @@
 */
 NmViewerServiceInterface::~NmViewerServiceInterface()
 {
+    NM_FUNCTION;
 }
 
 
@@ -59,7 +60,8 @@
  */
 void NmViewerServiceInterface::viewMessage(QVariant mailboxId, QVariant folderId, QVariant messageId)
 {
-    NMLOG("NmViewerServiceInterface::viewMessage()");
+    NM_FUNCTION;
+
 #ifndef NM_WINS_ENV
     mAsyncReqId = setCurrentRequestAsync();
 
@@ -67,6 +69,9 @@
     NmId messageNmId(messageId.toULongLong());
     NmId folderNmId(folderId.toULongLong());
 
+	// Make sure the app stays background if user presses back in viewer view
+	bool visible = mApplication->updateVisibilityState();
+
     NmMessage *message = mUiEngine.message( mailboxNmId, folderNmId, messageNmId );
     if (message) {
         // bring application to foreground
@@ -92,7 +97,7 @@
         // Message was not found
 
         // if started as embedded, do not hide the app
-		if (!XQServiceUtil::isEmbedded()) {
+		if (!XQServiceUtil::isEmbedded() && !visible) {
 			XQServiceUtil::toBackground(true);
 		}
 
--- a/emailuis/nmailui/src/nmviewerview.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmviewerview.cpp	Fri May 28 13:56:43 2010 +0300
@@ -73,6 +73,8 @@
 mViewReady(false),
 mWaitNoteCancelled(false)
     {
+    NM_FUNCTION;
+    
     // Create documentloader
     mDocumentLoader = new NmUiDocumentLoader(mMainWindow);
     // Get screensize
@@ -93,6 +95,8 @@
 */
 NmViewerView::~NmViewerView()
 {
+    NM_FUNCTION;
+    
     delete mWebView;
     mWebView = NULL;
     delete mMessage;
@@ -112,6 +116,8 @@
 */
 void NmViewerView::aboutToExitView()
 {
+    NM_FUNCTION;
+    
     // View is about to exit, for safety, stop 
     // loading of content before closing the view
     if (mWebView){
@@ -127,6 +133,8 @@
 */
 void NmViewerView::loadViewLayout()
 {
+    NM_FUNCTION;
+    
     // Use document loader to load the view
     bool ok = false;
     setObjectName(QString(NMUI_MESSAGE_VIEWER_VIEW));
@@ -134,10 +142,9 @@
     objectList.append(this);
     // Pass the view to documentloader. Document loader uses this view
     // when docml is parsed, instead of creating new view.
-    if (mDocumentLoader) {
-        mDocumentLoader->setObjectTree(objectList);
-        mWidgetList = mDocumentLoader->load(NMUI_MESSAGE_VIEWER_XML, &ok);
-    }
+    // documentloader is created in constructor
+    mDocumentLoader->setObjectTree(objectList);
+    mWidgetList = mDocumentLoader->load(NMUI_MESSAGE_VIEWER_XML, &ok);
     int widgetCount = mWidgetList.count();
     if (ok == true && widgetCount)
     {
@@ -161,16 +168,18 @@
             // Get scroll area contents and set layout margins
             mScrollAreaContents = qobject_cast<HbWidget *>(
                     mDocumentLoader->findObject(NMUI_MESSAGE_VIEWER_SCROLL_AREA_CONTENTS));
-            if (mScrollAreaContents->layout()){
-                mScrollAreaContents->layout()->setContentsMargins(0,0,0,0);
+            if (mScrollAreaContents) {
+                QGraphicsLayout *layout = mScrollAreaContents->layout();
+                if (layout){
+                    layout->setContentsMargins(0,0,0,0);
+                }
+                // Set white pixmap to backgrounditem 
+                QPixmap whitePixmap(10,10);
+                whitePixmap.fill(Qt::white);
+                QGraphicsPixmapItem *pixmapItem = new QGraphicsPixmapItem(whitePixmap);
+                mScrollAreaContents->setBackgroundItem(pixmapItem);
             }
 
-            // Set white pixmap to backgrounditem 
-            QPixmap whitePixmap(10,10);
-            whitePixmap.fill(Qt::white);
-            QGraphicsPixmapItem *pixmapItem = new QGraphicsPixmapItem(whitePixmap);
-            mScrollAreaContents->setBackgroundItem(pixmapItem);
-
             // Load headerwidget
             mHeaderWidget = qobject_cast<NmViewerHeader *>(
                     mDocumentLoader->findObject(NMUI_MESSAGE_VIEWER_HEADER));
@@ -187,21 +196,26 @@
             if (mWebView) {
                 mWebView->setParentView(this);
                 // Set auto load images and private browsing(no history) attributes
-                mWebView->settings()->setAttribute(QWebSettings::AutoLoadImages, true);
-                mWebView->settings()->setAttribute(QWebSettings::PrivateBrowsingEnabled, true);                                
+                QWebSettings *settings = mWebView->settings();
+                if (settings) {
+                    settings->setAttribute(QWebSettings::AutoLoadImages, true);
+                    settings->setAttribute(QWebSettings::PrivateBrowsingEnabled, true);   
+                }                             
                 HbEditorInterface editorInterface(mWebView);
                 editorInterface.setInputConstraints(HbEditorConstraintIgnoreFocus);
                 mWebView->setAcceptedMouseButtons(Qt::NoButton);
-                if (mWebView->page()){
-                    mWebView->page()->mainFrame()->setScrollBarPolicy(Qt::Vertical,
-                                                                      Qt::ScrollBarAlwaysOff);
-                    mWebView->page()->mainFrame()->setScrollBarPolicy(Qt::Horizontal,
-                                                                      Qt::ScrollBarAlwaysOff);
-                    connect(mWebView->page()->mainFrame(),
-                            SIGNAL(contentsSizeChanged(const QSize&)),
-                        this, SLOT(scaleWebViewWhenLoading(const QSize&)));
+                QWebPage *page = mWebView->page();
+                if (page) {
+                    QWebFrame *frame = page->mainFrame();
+                    if (frame) {
+                        frame->setScrollBarPolicy(Qt::Vertical,Qt::ScrollBarAlwaysOff);
+                        frame->setScrollBarPolicy(Qt::Horizontal, Qt::ScrollBarAlwaysOff);
+                        connect(mWebView->page()->mainFrame(),
+                                SIGNAL(contentsSizeChanged(const QSize&)),
+                            this, SLOT(scaleWebViewWhenLoading(const QSize&)));  
+                    }
                 }
-             }
+            }
         }
     }
 }
@@ -211,14 +225,15 @@
 */
 void NmViewerView::viewReady()
 {
+    NM_FUNCTION;
+    
     if (!mViewReady){
         // Set mailbox name to title
         setMailboxName();
         // Create toolbar if needed
         if (mToolbarEnabled) {
             createToolBar();
-        }
-        else {
+        } else {
             // Connect options menu about to show to create options menu function
             QObject::connect(menu(), SIGNAL(aboutToShow()),
                     this, SLOT(createOptionsMenu())); 
@@ -226,12 +241,11 @@
             NmAction *dummy = new NmAction(0);
             menu()->addAction(dummy);
         }
-        
-        
-        if (mHeaderWidget){
+                
+        if (mHeaderWidget) {
             QPointF contentWidgetPos = mScrollArea->pos();
             qreal headerHeight = mHeaderWidget->geometry().height();
-            if(mMainWindow->orientation()==Qt::Horizontal) {
+            if (mMainWindow->orientation() == Qt::Horizontal) {
                 const QPointF pointToWebView(contentWidgetPos.x(), headerHeight+NmHeaderMargin);
                 mScrollArea->scrollContentsTo(pointToWebView,0);
             }
@@ -240,7 +254,7 @@
         // Run fetchmessage in queue
         QMetaObject::invokeMethod(this, "fetchMessage", Qt::QueuedConnection);
         // Set view ready
-        mViewReady=true;
+        mViewReady = true;
     }
 }
 
@@ -249,18 +263,17 @@
 */
 void NmViewerView::loadMessage()
 {
+    NM_FUNCTION;
+    
     if (mMessage) {
         delete mMessage;
         mMessage = NULL;
     }
-    NmId mailboxId;
-    NmId folderId;
-    NmId msgId;
     // Read start params and message object
     if (mStartParam){
-        mailboxId = mStartParam->mailboxId();
-        folderId = mStartParam->folderId();
-        msgId = mStartParam->messageId();
+        NmId mailboxId = mStartParam->mailboxId();
+        NmId folderId = mStartParam->folderId();
+        NmId msgId = mStartParam->messageId();
         mMessage = mUiEngine.message(mailboxId, folderId, msgId);
     }
 }
@@ -271,7 +284,8 @@
 */
 void NmViewerView::fetchMessage()
 {
-#ifdef Q_OS_SYMBIAN
+    NM_FUNCTION;
+    
     if (mMessage) {
         NmId mailboxId = mStartParam->mailboxId();
         NmId folderId = mStartParam->folderId();
@@ -295,28 +309,13 @@
                         SIGNAL(operationCompleted(int)),
                         this,
                         SLOT(messageFetched(int)));
-
-                delete mWaitDialog;
-                mWaitDialog = NULL;
-                // Create new wait dialog and set it to me modal with dimmed background
-                mWaitDialog = new HbProgressDialog(HbProgressDialog::WaitDialog);
-                mWaitDialog->setModal(true);
-                mWaitDialog->setBackgroundFaded(true);
-                connect(mWaitDialog, SIGNAL(cancelled()), this, SLOT(waitNoteCancelled()));
-                mWaitDialog->setText(hbTrId("txt_mail_dialog_loading_mail_content"));
-                // Display wait dialog
-                mWaitDialog->show();
+                createAndShowWaitDialog();
             }
-        }
-        else {
+        } else {
             // message is fetched
             setMessageData();
         }
-
     }
-#else
-    setMessageData();
-#endif
 }
 
 /*!
@@ -324,6 +323,8 @@
  */
 void NmViewerView::messageFetched(int result)
 {
+    NM_FUNCTION;
+    
     mWaitDialog->close();
 
     if (result == NmNoError && mMessageFetchingOperation) {
@@ -331,14 +332,11 @@
             delete mMessage;
             mMessage = NULL;
         }
-        NmId mailboxId;
-        NmId folderId;
-        NmId msgId;
         // Read start params and message object
         if (mStartParam) {
-            mailboxId = mStartParam->mailboxId();
-            folderId = mStartParam->folderId();
-            msgId = mStartParam->messageId();
+            NmId mailboxId = mStartParam->mailboxId();
+            NmId folderId = mStartParam->folderId();
+            NmId msgId = mStartParam->messageId();
             mMessage = mUiEngine.message(mailboxId, folderId, msgId);
         }
         setMessageData();
@@ -355,6 +353,8 @@
  */
 void NmViewerView::waitNoteCancelled()
 {
+    NM_FUNCTION;
+    
     if (!mWaitNoteCancelled) {
         if (mMessageFetchingOperation && mMessageFetchingOperation->isRunning()) { 
 	        mMessageFetchingOperation->cancelOperation();
@@ -370,6 +370,8 @@
 */
 void NmViewerView::setMessageData()
 {
+    NM_FUNCTION;
+    
     // Connect to observe orientation change events
     connect(mApplication.mainWindow(), SIGNAL(orientationChanged(Qt::Orientation)),
                 this, SLOT(orientationChanged(Qt::Orientation)));
@@ -411,6 +413,8 @@
 */
 void NmViewerView::setAttachmentList()
 {
+    NM_FUNCTION;
+    
     // Load headerwidget
     mAttaWidget = qobject_cast<NmAttachmentListWidget *>(
             mDocumentLoader->findObject(NMUI_MESSAGE_VIEWER_ATTALIST));
@@ -464,11 +468,16 @@
 */
 void NmViewerView::openAttachment(int index)
 {
+    NM_FUNCTION;
+    
     NmId attaId = mAttaIdList.at(index);
     // reload message to get updates part sizes
     loadMessage();
     QList<NmMessagePart*> messageParts;
     mMessage->attachmentList(messageParts);
+    NmId mailboxId = mMessage->envelope().mailboxId();
+    NmId folderId = mMessage->envelope().folderId();
+    NmId messageId = mMessage->envelope().messageId();
     for (int i = 0; i < messageParts.count(); i++) {
         // message part found have to found
         // and its fetched size is smaller than size, then start part fetch
@@ -477,20 +486,14 @@
             // do not start if there's already ongoing fetch
             if (mAttaIndexUnderFetch == NmNotFoundError) {
                 mAttaIndexUnderFetch = index;
-                mAttaManager.fetchAttachment(
-                        mMessage->envelope().mailboxId(),
-                        mMessage->envelope().folderId(),
-                        mMessage->envelope().messageId(),
-                        attaId);
+                mAttaManager.fetchAttachment(mailboxId, folderId,
+                                             messageId, attaId);
             }
         }
         // attachment is fetched, open file
         else if (messageParts[i]->partId() == attaId) {
-            XQSharableFile file = mUiEngine.messagePartFile(
-                    mMessage->envelope().mailboxId(),
-                    mMessage->envelope().folderId(),
-                    mMessage->envelope().messageId(),
-                    attaId);
+            XQSharableFile file = mUiEngine.messagePartFile(mailboxId, folderId,
+                                                            messageId, attaId);
             NmUtilities::openFile(file);
             file.close();
         }
@@ -502,8 +505,13 @@
 */
 QString NmViewerView::formatMessage()
 {
+    NM_FUNCTION;
+    
     QString msg = "";
     // null pointer check for mMessage is done before calling this function
+    NmId mailboxId = mMessage->envelope().mailboxId();
+    NmId folderId = mMessage->envelope().folderId();
+    NmId messageId = mMessage->envelope().messageId();
     NmMessagePart *html = mMessage->htmlBodyPart();
     if (html) {
         QList<NmMessagePart*> parts;
@@ -512,26 +520,24 @@
             NmMessagePart *child = parts[i];
             // Browse through embedded image parts and add those
             // the web view.
-            quint32 fetchedSize = child->fetchedSize();
-            quint32 size = child->size();
-            if (fetchedSize >= size &&
-                    child->contentType().startsWith("image", Qt::CaseInsensitive)) {
+            bool isFetched = child->fetchedSize() >= child->size();
+            if (child->contentType().startsWith("image", Qt::CaseInsensitive)) {
                 QString contentId = child->contentId();
-                int ret = mUiEngine.contentToMessagePart(
-                        mMessage->envelope().mailboxId(),
-                        mMessage->envelope().folderId(),
-                        mMessage->envelope().messageId(),
-                        *child);
-                if (ret == NmNoError) {
-                  mWebView->addContent(contentId, QVariant::fromValue(child->binaryContent()));
+                if (isFetched) {
+                    int ret = mUiEngine.contentToMessagePart(
+                            mailboxId, folderId, messageId, *child);
+                    if (ret == NmNoError) {
+                      mWebView->addContent(contentId, QVariant::fromValue(child->binaryContent()), 
+                              child->partId(), isFetched);
+                    }
+                }
+                else {
+                    mWebView->addContent(contentId, QVariant::fromValue(QByteArray()), 
+                            child->partId(), isFetched);
                 }
             }
         }
-        int ret = mUiEngine.contentToMessagePart(
-                mMessage->envelope().mailboxId(),
-                mMessage->envelope().folderId(),
-                mMessage->envelope().messageId(),
-                *html);
+        int ret = mUiEngine.contentToMessagePart(mailboxId, folderId, messageId, *html);
         if (ret == NmNoError) {
             msg = html->textContent();
         }
@@ -539,15 +545,12 @@
     else {
         NmMessagePart *plain = mMessage->plainTextBodyPart();
         if (plain) {
-            int ret = mUiEngine.contentToMessagePart(
-                    mMessage->envelope().mailboxId(),
-                    mMessage->envelope().folderId(),
-                    mMessage->envelope().messageId(),
-                    *plain);
+            int ret = mUiEngine.contentToMessagePart(mailboxId, folderId,
+                                                     messageId, *plain);
             if (ret == NmNoError) {
-                QTextDocument doku;
+                QTextDocument document;
                 // set font
-                QFont currentFont = doku.defaultFont();
+                QFont currentFont = document.defaultFont();
                 currentFont.setWeight(QFont::Normal);
                 qreal secondarySize;
                 HbStyle myStyle;
@@ -557,10 +560,10 @@
                     fontSpec.setTextHeight(secondarySize);
                     currentFont.setPixelSize(fontSpec.font().pixelSize());
                 }
-                doku.setDefaultFont(currentFont);
+                document.setDefaultFont(currentFont);
                 // convert to html
-                doku.setPlainText(plain->textContent());
-                msg = doku.toHtml();
+                document.setPlainText(plain->textContent());
+                msg = document.toHtml();
 
                 if (qApp->layoutDirection()==Qt::RightToLeft){
                     // add right alignment to document css section
@@ -589,6 +592,8 @@
 */
 void NmViewerView::reloadViewContents(NmUiStartParam* startParam)
 {
+    NM_FUNCTION;
+    
     // Check start parameter validity, message view cannot
     // be updated if given parameter is zero.
     if (startParam && startParam->viewId() == NmUiViewMessageViewer &&
@@ -613,6 +618,8 @@
 */
 NmUiViewId NmViewerView::nmailViewId() const
 {
+    NM_FUNCTION;
+    
     return NmUiViewMessageViewer;
 }
 
@@ -621,6 +628,8 @@
 */
 void NmViewerView::webFrameLoaded(bool loaded)
 {
+    NM_FUNCTION;
+    
     if (loaded){
         webFrameloadingCompleted = true;
         // Scale web view after loading the
@@ -634,31 +643,29 @@
 */
 void NmViewerView::scaleWebViewWhenLoading(const QSize &size)
 {
+    NM_FUNCTION;
+    
     // Try to scale web view while mainframe is being loaded.
     // So that screen is scrollable even before images are fully loaded
     // First check that new size is different than previous, no need to react if
     // same size value is received more than once.
-    if (size!=mLatestLoadingSize){
-        if (!webFrameloadingCompleted&&mWebView&&mWebView->page()&&
-            (size.width()>mScreenSize.width()||size.height()>mScreenSize.height())) {
+    if (size != mLatestLoadingSize) {
+        if (!webFrameloadingCompleted && mWebView && mWebView->page() &&
+            (size.width() > mScreenSize.width() || size.height() > mScreenSize.height())) {
             int width = (int)size.width();
             int height = (int)size.height();
             // Set content (webview) width
             if (mDisplayingPlainText){
-                mWebView->setMaximumWidth(mScreenSize.width());
-                mWebView->setMinimumWidth(mScreenSize.width());
-                mWebView->setPreferredWidth(mScreenSize.width());
+                setWebViewWidth(mScreenSize.width());
             }
             else {
-                 mWebView->setMaximumWidth(width);
-                 mWebView->setMinimumWidth(width);
-                 mWebView->setPreferredWidth(width);
+                setWebViewWidth(width);
             }
             mWebView->setMinimumHeight(height);
             mWebView->setPreferredHeight(height);
         }
     }
-    mLatestLoadingSize=size;
+    mLatestLoadingSize = size;
 }
 
 /*!
@@ -666,21 +673,18 @@
 */
 void NmViewerView::scaleWebViewWhenLoaded()
 {
+    NM_FUNCTION;
+    
     if (mWebView&&mWebView->page()) {
         QSizeF contentSize = mWebView->page()->mainFrame()->contentsSize();
         int width = (int)contentSize.width();
         int height = (int)contentSize.height();
         // Set content (webview) width
-        if (mDisplayingPlainText){
+        if (mDisplayingPlainText) {
             mWebView->page()->setPreferredContentsSize(mScreenSize);
-            mWebView->setMinimumWidth(mScreenSize.width());
-            mWebView->setMaximumWidth(mScreenSize.width());
-            mWebView->setPreferredWidth(mScreenSize.width());
-        }
-        else {
-            mWebView->setMinimumWidth(width);
-            mWebView->setMaximumWidth(width);
-            mWebView->setPreferredWidth(width);
+            setWebViewWidth(mScreenSize.width());
+        } else {
+            setWebViewWidth(width);
         }
         // Set content (webview) height
         if (mScrollAreaContents){
@@ -689,14 +693,9 @@
                 contentRect.setHeight(geometry().height());
                 mViewerContent->setPreferredHeight(contentRect.height());
                 qreal webViewHeight = geometry().height()-mHeaderWidget->geometry().height();
-                mWebView->setMinimumHeight(webViewHeight);
-                mWebView->setMaximumHeight(webViewHeight);
-                mWebView->setPreferredHeight(webViewHeight);
-            }
-            else{
-                mWebView->setMinimumHeight(height);
-                mWebView->setMaximumHeight(height);
-                mWebView->setPreferredHeight(height);
+                setWebViewHeighth(webViewHeight);
+            } else {
+                setWebViewHeighth(height);
             }
         }
     }
@@ -708,6 +707,8 @@
 */
 void NmViewerView::adjustViewDimensions()
 {
+    NM_FUNCTION;
+    
     // Update current screensize
     mScreenSize = mApplication.screenSize();
     // Scale header to screen width
@@ -758,6 +759,8 @@
 */
 void NmViewerView::orientationChanged(Qt::Orientation orientation)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(orientation);
     QTimer::singleShot(NmOrientationTimer, this, SLOT(adjustViewDimensions()));
 }
@@ -767,7 +770,8 @@
 */
 void NmViewerView::linkClicked(const QUrl& link)
 {
-    NMLOG("link clicked");
+    NM_FUNCTION;
+    
       if (link.scheme() == "http" ||
           link.scheme() == "https" ) {
           QDesktopServices::openUrl(link);
@@ -794,19 +798,9 @@
 */
 void NmViewerView::handleMouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 {
-    NmMailViewerWK* view = webView();
-    if (event&& view && mHeaderWidget && mScrollAreaContents) {
-        QPointF lastReleasePoint = event->pos();
-        QPointF contentWidgetPos = mScrollAreaContents->pos();
-        qreal headerHeight = mHeaderWidget->geometry().height();
-        qreal y = lastReleasePoint.y()-headerHeight;
-        y -= contentWidgetPos.y();
-        qreal x = lastReleasePoint.x()-contentWidgetPos.x();
-        const QPointF pointToWebView(x, y);
-        event->setPos(pointToWebView);
-        event->setAccepted(true);
-        view->sendMouseReleaseEvent(event);
-    }
+    NM_FUNCTION;
+    handleMouseEvent(event, false);
+
 }
 
 /*!
@@ -814,19 +808,8 @@
 */
 void NmViewerView::handleMousePressEvent(QGraphicsSceneMouseEvent *event)
 {
-    NmMailViewerWK* view = webView();
-    if (event&& view && mHeaderWidget && mScrollAreaContents) {
-        QPointF lastPressPoint = event->pos();
-        QPointF contentWidgetPos = mScrollAreaContents->pos();
-        qreal headerHeight = mHeaderWidget->geometry().height();
-        qreal y = lastPressPoint.y()-headerHeight;
-        y -= contentWidgetPos.y();
-        qreal x = lastPressPoint.x()-contentWidgetPos.x();
-        const QPointF pointToWebView(x, y);
-        event->setPos(pointToWebView);
-        event->setAccepted(true);
-        view->sendMousePressEvent(event);
-    }
+    NM_FUNCTION;
+    handleMouseEvent(event, true);
 }
 
 /*!
@@ -835,12 +818,14 @@
 */
 bool NmViewerView::eventOnTopOfHeaderArea(QGraphicsSceneMouseEvent *event)
 {
+    NM_FUNCTION;
+    
     bool ret(false);
-    if (event && mHeaderWidget){
+    if (event && mHeaderWidget) {
         QPointF lastReleasePoint = event->lastPos();
         QPointF contentWidgetPos = mScrollAreaContents->pos();
         int headerHeight = (int)mHeaderWidget->geometry().height();
-        if (lastReleasePoint.y()<headerHeight+contentWidgetPos.y()){
+        if (lastReleasePoint.y()<headerHeight+contentWidgetPos.y()) {
             ret=true;
         }
     }
@@ -852,18 +837,30 @@
 */
 NmMailViewerWK* NmViewerView::webView()
 {
+    NM_FUNCTION;
+    
     return mWebView;
 }
 
 /*!
+
+*/
+NmMessage* NmViewerView::message()
+{
+    return mMessage;
+}
+
+/*!
    Function to set message read status
 */
 void NmViewerView::changeMessageReadStatus(bool read)
 {
+    NM_FUNCTION;
+    
     QList<const NmMessageEnvelope*> envelopeList;
     NmMessageEnvelope *envelope = &mMessage->envelope();
     QPointer<NmStoreEnvelopesOperation> op(NULL);
-    if (envelope){
+    if (envelope) {
         if ( read != envelope->isRead() ){
             if (read){
                 envelope->setRead(true);
@@ -892,9 +889,11 @@
 */
 void NmViewerView::setMailboxName()
 {
+    NM_FUNCTION;
+    
     if (mStartParam){
         NmMailboxMetaData *meta = mUiEngine.mailboxById(mStartParam->mailboxId());
-        if (meta){
+        if (meta) {
             setTitle(meta->name());
         }
     }
@@ -907,21 +906,23 @@
 */
 void NmViewerView::contentScrollPositionChanged(const QPointF &newPosition)
 {
+    NM_FUNCTION;
+    
     if (mWebView&&mHeaderWidget){
         QRectF webViewRect = mWebView->geometry();
         QTransform tr;
         qreal leftMovementThreshold(webViewRect.width()-mHeaderWidget->geometry().width());
-        if (newPosition.x()<0){
+        if (newPosition.x()<0) {
             tr.translate(webViewRect.topLeft().x() ,0);
         }
-        else if (newPosition.x()>=0 && newPosition.x()<leftMovementThreshold){
+        else if (newPosition.x()>=0 && newPosition.x()<leftMovementThreshold) {
             tr.translate(mHeaderStartScenePos.x()+newPosition.x() ,0);
         }
         else {
             tr.translate(webViewRect.topLeft().x()+leftMovementThreshold ,0);
         }
         mHeaderWidget->setTransform(tr);
-        if (mAttaWidget){
+        if (mAttaWidget) {
             mAttaWidget->setTransform(tr);
         }
     }
@@ -934,6 +935,8 @@
 */
 void NmViewerView::createToolBar()
 {
+    NM_FUNCTION;
+    
     HbToolBar *tb = toolBar();
     NmUiExtensionManager &extMngr = mApplication.extManager();
     if (tb && &extMngr && mStartParam) {
@@ -954,6 +957,8 @@
 */
 void NmViewerView::createOptionsMenu()
 {
+    NM_FUNCTION;
+    
 	HbMenu *optionsMenu = menu();
 	NmUiExtensionManager &extMngr = mApplication.extManager();
 	if (optionsMenu && &extMngr && mStartParam) {
@@ -975,6 +980,8 @@
 */
 void NmViewerView::handleActionCommand(NmActionResponse &actionResponse)
 {
+    NM_FUNCTION;
+    
     bool showSendInProgressNote = false;
 
     // Handle options menu or toolbar
@@ -1015,10 +1022,7 @@
             }
             break;
             case NmActionResponseCommandDeleteMail: {
-                HbMessageBox *messageBox = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
-                messageBox->setText(hbTrId("txt_mail_dialog_delete_mail"));
-                messageBox->setAttribute(Qt::WA_DeleteOnClose);
-                messageBox->open(this, SLOT(deleteButton(HbAction*)));
+                deleteMessage();
                 }
             break;
             default:
@@ -1039,25 +1043,23 @@
 }
 
 /*!
-    Slot. Signaled when delete button is pressed
+    Deletes the currently open message
 */
-void NmViewerView::deleteButton(HbAction* result)
+void NmViewerView::deleteMessage()
 {
-    HbMessageBox *dlg = static_cast<HbMessageBox*>(sender());
-    if(result == dlg->actions().at(0)) 
-    {
-        QList<NmId> messageList;
-        messageList.append(mStartParam->messageId());
+    NM_FUNCTION;
+    
+    QList<NmId> messageList;
+    messageList.append(mStartParam->messageId());
     
-        int err = mUiEngine.deleteMessages(mStartParam->mailboxId(),
-                                           mStartParam->folderId(),
-                                           messageList);
+    int err = mUiEngine.deleteMessages(mStartParam->mailboxId(),
+                                       mStartParam->folderId(),
+                                       messageList);
     
-        messageList.clear();
-        if (NmNoError != err) {
-            // Failed to delete the messages!
-            NMLOG(QString("NmViewerView::handleActionCommand(): failed err=%1").arg(err));
-        }
+    messageList.clear();
+    if (NmNoError != err) {
+        // Failed to delete the messages!
+        NMLOG(QString("NmViewerView::handleActionCommand(): failed err=%1").arg(err));
     }
 }
 
@@ -1067,6 +1069,8 @@
 */
 void NmViewerView::progressChanged(int value)
 {
+    NM_FUNCTION;
+    
     if (mAttaIndexUnderFetch != NmNotFoundError) {
         // emit signal
         if (mAttaWidget && mAttaWidget->progressValue(mAttaIndexUnderFetch) < value) {
@@ -1080,12 +1084,13 @@
 */
 void NmViewerView::fetchCompleted(int result)
 {
+    NM_FUNCTION;
+    
     if (mAttaWidget && mAttaIndexUnderFetch != NmNotFoundError) {
         if (result == NmNoError) {
             progressValueChanged(mAttaIndexUnderFetch, 100);
             openAttachment(mAttaIndexUnderFetch);
-        }
-        else {
+        } else {
             mAttaWidget->hideProgressBar(mAttaIndexUnderFetch);
         }
     }
@@ -1097,12 +1102,82 @@
 */
 void NmViewerView::messageDeleted(const NmId &mailboxId, const NmId &folderId, const NmId &messageId)
 {
-    NMLOG("NmViewerView::messageDeleted");
+    NM_FUNCTION;
+    
     if ((mStartParam->viewId() == NmUiViewMessageViewer)
         && (mStartParam->mailboxId()== mailboxId)
         && (mStartParam->folderId()== folderId)
-        && (mStartParam->messageId()== messageId)){
+        && (mStartParam->messageId()== messageId)) {
         mApplication.prepareForPopView();
     }
 }
 
+/*!
+    Helper function for wait dialog creation.
+*/
+void NmViewerView::createAndShowWaitDialog()
+{
+    NM_FUNCTION;
+    
+    delete mWaitDialog;
+    mWaitDialog = NULL;
+    // Create new wait dialog and set it to me modal with dimmed background
+    mWaitDialog = new HbProgressDialog(HbProgressDialog::WaitDialog);
+    mWaitDialog->setModal(true);
+    mWaitDialog->setBackgroundFaded(true);
+    connect(mWaitDialog, SIGNAL(cancelled()), this, SLOT(waitNoteCancelled()));
+    mWaitDialog->setText(hbTrId("txt_mail_dialog_loading_mail_content"));
+    // Display wait dialog
+    mWaitDialog->show(); 
+}
+
+/*!
+    Helper function for width.
+*/
+void NmViewerView::setWebViewWidth(int width)
+{
+    NM_FUNCTION;
+    
+    // null pointer check for mWebView in calling function
+    mWebView->setMinimumWidth(width);
+    mWebView->setMaximumWidth(width);
+    mWebView->setPreferredWidth(width);
+}
+
+/*!
+    Helper function for heigth.
+*/
+void NmViewerView::setWebViewHeighth(int height)
+{
+    NM_FUNCTION;
+    
+    // null pointer check for mWebView in calling function
+    mWebView->setMinimumHeight(height);
+    mWebView->setMaximumHeight(height);
+    mWebView->setPreferredHeight(height);
+}
+
+/*!
+    Helper function for mouse events.
+*/
+void NmViewerView::handleMouseEvent(QGraphicsSceneMouseEvent *event, bool pressed)
+{
+    NM_FUNCTION;
+    NmMailViewerWK* view = webView();
+    if (event && view && mHeaderWidget && mScrollAreaContents) {
+        QPointF lastReleasePoint = event->pos();
+        QPointF contentWidgetPos = mScrollAreaContents->pos();
+        qreal headerHeight = mHeaderWidget->geometry().height();
+        qreal y = lastReleasePoint.y()-headerHeight;
+        y -= contentWidgetPos.y();
+        qreal x = lastReleasePoint.x()-contentWidgetPos.x();
+        const QPointF pointToWebView(x, y);
+        event->setPos(pointToWebView);
+        event->setAccepted(true);
+        if (pressed) {
+            view->sendMousePressEvent(event);
+        } else {
+            view->sendMouseReleaseEvent(event);
+        }
+    }
+}
--- a/emailuis/nmailui/src/nmviewerviewnetmanager.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmviewerviewnetmanager.cpp	Fri May 28 13:56:43 2010 +0300
@@ -28,10 +28,12 @@
 /*!
     Constructor
 */
-NmViewerViewNetManager::NmViewerViewNetManager()
+NmViewerViewNetManager::NmViewerViewNetManager(NmUiEngine &uiEngine)
     : QNetworkAccessManager(),
+      mUiEngine(uiEngine),
       mMessageView(NULL)
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -39,6 +41,7 @@
 */
 NmViewerViewNetManager::~NmViewerViewNetManager()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -46,6 +49,8 @@
 */
 void NmViewerViewNetManager::setView(NmViewerView *viewerView)
 {
+    NM_FUNCTION;
+    
     mMessageView=viewerView;
 }
 
@@ -55,6 +60,8 @@
 QNetworkReply *NmViewerViewNetManager::createRequest(
     Operation op, const QNetworkRequest &request, QIODevice *outgoingData)
 {
+    NM_FUNCTION;
+    
     QNetworkRequest myRequest(request);
     // Set request attribute to prefer cachevar  
     const QVariant cacheControl((int)QNetworkRequest::PreferCache);
@@ -64,11 +71,26 @@
     // Check whether request is for embedded image
     if (mMessageView&&mMessageView->webView()&&op==QNetworkAccessManager::GetOperation
         && requestUrl.scheme()==NmViewerViewNetManagerScheme) {
-        NmViewerViewNetReply* reply = new NmViewerViewNetReply(
-            mMessageView->webView()->loadResource(QTextDocument::ImageResource, requestUrl));
-        reply->setOriginalRequest(myRequest);
-        return reply;
+        QString id = requestUrl.path();
+        NmId partId;
+        bool isFetched = false;
+        NmMessage *message = mMessageView->message();
+        if (message) {
+            QVariant data = mMessageView->webView()->loadResource(
+                    QTextDocument::ImageResource, requestUrl, partId, isFetched);
+            NmViewerViewNetReply* reply = NULL;
+            if (isFetched) {
+                reply = new NmViewerViewNetReply(data, mUiEngine);
+            }
+            else  {
+                reply = new NmViewerViewNetReply(data, mUiEngine,
+                        message->envelope().mailboxId(), message->envelope().folderId(),
+                        message->envelope().messageId(), partId);
+            }
+            reply->setOriginalRequest(myRequest);
+            return reply;
         }
+    }
     // If request is not for embedded image, forward to base class
     return QNetworkAccessManager::createRequest(op, myRequest, outgoingData);
 }
--- a/emailuis/nmailui/src/nmviewerviewnetreply.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmviewerviewnetreply.cpp	Fri May 28 13:56:43 2010 +0300
@@ -28,18 +28,52 @@
 /*!
     Constructor
 */
-NmViewerViewNetReply::NmViewerViewNetReply(QVariant data)
+NmViewerViewNetReply::NmViewerViewNetReply(QVariant data, NmUiEngine &uiEngine)
     : QNetworkReply(),
       mDataArray(data.toByteArray()),
+      mUiEngine(uiEngine),
+      mOperation(NULL),
       mReadIndex(0)
 {
+    NM_FUNCTION;
+    
     open(ReadWrite);
     setReadBufferSize(mDataArray.length());
     // QNetworkAccessManager starts listening the signals only
     // after the construction, so we cannot signal reply to be
     // ready instantly. We need to emit the signals after the
     // construction.
-    QTimer::singleShot(100, this, SLOT(signalReady()));
+    QMetaObject::invokeMethod(this, "signalReady", Qt::QueuedConnection);
+}
+
+/*!
+
+*/
+NmViewerViewNetReply::NmViewerViewNetReply(QVariant data, NmUiEngine &uiEngine, 
+        const NmId &mailboxId, const NmId &folderId, const NmId &messageId, 
+        const NmId &messagePartId)
+    : QNetworkReply(),
+      mDataArray(data.toByteArray()),
+      mUiEngine(uiEngine),
+      mMailboxId(mailboxId),
+      mFolderId(folderId),
+      mMessageId(messageId),
+      mMessagePartId(messagePartId),
+      mOperation(NULL),
+      mReadIndex(0)
+{
+    mOperation = uiEngine.fetchMessagePart(mMailboxId, mFolderId, mMessageId, mMessagePartId);
+    if (mOperation) {
+        connect(mOperation, SIGNAL(operationCompleted(int)),
+            this, SLOT(fetchCompleted(int)));
+        connect(mOperation, SIGNAL(operationCancelled()),
+            this, SLOT(fetchCancelled()));
+    }
+    else {
+        open(ReadWrite);
+        setReadBufferSize(mDataArray.length());
+        QMetaObject::invokeMethod(this, "signalReady", Qt::QueuedConnection);
+    }
 }
 
 /*!
@@ -47,6 +81,7 @@
 */
 NmViewerViewNetReply::~NmViewerViewNetReply()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -54,6 +89,8 @@
 */
 void NmViewerViewNetReply::signalReady()
 {
+    NM_FUNCTION;
+    
     // Insert embedded images into cache manually
     if(manager()) {
         if(manager()->cache() && request().url().scheme() == NMUI_NET_REPLY_CONTENT_ID) {
@@ -76,11 +113,60 @@
 }
 
 /*!
+    Slot. Called when fetch operation completes
+*/
+void NmViewerViewNetReply::fetchCompleted(int result)
+{
+    NM_FUNCTION;
+    
+    Q_UNUSED(result);
+    NmMessage *message = NULL;
+    message = mUiEngine.message(
+            mMailboxId,
+            mFolderId,
+            mMessageId);
+    if (message) {
+        QList<NmMessagePart*> partList;
+        message->attachmentList(partList);
+        NmMessagePart *part = NULL;
+        for (int i = 0; !part && i < partList.count(); i++) {
+            if (partList[i]->partId() == mMessagePartId) {
+                part = partList[i];
+            }
+        }
+        if (part) {
+            int error = mUiEngine.contentToMessagePart(mMailboxId, mFolderId, mMessageId, *part);
+            if (error == NmNoError) {
+                mDataArray = part->binaryContent();
+            }
+        }
+    }
+    delete message;
+    message = NULL;
+    open(ReadWrite);
+    setReadBufferSize(mDataArray.length());
+    QMetaObject::invokeMethod(this, "signalReady", Qt::QueuedConnection);
+}
+
+/*!
+    Slot. Called if fetch operation is cancelled
+*/
+void NmViewerViewNetReply::fetchCancelled()
+{
+    NM_FUNCTION;
+    
+    // just call fetch completed
+    fetchCompleted(NmCancelError);
+}
+
+/*!
     setOriginalRequest. This function is created to provide access to call
     base class' protected function setRequest
 */
 void NmViewerViewNetReply::setOriginalRequest(const QNetworkRequest &request)
 {
+    NM_FUNCTION;
+    
     setRequest(request);
 }
 
@@ -89,6 +175,8 @@
 */
 qint64 NmViewerViewNetReply::readData(char *data, qint64 maxlen)
 {
+    NM_FUNCTION;
+    
     qint64 i = 0;
     const qint64 dataLength(mDataArray.length());
 
@@ -107,6 +195,8 @@
 */
 qint64 NmViewerViewNetReply::readBufferSize() const
 {
+    NM_FUNCTION;
+    
     return mDataArray.length();
 }
 
@@ -118,6 +208,8 @@
 */
 qint64 NmViewerViewNetReply::bytesAvailable() const
 {
+    NM_FUNCTION;
+    
     return mDataArray.length() + QIODevice::bytesAvailable();
 }
 
@@ -126,6 +218,8 @@
 */
 bool NmViewerViewNetReply::isSequential () const
 {
+    NM_FUNCTION;
+    
     return false;
 }
 
@@ -135,5 +229,6 @@
 */
 void NmViewerViewNetReply::abort()
 {
+    NM_FUNCTION;
 }
 
--- a/emailuis/nmailui/src/nmviewerwebview.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/src/nmviewerwebview.cpp	Fri May 28 13:56:43 2010 +0300
@@ -23,6 +23,7 @@
 NmMailViewerWK::NmMailViewerWK()
 	:QGraphicsWebView()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -30,6 +31,8 @@
 */
 NmMailViewerWK::~NmMailViewerWK()
 {
+    NM_FUNCTION;
+    
     mContent.clear();
 }
 
@@ -38,28 +41,37 @@
 */
 void NmMailViewerWK::setParentView(NmViewerView *parentView)
 {
+    NM_FUNCTION;
+    
     mParentView = parentView;
 }
 
 /*!
     addContent. Function adds content into web view.
 */
-void NmMailViewerWK::addContent(QString key, QVariant val) {
-    mContent[key] = val;
+void NmMailViewerWK::addContent(QString key, QVariant val, NmId partId, bool isFetched) 
+{
+    NM_FUNCTION;
+    
+    mContent[key] = NmMailViewerWkContentItem(val, partId, isFetched);
 }
 
 /*!
     loadResource. Function returns resource from added content (added with addContent)
 */
-QVariant NmMailViewerWK::loadResource(int type, const QUrl &name)
+QVariant NmMailViewerWK::loadResource(int type, const QUrl &name, NmId &partId, bool &isFetched)
 {
+    NM_FUNCTION;
+    
     if (type == QTextDocument::ImageResource) {
         QString key = '<' + name.path() + '>';
         if (!mContent.contains(key)) {
             key = name.path();
         }
         if (mContent.contains(key)) {
-            return mContent[key];
+            partId = mContent[key].mPartId;
+            isFetched = mContent[key].mIsFetched;
+            return mContent[key].mData;
         }
         return 0;
     }
@@ -71,6 +83,8 @@
 */
 void NmMailViewerWK::sendMousePressEvent(QGraphicsSceneMouseEvent *event)
 {
+    NM_FUNCTION;
+    
     if (event){
         QGraphicsWebView::mousePressEvent(event);
     }
@@ -81,6 +95,8 @@
 */
 void NmMailViewerWK::sendMouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 {
+    NM_FUNCTION;
+    
     if (event) {
         QGraphicsWebView::mouseReleaseEvent(event);
     }
Binary file emailuis/nmailui/translations/mail.qm has changed
--- a/emailuis/nmailui/translations/mail.ts	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailui/translations/mail.ts	Fri May 28 13:56:43 2010 +0300
@@ -46,7 +46,7 @@
     <comment>Original message header data in the editor. Followed by the name/mail address of the recipient of the message.</comment>        
     <source>To:</source>
     <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_mail_editor_reply_sent</extra-loc-layout_id>    
+    <extra-loc-layout_id>none</extra-loc-layout_id>    
     <extra-loc-viewid>mail_04_c</extra-loc-viewid>
     <extra-loc-positionid>list</extra-loc-positionid>
     <extra-loc-feature>mail</extra-loc-feature>
@@ -92,11 +92,21 @@
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
+<message numerus="no" id="txt_mail_dialog_no_mailboxes_defined">
+    <comment>When mail is selected and there are no mailboxes defined</comment>        
+    <source>No mailboxes defined</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_pri5</extra-loc-layout_id>    
+    <extra-loc-viewid>mail</extra-loc-viewid>
+    <extra-loc-positionid>dialog</extra-loc-positionid>
+    <extra-loc-feature>mail</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
 <message numerus="no" id="txt_mail_list_cc">
     <comment>Cc label in mail viewer</comment>        
     <source>Cc:</source>
     <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_mail_list_from</extra-loc-layout_id>    
+    <extra-loc-layout_id>none</extra-loc-layout_id>    
     <extra-loc-viewid>mail_03</extra-loc-viewid>
     <extra-loc-positionid>list</extra-loc-positionid>
     <extra-loc-feature>mail</extra-loc-feature>
@@ -162,6 +172,16 @@
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
+<message numerus="no" id="txt_mail_shareui_send_as_mail">
+    <comment>text for share ui component. By selecting this the selected content will be sent as mail</comment>        
+    <source>Send as new mail</source>
+    <translation variants="yes" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_list_popup_pri_graphic</extra-loc-layout_id>    
+    <extra-loc-viewid>mail</extra-loc-viewid>
+    <extra-loc-positionid>list</extra-loc-positionid>
+    <extra-loc-feature>mail</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
 <message numerus="no" id="txt_mail_opt_add_priority_sub_high">
     <comment>Suboption for option &quot;Add priority&quot; to set mail as high priority.</comment>        
     <source>High</source>
@@ -183,10 +203,10 @@
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_mail_editor_reply_importance_high">
-    <comment>Custom layout ID parent. Original message header data in the editor. Level of importance for the message: High.</comment>        
+    <comment>Original message header data in the editor. Level of importance for the message: High.</comment>        
     <source>High</source>
     <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_mail_editor_reply_importance_high</extra-loc-layout_id>    
+    <extra-loc-layout_id>none</extra-loc-layout_id>    
     <extra-loc-viewid>mail_04_c</extra-loc-viewid>
     <extra-loc-positionid>list</extra-loc-positionid>
     <extra-loc-feature>mail</extra-loc-feature>
@@ -222,6 +242,16 @@
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
+<message numerus="no" id="txt_mail_dialog_downloading_canceled">
+    <comment>A notification shown to a user when download cannot be completed because of there is not enough disk space.</comment>        
+    <source>Not enough memory - downloading canceled</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_pri5</extra-loc-layout_id>    
+    <extra-loc-viewid>mail</extra-loc-viewid>
+    <extra-loc-positionid>dialog</extra-loc-positionid>
+    <extra-loc-feature>mail</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
 <message numerus="no" id="txt_mail_dialog_1_deleted">
     <comment>Confirmation note shown after the mailbox is deleted succesfully. %[]1 is replaced with the name of the deleted mailbox.</comment>        
     <source>%[]1 deleted.</source>
@@ -276,27 +306,7 @@
     <comment>Original message header data in the editor. Followed by the subject of the message.</comment>        
     <source>Subject:</source>
     <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_mail_editor_reply_sent</extra-loc-layout_id>    
-    <extra-loc-viewid>mail_04_c</extra-loc-viewid>
-    <extra-loc-positionid>list</extra-loc-positionid>
-    <extra-loc-feature>mail</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_mail_menu_search_from_server">
-    <comment>Item specific command for searching number &amp;address from the service. IS THIS NEEDED?</comment>        
-    <source>search from server</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>qtl_menu_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>mail_02</extra-loc-viewid>
-    <extra-loc-positionid>menu</extra-loc-positionid>
-    <extra-loc-feature>mail</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_mail_list_re">
-    <comment>Prefix in subject field in the editor. This indicates that the mail is replyed</comment>        
-    <source>Re:</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_mail_list_fw</extra-loc-layout_id>    
+    <extra-loc-layout_id>none</extra-loc-layout_id>    
     <extra-loc-viewid>mail_04_c</extra-loc-viewid>
     <extra-loc-positionid>list</extra-loc-positionid>
     <extra-loc-feature>mail</extra-loc-feature>
@@ -312,16 +322,6 @@
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="txt_mail_menu_send_mail">
-    <comment>Item specific command for sending mail to a contact</comment>        
-    <source>send mail</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>qtl_menu_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>mail_02</extra-loc-viewid>
-    <extra-loc-positionid>menu</extra-loc-positionid>
-    <extra-loc-feature>mail</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
 <message numerus="no" id="txt_mail_shareui_sending_please_wait">
     <comment>Text for shared UI component wait note. Shown when the user has sent an email from shared UI.</comment>        
     <source>Sending, please wait</source>
@@ -332,16 +332,6 @@
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="txt_mail_list_fw">
-    <comment>Custom layout ID parent. Prefix in subject field in the editor. This indicates that the mail is forwarded</comment>        
-    <source>Fw:</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_mail_list_fw</extra-loc-layout_id>    
-    <extra-loc-viewid>mail_04_c</extra-loc-viewid>
-    <extra-loc-positionid>list</extra-loc-positionid>
-    <extra-loc-feature>mail</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
 <message numerus="no" id="txt_mail_dialog_invalid_mail_address_send">
     <comment>Note in editor when the user has typed incorrect mail address (e.g. without @-character). %[]1 is replaced with the name of the invalid mail address. Pressing yes sends the mail anyway</comment>        
     <source>Invalid mail address: %[]1. Send anyway?</source>
@@ -352,13 +342,13 @@
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="txt_mail_menu_open_contact_card">
-    <comment>Item specific command for opening contact card from mail viewer</comment>        
-    <source>open contact card</source>
+<message numerus="no" id="txt_mail_list_searching">
+    <comment>Text for indicating that the search is ongoing in mail list view. Component is simple label</comment>        
+    <source>Seaching</source>
     <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>qtl_menu_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>mail_02</extra-loc-viewid>
-    <extra-loc-positionid>menu</extra-loc-positionid>
+    <extra-loc-layout_id>txt_mail_subhead_inbox</extra-loc-layout_id>    
+    <extra-loc-viewid>mail</extra-loc-viewid>
+    <extra-loc-positionid>list</extra-loc-positionid>
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
@@ -373,20 +363,40 @@
     <extra-loc-blank>False</extra-loc-blank>
 </message>
 <message numerus="no" id="txt_mail_list_from">
-    <comment>Custom layout ID parent. From label in mail viewer </comment>        
+    <comment>From label in mail viewer </comment>        
     <source>From:</source>
     <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_mail_list_from</extra-loc-layout_id>    
+    <extra-loc-layout_id>none</extra-loc-layout_id>    
     <extra-loc-viewid>mail_03</extra-loc-viewid>
     <extra-loc-positionid>list</extra-loc-positionid>
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
+<message numerus="no" id="txt_nmailui_forward_subject_prefix">
+    <comment>Text for subject field if the message is forwarded.</comment>        
+    <source>Fw:</source>
+    <translation variants="yes" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_list_pri</extra-loc-layout_id>    
+    <extra-loc-viewid>mail_02</extra-loc-viewid>
+    <extra-loc-positionid>dblist_3_val</extra-loc-positionid>
+    <extra-loc-feature>mail</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_mail_opt_folder_sub_deleted">
+    <comment>Submenu item for Options menus item Folder (txt_mail_opt_change_folder)</comment>        
+    <source>Deleted items</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_menu_sec_add</extra-loc-layout_id>    
+    <extra-loc-viewid>mail_01_a</extra-loc-viewid>
+    <extra-loc-positionid>opt_2_sub</extra-loc-positionid>
+    <extra-loc-feature>mail</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
 <message numerus="no" id="txt_mail_editor_reply_importance_low">
     <comment>Original message header data in the editor. Level of importance for the message: Low.</comment>        
     <source>Low</source>
     <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_mail_editor_reply_importance_high</extra-loc-layout_id>    
+    <extra-loc-layout_id>none</extra-loc-layout_id>    
     <extra-loc-viewid>mail_04_c</extra-loc-viewid>
     <extra-loc-positionid>list</extra-loc-positionid>
     <extra-loc-feature>mail</extra-loc-feature>
@@ -396,7 +406,7 @@
     <comment>Original message header data in the editor. Followed by the name(s)/mail address(es) of the receipients to whom a copy of the message is sent.</comment>        
     <source>Cc:</source>
     <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_mail_editor_reply_sent</extra-loc-layout_id>    
+    <extra-loc-layout_id>none</extra-loc-layout_id>    
     <extra-loc-viewid>mail_04_c</extra-loc-viewid>
     <extra-loc-positionid>list</extra-loc-positionid>
     <extra-loc-feature>mail</extra-loc-feature>
@@ -412,6 +422,16 @@
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
+<message numerus="no" id="txt_mail_status_menu_new_mail">
+    <comment>Secondary text for status menu item: indicates the there are new mail messages</comment>        
+    <source>New Mail</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>mail</extra-loc-viewid>
+    <extra-loc-positionid>list</extra-loc-positionid>
+    <extra-loc-feature>mail</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
 <message numerus="no" id="txt_mail_dialog_server_settings_incorrect">
     <comment>Notification shown when the connection fails (e.g. when syncing) due to server settings. </comment>        
     <source>Server settings are incorrect. Do you want to check the settings?</source>
@@ -462,16 +482,6 @@
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="txt_mail_dialog_delete_message">
-    <comment>This conifrmation is shown if the user presses &quot;Back&quot; in the editor. Selecting yes deletes the composed message. &quot;No&quot; returns to the editor.</comment>        
-    <source>Delete message?</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>qtl_dialog_pri5</extra-loc-layout_id>    
-    <extra-loc-viewid>mail_04</extra-loc-viewid>
-    <extra-loc-positionid>dialog</extra-loc-positionid>
-    <extra-loc-feature>mail</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
 <message numerus="no" id="txt_mail_dialog_invalid_mail_address">
     <comment>Note in editor when the user has typed incorrect mail address (e.g. without @-character). %[]1 is replaced with the name of the invalid mail address.</comment>        
     <source>Invalid mail address: %[]1</source>
@@ -512,13 +522,13 @@
     <extra-loc-feature>Mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="txt_mail_dialog_deleting_mailbox">
-    <comment>Wait note for the case where the mailbox is beign deleted.</comment>        
-    <source>Deleting mailbox</source>
+<message numerus="no" id="txt_mail_dblist_no_messages_matched_your_search">
+    <comment>A text shown in mail list view, if there are no matches to a search.</comment>        
+    <source>No messages matched your search. Try another search term. </source>
     <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>qtl_dialog_pri3</extra-loc-layout_id>    
+    <extra-loc-layout_id>qtl_view_empty_title_pri</extra-loc-layout_id>    
     <extra-loc-viewid>mail</extra-loc-viewid>
-    <extra-loc-positionid>dialog</extra-loc-positionid>
+    <extra-loc-positionid>dblist_4</extra-loc-positionid>
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
@@ -532,11 +542,21 @@
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
+<message numerus="no" id="txt_mail_dialog_deleting_mailbox">
+    <comment>Wait note for the case where the mailbox is beign deleted.</comment>        
+    <source>Deleting mailbox</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_dialog_pri3</extra-loc-layout_id>    
+    <extra-loc-viewid>mail</extra-loc-viewid>
+    <extra-loc-positionid>dialog</extra-loc-positionid>
+    <extra-loc-feature>mail</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
 <message numerus="no" id="txt_mail_editor_reply_importance">
     <comment>Original message header data in the editor. The user can select the level of importance for the message (High txt_mail_editor_reply_importance_high or Low txt_mail_editor_reply_importance_low).</comment>        
     <source>Importance:</source>
     <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_mail_editor_reply_sent</extra-loc-layout_id>    
+    <extra-loc-layout_id>none</extra-loc-layout_id>    
     <extra-loc-viewid>mail_04_c</extra-loc-viewid>
     <extra-loc-positionid>list</extra-loc-positionid>
     <extra-loc-feature>mail</extra-loc-feature>
@@ -546,52 +566,22 @@
     <comment>To label in mail viewer</comment>        
     <source>To:</source>
     <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_mail_list_from</extra-loc-layout_id>    
+    <extra-loc-layout_id>none</extra-loc-layout_id>    
     <extra-loc-viewid>mail_03</extra-loc-viewid>
     <extra-loc-positionid>list</extra-loc-positionid>
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="txt_mail_dialog_data_has_been_deleted_to_protect_a">
-    <comment></comment>        
-    <source>Data has been deleted to protect against theft or loss. Contact you system administrator</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id></extra-loc-layout_id>    
-    <extra-loc-viewid>mail</extra-loc-viewid>
-    <extra-loc-positionid>dialog</extra-loc-positionid>
-    <extra-loc-feature>mail</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_mail_dialog_cannot_open_the_attachment_deleted">
-    <comment></comment>        
-    <source>Cannot open the attachment deleted on the server</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id></extra-loc-layout_id>    
-    <extra-loc-viewid>mail</extra-loc-viewid>
-    <extra-loc-positionid>dialog</extra-loc-positionid>
-    <extra-loc-feature>mail</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
 <message numerus="no" id="txt_mail_editor_reply_sent">
     <comment>Original message header data in the editor. Followed by the date when the message was sent.</comment>        
     <source>Sent:</source>
     <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_mail_editor_reply_sent</extra-loc-layout_id>    
+    <extra-loc-layout_id>none</extra-loc-layout_id>    
     <extra-loc-viewid>mail_04_c</extra-loc-viewid>
     <extra-loc-positionid>list</extra-loc-positionid>
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="txt_mail_dialog_account_disabled_due_to_security_i">
-    <comment></comment>        
-    <source>Account disabled due to security issues. Contact your system administrator.</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id></extra-loc-layout_id>    
-    <extra-loc-viewid>mail</extra-loc-viewid>
-    <extra-loc-positionid>dialog</extra-loc-positionid>
-    <extra-loc-feature>mail</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
 <message numerus="no" id="txt_mail_dialog_unable_to_open_attachment_file_ty">
     <comment>Error note. If the user tries to open an attachment which cannot be viewed</comment>        
     <source>Unable to open. Attachment file type not supported</source>
@@ -612,6 +602,16 @@
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
+<message numerus="no" id="txt_nmailui_reply_subject_prefix">
+    <comment>Text for subject field if the message is replyed.</comment>        
+    <source>Re:</source>
+    <translation variants="yes" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_list_pri</extra-loc-layout_id>    
+    <extra-loc-viewid>mail_02</extra-loc-viewid>
+    <extra-loc-positionid>dblist_3_val</extra-loc-positionid>
+    <extra-loc-feature>mail</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
 <message numerus="no" id="txt_mail_opt_send_and_receive_now">
     <comment>Options menu item for synchronize mail folders with the mail server content (sending and receiving mail)</comment>        
     <source>Refresh</source>
@@ -646,7 +646,7 @@
     <comment>Original message header data in the editor. Separates the original mail message from the edit area of the new message the user is typing.</comment>        
     <source>---- Original message ----</source>
     <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_mail_editor_reply_sent</extra-loc-layout_id>    
+    <extra-loc-layout_id>none</extra-loc-layout_id>    
     <extra-loc-viewid>mail_04_c</extra-loc-viewid>
     <extra-loc-positionid>list</extra-loc-positionid>
     <extra-loc-feature>mail</extra-loc-feature>
@@ -712,16 +712,6 @@
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="txt_mail_dialog_conversion_error_unable_to_show_t">
-    <comment></comment>        
-    <source>Conversion error. Unable to show the content properly</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id></extra-loc-layout_id>    
-    <extra-loc-viewid>mail</extra-loc-viewid>
-    <extra-loc-positionid>dialog</extra-loc-positionid>
-    <extra-loc-feature>mail</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
 <message numerus="no" id="txt_mail_editor_bcc">
     <comment>Bcc: label in mail editor</comment>        
     <source>Bcc:</source>
@@ -732,6 +722,16 @@
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
+<message numerus="no" id="txt_mail_opt_folder_sub_drafts">
+    <comment>Submenu item for Options menus item Folder (txt_mail_opt_change_folder)</comment>        
+    <source>Drafts</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_menu_sec_add</extra-loc-layout_id>    
+    <extra-loc-viewid>mail_01_a</extra-loc-viewid>
+    <extra-loc-positionid>opt_2_sub</extra-loc-positionid>
+    <extra-loc-feature>mail</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
 <message numerus="no" id="txt_mail_editor_cc">
     <comment>Cc: label in mail editor</comment>        
     <source>Cc:</source>
@@ -752,6 +752,26 @@
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
+<message numerus="no" id="txt_mail_opt_folder_sub_inbox">
+    <comment>Submenu item for Options menus item Folder (txt_mail_opt_change_folder)</comment>        
+    <source>Inbox </source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_menu_sec_add</extra-loc-layout_id>    
+    <extra-loc-viewid>mail_01_a</extra-loc-viewid>
+    <extra-loc-positionid>opt_2_sub</extra-loc-positionid>
+    <extra-loc-feature>mail</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
+<message numerus="no" id="txt_mail_opt_folder_sub_sent">
+    <comment>Submenu item for Options menus item Folder (txt_mail_opt_change_folder)</comment>        
+    <source>Sent</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_menu_sec_add</extra-loc-layout_id>    
+    <extra-loc-viewid>mail_01_a</extra-loc-viewid>
+    <extra-loc-positionid>opt_2_sub</extra-loc-positionid>
+    <extra-loc-feature>mail</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
 <message numerus="no" id="txt_mail_dialog_unable_to_add_attachment">
     <comment>Error note for the case where the selected file cannot be attached (it&apos;s deleted, moved etc. at the same time)</comment>        
     <source>Unable to add attachment </source>
@@ -772,11 +792,21 @@
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
+<message numerus="no" id="txt_mail_opt_folder_sub_outbox">
+    <comment>Submenu item for Options menus item Folder (txt_mail_opt_change_folder)</comment>        
+    <source>Outbox</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id>qtl_menu_sec_add</extra-loc-layout_id>    
+    <extra-loc-viewid>mail_01_a</extra-loc-viewid>
+    <extra-loc-positionid>opt_2_sub</extra-loc-positionid>
+    <extra-loc-feature>mail</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
 <message numerus="no" id="txt_mail_editor_reply_from">
     <comment>Original message header data in the editor. Followed by the name/mail address of the sender of the message.</comment>        
     <source>From:</source>
     <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>txt_mail_editor_reply_sent</extra-loc-layout_id>    
+    <extra-loc-layout_id>none</extra-loc-layout_id>    
     <extra-loc-viewid>mail_04_c</extra-loc-viewid>
     <extra-loc-positionid>list</extra-loc-positionid>
     <extra-loc-feature>mail</extra-loc-feature>
@@ -792,6 +822,16 @@
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
+<message numerus="no" id="txt_mail_status_menu_waiting_to_send">
+    <comment>Text for status menu item: indicates that there are unsent messages in outbox. %L1 is the number of unsent mails in that mailbox.</comment>        
+    <source>Waiting to send (%L1)</source>
+    <translation variants="no" type="unfinished"></translation>
+    <extra-loc-layout_id></extra-loc-layout_id>    
+    <extra-loc-viewid>mail</extra-loc-viewid>
+    <extra-loc-positionid></extra-loc-positionid>
+    <extra-loc-feature>mail</extra-loc-feature>
+    <extra-loc-blank>False</extra-loc-blank>
+</message>
 <message numerus="no" id="txt_mail_dialog_do_you_want_to_delete_mfe">
     <comment>Confirmation note for mailbox deleting. This will delete also contacts, calendar and tasks data, which has been synchronized via this account. This MfE protocol only</comment>        
     <source>Do you want to delete all mail, calendar, contacts and tasks data related to this account?</source>
@@ -832,13 +872,13 @@
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="txt_mail_menu_search_from_service">
-    <comment>Item specific command for searching number &amp;address from the service</comment>        
-    <source>search from service</source>
+<message numerus="no" id="txt_mail_list_search_results">
+    <comment>Text for indicating the search results in mail list view. Component is simple label</comment>        
+    <source>%L1 results</source>
     <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id>qtl_menu_sec</extra-loc-layout_id>    
-    <extra-loc-viewid>mail_02</extra-loc-viewid>
-    <extra-loc-positionid>menu</extra-loc-positionid>
+    <extra-loc-layout_id>txt_mail_subhead_inbox</extra-loc-layout_id>    
+    <extra-loc-viewid>mail</extra-loc-viewid>
+    <extra-loc-positionid>list</extra-loc-positionid>
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
@@ -922,25 +962,5 @@
     <extra-loc-feature>mail</extra-loc-feature>
     <extra-loc-blank>False</extra-loc-blank>
 </message>
-<message numerus="no" id="txt_mail_dialog_1_is_disabled_enable">
-    <comment></comment>        
-    <source>%1 is disabled, enable?</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id></extra-loc-layout_id>    
-    <extra-loc-viewid>mail</extra-loc-viewid>
-    <extra-loc-positionid>dialog</extra-loc-positionid>
-    <extra-loc-feature>mail</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
-<message numerus="no" id="txt_mail_dialog_password_expired_new_security_cre">
-    <comment></comment>        
-    <source>Password expired. New security credentials must be created on your computer.</source>
-    <translation variants="no" type="unfinished"></translation>
-    <extra-loc-layout_id></extra-loc-layout_id>    
-    <extra-loc-viewid>mail</extra-loc-viewid>
-    <extra-loc-positionid>dialog</extra-loc-positionid>
-    <extra-loc-feature>mail</extra-loc-feature>
-    <extra-loc-blank>False</extra-loc-blank>
-</message>
 </context>
 </TS>
--- a/emailuis/nmailuiengine/bwins/nmailuiengineu.def	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/bwins/nmailuiengineu.def	Fri May 28 13:56:43 2010 +0300
@@ -1,322 +1,314 @@
 EXPORTS
-	?id@NmMailboxMetaData@@QBE?AVNmId@@XZ @ 1 NONAME ; class NmId NmMailboxMetaData::id(void) const
-	??1NmUiEngine@@EAE@XZ @ 2 NONAME ; NmUiEngine::~NmUiEngine(void)
-	?staticMetaObject@NmMessageCreationOperation@@2UQMetaObject@@B @ 3 NONAME ; struct QMetaObject const NmMessageCreationOperation::staticMetaObject
-	?searchComplete@NmUiEngine@@IAEXXZ @ 4 NONAME ; void NmUiEngine::searchComplete(void)
-	?mReferenceCount@NmDataPluginFactory@@0HA @ 5 NONAME ; int NmDataPluginFactory::mReferenceCount
-	?sendOperationCompleted@NmUiEngine@@IAEXXZ @ 6 NONAME ; void NmUiEngine::sendOperationCompleted(void)
-	?name@NmFolderMetaData@@QBE?AVQString@@XZ @ 7 NONAME ; class QString NmFolderMetaData::name(void) const
-	?folderTypeById@NmUiEngine@@QAE?AW4NmFolderType@@VNmId@@0@Z @ 8 NONAME ; enum NmFolderType NmUiEngine::folderTypeById(class NmId, class NmId)
-	?envelope@NmMessageListModelItem@@QBEABVNmMessageEnvelope@@XZ @ 9 NONAME ; class NmMessageEnvelope const & NmMessageListModelItem::envelope(void) const
-	?setPriorityNormal@NmBaseClientPlugin@@QAEXXZ @ 10 NONAME ; void NmBaseClientPlugin::setPriorityNormal(void)
-	?removeMessageFromModel@NmMessageListModel@@AAEXABVNmId@@@Z @ 11 NONAME ; void NmMessageListModel::removeMessageFromModel(class NmId const &)
-	??1NmDataManager@@UAE@XZ @ 12 NONAME ; NmDataManager::~NmDataManager(void)
-	?dividersActive@NmMessageListModel@@QAE_NXZ @ 13 NONAME ; bool NmMessageListModel::dividersActive(void)
-	?createForwardMessage@NmUiEngine@@QAE?AV?$QPointer@VNmMessageCreationOperation@@@@ABVNmId@@0@Z @ 14 NONAME ; class QPointer<class NmMessageCreationOperation> NmUiEngine::createForwardMessage(class NmId const &, class NmId const &)
-	?tr@NmMessageCreationOperation@@SA?AVQString@@PBD0@Z @ 15 NONAME ; class QString NmMessageCreationOperation::tr(char const *, char const *)
-	?getStaticMetaObject@NmMailboxListModel@@SAABUQMetaObject@@XZ @ 16 NONAME ; struct QMetaObject const & NmMailboxListModel::getStaticMetaObject(void)
-	?getActions@NmBaseClientPlugin@@UAEXABVNmActionRequest@@AAV?$QList@PAVNmAction@@@@@Z @ 17 NONAME ; void NmBaseClientPlugin::getActions(class NmActionRequest const &, class QList<class NmAction *> &)
-	??_ENmDataPluginFactory@@UAE@I@Z @ 18 NONAME ; NmDataPluginFactory::~NmDataPluginFactory(unsigned int)
-	?metaObject@NmOperation@@UBEPBUQMetaObject@@XZ @ 19 NONAME ; struct QMetaObject const * NmOperation::metaObject(void) const
-	?handleMailboxEvent@NmUiEngine@@AAEXW4NmMailboxEvent@@ABV?$QList@VNmId@@@@@Z @ 20 NONAME ; void NmUiEngine::handleMailboxEvent(enum NmMailboxEvent, class QList<class NmId> const &)
-	?getStaticMetaObject@NmBaseClientPlugin@@SAABUQMetaObject@@XZ @ 21 NONAME ; struct QMetaObject const & NmBaseClientPlugin::getStaticMetaObject(void)
-	?envelopePtr@NmMessageListModelItem@@QAEPAVNmMessageEnvelope@@XZ @ 22 NONAME ; class NmMessageEnvelope * NmMessageListModelItem::envelopePtr(void)
-	??0NmOperation@@QAE@XZ @ 23 NONAME ; NmOperation::NmOperation(void)
-	?forwardMail@NmBaseClientPlugin@@QAEXXZ @ 24 NONAME ; void NmBaseClientPlugin::forwardMail(void)
-	??_ENmMailboxMetaData@@UAE@I@Z @ 25 NONAME ; NmMailboxMetaData::~NmMailboxMetaData(unsigned int)
-	?getStaticMetaObject@NmOperation@@SAABUQMetaObject@@XZ @ 26 NONAME ; struct QMetaObject const & NmOperation::getStaticMetaObject(void)
-	?completeOperation@NmOperation@@QAEXH@Z @ 27 NONAME ; void NmOperation::completeOperation(int)
-	?markAsRead@NmBaseClientPlugin@@QAEXXZ @ 28 NONAME ; void NmBaseClientPlugin::markAsRead(void)
-	?completeOperationPart@NmAddAttachmentsOperation@@QAEXABVQString@@ABVNmId@@H@Z @ 29 NONAME ; void NmAddAttachmentsOperation::completeOperationPart(class QString const &, class NmId const &, int)
-	?tr@NmOperation@@SA?AVQString@@PBD0H@Z @ 30 NONAME ; class QString NmOperation::tr(char const *, char const *, int)
-	?deleteOperation@NmOperation@@AAEXXZ @ 31 NONAME ; void NmOperation::deleteOperation(void)
-	?insertMessageIntoModel@NmMessageListModel@@AAEXPAVNmMessageEnvelope@@H_N@Z @ 32 NONAME ; void NmMessageListModel::insertMessageIntoModel(class NmMessageEnvelope *, int, bool)
-	?attach@NmBaseClientPlugin@@QAEXXZ @ 33 NONAME ; void NmBaseClientPlugin::attach(void)
-	?deleteMessageFromViewerView@NmBaseClientPlugin@@QAEXXZ @ 34 NONAME ; void NmBaseClientPlugin::deleteMessageFromViewerView(void)
-	??0NmDataPluginFactory@@AAE@XZ @ 35 NONAME ; NmDataPluginFactory::NmDataPluginFactory(void)
-	?setEnvelopes@NmUiEngine@@QAE?AV?$QPointer@VNmStoreEnvelopesOperation@@@@ABVNmId@@0W4NmEnvelopeProperties@@ABV?$QList@PB$$CBVNmMessageEnvelope@@@@@Z @ 36 NONAME ; class QPointer<class NmStoreEnvelopesOperation> NmUiEngine::setEnvelopes(class NmId const &, class NmId const &, enum NmEnvelopeProperties, class QList<class NmMessageEnvelope const *> const &)
-	?getStaticMetaObject@NmMessageListModel@@SAABUQMetaObject@@XZ @ 37 NONAME ; struct QMetaObject const & NmMessageListModel::getStaticMetaObject(void)
-	?removeAttachment@NmBaseClientPlugin@@QAEXXZ @ 38 NONAME ; void NmBaseClientPlugin::removeAttachment(void)
-	?messageListModel@NmUiEngine@@QAEAAVNmMessageListModel@@ABVNmId@@0@Z @ 39 NONAME ; class NmMessageListModel & NmUiEngine::messageListModel(class NmId const &, class NmId const &)
-	?trUtf8@NmStoreEnvelopesOperation@@SA?AVQString@@PBD0H@Z @ 40 NONAME ; class QString NmStoreEnvelopesOperation::trUtf8(char const *, char const *, int)
-	?refresh@NmMailboxListModel@@QAEXAAV?$QList@PAVNmMailbox@@@@@Z @ 41 NONAME ; void NmMailboxListModel::refresh(class QList<class NmMailbox *> &)
-	??0NmMessageListModelItem@@QAE@XZ @ 42 NONAME ; NmMessageListModelItem::NmMessageListModelItem(void)
-	??0NmDataManager@@QAE@XZ @ 43 NONAME ; NmDataManager::NmDataManager(void)
-	?setItemType@NmMessageListModelItem@@QAEXW4NmMessageItemType@1@@Z @ 44 NONAME ; void NmMessageListModelItem::setItemType(enum NmMessageListModelItem::NmMessageItemType)
-	?setEnvelope@NmMessageListModelItem@@QAEXPAVNmMessageEnvelope@@@Z @ 45 NONAME ; void NmMessageListModelItem::setEnvelope(class NmMessageEnvelope *)
-	?qt_metacall@NmMessageListModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 46 NONAME ; int NmMessageListModel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?updateMessageEnvelope@NmMessageListModel@@AAEXABVNmId@@00@Z @ 47 NONAME ; void NmMessageListModel::updateMessageEnvelope(class NmId const &, class NmId const &, class NmId const &)
-	?tr@NmMailboxListModel@@SA?AVQString@@PBD0H@Z @ 48 NONAME ; class QString NmMailboxListModel::tr(char const *, char const *, int)
-	??0NmStoreEnvelopesOperation@@QAE@XZ @ 49 NONAME ; NmStoreEnvelopesOperation::NmStoreEnvelopesOperation(void)
-	?fetchMessage@NmUiEngine@@QAE?AV?$QPointer@VNmOperation@@@@ABVNmId@@00@Z @ 50 NONAME ; class QPointer<class NmOperation> NmUiEngine::fetchMessage(class NmId const &, class NmId const &, class NmId const &)
-	?removeItem@NmMessageListModel@@AAEXHAAVNmMessageListModelItem@@@Z @ 51 NONAME ; void NmMessageListModel::removeItem(int, class NmMessageListModelItem &)
-	?createMessageListCommands@NmBaseClientPlugin@@AAEXABVNmActionRequest@@AAV?$QList@PAVNmAction@@@@@Z @ 52 NONAME ; void NmBaseClientPlugin::createMessageListCommands(class NmActionRequest const &, class QList<class NmAction *> &)
-	?qt_metacast@NmMailboxListModel@@UAEPAXPBD@Z @ 53 NONAME ; void * NmMailboxListModel::qt_metacast(char const *)
-	??_ENmOperation@@UAE@I@Z @ 54 NONAME ; NmOperation::~NmOperation(unsigned int)
-	??_ENmBaseClientPlugin@@UAE@I@Z @ 55 NONAME ; NmBaseClientPlugin::~NmBaseClientPlugin(unsigned int)
-	??1NmOperation@@MAE@XZ @ 56 NONAME ; NmOperation::~NmOperation(void)
-	??0NmFolderListModel@@QAE@AAVNmDataManager@@PAVQObject@@@Z @ 57 NONAME ; NmFolderListModel::NmFolderListModel(class NmDataManager &, class QObject *)
-	?getStaticMetaObject@NmMessageCreationOperation@@SAABUQMetaObject@@XZ @ 58 NONAME ; struct QMetaObject const & NmMessageCreationOperation::getStaticMetaObject(void)
-	?refresh@NmMessageListModel@@QAEXVNmId@@0ABV?$QList@PAVNmMessageEnvelope@@@@@Z @ 59 NONAME ; void NmMessageListModel::refresh(class NmId, class NmId, class QList<class NmMessageEnvelope *> const &)
-	?message@NmDataManager@@QAEPAVNmMessage@@ABVNmId@@00@Z @ 60 NONAME ; class NmMessage * NmDataManager::message(class NmId const &, class NmId const &, class NmId const &)
-	?data@NmFolderListModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 61 NONAME ; class QVariant NmFolderListModel::data(class QModelIndex const &, int) const
-	?metaObject@NmMessageListModel@@UBEPBUQMetaObject@@XZ @ 62 NONAME ; struct QMetaObject const * NmMessageListModel::metaObject(void) const
-	??1NmMessageListModel@@UAE@XZ @ 63 NONAME ; NmMessageListModel::~NmMessageListModel(void)
-	?handlePreliminaryOperationFinished@NmOperation@@MAEXXZ @ 64 NONAME ; void NmOperation::handlePreliminaryOperationFinished(void)
-	?rowCount@NmFolderListModel@@UBEHABVQModelIndex@@@Z @ 65 NONAME ; int NmFolderListModel::rowCount(class QModelIndex const &) const
-	?syncState@NmUiEngine@@QAE?AW4NmSyncState@@ABVNmId@@@Z @ 66 NONAME ; enum NmSyncState NmUiEngine::syncState(class NmId const &)
-	?isRunning@NmOperation@@QBE_NXZ @ 67 NONAME ; bool NmOperation::isRunning(void) const
-	?tr@NmAddAttachmentsOperation@@SA?AVQString@@PBD0H@Z @ 68 NONAME ; class QString NmAddAttachmentsOperation::tr(char const *, char const *, int)
-	?trUtf8@NmUiEngine@@SA?AVQString@@PBD0@Z @ 69 NONAME ; class QString NmUiEngine::trUtf8(char const *, char const *)
-	?insertNewMessageIntoModel@NmMessageListModel@@AAEXABVNmId@@00@Z @ 70 NONAME ; void NmMessageListModel::insertNewMessageIntoModel(class NmId const &, class NmId const &, class NmId const &)
-	?updateOperationProgress@NmOperation@@QAEXH@Z @ 71 NONAME ; void NmOperation::updateOperationProgress(int)
-	?staticMetaObject@NmAddAttachmentsOperation@@2UQMetaObject@@B @ 72 NONAME ; struct QMetaObject const NmAddAttachmentsOperation::staticMetaObject
-	?trUtf8@NmBaseClientPlugin@@SA?AVQString@@PBD0@Z @ 73 NONAME ; class QString NmBaseClientPlugin::trUtf8(char const *, char const *)
-	?operationCompleted@NmUiEngine@@IAEXABVNmOperationCompletionEvent@@@Z @ 74 NONAME ; void NmUiEngine::operationCompleted(class NmOperationCompletionEvent const &)
-	?cancelSearch@NmUiEngine@@QAEHABVNmId@@@Z @ 75 NONAME ; int NmUiEngine::cancelSearch(class NmId const &)
-	?tr@NmDataManager@@SA?AVQString@@PBD0@Z @ 76 NONAME ; class QString NmDataManager::tr(char const *, char const *)
-	?removeAttachment@NmUiEngine@@QAE?AV?$QPointer@VNmOperation@@@@ABVNmMessage@@ABVNmId@@@Z @ 77 NONAME ; class QPointer<class NmOperation> NmUiEngine::removeAttachment(class NmMessage const &, class NmId const &)
-	?replyMail@NmBaseClientPlugin@@QAEXXZ @ 78 NONAME ; void NmBaseClientPlugin::replyMail(void)
-	??1NmMessageSendingOperation@@MAE@XZ @ 79 NONAME ; NmMessageSendingOperation::~NmMessageSendingOperation(void)
-	?mInstance@NmUiEngine@@0PAV1@A @ 80 NONAME ; class NmUiEngine * NmUiEngine::mInstance
-	??_ENmMessageListModel@@UAE@I@Z @ 81 NONAME ; NmMessageListModel::~NmMessageListModel(unsigned int)
-	?trUtf8@NmBaseClientPlugin@@SA?AVQString@@PBD0H@Z @ 82 NONAME ; class QString NmBaseClientPlugin::trUtf8(char const *, char const *, int)
-	?qt_metacast@NmOperation@@UAEPAXPBD@Z @ 83 NONAME ; void * NmOperation::qt_metacast(char const *)
-	??1NmFolderListModel@@UAE@XZ @ 84 NONAME ; NmFolderListModel::~NmFolderListModel(void)
-	?qt_metacall@NmUiEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 85 NONAME ; int NmUiEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?getStaticMetaObject@NmAddAttachmentsOperation@@SAABUQMetaObject@@XZ @ 86 NONAME ; struct QMetaObject const & NmAddAttachmentsOperation::getStaticMetaObject(void)
-	?titleDivider@NmMessageListModelItem@@QBE?AVQString@@XZ @ 87 NONAME ; class QString NmMessageListModelItem::titleDivider(void) const
-	?metaObject@NmAddAttachmentsOperation@@UBEPBUQMetaObject@@XZ @ 88 NONAME ; struct QMetaObject const * NmAddAttachmentsOperation::metaObject(void) const
-	?trUtf8@NmMailboxListModel@@SA?AVQString@@PBD0@Z @ 89 NONAME ; class QString NmMailboxListModel::trUtf8(char const *, char const *)
-	?contentToMessagePart@NmDataManager@@QAEHABVNmId@@00AAVNmMessagePart@@@Z @ 90 NONAME ; int NmDataManager::contentToMessagePart(class NmId const &, class NmId const &, class NmId const &, class NmMessagePart &)
-	?tr@NmCheckOutboxOperation@@SA?AVQString@@PBD0@Z @ 91 NONAME ; class QString NmCheckOutboxOperation::tr(char const *, char const *)
-	?metaObject@NmMessageCreationOperation@@UBEPBUQMetaObject@@XZ @ 92 NONAME ; struct QMetaObject const * NmMessageCreationOperation::metaObject(void) const
-	?tr@NmStoreEnvelopesOperation@@SA?AVQString@@PBD0H@Z @ 93 NONAME ; class QString NmStoreEnvelopesOperation::tr(char const *, char const *, int)
-	?callEmitDataChanged@NmMessageListModelItem@@QAEXXZ @ 94 NONAME ; void NmMessageListModelItem::callEmitDataChanged(void)
-	?settings@NmBaseClientPlugin@@QAEXXZ @ 95 NONAME ; void NmBaseClientPlugin::settings(void)
-	?setAddress@NmMailboxMetaData@@QAEXABVQString@@@Z @ 96 NONAME ; void NmMailboxMetaData::setAddress(class QString const &)
-	?trUtf8@NmMessageCreationOperation@@SA?AVQString@@PBD0H@Z @ 97 NONAME ; class QString NmMessageCreationOperation::trUtf8(char const *, char const *, int)
-	?interfaceInstance@NmDataPluginFactory@@QAEPAVNmDataPluginInterface@@PAVQObject@@@Z @ 98 NONAME ; class NmDataPluginInterface * NmDataPluginFactory::interfaceInstance(class QObject *)
-	?mReferenceCount@NmUiEngine@@0HA @ 99 NONAME ; int NmUiEngine::mReferenceCount
-	?getInsertionIndex@NmMessageListModel@@ABEHABVNmMessageEnvelope@@@Z @ 100 NONAME ; int NmMessageListModel::getInsertionIndex(class NmMessageEnvelope const &) const
-	?search@NmBaseClientPlugin@@QAEXXZ @ 101 NONAME ; void NmBaseClientPlugin::search(void)
-	?mailbox@NmDataManager@@QAEPAVNmMailbox@@ABVNmId@@@Z @ 102 NONAME ; class NmMailbox * NmDataManager::mailbox(class NmId const &)
-	?trUtf8@NmMessageCreationOperation@@SA?AVQString@@PBD0@Z @ 103 NONAME ; class QString NmMessageCreationOperation::trUtf8(char const *, char const *)
-	?setId@NmFolderMetaData@@QAEXABVNmId@@@Z @ 104 NONAME ; void NmFolderMetaData::setId(class NmId const &)
-	?getIcon@NmIcons@@SAAAVHbIcon@@W4Icon@1@@Z @ 105 NONAME ; class HbIcon & NmIcons::getIcon(enum NmIcons::Icon)
-	?qt_metacall@NmStoreEnvelopesOperation@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 106 NONAME ; int NmStoreEnvelopesOperation::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?createNewMessage@NmUiEngine@@QAE?AV?$QPointer@VNmMessageCreationOperation@@@@ABVNmId@@@Z @ 107 NONAME ; class QPointer<class NmMessageCreationOperation> NmUiEngine::createNewMessage(class NmId const &)
-	?tr@NmBaseClientPlugin@@SA?AVQString@@PBD0H@Z @ 108 NONAME ; class QString NmBaseClientPlugin::tr(char const *, char const *, int)
-	?handleMatchFound@NmUiEngine@@AAEXABVNmId@@0@Z @ 109 NONAME ; void NmUiEngine::handleMatchFound(class NmId const &, class NmId const &)
-	?tr@NmMessageListModel@@SA?AVQString@@PBD0@Z @ 110 NONAME ; class QString NmMessageListModel::tr(char const *, char const *)
-	??1NmMailboxMetaData@@UAE@XZ @ 111 NONAME ; NmMailboxMetaData::~NmMailboxMetaData(void)
-	??0NmCheckOutboxOperation@@QAE@XZ @ 112 NONAME ; NmCheckOutboxOperation::NmCheckOutboxOperation(void)
-	?setPriorityLow@NmBaseClientPlugin@@QAEXXZ @ 113 NONAME ; void NmBaseClientPlugin::setPriorityLow(void)
-	?mailboxById@NmDataManager@@QAEPAVNmMailboxMetaData@@ABVNmId@@@Z @ 114 NONAME ; class NmMailboxMetaData * NmDataManager::mailboxById(class NmId const &)
-	?setId@NmMailboxMetaData@@QAEXABVNmId@@@Z @ 115 NONAME ; void NmMailboxMetaData::setId(class NmId const &)
-	?mailboxDeleted@NmUiEngine@@IAEXABVNmId@@@Z @ 116 NONAME ; void NmUiEngine::mailboxDeleted(class NmId const &)
-	?search@NmUiEngine@@QAEHABVNmId@@ABVQStringList@@@Z @ 117 NONAME ; int NmUiEngine::search(class NmId const &, class QStringList const &)
-	?createViewerViewCommands@NmBaseClientPlugin@@AAEXABVNmActionRequest@@AAV?$QList@PAVNmAction@@@@@Z @ 118 NONAME ; void NmBaseClientPlugin::createViewerViewCommands(class NmActionRequest const &, class QList<class NmAction *> &)
-	?isSendingMessage@NmUiEngine@@QBE_NXZ @ 119 NONAME ; bool NmUiEngine::isSendingMessage(void) const
-	??_ENmUiEngine@@UAE@I@Z @ 120 NONAME ; NmUiEngine::~NmUiEngine(unsigned int)
-	?staticMetaObject@NmStoreEnvelopesOperation@@2UQMetaObject@@B @ 121 NONAME ; struct QMetaObject const NmStoreEnvelopesOperation::staticMetaObject
-	??_ENmAddAttachmentsOperation@@UAE@I@Z @ 122 NONAME ; NmAddAttachmentsOperation::~NmAddAttachmentsOperation(unsigned int)
-	?messageDeleted@NmUiEngine@@IAEXABVNmId@@00@Z @ 123 NONAME ; void NmUiEngine::messageDeleted(class NmId const &, class NmId const &, class NmId const &)
-	?messageListModelForSearch@NmUiEngine@@QAEAAVNmMessageListModel@@ABVNmId@@@Z @ 124 NONAME ; class NmMessageListModel & NmUiEngine::messageListModelForSearch(class NmId const &)
-	?insertDividerIntoModel@NmMessageListModel@@AAEXPAVNmMessageEnvelope@@H@Z @ 125 NONAME ; void NmMessageListModel::insertDividerIntoModel(class NmMessageEnvelope *, int)
-	?qt_metacall@NmAddAttachmentsOperation@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 126 NONAME ; int NmAddAttachmentsOperation::qt_metacall(enum QMetaObject::Call, int, void * *)
-	??_ENmFolderListModel@@UAE@I@Z @ 127 NONAME ; NmFolderListModel::~NmFolderListModel(unsigned int)
-	??1NmMessageListModelItem@@UAE@XZ @ 128 NONAME ; NmMessageListModelItem::~NmMessageListModelItem(void)
-	?checkOutbox@NmUiEngine@@QAE?AV?$QPointer@VNmCheckOutboxOperation@@@@ABVNmId@@@Z @ 129 NONAME ; class QPointer<class NmCheckOutboxOperation> NmUiEngine::checkOutbox(class NmId const &)
-	?data@NmMailboxListModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 130 NONAME ; class QVariant NmMailboxListModel::data(class QModelIndex const &, int) const
-	?connectionState@NmUiEngine@@QAE?AW4NmConnectState@@ABVNmId@@@Z @ 131 NONAME ; enum NmConnectState NmUiEngine::connectionState(class NmId const &)
-	?sendMessage@NmUiEngine@@QAEXPAVNmMessage@@ABV?$QList@PAVNmOperation@@@@@Z @ 132 NONAME ; void NmUiEngine::sendMessage(class NmMessage *, class QList<class NmOperation *> const &)
-	?markAsUnread@NmBaseClientPlugin@@QAEXXZ @ 133 NONAME ; void NmBaseClientPlugin::markAsUnread(void)
-	?releaseInstance@NmDataPluginFactory@@SAXAAPAV1@@Z @ 134 NONAME ; void NmDataPluginFactory::releaseInstance(class NmDataPluginFactory * &)
-	?qt_metacall@NmMessageCreationOperation@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 135 NONAME ; int NmMessageCreationOperation::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?mPluginArray@NmDataPluginFactory@@0PAV?$QList@PAVQObject@@@@A @ 136 NONAME ; class QList<class QObject *> * NmDataPluginFactory::mPluginArray
-	?instance@NmDataPluginFactory@@SAPAV1@XZ @ 137 NONAME ; class NmDataPluginFactory * NmDataPluginFactory::instance(void)
-	?qt_metacast@NmAddAttachmentsOperation@@UAEPAXPBD@Z @ 138 NONAME ; void * NmAddAttachmentsOperation::qt_metacast(char const *)
-	?refreshModelItem@NmMailboxListModel@@QAEXABVNmId@@_N@Z @ 139 NONAME ; void NmMailboxListModel::refreshModelItem(class NmId const &, bool)
-	?columnCount@NmFolderListModel@@UBEHABVQModelIndex@@@Z @ 140 NONAME ; int NmFolderListModel::columnCount(class QModelIndex const &) const
-	?createNewMail@NmBaseClientPlugin@@QAEXXZ @ 141 NONAME ; void NmBaseClientPlugin::createNewMail(void)
-	?staticMetaObject@NmMessageListModel@@2UQMetaObject@@B @ 142 NONAME ; struct QMetaObject const NmMessageListModel::staticMetaObject
-	?syncStateEvent@NmUiEngine@@IAEXW4NmSyncState@@ABVNmId@@@Z @ 143 NONAME ; void NmUiEngine::syncStateEvent(enum NmSyncState, class NmId const &)
-	?setTitleDivider@NmMessageListModelItem@@QAEXABVQString@@@Z @ 144 NONAME ; void NmMessageListModelItem::setTitleDivider(class QString const &)
-	?qt_metacast@NmStoreEnvelopesOperation@@UAEPAXPBD@Z @ 145 NONAME ; void * NmStoreEnvelopesOperation::qt_metacast(char const *)
-	?qt_metacast@NmUiEngine@@UAEPAXPBD@Z @ 146 NONAME ; void * NmUiEngine::qt_metacast(char const *)
-	?qt_metacall@NmBaseClientPlugin@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 147 NONAME ; int NmBaseClientPlugin::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?mailboxListModel@NmUiEngine@@QAEAAVNmMailboxListModel@@XZ @ 148 NONAME ; class NmMailboxListModel & NmUiEngine::mailboxListModel(void)
-	??_ENmFolderMetaData@@UAE@I@Z @ 149 NONAME ; NmFolderMetaData::~NmFolderMetaData(unsigned int)
-	?createMailboxItem@NmMailboxListModel@@AAEPAVNmMailboxListModelItem@@PBVNmMailbox@@@Z @ 150 NONAME ; class NmMailboxListModelItem * NmMailboxListModel::createMailboxItem(class NmMailbox const *)
-	?handleMailboxEvent@NmMailboxListModel@@QAEXW4NmMailboxEvent@@ABV?$QList@VNmId@@@@@Z @ 151 NONAME ; void NmMailboxListModel::handleMailboxEvent(enum NmMailboxEvent, class QList<class NmId> const &)
-	?handleConnectEvent@NmUiEngine@@QAEXW4NmConnectState@@ABVNmId@@H@Z @ 152 NONAME ; void NmUiEngine::handleConnectEvent(enum NmConnectState, class NmId const &, int)
-	??0NmUiEngine@@AAE@XZ @ 153 NONAME ; NmUiEngine::NmUiEngine(void)
-	?deleteMessage@NmBaseClientPlugin@@QAEXXZ @ 154 NONAME ; void NmBaseClientPlugin::deleteMessage(void)
-	??1NmMessageCreationOperation@@MAE@XZ @ 155 NONAME ; NmMessageCreationOperation::~NmMessageCreationOperation(void)
-	?loadPlugin@NmDataPluginFactory@@QAEPAVQObject@@ABVQDir@@ABVQString@@@Z @ 156 NONAME ; class QObject * NmDataPluginFactory::loadPlugin(class QDir const &, class QString const &)
-	?doCompleteOperation@NmOperation@@MAEXXZ @ 157 NONAME ; void NmOperation::doCompleteOperation(void)
-	?IconId@NmMailboxMetaData@@QBE?AVNmId@@XZ @ 158 NONAME ; class NmId NmMailboxMetaData::IconId(void) const
-	?releaseInstance@NmUiEngine@@SAXAAPAV1@@Z @ 159 NONAME ; void NmUiEngine::releaseInstance(class NmUiEngine * &)
-	?dividerInsertionIndex@NmMessageListModel@@AAEHH@Z @ 160 NONAME ; int NmMessageListModel::dividerInsertionIndex(int)
-	??1NmDataPluginFactory@@EAE@XZ @ 161 NONAME ; NmDataPluginFactory::~NmDataPluginFactory(void)
-	?tr@NmStoreEnvelopesOperation@@SA?AVQString@@PBD0@Z @ 162 NONAME ; class QString NmStoreEnvelopesOperation::tr(char const *, char const *)
-	?instance@NmUiEngine@@SAPAV1@XZ @ 163 NONAME ; class NmUiEngine * NmUiEngine::instance(void)
-	?refreshMailbox@NmUiEngine@@QAEHABVNmId@@@Z @ 164 NONAME ; int NmUiEngine::refreshMailbox(class NmId const &)
-	?envelopeById@NmDataManager@@QAEPAVNmMessageEnvelope@@ABVNmId@@00@Z @ 165 NONAME ; class NmMessageEnvelope * NmDataManager::envelopeById(class NmId const &, class NmId const &, class NmId const &)
-	?cancelOperation@NmOperation@@QAEXXZ @ 166 NONAME ; void NmOperation::cancelOperation(void)
-	?staticMetaObject@NmCheckOutboxOperation@@2UQMetaObject@@B @ 167 NONAME ; struct QMetaObject const NmCheckOutboxOperation::staticMetaObject
-	?createReplyMessage@NmUiEngine@@QAE?AV?$QPointer@VNmMessageCreationOperation@@@@ABVNmId@@0_N@Z @ 168 NONAME ; class QPointer<class NmMessageCreationOperation> NmUiEngine::createReplyMessage(class NmId const &, class NmId const &, bool)
-	?pluginInstances@NmDataPluginFactory@@QAEPAV?$QList@PAVQObject@@@@XZ @ 169 NONAME ; class QList<class QObject *> * NmDataPluginFactory::pluginInstances(void)
-	?updateEnvelopeProperty@NmBaseClientPlugin@@AAEXW4NmEnvelopeProperties@@@Z @ 170 NONAME ; void NmBaseClientPlugin::updateEnvelopeProperty(enum NmEnvelopeProperties)
-	?trUtf8@NmMessageListModel@@SA?AVQString@@PBD0@Z @ 171 NONAME ; class QString NmMessageListModel::trUtf8(char const *, char const *)
-	?updateEnvelope@NmMessageListModel@@AAEXW4NmEnvelopeProperties@@ABVNmId@@@Z @ 172 NONAME ; void NmMessageListModel::updateEnvelope(enum NmEnvelopeProperties, class NmId const &)
-	?createTitleDividerItem@NmMessageListModel@@AAEPAVNmMessageListModelItem@@PAVNmMessageEnvelope@@@Z @ 173 NONAME ; class NmMessageListModelItem * NmMessageListModel::createTitleDividerItem(class NmMessageEnvelope *)
-	?trUtf8@NmMessageListModel@@SA?AVQString@@PBD0H@Z @ 174 NONAME ; class QString NmMessageListModel::trUtf8(char const *, char const *, int)
-	?trUtf8@NmDataManager@@SA?AVQString@@PBD0H@Z @ 175 NONAME ; class QString NmDataManager::trUtf8(char const *, char const *, int)
-	?handleMessageEvent@NmUiEngine@@AAEXW4NmMessageEvent@@ABVNmId@@ABV?$QList@VNmId@@@@1@Z @ 176 NONAME ; void NmUiEngine::handleMessageEvent(enum NmMessageEvent, class NmId const &, class QList<class NmId> const &, class NmId const &)
-	?tr@NmBaseClientPlugin@@SA?AVQString@@PBD0@Z @ 177 NONAME ; class QString NmBaseClientPlugin::tr(char const *, char const *)
-	??1NmAddAttachmentsOperation@@MAE@XZ @ 178 NONAME ; NmAddAttachmentsOperation::~NmAddAttachmentsOperation(void)
-	??0NmMailboxMetaData@@QAE@XZ @ 179 NONAME ; NmMailboxMetaData::NmMailboxMetaData(void)
-	?setName@NmMailboxMetaData@@QAEXABVQString@@@Z @ 180 NONAME ; void NmMailboxMetaData::setName(class QString const &)
-	?trUtf8@NmCheckOutboxOperation@@SA?AVQString@@PBD0@Z @ 181 NONAME ; class QString NmCheckOutboxOperation::trUtf8(char const *, char const *)
-	?qt_metacall@NmMailboxListModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 182 NONAME ; int NmMailboxListModel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	??0NmBaseClientPlugin@@QAE@XZ @ 183 NONAME ; NmBaseClientPlugin::NmBaseClientPlugin(void)
-	?mPluginLoaderArray@NmDataPluginFactory@@0V?$QList@PAVQPluginLoader@@@@A @ 184 NONAME ; class QList<class QPluginLoader *> NmDataPluginFactory::mPluginLoaderArray
-	?setDividers@NmMessageListModel@@QAEX_N@Z @ 185 NONAME ; void NmMessageListModel::setDividers(bool)
-	?handleRequest@NmBaseClientPlugin@@IAEXW4NmActionResponseCommand@@ABVNmActionRequest@@@Z @ 186 NONAME ; void NmBaseClientPlugin::handleRequest(enum NmActionResponseCommand, class NmActionRequest const &)
-	?trUtf8@NmUiEngine@@SA?AVQString@@PBD0H@Z @ 187 NONAME ; class QString NmUiEngine::trUtf8(char const *, char const *, int)
-	?mailboxPropertyChanged@NmBaseClientPlugin@@AAEXABVNmId@@VQVariant@@1@Z @ 188 NONAME ; void NmBaseClientPlugin::mailboxPropertyChanged(class NmId const &, class QVariant, class QVariant)
-	?tr@NmOperation@@SA?AVQString@@PBD0@Z @ 189 NONAME ; class QString NmOperation::tr(char const *, char const *)
-	?metaObject@NmUiEngine@@UBEPBUQMetaObject@@XZ @ 190 NONAME ; struct QMetaObject const * NmUiEngine::metaObject(void) const
-	?name@NmMailboxMetaData@@QBE?AVQString@@XZ @ 191 NONAME ; class QString NmMailboxMetaData::name(void) const
-	?createNewMailViewerToolBar@NmBaseClientPlugin@@QAEXXZ @ 192 NONAME ; void NmBaseClientPlugin::createNewMailViewerToolBar(void)
-	?operationCancelled@NmOperation@@IAEXXZ @ 193 NONAME ; void NmOperation::operationCancelled(void)
-	??1NmFolderMetaData@@UAE@XZ @ 194 NONAME ; NmFolderMetaData::~NmFolderMetaData(void)
-	?qt_metacast@NmMessageCreationOperation@@UAEPAXPBD@Z @ 195 NONAME ; void * NmMessageCreationOperation::qt_metacast(char const *)
-	??_ENmCheckOutboxOperation@@UAE@I@Z @ 196 NONAME ; NmCheckOutboxOperation::~NmCheckOutboxOperation(unsigned int)
-	?createEditorViewCommands@NmBaseClientPlugin@@AAEXABVNmActionRequest@@AAV?$QList@PAVNmAction@@@@@Z @ 197 NONAME ; void NmBaseClientPlugin::createEditorViewCommands(class NmActionRequest const &, class QList<class NmAction *> &)
-	?getStaticMetaObject@NmCheckOutboxOperation@@SAABUQMetaObject@@XZ @ 198 NONAME ; struct QMetaObject const & NmCheckOutboxOperation::getStaticMetaObject(void)
-	?setPriorityHigh@NmBaseClientPlugin@@QAEXXZ @ 199 NONAME ; void NmBaseClientPlugin::setPriorityHigh(void)
-	?getStandardFolderId@NmDataManager@@QAE?AVNmId@@ABV2@W4NmFolderType@@@Z @ 200 NONAME ; class NmId NmDataManager::getStandardFolderId(class NmId const &, enum NmFolderType)
-	?handleSyncStateEvent@NmUiEngine@@QAEXW4NmSyncState@@ABVNmOperationCompletionEvent@@@Z @ 201 NONAME ; void NmUiEngine::handleSyncStateEvent(enum NmSyncState, class NmOperationCompletionEvent const &)
-	?tr@NmMessageListModel@@SA?AVQString@@PBD0H@Z @ 202 NONAME ; class QString NmMessageListModel::tr(char const *, char const *, int)
-	??1NmBaseClientPlugin@@UAE@XZ @ 203 NONAME ; NmBaseClientPlugin::~NmBaseClientPlugin(void)
-	?goOffline@NmUiEngine@@QAEHABVNmId@@@Z @ 204 NONAME ; int NmUiEngine::goOffline(class NmId const &)
-	?changed@NmMessageListModel@@AAE_NABVNmMessageEnvelope@@0@Z @ 205 NONAME ; bool NmMessageListModel::changed(class NmMessageEnvelope const &, class NmMessageEnvelope const &)
-	?staticMetaObject@NmDataManager@@2UQMetaObject@@B @ 206 NONAME ; struct QMetaObject const NmDataManager::staticMetaObject
-	?folderById@NmDataManager@@QAEPAVNmFolderMetaData@@ABVNmId@@0@Z @ 207 NONAME ; class NmFolderMetaData * NmDataManager::folderById(class NmId const &, class NmId const &)
-	?itemFromModel@NmMessageListModel@@AAEPAVNmMessageListModelItem@@ABVNmId@@@Z @ 208 NONAME ; class NmMessageListModelItem * NmMessageListModel::itemFromModel(class NmId const &)
-	?fetchMessagePart@NmUiEngine@@QAE?AV?$QPointer@VNmOperation@@@@ABVNmId@@000@Z @ 209 NONAME ; class QPointer<class NmOperation> NmUiEngine::fetchMessagePart(class NmId const &, class NmId const &, class NmId const &, class NmId const &)
-	?openAttachment@NmBaseClientPlugin@@QAEXXZ @ 210 NONAME ; void NmBaseClientPlugin::openAttachment(void)
-	?qt_metacall@NmOperation@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 211 NONAME ; int NmOperation::qt_metacall(enum QMetaObject::Call, int, void * *)
-	??1NmStoreEnvelopesOperation@@MAE@XZ @ 212 NONAME ; NmStoreEnvelopesOperation::~NmStoreEnvelopesOperation(void)
-	?address@NmMailboxMetaData@@QBE?AVQString@@XZ @ 213 NONAME ; class QString NmMailboxMetaData::address(void) const
-	?setIconId@NmMailboxMetaData@@QAEXABVNmId@@@Z @ 214 NONAME ; void NmMailboxMetaData::setIconId(class NmId const &)
-	?metaObject@NmDataManager@@UBEPBUQMetaObject@@XZ @ 215 NONAME ; struct QMetaObject const * NmDataManager::metaObject(void) const
-	??1NmMailboxListModel@@UAE@XZ @ 216 NONAME ; NmMailboxListModel::~NmMailboxListModel(void)
-	?interfaceInstance@NmDataPluginFactory@@QAEPAVNmDataPluginInterface@@VNmId@@@Z @ 217 NONAME ; class NmDataPluginInterface * NmDataPluginFactory::interfaceInstance(class NmId)
-	?goOnline@NmUiEngine@@QAEHABVNmId@@@Z @ 218 NONAME ; int NmUiEngine::goOnline(class NmId const &)
-	??0NmMessageCreationOperation@@QAE@XZ @ 219 NONAME ; NmMessageCreationOperation::NmMessageCreationOperation(void)
-	?tr@NmAddAttachmentsOperation@@SA?AVQString@@PBD0@Z @ 220 NONAME ; class QString NmAddAttachmentsOperation::tr(char const *, char const *)
-	?handleMessageEvent@NmMessageListModel@@QAEXW4NmMessageEvent@@ABVNmId@@ABV?$QList@VNmId@@@@@Z @ 221 NONAME ; void NmMessageListModel::handleMessageEvent(enum NmMessageEvent, class NmId const &, class QList<class NmId> const &)
-	?setExpanded@NmMessageListModelItem@@QAEX_N@Z @ 222 NONAME ; void NmMessageListModelItem::setExpanded(bool)
-	?trUtf8@NmAddAttachmentsOperation@@SA?AVQString@@PBD0H@Z @ 223 NONAME ; class QString NmAddAttachmentsOperation::trUtf8(char const *, char const *, int)
-	?messagesBelongUnderSameDivider@NmMessageListModel@@ABE_NPBVNmMessageEnvelope@@0@Z @ 224 NONAME ; bool NmMessageListModel::messagesBelongUnderSameDivider(class NmMessageEnvelope const *, class NmMessageEnvelope const *) const
-	?qt_metacast@NmBaseClientPlugin@@UAEPAXPBD@Z @ 225 NONAME ; void * NmBaseClientPlugin::qt_metacast(char const *)
-	?staticMetaObject@NmUiEngine@@2UQMetaObject@@B @ 226 NONAME ; struct QMetaObject const NmUiEngine::staticMetaObject
-	?tr@NmCheckOutboxOperation@@SA?AVQString@@PBD0H@Z @ 227 NONAME ; class QString NmCheckOutboxOperation::tr(char const *, char const *, int)
-	?operationProgressChanged@NmOperation@@IAEXH@Z @ 228 NONAME ; void NmOperation::operationProgressChanged(int)
-	??0NmFolderMetaData@@QAE@XZ @ 229 NONAME ; NmFolderMetaData::NmFolderMetaData(void)
-	?refresh@NmBaseClientPlugin@@QAEXXZ @ 230 NONAME ; void NmBaseClientPlugin::refresh(void)
-	?setEnvelope@NmMessageListModelItem@@QAEXABVNmMessageEnvelope@@@Z @ 231 NONAME ; void NmMessageListModelItem::setEnvelope(class NmMessageEnvelope const &)
-	?qt_metacast@NmCheckOutboxOperation@@UAEPAXPBD@Z @ 232 NONAME ; void * NmCheckOutboxOperation::qt_metacast(char const *)
-	?currentMailboxId@NmMessageListModel@@QAE?AVNmId@@XZ @ 233 NONAME ; class NmId NmMessageListModel::currentMailboxId(void)
-	??_ENmMessageListModelItem@@UAE@I@Z @ 234 NONAME ; NmMessageListModelItem::~NmMessageListModelItem(unsigned int)
-	?tr@NmDataManager@@SA?AVQString@@PBD0H@Z @ 235 NONAME ; class QString NmDataManager::tr(char const *, char const *, int)
-	?staticMetaObject@NmBaseClientPlugin@@2UQMetaObject@@B @ 236 NONAME ; struct QMetaObject const NmBaseClientPlugin::staticMetaObject
-	?trUtf8@NmOperation@@SA?AVQString@@PBD0@Z @ 237 NONAME ; class QString NmOperation::trUtf8(char const *, char const *)
-	?operationPartCompleted@NmAddAttachmentsOperation@@IAEXABVQString@@ABVNmId@@H@Z @ 238 NONAME ; void NmAddAttachmentsOperation::operationPartCompleted(class QString const &, class NmId const &, int)
-	?listMailboxes@NmDataManager@@QAEXAAV?$QList@PAVNmMailbox@@@@@Z @ 239 NONAME ; void NmDataManager::listMailboxes(class QList<class NmMailbox *> &)
-	?trUtf8@NmOperation@@SA?AVQString@@PBD0H@Z @ 240 NONAME ; class QString NmOperation::trUtf8(char const *, char const *, int)
-	?trUtf8@NmAddAttachmentsOperation@@SA?AVQString@@PBD0@Z @ 241 NONAME ; class QString NmAddAttachmentsOperation::trUtf8(char const *, char const *)
-	?goOffline@NmBaseClientPlugin@@AAEXABVNmId@@@Z @ 242 NONAME ; void NmBaseClientPlugin::goOffline(class NmId const &)
-	?qt_metacall@NmDataManager@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 243 NONAME ; int NmDataManager::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?trUtf8@NmMailboxListModel@@SA?AVQString@@PBD0H@Z @ 244 NONAME ; class QString NmMailboxListModel::trUtf8(char const *, char const *, int)
-	?handleCompletedSendOperation@NmUiEngine@@QAEXXZ @ 245 NONAME ; void NmUiEngine::handleCompletedSendOperation(void)
-	??1NmCheckOutboxOperation@@MAE@XZ @ 246 NONAME ; NmCheckOutboxOperation::~NmCheckOutboxOperation(void)
-	?messagePartFile@NmUiEngine@@QAE?AVXQSharableFile@@ABVNmId@@000@Z @ 247 NONAME ; class XQSharableFile NmUiEngine::messagePartFile(class NmId const &, class NmId const &, class NmId const &, class NmId const &)
-	?doCancelOperation@NmOperation@@MAEXXZ @ 248 NONAME ; void NmOperation::doCancelOperation(void)
-	?metaObject@NmCheckOutboxOperation@@UBEPBUQMetaObject@@XZ @ 249 NONAME ; struct QMetaObject const * NmCheckOutboxOperation::metaObject(void) const
-	?id@NmFolderMetaData@@QBE?AVNmId@@XZ @ 250 NONAME ; class NmId NmFolderMetaData::id(void) const
-	??0NmMessageListModel@@QAE@AAVNmDataManager@@PAVQObject@@@Z @ 251 NONAME ; NmMessageListModel::NmMessageListModel(class NmDataManager &, class QObject *)
-	?staticMetaObject@NmMailboxListModel@@2UQMetaObject@@B @ 252 NONAME ; struct QMetaObject const NmMailboxListModel::staticMetaObject
-	?deleteMessages@NmUiEngine@@QAEHABVNmId@@0ABV?$QList@VNmId@@@@@Z @ 253 NONAME ; int NmUiEngine::deleteMessages(class NmId const &, class NmId const &, class QList<class NmId> const &)
-	?operationCompleted@NmOperation@@IAEXH@Z @ 254 NONAME ; void NmOperation::operationCompleted(int)
-	?setName@NmFolderMetaData@@QAEXABVQString@@@Z @ 255 NONAME ; void NmFolderMetaData::setName(class QString const &)
-	?folder@NmDataManager@@QAEPAVNmFolder@@ABVNmId@@0@Z @ 256 NONAME ; class NmFolder * NmDataManager::folder(class NmId const &, class NmId const &)
-	?createMessageItem@NmMessageListModel@@AAEPAVNmMessageListModelItem@@PAVNmMessageEnvelope@@@Z @ 257 NONAME ; class NmMessageListModelItem * NmMessageListModel::createMessageItem(class NmMessageEnvelope *)
-	?addPreliminaryOperation@NmOperation@@QAEXPAV1@@Z @ 258 NONAME ; void NmOperation::addPreliminaryOperation(class NmOperation *)
-	??_ENmDataManager@@UAE@I@Z @ 259 NONAME ; NmDataManager::~NmDataManager(unsigned int)
-	?runAsyncOperation@NmOperation@@MAEXXZ @ 260 NONAME ; void NmOperation::runAsyncOperation(void)
-	??0NmMailboxListModel@@QAE@AAVNmDataManager@@PAVQObject@@@Z @ 261 NONAME ; NmMailboxListModel::NmMailboxListModel(class NmDataManager &, class QObject *)
-	?addAttachments@NmUiEngine@@QAE?AV?$QPointer@VNmAddAttachmentsOperation@@@@ABVNmMessage@@ABV?$QList@VQString@@@@@Z @ 262 NONAME ; class QPointer<class NmAddAttachmentsOperation> NmUiEngine::addAttachments(class NmMessage const &, class QList<class QString> const &)
-	?connectionEvent@NmUiEngine@@IAEXW4NmConnectState@@ABVNmId@@@Z @ 263 NONAME ; void NmUiEngine::connectionEvent(enum NmConnectState, class NmId const &)
-	?removeMessage@NmUiEngine@@QAEHABVNmId@@00@Z @ 264 NONAME ; int NmUiEngine::removeMessage(class NmId const &, class NmId const &, class NmId const &)
-	?listFolders@NmDataManager@@QAEXVNmId@@AAV?$QList@PAVNmFolder@@@@@Z @ 265 NONAME ; void NmDataManager::listFolders(class NmId, class QList<class NmFolder *> &)
-	?contentToMessagePart@NmUiEngine@@QAEHABVNmId@@00AAVNmMessagePart@@@Z @ 266 NONAME ; int NmUiEngine::contentToMessagePart(class NmId const &, class NmId const &, class NmId const &, class NmMessagePart &)
-	??_ENmStoreEnvelopesOperation@@UAE@I@Z @ 267 NONAME ; NmStoreEnvelopesOperation::~NmStoreEnvelopesOperation(unsigned int)
-	?itemType@NmMessageListModelItem@@QBE?AW4NmMessageItemType@1@XZ @ 268 NONAME ; enum NmMessageListModelItem::NmMessageItemType NmMessageListModelItem::itemType(void) const
-	?setNewParam@NmMessageListModel@@IAEXPAVNmUiStartParam@@@Z @ 269 NONAME ; void NmMessageListModel::setNewParam(class NmUiStartParam *)
-	??0NmMessageSendingOperation@@QAE@XZ @ 270 NONAME ; NmMessageSendingOperation::NmMessageSendingOperation(void)
-	?qt_metacall@NmCheckOutboxOperation@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 271 NONAME ; int NmCheckOutboxOperation::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?doUpdateOperationProgress@NmOperation@@MAEXXZ @ 272 NONAME ; void NmOperation::doUpdateOperationProgress(void)
-	?folderTypeById@NmDataManager@@QAE?AW4NmFolderType@@VNmId@@0@Z @ 273 NONAME ; enum NmFolderType NmDataManager::folderTypeById(class NmId, class NmId)
-	??0NmAddAttachmentsOperation@@QAE@XZ @ 274 NONAME ; NmAddAttachmentsOperation::NmAddAttachmentsOperation(void)
-	?messageBeingSent@NmUiEngine@@QBEPBVNmMessage@@XZ @ 275 NONAME ; class NmMessage const * NmUiEngine::messageBeingSent(void) const
-	?trUtf8@NmStoreEnvelopesOperation@@SA?AVQString@@PBD0@Z @ 276 NONAME ; class QString NmStoreEnvelopesOperation::trUtf8(char const *, char const *)
-	??_ENmMessageCreationOperation@@UAE@I@Z @ 277 NONAME ; NmMessageCreationOperation::~NmMessageCreationOperation(unsigned int)
-	?freeIcons@NmIcons@@SAXXZ @ 278 NONAME ; void NmIcons::freeIcons(void)
-	?matchFound@NmUiEngine@@IAEXABVNmId@@0@Z @ 279 NONAME ; void NmUiEngine::matchFound(class NmId const &, class NmId const &)
-	?data@NmMessageListModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 280 NONAME ; class QVariant NmMessageListModel::data(class QModelIndex const &, int) const
-	?metaObject@NmStoreEnvelopesOperation@@UBEPBUQMetaObject@@XZ @ 281 NONAME ; struct QMetaObject const * NmStoreEnvelopesOperation::metaObject(void) const
-	?openMessage@NmBaseClientPlugin@@QAEXXZ @ 282 NONAME ; void NmBaseClientPlugin::openMessage(void)
-	?tr@NmUiEngine@@SA?AVQString@@PBD0H@Z @ 283 NONAME ; class QString NmUiEngine::tr(char const *, char const *, int)
-	?parent@NmFolderListModel@@UBE?AVQModelIndex@@ABV2@@Z @ 284 NONAME ; class QModelIndex NmFolderListModel::parent(class QModelIndex const &) const
-	?qt_metacast@NmDataManager@@UAEPAXPBD@Z @ 285 NONAME ; void * NmDataManager::qt_metacast(char const *)
-	?qt_metacast@NmMessageListModel@@UAEPAXPBD@Z @ 286 NONAME ; void * NmMessageListModel::qt_metacast(char const *)
-	?expanded@NmMessageListModelItem@@QBE_NXZ @ 287 NONAME ; bool NmMessageListModelItem::expanded(void) const
-	?tr@NmMailboxListModel@@SA?AVQString@@PBD0@Z @ 288 NONAME ; class QString NmMailboxListModel::tr(char const *, char const *)
-	?replyAllMail@NmBaseClientPlugin@@QAEXXZ @ 289 NONAME ; void NmBaseClientPlugin::replyAllMail(void)
-	?getStaticMetaObject@NmUiEngine@@SAABUQMetaObject@@XZ @ 290 NONAME ; struct QMetaObject const & NmUiEngine::getStaticMetaObject(void)
-	?listMailboxIds@NmDataManager@@QAEXAAV?$QList@VNmId@@@@@Z @ 291 NONAME ; void NmDataManager::listMailboxIds(class QList<class NmId> &)
-	?mailboxListChanged@NmBaseClientPlugin@@AAEXABVNmId@@W4MailboxEventType@NmSettings@@@Z @ 292 NONAME ; void NmBaseClientPlugin::mailboxListChanged(class NmId const &, enum NmSettings::MailboxEventType)
-	?metaObject@NmBaseClientPlugin@@UBEPBUQMetaObject@@XZ @ 293 NONAME ; struct QMetaObject const * NmBaseClientPlugin::metaObject(void) const
-	?refresh@NmFolderListModel@@QAEXAAV?$QList@PAVNmFolder@@@@@Z @ 294 NONAME ; void NmFolderListModel::refresh(class QList<class NmFolder *> &)
-	?sendMail@NmBaseClientPlugin@@QAEXXZ @ 295 NONAME ; void NmBaseClientPlugin::sendMail(void)
-	?tr@NmMessageCreationOperation@@SA?AVQString@@PBD0H@Z @ 296 NONAME ; class QString NmMessageCreationOperation::tr(char const *, char const *, int)
-	?listMessages@NmDataManager@@QAEXABVNmId@@0AAV?$QList@PAVNmMessageEnvelope@@@@@Z @ 297 NONAME ; void NmDataManager::listMessages(class NmId const &, class NmId const &, class QList<class NmMessageEnvelope *> &)
-	?message@NmUiEngine@@QAEPAVNmMessage@@ABVNmId@@00@Z @ 298 NONAME ; class NmMessage * NmUiEngine::message(class NmId const &, class NmId const &, class NmId const &)
-	?setEnvelopeProperties@NmMessageListModel@@QAEXW4NmEnvelopeProperties@@ABV?$QList@VNmId@@@@@Z @ 299 NONAME ; void NmMessageListModel::setEnvelopeProperties(enum NmEnvelopeProperties, class QList<class NmId> const &)
-	?metaObject@NmMailboxListModel@@UBEPBUQMetaObject@@XZ @ 300 NONAME ; struct QMetaObject const * NmMailboxListModel::metaObject(void) const
-	?tr@NmUiEngine@@SA?AVQString@@PBD0@Z @ 301 NONAME ; class QString NmUiEngine::tr(char const *, char const *)
-	?staticMetaObject@NmOperation@@2UQMetaObject@@B @ 302 NONAME ; struct QMetaObject const NmOperation::staticMetaObject
-	?refreshMailboxListModel@NmUiEngine@@QAEXXZ @ 303 NONAME ; void NmUiEngine::refreshMailboxListModel(void)
-	?trUtf8@NmCheckOutboxOperation@@SA?AVQString@@PBD0H@Z @ 304 NONAME ; class QString NmCheckOutboxOperation::trUtf8(char const *, char const *, int)
-	?goOnline@NmBaseClientPlugin@@AAEXABVNmId@@@Z @ 305 NONAME ; void NmBaseClientPlugin::goOnline(class NmId const &)
-	?standardFolderId@NmUiEngine@@QAE?AVNmId@@ABV2@W4NmFolderType@@@Z @ 306 NONAME ; class NmId NmUiEngine::standardFolderId(class NmId const &, enum NmFolderType)
-	??_ENmMessageSendingOperation@@UAE@I@Z @ 307 NONAME ; NmMessageSendingOperation::~NmMessageSendingOperation(unsigned int)
-	?pluginInstance@NmDataPluginFactory@@QAEPAVQObject@@VNmId@@@Z @ 308 NONAME ; class QObject * NmDataPluginFactory::pluginInstance(class NmId)
-	?mInstance@NmDataPluginFactory@@0PAV1@A @ 309 NONAME ; class NmDataPluginFactory * NmDataPluginFactory::mInstance
-	?mailboxById@NmUiEngine@@QAEPAVNmMailboxMetaData@@ABVNmId@@@Z @ 310 NONAME ; class NmMailboxMetaData * NmUiEngine::mailboxById(class NmId const &)
-	?trUtf8@NmDataManager@@SA?AVQString@@PBD0@Z @ 311 NONAME ; class QString NmDataManager::trUtf8(char const *, char const *)
-	??_ENmMailboxListModel@@UAE@I@Z @ 312 NONAME ; NmMailboxListModel::~NmMailboxListModel(unsigned int)
-	?getStaticMetaObject@NmStoreEnvelopesOperation@@SAABUQMetaObject@@XZ @ 313 NONAME ; struct QMetaObject const & NmStoreEnvelopesOperation::getStaticMetaObject(void)
-	?saveMessage@NmUiEngine@@QAEHABVNmMessage@@@Z @ 314 NONAME ; int NmUiEngine::saveMessage(class NmMessage const &)
-	?getStaticMetaObject@NmDataManager@@SAABUQMetaObject@@XZ @ 315 NONAME ; struct QMetaObject const & NmDataManager::getStaticMetaObject(void)
-	?applicationStateInterfaceInstance@NmDataPluginFactory@@QAEPAVNmApplicationStateInterface@@VNmId@@@Z @ 316 NONAME ; class NmApplicationStateInterface * NmDataPluginFactory::applicationStateInterfaceInstance(class NmId)
-	?applicationStateInterfaceInstance@NmDataPluginFactory@@AAEPAVNmApplicationStateInterface@@PAVQObject@@@Z @ 317 NONAME ; class NmApplicationStateInterface * NmDataPluginFactory::applicationStateInterfaceInstance(class QObject *)
-	?updateActiveFolder@NmUiEngine@@QAEXABVNmId@@0@Z @ 318 NONAME ; void NmUiEngine::updateActiveFolder(class NmId const &, class NmId const &)
-	?fetchMessageParts@NmUiEngine@@QAE?AV?$QPointer@VNmOperation@@@@ABVNmId@@00ABV?$QList@VNmId@@@@@Z @ 319 NONAME ; class QPointer<class NmOperation> NmUiEngine::fetchMessageParts(class NmId const &, class NmId const &, class NmId const &, class QList<class NmId> const &)
-	?setIgnoreFolderIds@NmMessageListModel@@QAEX_N@Z @ 320 NONAME ; void NmMessageListModel::setIgnoreFolderIds(bool)
+	?insertMessageIntoModel@NmMessageListModel@@AAEXPAVNmMessageEnvelope@@H_N@Z @ 1 NONAME ; void NmMessageListModel::insertMessageIntoModel(class NmMessageEnvelope *, int, bool)
+	??0NmUiEngine@@AAE@XZ @ 2 NONAME ; NmUiEngine::NmUiEngine(void)
+	?insertDividerIntoModel@NmMessageListModel@@AAEXPAVNmMessageEnvelope@@H@Z @ 3 NONAME ; void NmMessageListModel::insertDividerIntoModel(class NmMessageEnvelope *, int)
+	?goOnline@NmUiEngine@@QAEHABVNmId@@@Z @ 4 NONAME ; int NmUiEngine::goOnline(class NmId const &)
+	??0NmStoreEnvelopesOperation@@QAE@XZ @ 5 NONAME ; NmStoreEnvelopesOperation::NmStoreEnvelopesOperation(void)
+	?applicationStateInterfaceInstance@NmDataPluginFactory@@QAEPAVNmApplicationStateInterface@@VNmId@@@Z @ 6 NONAME ; class NmApplicationStateInterface * NmDataPluginFactory::applicationStateInterfaceInstance(class NmId)
+	?currentMailboxId@NmMessageListModel@@QAE?AVNmId@@XZ @ 7 NONAME ; class NmId NmMessageListModel::currentMailboxId(void)
+	?folderById@NmDataManager@@QAEPAVNmFolderMetaData@@ABVNmId@@0@Z @ 8 NONAME ; class NmFolderMetaData * NmDataManager::folderById(class NmId const &, class NmId const &)
+	?removeAttachment@NmBaseClientPlugin@@QAEXXZ @ 9 NONAME ; void NmBaseClientPlugin::removeAttachment(void)
+	?handleCompletedSaveDraftOperation@NmUiEngine@@QAEXXZ @ 10 NONAME ; void NmUiEngine::handleCompletedSaveDraftOperation(void)
+	?completeOperationPart@NmAddAttachmentsOperation@@QAEXABVQString@@ABVNmId@@H@Z @ 11 NONAME ; void NmAddAttachmentsOperation::completeOperationPart(class QString const &, class NmId const &, int)
+	?releaseInstance@NmUiEngine@@SAXAAPAV1@@Z @ 12 NONAME ; void NmUiEngine::releaseInstance(class NmUiEngine * &)
+	?id@NmMailboxMetaData@@QBE?AVNmId@@XZ @ 13 NONAME ; class NmId NmMailboxMetaData::id(void) const
+	??1NmMessageCreationOperation@@MAE@XZ @ 14 NONAME ; NmMessageCreationOperation::~NmMessageCreationOperation(void)
+	?qt_metacast@NmUiEngine@@UAEPAXPBD@Z @ 15 NONAME ; void * NmUiEngine::qt_metacast(char const *)
+	?setName@NmMailboxMetaData@@QAEXABVQString@@@Z @ 16 NONAME ; void NmMailboxMetaData::setName(class QString const &)
+	?staticMetaObject@NmStoreEnvelopesOperation@@2UQMetaObject@@B @ 17 NONAME ; struct QMetaObject const NmStoreEnvelopesOperation::staticMetaObject
+	?handleMessageEvent@NmUiEngine@@AAEXW4NmMessageEvent@@ABVNmId@@ABV?$QList@VNmId@@@@1@Z @ 18 NONAME ; void NmUiEngine::handleMessageEvent(enum NmMessageEvent, class NmId const &, class QList<class NmId> const &, class NmId const &)
+	?isRunning@NmOperation@@QBE_NXZ @ 19 NONAME ; bool NmOperation::isRunning(void) const
+	?setPriorityLow@NmBaseClientPlugin@@QAEXXZ @ 20 NONAME ; void NmBaseClientPlugin::setPriorityLow(void)
+	?tr@NmMessageCreationOperation@@SA?AVQString@@PBD0H@Z @ 21 NONAME ; class QString NmMessageCreationOperation::tr(char const *, char const *, int)
+	?openMessage@NmBaseClientPlugin@@QAEXXZ @ 22 NONAME ; void NmBaseClientPlugin::openMessage(void)
+	?getStaticMetaObject@NmMailboxListModel@@SAABUQMetaObject@@XZ @ 23 NONAME ; struct QMetaObject const & NmMailboxListModel::getStaticMetaObject(void)
+	?envelope@NmMessageListModelItem@@QBEABVNmMessageEnvelope@@XZ @ 24 NONAME ; class NmMessageEnvelope const & NmMessageListModelItem::envelope(void) const
+	?qt_metacall@NmMailboxListModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 25 NONAME ; int NmMailboxListModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?listMailboxIds@NmDataManager@@QAEXAAV?$QList@VNmId@@@@@Z @ 26 NONAME ; void NmDataManager::listMailboxIds(class QList<class NmId> &)
+	?removeDraftMessage@NmUiEngine@@QAEXPAVNmMessage@@@Z @ 27 NONAME ; void NmUiEngine::removeDraftMessage(class NmMessage *)
+	??0NmDataManager@@QAE@XZ @ 28 NONAME ; NmDataManager::NmDataManager(void)
+	?trUtf8@NmAddAttachmentsOperation@@SA?AVQString@@PBD0H@Z @ 29 NONAME ; class QString NmAddAttachmentsOperation::trUtf8(char const *, char const *, int)
+	?refresh@NmMailboxListModel@@QAEXAAV?$QList@PAVNmMailbox@@@@@Z @ 30 NONAME ; void NmMailboxListModel::refresh(class QList<class NmMailbox *> &)
+	?getStaticMetaObject@NmDataManager@@SAABUQMetaObject@@XZ @ 31 NONAME ; struct QMetaObject const & NmDataManager::getStaticMetaObject(void)
+	??1NmMessageListModel@@UAE@XZ @ 32 NONAME ; NmMessageListModel::~NmMessageListModel(void)
+	?handleCompletedSendOperation@NmUiEngine@@QAEXXZ @ 33 NONAME ; void NmUiEngine::handleCompletedSendOperation(void)
+	??_ENmFolderListModel@@UAE@I@Z @ 34 NONAME ; NmFolderListModel::~NmFolderListModel(unsigned int)
+	?contentToMessagePart@NmDataManager@@QAEHABVNmId@@00AAVNmMessagePart@@@Z @ 35 NONAME ; int NmDataManager::contentToMessagePart(class NmId const &, class NmId const &, class NmId const &, class NmMessagePart &)
+	?setExpanded@NmMessageListModelItem@@QAEX_N@Z @ 36 NONAME ; void NmMessageListModelItem::setExpanded(bool)
+	?saveDraftMessage@NmUiEngine@@QAEXPAVNmMessage@@ABV?$QList@PAVNmOperation@@@@@Z @ 37 NONAME ; void NmUiEngine::saveDraftMessage(class NmMessage *, class QList<class NmOperation *> const &)
+	?getStaticMetaObject@NmStoreEnvelopesOperation@@SAABUQMetaObject@@XZ @ 38 NONAME ; struct QMetaObject const & NmStoreEnvelopesOperation::getStaticMetaObject(void)
+	?setPriorityHigh@NmBaseClientPlugin@@QAEXXZ @ 39 NONAME ; void NmBaseClientPlugin::setPriorityHigh(void)
+	??0NmAddAttachmentsOperation@@QAE@XZ @ 40 NONAME ; NmAddAttachmentsOperation::NmAddAttachmentsOperation(void)
+	?deleteMessage@NmBaseClientPlugin@@QAEXXZ @ 41 NONAME ; void NmBaseClientPlugin::deleteMessage(void)
+	?getStaticMetaObject@NmAddAttachmentsOperation@@SAABUQMetaObject@@XZ @ 42 NONAME ; struct QMetaObject const & NmAddAttachmentsOperation::getStaticMetaObject(void)
+	?standardFolderId@NmUiEngine@@QAE?AVNmId@@ABV2@W4NmFolderType@@@Z @ 43 NONAME ; class NmId NmUiEngine::standardFolderId(class NmId const &, enum NmFolderType)
+	?settings@NmBaseClientPlugin@@QAEXXZ @ 44 NONAME ; void NmBaseClientPlugin::settings(void)
+	?staticMetaObject@NmUiEngine@@2UQMetaObject@@B @ 45 NONAME ; struct QMetaObject const NmUiEngine::staticMetaObject
+	?mailboxDeleted@NmUiEngine@@IAEXABVNmId@@@Z @ 46 NONAME ; void NmUiEngine::mailboxDeleted(class NmId const &)
+	?getIcon@NmIcons@@SAAAVHbIcon@@W4Icon@1@@Z @ 47 NONAME ; class HbIcon & NmIcons::getIcon(enum NmIcons::Icon)
+	?itemType@NmMessageListModelItem@@QBE?AW4NmMessageItemType@1@XZ @ 48 NONAME ; enum NmMessageListModelItem::NmMessageItemType NmMessageListModelItem::itemType(void) const
+	?mInstance@NmDataPluginFactory@@0PAV1@A @ 49 NONAME ; class NmDataPluginFactory * NmDataPluginFactory::mInstance
+	?data@NmFolderListModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 50 NONAME ; class QVariant NmFolderListModel::data(class QModelIndex const &, int) const
+	?setName@NmFolderMetaData@@QAEXABVQString@@@Z @ 51 NONAME ; void NmFolderMetaData::setName(class QString const &)
+	?mReferenceCount@NmUiEngine@@0HA @ 52 NONAME ; int NmUiEngine::mReferenceCount
+	?listFolders@NmDataManager@@QAEXVNmId@@AAV?$QList@PAVNmFolder@@@@@Z @ 53 NONAME ; void NmDataManager::listFolders(class NmId, class QList<class NmFolder *> &)
+	?fetchMessageParts@NmUiEngine@@QAE?AV?$QPointer@VNmOperation@@@@ABVNmId@@00ABV?$QList@VNmId@@@@@Z @ 54 NONAME ; class QPointer<class NmOperation> NmUiEngine::fetchMessageParts(class NmId const &, class NmId const &, class NmId const &, class QList<class NmId> const &)
+	?cancelSearch@NmUiEngine@@QAEHABVNmId@@@Z @ 55 NONAME ; int NmUiEngine::cancelSearch(class NmId const &)
+	?data@NmMailboxListModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 56 NONAME ; class QVariant NmMailboxListModel::data(class QModelIndex const &, int) const
+	?metaObject@NmMessageCreationOperation@@UBEPBUQMetaObject@@XZ @ 57 NONAME ; struct QMetaObject const * NmMessageCreationOperation::metaObject(void) const
+	?handlePreliminaryOperationFinished@NmOperation@@MAEXXZ @ 58 NONAME ; void NmOperation::handlePreliminaryOperationFinished(void)
+	?releaseInstance@NmDataPluginFactory@@SAXAAPAV1@@Z @ 59 NONAME ; void NmDataPluginFactory::releaseInstance(class NmDataPluginFactory * &)
+	?createEditorViewCommands@NmBaseClientPlugin@@AAEXABVNmActionRequest@@AAV?$QList@PAVNmAction@@@@@Z @ 60 NONAME ; void NmBaseClientPlugin::createEditorViewCommands(class NmActionRequest const &, class QList<class NmAction *> &)
+	?operationCancelled@NmOperation@@IAEXXZ @ 61 NONAME ; void NmOperation::operationCancelled(void)
+	??0NmDataPluginFactory@@AAE@XZ @ 62 NONAME ; NmDataPluginFactory::NmDataPluginFactory(void)
+	?refresh@NmBaseClientPlugin@@QAEXXZ @ 63 NONAME ; void NmBaseClientPlugin::refresh(void)
+	??1NmFolderMetaData@@UAE@XZ @ 64 NONAME ; NmFolderMetaData::~NmFolderMetaData(void)
+	??1NmMessageSendingOperation@@MAE@XZ @ 65 NONAME ; NmMessageSendingOperation::~NmMessageSendingOperation(void)
+	?name@NmFolderMetaData@@QBE?AVQString@@XZ @ 66 NONAME ; class QString NmFolderMetaData::name(void) const
+	??_ENmMessageCreationOperation@@UAE@I@Z @ 67 NONAME ; NmMessageCreationOperation::~NmMessageCreationOperation(unsigned int)
+	?sendMail@NmBaseClientPlugin@@QAEXXZ @ 68 NONAME ; void NmBaseClientPlugin::sendMail(void)
+	?insertNewMessageIntoModel@NmMessageListModel@@AAEXABVNmId@@00@Z @ 69 NONAME ; void NmMessageListModel::insertNewMessageIntoModel(class NmId const &, class NmId const &, class NmId const &)
+	?getStaticMetaObject@NmUiEngine@@SAABUQMetaObject@@XZ @ 70 NONAME ; struct QMetaObject const & NmUiEngine::getStaticMetaObject(void)
+	?applicationStateInterfaceInstance@NmDataPluginFactory@@AAEPAVNmApplicationStateInterface@@PAVQObject@@@Z @ 71 NONAME ; class NmApplicationStateInterface * NmDataPluginFactory::applicationStateInterfaceInstance(class QObject *)
+	?metaObject@NmMessageListModel@@UBEPBUQMetaObject@@XZ @ 72 NONAME ; struct QMetaObject const * NmMessageListModel::metaObject(void) const
+	?messageBeingSent@NmUiEngine@@QBEPBVNmMessage@@XZ @ 73 NONAME ; class NmMessage const * NmUiEngine::messageBeingSent(void) const
+	?handleMailboxEvent@NmUiEngine@@AAEXW4NmMailboxEvent@@ABV?$QList@VNmId@@@@@Z @ 74 NONAME ; void NmUiEngine::handleMailboxEvent(enum NmMailboxEvent, class QList<class NmId> const &)
+	?interfaceInstance@NmDataPluginFactory@@QAEPAVNmDataPluginInterface@@VNmId@@@Z @ 75 NONAME ; class NmDataPluginInterface * NmDataPluginFactory::interfaceInstance(class NmId)
+	?goOffline@NmBaseClientPlugin@@AAEXABVNmId@@@Z @ 76 NONAME ; void NmBaseClientPlugin::goOffline(class NmId const &)
+	?sendMessage@NmUiEngine@@QAEXPAVNmMessage@@ABV?$QList@PAVNmOperation@@@@@Z @ 77 NONAME ; void NmUiEngine::sendMessage(class NmMessage *, class QList<class NmOperation *> const &)
+	?tr@NmDataManager@@SA?AVQString@@PBD0H@Z @ 78 NONAME ; class QString NmDataManager::tr(char const *, char const *, int)
+	??0NmMailboxListModel@@QAE@AAVNmDataManager@@PAVQObject@@@Z @ 79 NONAME ; NmMailboxListModel::NmMailboxListModel(class NmDataManager &, class QObject *)
+	?handleMessageEvent@NmMessageListModel@@QAEXW4NmMessageEvent@@ABVNmId@@ABV?$QList@VNmId@@@@1@Z @ 80 NONAME ; void NmMessageListModel::handleMessageEvent(enum NmMessageEvent, class NmId const &, class QList<class NmId> const &, class NmId const &)
+	?setPriorityNormal@NmBaseClientPlugin@@QAEXXZ @ 81 NONAME ; void NmBaseClientPlugin::setPriorityNormal(void)
+	??_ENmMessageSendingOperation@@UAE@I@Z @ 82 NONAME ; NmMessageSendingOperation::~NmMessageSendingOperation(unsigned int)
+	?changed@NmMessageListModel@@AAE_NABVNmMessageEnvelope@@0@Z @ 83 NONAME ; bool NmMessageListModel::changed(class NmMessageEnvelope const &, class NmMessageEnvelope const &)
+	?openAttachment@NmBaseClientPlugin@@QAEXXZ @ 84 NONAME ; void NmBaseClientPlugin::openAttachment(void)
+	?staticMetaObject@NmMessageCreationOperation@@2UQMetaObject@@B @ 85 NONAME ; struct QMetaObject const NmMessageCreationOperation::staticMetaObject
+	?handleMailboxEvent@NmMailboxListModel@@QAEXW4NmMailboxEvent@@ABV?$QList@VNmId@@@@@Z @ 86 NONAME ; void NmMailboxListModel::handleMailboxEvent(enum NmMailboxEvent, class QList<class NmId> const &)
+	?metaObject@NmStoreEnvelopesOperation@@UBEPBUQMetaObject@@XZ @ 87 NONAME ; struct QMetaObject const * NmStoreEnvelopesOperation::metaObject(void) const
+	?trUtf8@NmMailboxListModel@@SA?AVQString@@PBD0H@Z @ 88 NONAME ; class QString NmMailboxListModel::trUtf8(char const *, char const *, int)
+	?mPluginArray@NmDataPluginFactory@@0PAV?$QList@PAVQObject@@@@A @ 89 NONAME ; class QList<class QObject *> * NmDataPluginFactory::mPluginArray
+	?instance@NmDataPluginFactory@@SAPAV1@XZ @ 90 NONAME ; class NmDataPluginFactory * NmDataPluginFactory::instance(void)
+	?getStaticMetaObject@NmMessageListModel@@SAABUQMetaObject@@XZ @ 91 NONAME ; struct QMetaObject const & NmMessageListModel::getStaticMetaObject(void)
+	?deleteMessageFromViewerView@NmBaseClientPlugin@@QAEXXZ @ 92 NONAME ; void NmBaseClientPlugin::deleteMessageFromViewerView(void)
+	?tr@NmUiEngine@@SA?AVQString@@PBD0H@Z @ 93 NONAME ; class QString NmUiEngine::tr(char const *, char const *, int)
+	?refresh@NmMessageListModel@@QAEXVNmId@@0ABV?$QList@PAVNmMessageEnvelope@@@@@Z @ 94 NONAME ; void NmMessageListModel::refresh(class NmId, class NmId, class QList<class NmMessageEnvelope *> const &)
+	?mailboxById@NmUiEngine@@QAEPAVNmMailboxMetaData@@ABVNmId@@@Z @ 95 NONAME ; class NmMailboxMetaData * NmUiEngine::mailboxById(class NmId const &)
+	?createNewMessage@NmUiEngine@@QAE?AV?$QPointer@VNmMessageCreationOperation@@@@ABVNmId@@@Z @ 96 NONAME ; class QPointer<class NmMessageCreationOperation> NmUiEngine::createNewMessage(class NmId const &)
+	??_ENmMessageListModelItem@@UAE@I@Z @ 97 NONAME ; NmMessageListModelItem::~NmMessageListModelItem(unsigned int)
+	?replyAllMail@NmBaseClientPlugin@@QAEXXZ @ 98 NONAME ; void NmBaseClientPlugin::replyAllMail(void)
+	?handleMatchFound@NmUiEngine@@AAEXABVNmId@@0@Z @ 99 NONAME ; void NmUiEngine::handleMatchFound(class NmId const &, class NmId const &)
+	?syncStateEvent@NmUiEngine@@IAEXW4NmSyncState@@ABVNmId@@@Z @ 100 NONAME ; void NmUiEngine::syncStateEvent(enum NmSyncState, class NmId const &)
+	?trUtf8@NmDataManager@@SA?AVQString@@PBD0@Z @ 101 NONAME ; class QString NmDataManager::trUtf8(char const *, char const *)
+	?setEnvelopeProperties@NmMessageListModel@@QAEXW4NmEnvelopeProperties@@ABV?$QList@VNmId@@@@@Z @ 102 NONAME ; void NmMessageListModel::setEnvelopeProperties(enum NmEnvelopeProperties, class QList<class NmId> const &)
+	??1NmStoreEnvelopesOperation@@MAE@XZ @ 103 NONAME ; NmStoreEnvelopesOperation::~NmStoreEnvelopesOperation(void)
+	?tr@NmUiEngine@@SA?AVQString@@PBD0@Z @ 104 NONAME ; class QString NmUiEngine::tr(char const *, char const *)
+	?mPluginLoaderArray@NmDataPluginFactory@@0V?$QList@PAVQPluginLoader@@@@A @ 105 NONAME ; class QList<class QPluginLoader *> NmDataPluginFactory::mPluginLoaderArray
+	?trUtf8@NmBaseClientPlugin@@SA?AVQString@@PBD0@Z @ 106 NONAME ; class QString NmBaseClientPlugin::trUtf8(char const *, char const *)
+	?deleteOperation@NmOperation@@AAEXXZ @ 107 NONAME ; void NmOperation::deleteOperation(void)
+	?trUtf8@NmBaseClientPlugin@@SA?AVQString@@PBD0H@Z @ 108 NONAME ; class QString NmBaseClientPlugin::trUtf8(char const *, char const *, int)
+	?createViewerViewCommands@NmBaseClientPlugin@@AAEXABVNmActionRequest@@AAV?$QList@PAVNmAction@@@@@Z @ 109 NONAME ; void NmBaseClientPlugin::createViewerViewCommands(class NmActionRequest const &, class QList<class NmAction *> &)
+	?fetchMessagePart@NmUiEngine@@QAE?AV?$QPointer@VNmOperation@@@@ABVNmId@@000@Z @ 110 NONAME ; class QPointer<class NmOperation> NmUiEngine::fetchMessagePart(class NmId const &, class NmId const &, class NmId const &, class NmId const &)
+	?tr@NmMailboxListModel@@SA?AVQString@@PBD0H@Z @ 111 NONAME ; class QString NmMailboxListModel::tr(char const *, char const *, int)
+	?handleConnectEvent@NmUiEngine@@QAEXW4NmConnectState@@ABVNmId@@H@Z @ 112 NONAME ; void NmUiEngine::handleConnectEvent(enum NmConnectState, class NmId const &, int)
+	?trUtf8@NmUiEngine@@SA?AVQString@@PBD0H@Z @ 113 NONAME ; class QString NmUiEngine::trUtf8(char const *, char const *, int)
+	?createMailboxItem@NmMailboxListModel@@AAEPAVNmMailboxListModelItem@@PBVNmMailbox@@@Z @ 114 NONAME ; class NmMailboxListModelItem * NmMailboxListModel::createMailboxItem(class NmMailbox const *)
+	?setTitleDivider@NmMessageListModelItem@@QAEXABVQString@@@Z @ 115 NONAME ; void NmMessageListModelItem::setTitleDivider(class QString const &)
+	?markAsRead@NmBaseClientPlugin@@QAEXXZ @ 116 NONAME ; void NmBaseClientPlugin::markAsRead(void)
+	?getInsertionIndex@NmMessageListModel@@ABEHABVNmMessageEnvelope@@@Z @ 117 NONAME ; int NmMessageListModel::getInsertionIndex(class NmMessageEnvelope const &) const
+	?updateOperationProgress@NmOperation@@QAEXH@Z @ 118 NONAME ; void NmOperation::updateOperationProgress(int)
+	??1NmFolderListModel@@UAE@XZ @ 119 NONAME ; NmFolderListModel::~NmFolderListModel(void)
+	?operationCompleted@NmUiEngine@@IAEXABVNmOperationCompletionEvent@@@Z @ 120 NONAME ; void NmUiEngine::operationCompleted(class NmOperationCompletionEvent const &)
+	??1NmDataManager@@UAE@XZ @ 121 NONAME ; NmDataManager::~NmDataManager(void)
+	?trUtf8@NmStoreEnvelopesOperation@@SA?AVQString@@PBD0@Z @ 122 NONAME ; class QString NmStoreEnvelopesOperation::trUtf8(char const *, char const *)
+	?setAddress@NmMailboxMetaData@@QAEXABVQString@@@Z @ 123 NONAME ; void NmMailboxMetaData::setAddress(class QString const &)
+	?getStaticMetaObject@NmMessageCreationOperation@@SAABUQMetaObject@@XZ @ 124 NONAME ; struct QMetaObject const & NmMessageCreationOperation::getStaticMetaObject(void)
+	?updateActiveFolder@NmUiEngine@@QAEXABVNmId@@0@Z @ 125 NONAME ; void NmUiEngine::updateActiveFolder(class NmId const &, class NmId const &)
+	?trUtf8@NmAddAttachmentsOperation@@SA?AVQString@@PBD0@Z @ 126 NONAME ; class QString NmAddAttachmentsOperation::trUtf8(char const *, char const *)
+	?name@NmMailboxMetaData@@QBE?AVQString@@XZ @ 127 NONAME ; class QString NmMailboxMetaData::name(void) const
+	?qt_metacall@NmDataManager@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 128 NONAME ; int NmDataManager::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?runAsyncOperation@NmOperation@@MAEXXZ @ 129 NONAME ; void NmOperation::runAsyncOperation(void)
+	??0NmFolderListModel@@QAE@AAVNmDataManager@@PAVQObject@@@Z @ 130 NONAME ; NmFolderListModel::NmFolderListModel(class NmDataManager &, class QObject *)
+	?folderTypeById@NmDataManager@@QAE?AW4NmFolderType@@VNmId@@0@Z @ 131 NONAME ; enum NmFolderType NmDataManager::folderTypeById(class NmId, class NmId)
+	?tr@NmBaseClientPlugin@@SA?AVQString@@PBD0H@Z @ 132 NONAME ; class QString NmBaseClientPlugin::tr(char const *, char const *, int)
+	??0NmMailboxMetaData@@QAE@XZ @ 133 NONAME ; NmMailboxMetaData::NmMailboxMetaData(void)
+	?setEnvelope@NmMessageListModelItem@@QAEXPAVNmMessageEnvelope@@@Z @ 134 NONAME ; void NmMessageListModelItem::setEnvelope(class NmMessageEnvelope *)
+	?saveMessage@NmUiEngine@@QAEHABVNmMessage@@@Z @ 135 NONAME ; int NmUiEngine::saveMessage(class NmMessage const &)
+	?setId@NmMailboxMetaData@@QAEXABVNmId@@@Z @ 136 NONAME ; void NmMailboxMetaData::setId(class NmId const &)
+	?folderTypeById@NmUiEngine@@QAE?AW4NmFolderType@@VNmId@@0@Z @ 137 NONAME ; enum NmFolderType NmUiEngine::folderTypeById(class NmId, class NmId)
+	?mReferenceCount@NmDataPluginFactory@@0HA @ 138 NONAME ; int NmDataPluginFactory::mReferenceCount
+	?tr@NmOperation@@SA?AVQString@@PBD0@Z @ 139 NONAME ; class QString NmOperation::tr(char const *, char const *)
+	?updateMessageEnvelope@NmMessageListModel@@AAEXABVNmId@@00@Z @ 140 NONAME ; void NmMessageListModel::updateMessageEnvelope(class NmId const &, class NmId const &, class NmId const &)
+	?tr@NmStoreEnvelopesOperation@@SA?AVQString@@PBD0@Z @ 141 NONAME ; class QString NmStoreEnvelopesOperation::tr(char const *, char const *)
+	?messagesBelongUnderSameDivider@NmMessageListModel@@ABE_NPBVNmMessageEnvelope@@0@Z @ 142 NONAME ; bool NmMessageListModel::messagesBelongUnderSameDivider(class NmMessageEnvelope const *, class NmMessageEnvelope const *) const
+	?matchFound@NmUiEngine@@IAEXABVNmId@@0@Z @ 143 NONAME ; void NmUiEngine::matchFound(class NmId const &, class NmId const &)
+	?metaObject@NmDataManager@@UBEPBUQMetaObject@@XZ @ 144 NONAME ; struct QMetaObject const * NmDataManager::metaObject(void) const
+	?isSendingMessage@NmUiEngine@@QBE_NXZ @ 145 NONAME ; bool NmUiEngine::isSendingMessage(void) const
+	?freeIcons@NmIcons@@SAXXZ @ 146 NONAME ; void NmIcons::freeIcons(void)
+	?tr@NmAddAttachmentsOperation@@SA?AVQString@@PBD0@Z @ 147 NONAME ; class QString NmAddAttachmentsOperation::tr(char const *, char const *)
+	?itemFromModel@NmMessageListModel@@AAEPAVNmMessageListModelItem@@ABVNmId@@@Z @ 148 NONAME ; class NmMessageListModelItem * NmMessageListModel::itemFromModel(class NmId const &)
+	?instance@NmUiEngine@@SAPAV1@XZ @ 149 NONAME ; class NmUiEngine * NmUiEngine::instance(void)
+	?createMessageListCommands@NmBaseClientPlugin@@AAEXABVNmActionRequest@@AAV?$QList@PAVNmAction@@@@@Z @ 150 NONAME ; void NmBaseClientPlugin::createMessageListCommands(class NmActionRequest const &, class QList<class NmAction *> &)
+	?updateEnvelopeProperty@NmBaseClientPlugin@@AAEXW4NmEnvelopeProperties@@@Z @ 151 NONAME ; void NmBaseClientPlugin::updateEnvelopeProperty(enum NmEnvelopeProperties)
+	??1NmAddAttachmentsOperation@@MAE@XZ @ 152 NONAME ; NmAddAttachmentsOperation::~NmAddAttachmentsOperation(void)
+	?goOffline@NmUiEngine@@QAEHABVNmId@@@Z @ 153 NONAME ; int NmUiEngine::goOffline(class NmId const &)
+	?staticMetaObject@NmDataManager@@2UQMetaObject@@B @ 154 NONAME ; struct QMetaObject const NmDataManager::staticMetaObject
+	?mInstance@NmUiEngine@@0PAV1@A @ 155 NONAME ; class NmUiEngine * NmUiEngine::mInstance
+	?attach@NmBaseClientPlugin@@QAEXXZ @ 156 NONAME ; void NmBaseClientPlugin::attach(void)
+	?setIgnoreFolderIds@NmMessageListModel@@QAEX_N@Z @ 157 NONAME ; void NmMessageListModel::setIgnoreFolderIds(bool)
+	?metaObject@NmAddAttachmentsOperation@@UBEPBUQMetaObject@@XZ @ 158 NONAME ; struct QMetaObject const * NmAddAttachmentsOperation::metaObject(void) const
+	?refresh@NmFolderListModel@@QAEXAAV?$QList@PAVNmFolder@@@@@Z @ 159 NONAME ; void NmFolderListModel::refresh(class QList<class NmFolder *> &)
+	?handleCompletedRemoveDraftOperation@NmUiEngine@@QAEXXZ @ 160 NONAME ; void NmUiEngine::handleCompletedRemoveDraftOperation(void)
+	?trUtf8@NmMailboxListModel@@SA?AVQString@@PBD0@Z @ 161 NONAME ; class QString NmMailboxListModel::trUtf8(char const *, char const *)
+	?envelopeById@NmDataManager@@QAEPAVNmMessageEnvelope@@ABVNmId@@00@Z @ 162 NONAME ; class NmMessageEnvelope * NmDataManager::envelopeById(class NmId const &, class NmId const &, class NmId const &)
+	?getStaticMetaObject@NmOperation@@SAABUQMetaObject@@XZ @ 163 NONAME ; struct QMetaObject const & NmOperation::getStaticMetaObject(void)
+	?trUtf8@NmOperation@@SA?AVQString@@PBD0@Z @ 164 NONAME ; class QString NmOperation::trUtf8(char const *, char const *)
+	?addAttachments@NmUiEngine@@QAE?AV?$QPointer@VNmAddAttachmentsOperation@@@@ABVNmMessage@@ABV?$QList@VQString@@@@@Z @ 165 NONAME ; class QPointer<class NmAddAttachmentsOperation> NmUiEngine::addAttachments(class NmMessage const &, class QList<class QString> const &)
+	?doCancelOperation@NmOperation@@MAEXXZ @ 166 NONAME ; void NmOperation::doCancelOperation(void)
+	?tr@NmOperation@@SA?AVQString@@PBD0H@Z @ 167 NONAME ; class QString NmOperation::tr(char const *, char const *, int)
+	??_ENmOperation@@UAE@I@Z @ 168 NONAME ; NmOperation::~NmOperation(unsigned int)
+	?tr@NmMessageCreationOperation@@SA?AVQString@@PBD0@Z @ 169 NONAME ; class QString NmMessageCreationOperation::tr(char const *, char const *)
+	?qt_metacall@NmMessageListModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 170 NONAME ; int NmMessageListModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?staticMetaObject@NmOperation@@2UQMetaObject@@B @ 171 NONAME ; struct QMetaObject const NmOperation::staticMetaObject
+	??1NmUiEngine@@EAE@XZ @ 172 NONAME ; NmUiEngine::~NmUiEngine(void)
+	?messagePartFile@NmUiEngine@@QAE?AVXQSharableFile@@ABVNmId@@000@Z @ 173 NONAME ; class XQSharableFile NmUiEngine::messagePartFile(class NmId const &, class NmId const &, class NmId const &, class NmId const &)
+	??_ENmMessageListModel@@UAE@I@Z @ 174 NONAME ; NmMessageListModel::~NmMessageListModel(unsigned int)
+	?addPreliminaryOperation@NmOperation@@QAEXPAV1@@Z @ 175 NONAME ; void NmOperation::addPreliminaryOperation(class NmOperation *)
+	?deleteMessages@NmUiEngine@@QAEHABVNmId@@0ABV?$QList@VNmId@@@@@Z @ 176 NONAME ; int NmUiEngine::deleteMessages(class NmId const &, class NmId const &, class QList<class NmId> const &)
+	??_ENmStoreEnvelopesOperation@@UAE@I@Z @ 177 NONAME ; NmStoreEnvelopesOperation::~NmStoreEnvelopesOperation(unsigned int)
+	?mailboxById@NmDataManager@@QAEPAVNmMailboxMetaData@@ABVNmId@@@Z @ 178 NONAME ; class NmMailboxMetaData * NmDataManager::mailboxById(class NmId const &)
+	?messageListModelForSearch@NmUiEngine@@QAEAAVNmMessageListModel@@ABVNmId@@@Z @ 179 NONAME ; class NmMessageListModel & NmUiEngine::messageListModelForSearch(class NmId const &)
+	?search@NmBaseClientPlugin@@QAEXXZ @ 180 NONAME ; void NmBaseClientPlugin::search(void)
+	?pluginInstances@NmDataPluginFactory@@QAEPAV?$QList@PAVQObject@@@@XZ @ 181 NONAME ; class QList<class QObject *> * NmDataPluginFactory::pluginInstances(void)
+	?tr@NmBaseClientPlugin@@SA?AVQString@@PBD0@Z @ 182 NONAME ; class QString NmBaseClientPlugin::tr(char const *, char const *)
+	?listMessages@NmDataManager@@QAEXABVNmId@@0AAV?$QList@PAVNmMessageEnvelope@@@@@Z @ 183 NONAME ; void NmDataManager::listMessages(class NmId const &, class NmId const &, class QList<class NmMessageEnvelope *> &)
+	??1NmBaseClientPlugin@@UAE@XZ @ 184 NONAME ; NmBaseClientPlugin::~NmBaseClientPlugin(void)
+	?qt_metacast@NmDataManager@@UAEPAXPBD@Z @ 185 NONAME ; void * NmDataManager::qt_metacast(char const *)
+	??0NmMessageCreationOperation@@QAE@XZ @ 186 NONAME ; NmMessageCreationOperation::NmMessageCreationOperation(void)
+	?qt_metacall@NmBaseClientPlugin@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 187 NONAME ; int NmBaseClientPlugin::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?envelopePtr@NmMessageListModelItem@@QAEPAVNmMessageEnvelope@@XZ @ 188 NONAME ; class NmMessageEnvelope * NmMessageListModelItem::envelopePtr(void)
+	?messageListModel@NmUiEngine@@QAEAAVNmMessageListModel@@ABVNmId@@0@Z @ 189 NONAME ; class NmMessageListModel & NmUiEngine::messageListModel(class NmId const &, class NmId const &)
+	??1NmMailboxMetaData@@UAE@XZ @ 190 NONAME ; NmMailboxMetaData::~NmMailboxMetaData(void)
+	?connectionEvent@NmUiEngine@@IAEXW4NmConnectState@@ABVNmId@@@Z @ 191 NONAME ; void NmUiEngine::connectionEvent(enum NmConnectState, class NmId const &)
+	?mailbox@NmDataManager@@QAEPAVNmMailbox@@ABVNmId@@@Z @ 192 NONAME ; class NmMailbox * NmDataManager::mailbox(class NmId const &)
+	?interfaceInstance@NmDataPluginFactory@@QAEPAVNmDataPluginInterface@@PAVQObject@@@Z @ 193 NONAME ; class NmDataPluginInterface * NmDataPluginFactory::interfaceInstance(class QObject *)
+	?refreshModelItem@NmMailboxListModel@@QAEXABVNmId@@@Z @ 194 NONAME ; void NmMailboxListModel::refreshModelItem(class NmId const &)
+	?metaObject@NmMailboxListModel@@UBEPBUQMetaObject@@XZ @ 195 NONAME ; struct QMetaObject const * NmMailboxListModel::metaObject(void) const
+	?IconId@NmMailboxMetaData@@QBE?AVNmId@@XZ @ 196 NONAME ; class NmId NmMailboxMetaData::IconId(void) const
+	?sendOperationCompleted@NmUiEngine@@IAEXXZ @ 197 NONAME ; void NmUiEngine::sendOperationCompleted(void)
+	??0NmFolderMetaData@@QAE@XZ @ 198 NONAME ; NmFolderMetaData::NmFolderMetaData(void)
+	?staticMetaObject@NmAddAttachmentsOperation@@2UQMetaObject@@B @ 199 NONAME ; struct QMetaObject const NmAddAttachmentsOperation::staticMetaObject
+	?connectionState@NmUiEngine@@QAE?AW4NmConnectState@@ABVNmId@@@Z @ 200 NONAME ; enum NmConnectState NmUiEngine::connectionState(class NmId const &)
+	?createTitleDividerItem@NmMessageListModel@@AAEPAVNmMessageListModelItem@@PAVNmMessageEnvelope@@@Z @ 201 NONAME ; class NmMessageListModelItem * NmMessageListModel::createTitleDividerItem(class NmMessageEnvelope *)
+	?setId@NmFolderMetaData@@QAEXABVNmId@@@Z @ 202 NONAME ; void NmFolderMetaData::setId(class NmId const &)
+	??0NmOperation@@QAE@XZ @ 203 NONAME ; NmOperation::NmOperation(void)
+	?cancelOperation@NmOperation@@QAEXXZ @ 204 NONAME ; void NmOperation::cancelOperation(void)
+	??_ENmFolderMetaData@@UAE@I@Z @ 205 NONAME ; NmFolderMetaData::~NmFolderMetaData(unsigned int)
+	?qt_metacast@NmMessageListModel@@UAEPAXPBD@Z @ 206 NONAME ; void * NmMessageListModel::qt_metacast(char const *)
+	?operationProgressChanged@NmOperation@@IAEXH@Z @ 207 NONAME ; void NmOperation::operationProgressChanged(int)
+	?trUtf8@NmOperation@@SA?AVQString@@PBD0H@Z @ 208 NONAME ; class QString NmOperation::trUtf8(char const *, char const *, int)
+	??_ENmMailboxListModel@@UAE@I@Z @ 209 NONAME ; NmMailboxListModel::~NmMailboxListModel(unsigned int)
+	?messageDeleted@NmUiEngine@@IAEXABVNmId@@00@Z @ 210 NONAME ; void NmUiEngine::messageDeleted(class NmId const &, class NmId const &, class NmId const &)
+	?trUtf8@NmMessageCreationOperation@@SA?AVQString@@PBD0@Z @ 211 NONAME ; class QString NmMessageCreationOperation::trUtf8(char const *, char const *)
+	?metaObject@NmUiEngine@@UBEPBUQMetaObject@@XZ @ 212 NONAME ; struct QMetaObject const * NmUiEngine::metaObject(void) const
+	??_ENmBaseClientPlugin@@UAE@I@Z @ 213 NONAME ; NmBaseClientPlugin::~NmBaseClientPlugin(unsigned int)
+	?markAsUnread@NmBaseClientPlugin@@QAEXXZ @ 214 NONAME ; void NmBaseClientPlugin::markAsUnread(void)
+	?metaObject@NmBaseClientPlugin@@UBEPBUQMetaObject@@XZ @ 215 NONAME ; struct QMetaObject const * NmBaseClientPlugin::metaObject(void) const
+	?tr@NmDataManager@@SA?AVQString@@PBD0@Z @ 216 NONAME ; class QString NmDataManager::tr(char const *, char const *)
+	?mailboxListModel@NmUiEngine@@QAEAAVNmMailboxListModel@@XZ @ 217 NONAME ; class NmMailboxListModel & NmUiEngine::mailboxListModel(void)
+	?fetchMessage@NmUiEngine@@QAE?AV?$QPointer@VNmOperation@@@@ABVNmId@@00@Z @ 218 NONAME ; class QPointer<class NmOperation> NmUiEngine::fetchMessage(class NmId const &, class NmId const &, class NmId const &)
+	?setIconId@NmMailboxMetaData@@QAEXABVNmId@@@Z @ 219 NONAME ; void NmMailboxMetaData::setIconId(class NmId const &)
+	??1NmDataPluginFactory@@EAE@XZ @ 220 NONAME ; NmDataPluginFactory::~NmDataPluginFactory(void)
+	?refreshMailboxListModel@NmUiEngine@@QAEXXZ @ 221 NONAME ; void NmUiEngine::refreshMailboxListModel(void)
+	?qt_metacall@NmStoreEnvelopesOperation@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 222 NONAME ; int NmStoreEnvelopesOperation::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?trUtf8@NmMessageListModel@@SA?AVQString@@PBD0@Z @ 223 NONAME ; class QString NmMessageListModel::trUtf8(char const *, char const *)
+	?rowCount@NmFolderListModel@@UBEHABVQModelIndex@@@Z @ 224 NONAME ; int NmFolderListModel::rowCount(class QModelIndex const &) const
+	?doUpdateOperationProgress@NmOperation@@MAEXXZ @ 225 NONAME ; void NmOperation::doUpdateOperationProgress(void)
+	?tr@NmMailboxListModel@@SA?AVQString@@PBD0@Z @ 226 NONAME ; class QString NmMailboxListModel::tr(char const *, char const *)
+	?removeMessage@NmUiEngine@@QAEHABVNmId@@00@Z @ 227 NONAME ; int NmUiEngine::removeMessage(class NmId const &, class NmId const &, class NmId const &)
+	??_ENmUiEngine@@UAE@I@Z @ 228 NONAME ; NmUiEngine::~NmUiEngine(unsigned int)
+	?operationCompleted@NmOperation@@IAEXH@Z @ 229 NONAME ; void NmOperation::operationCompleted(int)
+	?callEmitDataChanged@NmMessageListModelItem@@QAEXXZ @ 230 NONAME ; void NmMessageListModelItem::callEmitDataChanged(void)
+	?handleRequest@NmBaseClientPlugin@@IAEXW4NmActionResponseCommand@@ABVNmActionRequest@@@Z @ 231 NONAME ; void NmBaseClientPlugin::handleRequest(enum NmActionResponseCommand, class NmActionRequest const &)
+	??0NmMessageListModel@@QAE@AAVNmDataManager@@PAVQObject@@@Z @ 232 NONAME ; NmMessageListModel::NmMessageListModel(class NmDataManager &, class QObject *)
+	??_ENmAddAttachmentsOperation@@UAE@I@Z @ 233 NONAME ; NmAddAttachmentsOperation::~NmAddAttachmentsOperation(unsigned int)
+	?syncState@NmUiEngine@@QAE?AW4NmSyncState@@ABVNmId@@@Z @ 234 NONAME ; enum NmSyncState NmUiEngine::syncState(class NmId const &)
+	??1NmOperation@@MAE@XZ @ 235 NONAME ; NmOperation::~NmOperation(void)
+	?tr@NmStoreEnvelopesOperation@@SA?AVQString@@PBD0H@Z @ 236 NONAME ; class QString NmStoreEnvelopesOperation::tr(char const *, char const *, int)
+	?listMailboxes@NmDataManager@@QAEXAAV?$QList@PAVNmMailbox@@@@@Z @ 237 NONAME ; void NmDataManager::listMailboxes(class QList<class NmMailbox *> &)
+	?message@NmUiEngine@@QAEPAVNmMessage@@ABVNmId@@00@Z @ 238 NONAME ; class NmMessage * NmUiEngine::message(class NmId const &, class NmId const &, class NmId const &)
+	?refreshMailbox@NmUiEngine@@QAEHABVNmId@@@Z @ 239 NONAME ; int NmUiEngine::refreshMailbox(class NmId const &)
+	?trUtf8@NmUiEngine@@SA?AVQString@@PBD0@Z @ 240 NONAME ; class QString NmUiEngine::trUtf8(char const *, char const *)
+	?contentToMessagePart@NmUiEngine@@QAEHABVNmId@@00AAVNmMessagePart@@@Z @ 241 NONAME ; int NmUiEngine::contentToMessagePart(class NmId const &, class NmId const &, class NmId const &, class NmMessagePart &)
+	?removeItem@NmMessageListModel@@AAEXHAAVNmMessageListModelItem@@@Z @ 242 NONAME ; void NmMessageListModel::removeItem(int, class NmMessageListModelItem &)
+	??1NmMailboxListModel@@UAE@XZ @ 243 NONAME ; NmMailboxListModel::~NmMailboxListModel(void)
+	??0NmBaseClientPlugin@@QAE@XZ @ 244 NONAME ; NmBaseClientPlugin::NmBaseClientPlugin(void)
+	?forwardMail@NmBaseClientPlugin@@QAEXXZ @ 245 NONAME ; void NmBaseClientPlugin::forwardMail(void)
+	?setItemType@NmMessageListModelItem@@QAEXW4NmMessageItemType@1@@Z @ 246 NONAME ; void NmMessageListModelItem::setItemType(enum NmMessageListModelItem::NmMessageItemType)
+	??_ENmDataPluginFactory@@UAE@I@Z @ 247 NONAME ; NmDataPluginFactory::~NmDataPluginFactory(unsigned int)
+	?mailboxListChanged@NmBaseClientPlugin@@AAEXABVNmId@@W4MailboxEventType@NmSettings@@@Z @ 248 NONAME ; void NmBaseClientPlugin::mailboxListChanged(class NmId const &, enum NmSettings::MailboxEventType)
+	?expanded@NmMessageListModelItem@@QBE_NXZ @ 249 NONAME ; bool NmMessageListModelItem::expanded(void) const
+	?columnCount@NmFolderListModel@@UBEHABVQModelIndex@@@Z @ 250 NONAME ; int NmFolderListModel::columnCount(class QModelIndex const &) const
+	?pluginInstance@NmDataPluginFactory@@QAEPAVQObject@@VNmId@@@Z @ 251 NONAME ; class QObject * NmDataPluginFactory::pluginInstance(class NmId)
+	?setNewParam@NmMessageListModel@@IAEXPAVNmUiStartParam@@@Z @ 252 NONAME ; void NmMessageListModel::setNewParam(class NmUiStartParam *)
+	?data@NmMessageListModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 253 NONAME ; class QVariant NmMessageListModel::data(class QModelIndex const &, int) const
+	?goOnline@NmBaseClientPlugin@@AAEXABVNmId@@@Z @ 254 NONAME ; void NmBaseClientPlugin::goOnline(class NmId const &)
+	?createNewMail@NmBaseClientPlugin@@QAEXXZ @ 255 NONAME ; void NmBaseClientPlugin::createNewMail(void)
+	?qt_metacast@NmBaseClientPlugin@@UAEPAXPBD@Z @ 256 NONAME ; void * NmBaseClientPlugin::qt_metacast(char const *)
+	?staticMetaObject@NmBaseClientPlugin@@2UQMetaObject@@B @ 257 NONAME ; struct QMetaObject const NmBaseClientPlugin::staticMetaObject
+	?searchComplete@NmUiEngine@@IAEXXZ @ 258 NONAME ; void NmUiEngine::searchComplete(void)
+	?setEnvelope@NmMessageListModelItem@@QAEXABVNmMessageEnvelope@@@Z @ 259 NONAME ; void NmMessageListModelItem::setEnvelope(class NmMessageEnvelope const &)
+	?qt_metacast@NmAddAttachmentsOperation@@UAEPAXPBD@Z @ 260 NONAME ; void * NmAddAttachmentsOperation::qt_metacast(char const *)
+	?createNewMailViewerToolBar@NmBaseClientPlugin@@QAEXXZ @ 261 NONAME ; void NmBaseClientPlugin::createNewMailViewerToolBar(void)
+	?staticMetaObject@NmMailboxListModel@@2UQMetaObject@@B @ 262 NONAME ; struct QMetaObject const NmMailboxListModel::staticMetaObject
+	?qt_metacall@NmMessageCreationOperation@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 263 NONAME ; int NmMessageCreationOperation::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?trUtf8@NmDataManager@@SA?AVQString@@PBD0H@Z @ 264 NONAME ; class QString NmDataManager::trUtf8(char const *, char const *, int)
+	?trUtf8@NmMessageCreationOperation@@SA?AVQString@@PBD0H@Z @ 265 NONAME ; class QString NmMessageCreationOperation::trUtf8(char const *, char const *, int)
+	?createForwardMessage@NmUiEngine@@QAE?AV?$QPointer@VNmMessageCreationOperation@@@@ABVNmId@@0@Z @ 266 NONAME ; class QPointer<class NmMessageCreationOperation> NmUiEngine::createForwardMessage(class NmId const &, class NmId const &)
+	?handleSyncStateEvent@NmUiEngine@@QAEXW4NmSyncState@@ABVNmOperationCompletionEvent@@@Z @ 267 NONAME ; void NmUiEngine::handleSyncStateEvent(enum NmSyncState, class NmOperationCompletionEvent const &)
+	?completeOperation@NmOperation@@QAEXH@Z @ 268 NONAME ; void NmOperation::completeOperation(int)
+	?parent@NmFolderListModel@@UBE?AVQModelIndex@@ABV2@@Z @ 269 NONAME ; class QModelIndex NmFolderListModel::parent(class QModelIndex const &) const
+	?folder@NmDataManager@@QAEPAVNmFolder@@ABVNmId@@0@Z @ 270 NONAME ; class NmFolder * NmDataManager::folder(class NmId const &, class NmId const &)
+	??0NmMessageSendingOperation@@QAE@XZ @ 271 NONAME ; NmMessageSendingOperation::NmMessageSendingOperation(void)
+	?replyMail@NmBaseClientPlugin@@QAEXXZ @ 272 NONAME ; void NmBaseClientPlugin::replyMail(void)
+	??1NmMessageListModelItem@@UAE@XZ @ 273 NONAME ; NmMessageListModelItem::~NmMessageListModelItem(void)
+	?mailboxPropertyChanged@NmBaseClientPlugin@@AAEXABVNmId@@VQVariant@@1@Z @ 274 NONAME ; void NmBaseClientPlugin::mailboxPropertyChanged(class NmId const &, class QVariant, class QVariant)
+	?qt_metacall@NmOperation@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 275 NONAME ; int NmOperation::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?removeMessageFromModel@NmMessageListModel@@AAEXABVNmId@@@Z @ 276 NONAME ; void NmMessageListModel::removeMessageFromModel(class NmId const &)
+	?trUtf8@NmMessageListModel@@SA?AVQString@@PBD0H@Z @ 277 NONAME ; class QString NmMessageListModel::trUtf8(char const *, char const *, int)
+	?operationPartCompleted@NmAddAttachmentsOperation@@IAEXABVQString@@ABVNmId@@H@Z @ 278 NONAME ; void NmAddAttachmentsOperation::operationPartCompleted(class QString const &, class NmId const &, int)
+	?trUtf8@NmStoreEnvelopesOperation@@SA?AVQString@@PBD0H@Z @ 279 NONAME ; class QString NmStoreEnvelopesOperation::trUtf8(char const *, char const *, int)
+	?tr@NmMessageListModel@@SA?AVQString@@PBD0@Z @ 280 NONAME ; class QString NmMessageListModel::tr(char const *, char const *)
+	?doCompleteOperation@NmOperation@@MAEXXZ @ 281 NONAME ; void NmOperation::doCompleteOperation(void)
+	?dividerInsertionIndex@NmMessageListModel@@AAEHH@Z @ 282 NONAME ; int NmMessageListModel::dividerInsertionIndex(int)
+	?createMessageItem@NmMessageListModel@@AAEPAVNmMessageListModelItem@@PAVNmMessageEnvelope@@@Z @ 283 NONAME ; class NmMessageListModelItem * NmMessageListModel::createMessageItem(class NmMessageEnvelope *)
+	?id@NmFolderMetaData@@QBE?AVNmId@@XZ @ 284 NONAME ; class NmId NmFolderMetaData::id(void) const
+	?createReplyMessage@NmUiEngine@@QAE?AV?$QPointer@VNmMessageCreationOperation@@@@ABVNmId@@0_N@Z @ 285 NONAME ; class QPointer<class NmMessageCreationOperation> NmUiEngine::createReplyMessage(class NmId const &, class NmId const &, bool)
+	?getStandardFolderId@NmDataManager@@QAE?AVNmId@@ABV2@W4NmFolderType@@@Z @ 286 NONAME ; class NmId NmDataManager::getStandardFolderId(class NmId const &, enum NmFolderType)
+	?address@NmMailboxMetaData@@QBE?AVQString@@XZ @ 287 NONAME ; class QString NmMailboxMetaData::address(void) const
+	?dividersActive@NmMessageListModel@@QAE_NXZ @ 288 NONAME ; bool NmMessageListModel::dividersActive(void)
+	?titleDivider@NmMessageListModelItem@@QBE?AVQString@@XZ @ 289 NONAME ; class QString NmMessageListModelItem::titleDivider(void) const
+	?getStaticMetaObject@NmBaseClientPlugin@@SAABUQMetaObject@@XZ @ 290 NONAME ; struct QMetaObject const & NmBaseClientPlugin::getStaticMetaObject(void)
+	?qt_metacast@NmMessageCreationOperation@@UAEPAXPBD@Z @ 291 NONAME ; void * NmMessageCreationOperation::qt_metacast(char const *)
+	?updateEnvelope@NmMessageListModel@@AAEXW4NmEnvelopeProperties@@ABVNmId@@@Z @ 292 NONAME ; void NmMessageListModel::updateEnvelope(enum NmEnvelopeProperties, class NmId const &)
+	??_ENmDataManager@@UAE@I@Z @ 293 NONAME ; NmDataManager::~NmDataManager(unsigned int)
+	?qt_metacast@NmMailboxListModel@@UAEPAXPBD@Z @ 294 NONAME ; void * NmMailboxListModel::qt_metacast(char const *)
+	?search@NmUiEngine@@QAEHABVNmId@@ABVQStringList@@@Z @ 295 NONAME ; int NmUiEngine::search(class NmId const &, class QStringList const &)
+	?setEnvelopes@NmUiEngine@@QAE?AV?$QPointer@VNmStoreEnvelopesOperation@@@@ABVNmId@@0W4NmEnvelopeProperties@@ABV?$QList@PB$$CBVNmMessageEnvelope@@@@@Z @ 296 NONAME ; class QPointer<class NmStoreEnvelopesOperation> NmUiEngine::setEnvelopes(class NmId const &, class NmId const &, enum NmEnvelopeProperties, class QList<class NmMessageEnvelope const *> const &)
+	?getActions@NmBaseClientPlugin@@UAEXABVNmActionRequest@@AAV?$QList@PAVNmAction@@@@@Z @ 297 NONAME ; void NmBaseClientPlugin::getActions(class NmActionRequest const &, class QList<class NmAction *> &)
+	?qt_metacast@NmStoreEnvelopesOperation@@UAEPAXPBD@Z @ 298 NONAME ; void * NmStoreEnvelopesOperation::qt_metacast(char const *)
+	??_ENmMailboxMetaData@@UAE@I@Z @ 299 NONAME ; NmMailboxMetaData::~NmMailboxMetaData(unsigned int)
+	??0NmMessageListModelItem@@QAE@XZ @ 300 NONAME ; NmMessageListModelItem::NmMessageListModelItem(void)
+	?tr@NmAddAttachmentsOperation@@SA?AVQString@@PBD0H@Z @ 301 NONAME ; class QString NmAddAttachmentsOperation::tr(char const *, char const *, int)
+	?setDividers@NmMessageListModel@@QAEX_N@Z @ 302 NONAME ; void NmMessageListModel::setDividers(bool)
+	?loadPlugin@NmDataPluginFactory@@QAEPAVQObject@@ABVQDir@@ABVQString@@@Z @ 303 NONAME ; class QObject * NmDataPluginFactory::loadPlugin(class QDir const &, class QString const &)
+	?qt_metacast@NmOperation@@UAEPAXPBD@Z @ 304 NONAME ; void * NmOperation::qt_metacast(char const *)
+	?tr@NmMessageListModel@@SA?AVQString@@PBD0H@Z @ 305 NONAME ; class QString NmMessageListModel::tr(char const *, char const *, int)
+	?removeAttachment@NmUiEngine@@QAE?AV?$QPointer@VNmOperation@@@@ABVNmMessage@@ABVNmId@@@Z @ 306 NONAME ; class QPointer<class NmOperation> NmUiEngine::removeAttachment(class NmMessage const &, class NmId const &)
+	?staticMetaObject@NmMessageListModel@@2UQMetaObject@@B @ 307 NONAME ; struct QMetaObject const NmMessageListModel::staticMetaObject
+	?qt_metacall@NmAddAttachmentsOperation@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 308 NONAME ; int NmAddAttachmentsOperation::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?qt_metacall@NmUiEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 309 NONAME ; int NmUiEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?message@NmDataManager@@QAEPAVNmMessage@@ABVNmId@@00@Z @ 310 NONAME ; class NmMessage * NmDataManager::message(class NmId const &, class NmId const &, class NmId const &)
+	?metaObject@NmOperation@@UBEPBUQMetaObject@@XZ @ 311 NONAME ; struct QMetaObject const * NmOperation::metaObject(void) const
+	?messageEventForListModel@NmUiEngine@@AAEXW4NmMessageEvent@@ABVNmId@@ABV?$QList@VNmId@@@@1@Z @ 312 NONAME ; void NmUiEngine::messageEventForListModel(enum NmMessageEvent, class NmId const &, class QList<class NmId> const &, class NmId const &)
 
--- a/emailuis/nmailuiengine/eabi/nmailuiengineu.def	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/eabi/nmailuiengineu.def	Fri May 28 13:56:43 2010 +0300
@@ -1,324 +1,321 @@
 EXPORTS
 	_ZN10NmUiEngine10matchFoundERK4NmIdS2_ @ 1 NONAME
-	_ZN10NmUiEngine11checkOutboxERK4NmId @ 2 NONAME
-	_ZN10NmUiEngine11mailboxByIdERK4NmId @ 3 NONAME
-	_ZN10NmUiEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 4 NONAME
-	_ZN10NmUiEngine11qt_metacastEPKc @ 5 NONAME
-	_ZN10NmUiEngine11saveMessageERK9NmMessage @ 6 NONAME
-	_ZN10NmUiEngine11sendMessageEP9NmMessageRK5QListIP11NmOperationE @ 7 NONAME
-	_ZN10NmUiEngine12cancelSearchERK4NmId @ 8 NONAME
-	_ZN10NmUiEngine12fetchMessageERK4NmIdS2_S2_ @ 9 NONAME
-	_ZN10NmUiEngine12setEnvelopesERK4NmIdS2_20NmEnvelopePropertiesRK5QListIPK17NmMessageEnvelopeE @ 10 NONAME
-	_ZN10NmUiEngine13removeMessageERK4NmIdS2_S2_ @ 11 NONAME
-	_ZN10NmUiEngine14addAttachmentsERK9NmMessageRK5QListI7QStringE @ 12 NONAME
-	_ZN10NmUiEngine14deleteMessagesERK4NmIdS2_RK5QListIS0_E @ 13 NONAME
-	_ZN10NmUiEngine14folderTypeByIdE4NmIdS0_ @ 14 NONAME
-	_ZN10NmUiEngine14mailboxDeletedERK4NmId @ 15 NONAME
-	_ZN10NmUiEngine14messageDeletedERK4NmIdS2_S2_ @ 16 NONAME
-	_ZN10NmUiEngine14refreshMailboxERK4NmId @ 17 NONAME
-	_ZN10NmUiEngine14searchCompleteEv @ 18 NONAME
-	_ZN10NmUiEngine14syncStateEventE11NmSyncStateRK4NmId @ 19 NONAME
-	_ZN10NmUiEngine15connectionEventE14NmConnectStateRK4NmId @ 20 NONAME
-	_ZN10NmUiEngine15connectionStateERK4NmId @ 21 NONAME
-	_ZN10NmUiEngine15mReferenceCountE @ 22 NONAME DATA 4
-	_ZN10NmUiEngine15messagePartFileERK4NmIdS2_S2_S2_ @ 23 NONAME
-	_ZN10NmUiEngine15releaseInstanceERPS_ @ 24 NONAME
-	_ZN10NmUiEngine16createNewMessageERK4NmId @ 25 NONAME
-	_ZN10NmUiEngine16fetchMessagePartERK4NmIdS2_S2_S2_ @ 26 NONAME
-	_ZN10NmUiEngine16handleMatchFoundERK4NmIdS2_ @ 27 NONAME
-	_ZN10NmUiEngine16mailboxListModelEv @ 28 NONAME
-	_ZN10NmUiEngine16messageListModelERK4NmIdS2_ @ 29 NONAME
-	_ZN10NmUiEngine16removeAttachmentERK9NmMessageRK4NmId @ 30 NONAME
+	_ZN10NmUiEngine11mailboxByIdERK4NmId @ 2 NONAME
+	_ZN10NmUiEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 3 NONAME
+	_ZN10NmUiEngine11qt_metacastEPKc @ 4 NONAME
+	_ZN10NmUiEngine11saveMessageERK9NmMessage @ 5 NONAME
+	_ZN10NmUiEngine11sendMessageEP9NmMessageRK5QListIP11NmOperationE @ 6 NONAME
+	_ZN10NmUiEngine12cancelSearchERK4NmId @ 7 NONAME
+	_ZN10NmUiEngine12fetchMessageERK4NmIdS2_S2_ @ 8 NONAME
+	_ZN10NmUiEngine12setEnvelopesERK4NmIdS2_20NmEnvelopePropertiesRK5QListIPK17NmMessageEnvelopeE @ 9 NONAME
+	_ZN10NmUiEngine13removeMessageERK4NmIdS2_S2_ @ 10 NONAME
+	_ZN10NmUiEngine14addAttachmentsERK9NmMessageRK5QListI7QStringE @ 11 NONAME
+	_ZN10NmUiEngine14deleteMessagesERK4NmIdS2_RK5QListIS0_E @ 12 NONAME
+	_ZN10NmUiEngine14folderTypeByIdE4NmIdS0_ @ 13 NONAME
+	_ZN10NmUiEngine14mailboxDeletedERK4NmId @ 14 NONAME
+	_ZN10NmUiEngine14messageDeletedERK4NmIdS2_S2_ @ 15 NONAME
+	_ZN10NmUiEngine14refreshMailboxERK4NmId @ 16 NONAME
+	_ZN10NmUiEngine14searchCompleteEv @ 17 NONAME
+	_ZN10NmUiEngine14syncStateEventE11NmSyncStateRK4NmId @ 18 NONAME
+	_ZN10NmUiEngine15connectionEventE14NmConnectStateRK4NmId @ 19 NONAME
+	_ZN10NmUiEngine15connectionStateERK4NmId @ 20 NONAME
+	_ZN10NmUiEngine15mReferenceCountE @ 21 NONAME DATA 4
+	_ZN10NmUiEngine15messagePartFileERK4NmIdS2_S2_S2_ @ 22 NONAME
+	_ZN10NmUiEngine15releaseInstanceERPS_ @ 23 NONAME
+	_ZN10NmUiEngine16createNewMessageERK4NmId @ 24 NONAME
+	_ZN10NmUiEngine16fetchMessagePartERK4NmIdS2_S2_S2_ @ 25 NONAME
+	_ZN10NmUiEngine16handleMatchFoundERK4NmIdS2_ @ 26 NONAME
+	_ZN10NmUiEngine16mailboxListModelEv @ 27 NONAME
+	_ZN10NmUiEngine16messageListModelERK4NmIdS2_ @ 28 NONAME
+	_ZN10NmUiEngine16removeAttachmentERK9NmMessageRK4NmId @ 29 NONAME
+	_ZN10NmUiEngine16saveDraftMessageEP9NmMessageRK5QListIP11NmOperationE @ 30 NONAME
 	_ZN10NmUiEngine16standardFolderIdERK4NmId12NmFolderType @ 31 NONAME
 	_ZN10NmUiEngine16staticMetaObjectE @ 32 NONAME DATA 16
-	_ZN10NmUiEngine18createReplyMessageERK4NmIdS2_b @ 33 NONAME
-	_ZN10NmUiEngine18handleConnectEventE14NmConnectStateRK4NmIdi @ 34 NONAME
-	_ZN10NmUiEngine18handleMailboxEventE14NmMailboxEventRK5QListI4NmIdE @ 35 NONAME
-	_ZN10NmUiEngine18handleMessageEventE14NmMessageEventRK4NmIdRK5QListIS1_ES3_ @ 36 NONAME
-	_ZN10NmUiEngine18operationCompletedERK26NmOperationCompletionEvent @ 37 NONAME
-	_ZN10NmUiEngine19getStaticMetaObjectEv @ 38 NONAME
-	_ZN10NmUiEngine20contentToMessagePartERK4NmIdS2_S2_R13NmMessagePart @ 39 NONAME
-	_ZN10NmUiEngine20createForwardMessageERK4NmIdS2_ @ 40 NONAME
-	_ZN10NmUiEngine20handleSyncStateEventE11NmSyncStateRK26NmOperationCompletionEvent @ 41 NONAME
-	_ZN10NmUiEngine22sendOperationCompletedEv @ 42 NONAME
-	_ZN10NmUiEngine23refreshMailboxListModelEv @ 43 NONAME
-	_ZN10NmUiEngine25messageListModelForSearchERK4NmId @ 44 NONAME
-	_ZN10NmUiEngine28handleCompletedSendOperationEv @ 45 NONAME
-	_ZN10NmUiEngine6searchERK4NmIdRK11QStringList @ 46 NONAME
-	_ZN10NmUiEngine7messageERK4NmIdS2_S2_ @ 47 NONAME
-	_ZN10NmUiEngine8goOnlineERK4NmId @ 48 NONAME
-	_ZN10NmUiEngine8instanceEv @ 49 NONAME
-	_ZN10NmUiEngine9goOfflineERK4NmId @ 50 NONAME
-	_ZN10NmUiEngine9mInstanceE @ 51 NONAME DATA 4
-	_ZN10NmUiEngine9syncStateERK4NmId @ 52 NONAME
-	_ZN10NmUiEngineC1Ev @ 53 NONAME
-	_ZN10NmUiEngineC2Ev @ 54 NONAME
-	_ZN10NmUiEngineD0Ev @ 55 NONAME
-	_ZN10NmUiEngineD1Ev @ 56 NONAME
-	_ZN10NmUiEngineD2Ev @ 57 NONAME
-	_ZN11NmOperation11qt_metacallEN11QMetaObject4CallEiPPv @ 58 NONAME
-	_ZN11NmOperation11qt_metacastEPKc @ 59 NONAME
-	_ZN11NmOperation15cancelOperationEv @ 60 NONAME
-	_ZN11NmOperation15deleteOperationEv @ 61 NONAME
-	_ZN11NmOperation16staticMetaObjectE @ 62 NONAME DATA 16
-	_ZN11NmOperation17completeOperationEi @ 63 NONAME
-	_ZN11NmOperation17doCancelOperationEv @ 64 NONAME
-	_ZN11NmOperation17runAsyncOperationEv @ 65 NONAME
-	_ZN11NmOperation18operationCancelledEv @ 66 NONAME
-	_ZN11NmOperation18operationCompletedEi @ 67 NONAME
-	_ZN11NmOperation19doCompleteOperationEv @ 68 NONAME
-	_ZN11NmOperation19getStaticMetaObjectEv @ 69 NONAME
-	_ZN11NmOperation23addPreliminaryOperationEPS_ @ 70 NONAME
-	_ZN11NmOperation23updateOperationProgressEi @ 71 NONAME
-	_ZN11NmOperation24operationProgressChangedEi @ 72 NONAME
-	_ZN11NmOperation25doUpdateOperationProgressEv @ 73 NONAME
-	_ZN11NmOperation34handlePreliminaryOperationFinishedEv @ 74 NONAME
-	_ZN11NmOperationC2Ev @ 75 NONAME
-	_ZN11NmOperationD0Ev @ 76 NONAME
-	_ZN11NmOperationD1Ev @ 77 NONAME
-	_ZN11NmOperationD2Ev @ 78 NONAME
-	_ZN13NmDataManager10folderByIdERK4NmIdS2_ @ 79 NONAME
-	_ZN13NmDataManager11listFoldersE4NmIdR5QListIP8NmFolderE @ 80 NONAME
-	_ZN13NmDataManager11mailboxByIdERK4NmId @ 81 NONAME
-	_ZN13NmDataManager11qt_metacallEN11QMetaObject4CallEiPPv @ 82 NONAME
-	_ZN13NmDataManager11qt_metacastEPKc @ 83 NONAME
-	_ZN13NmDataManager12envelopeByIdERK4NmIdS2_S2_ @ 84 NONAME
-	_ZN13NmDataManager12listMessagesERK4NmIdS2_R5QListIP17NmMessageEnvelopeE @ 85 NONAME
-	_ZN13NmDataManager13listMailboxesER5QListIP9NmMailboxE @ 86 NONAME
-	_ZN13NmDataManager14folderTypeByIdE4NmIdS0_ @ 87 NONAME
-	_ZN13NmDataManager14listMailboxIdsER5QListI4NmIdE @ 88 NONAME
-	_ZN13NmDataManager16staticMetaObjectE @ 89 NONAME DATA 16
-	_ZN13NmDataManager19getStandardFolderIdERK4NmId12NmFolderType @ 90 NONAME
-	_ZN13NmDataManager19getStaticMetaObjectEv @ 91 NONAME
-	_ZN13NmDataManager20contentToMessagePartERK4NmIdS2_S2_R13NmMessagePart @ 92 NONAME
-	_ZN13NmDataManager6folderERK4NmIdS2_ @ 93 NONAME
-	_ZN13NmDataManager7mailboxERK4NmId @ 94 NONAME
-	_ZN13NmDataManager7messageERK4NmIdS2_S2_ @ 95 NONAME
-	_ZN13NmDataManagerC1Ev @ 96 NONAME
-	_ZN13NmDataManagerC2Ev @ 97 NONAME
-	_ZN13NmDataManagerD0Ev @ 98 NONAME
-	_ZN13NmDataManagerD1Ev @ 99 NONAME
-	_ZN13NmDataManagerD2Ev @ 100 NONAME
-	_ZN16NmFolderMetaData5setIdERK4NmId @ 101 NONAME
-	_ZN16NmFolderMetaData7setNameERK7QString @ 102 NONAME
-	_ZN16NmFolderMetaDataC1Ev @ 103 NONAME
-	_ZN16NmFolderMetaDataC2Ev @ 104 NONAME
-	_ZN16NmFolderMetaDataD0Ev @ 105 NONAME
-	_ZN16NmFolderMetaDataD1Ev @ 106 NONAME
-	_ZN16NmFolderMetaDataD2Ev @ 107 NONAME
-	_ZN17NmFolderListModel7refreshER5QListIP8NmFolderE @ 108 NONAME
-	_ZN17NmFolderListModelC1ER13NmDataManagerP7QObject @ 109 NONAME
-	_ZN17NmFolderListModelC2ER13NmDataManagerP7QObject @ 110 NONAME
-	_ZN17NmFolderListModelD0Ev @ 111 NONAME
-	_ZN17NmFolderListModelD1Ev @ 112 NONAME
-	_ZN17NmFolderListModelD2Ev @ 113 NONAME
-	_ZN17NmMailboxMetaData10setAddressERK7QString @ 114 NONAME
-	_ZN17NmMailboxMetaData5setIdERK4NmId @ 115 NONAME
-	_ZN17NmMailboxMetaData7setNameERK7QString @ 116 NONAME
-	_ZN17NmMailboxMetaData9setIconIdERK4NmId @ 117 NONAME
-	_ZN17NmMailboxMetaDataC1Ev @ 118 NONAME
-	_ZN17NmMailboxMetaDataC2Ev @ 119 NONAME
-	_ZN17NmMailboxMetaDataD0Ev @ 120 NONAME
-	_ZN17NmMailboxMetaDataD1Ev @ 121 NONAME
-	_ZN17NmMailboxMetaDataD2Ev @ 122 NONAME
-	_ZN18NmBaseClientPlugin10getActionsERK15NmActionRequestR5QListIP8NmActionE @ 123 NONAME
-	_ZN18NmBaseClientPlugin10markAsReadEv @ 124 NONAME
-	_ZN18NmBaseClientPlugin11forwardMailEv @ 125 NONAME
-	_ZN18NmBaseClientPlugin11openMessageEv @ 126 NONAME
-	_ZN18NmBaseClientPlugin11qt_metacallEN11QMetaObject4CallEiPPv @ 127 NONAME
-	_ZN18NmBaseClientPlugin11qt_metacastEPKc @ 128 NONAME
-	_ZN18NmBaseClientPlugin12markAsUnreadEv @ 129 NONAME
-	_ZN18NmBaseClientPlugin12replyAllMailEv @ 130 NONAME
-	_ZN18NmBaseClientPlugin13createNewMailEv @ 131 NONAME
-	_ZN18NmBaseClientPlugin13deleteMessageEv @ 132 NONAME
-	_ZN18NmBaseClientPlugin13handleRequestE23NmActionResponseCommandRK15NmActionRequest @ 133 NONAME
-	_ZN18NmBaseClientPlugin14openAttachmentEv @ 134 NONAME
-	_ZN18NmBaseClientPlugin14setPriorityLowEv @ 135 NONAME
-	_ZN18NmBaseClientPlugin15setPriorityHighEv @ 136 NONAME
-	_ZN18NmBaseClientPlugin16removeAttachmentEv @ 137 NONAME
-	_ZN18NmBaseClientPlugin16staticMetaObjectE @ 138 NONAME DATA 16
-	_ZN18NmBaseClientPlugin17setPriorityNormalEv @ 139 NONAME
-	_ZN18NmBaseClientPlugin18mailboxListChangedERK4NmIdN10NmSettings16MailboxEventTypeE @ 140 NONAME
-	_ZN18NmBaseClientPlugin19getStaticMetaObjectEv @ 141 NONAME
-	_ZN18NmBaseClientPlugin22mailboxPropertyChangedERK4NmId8QVariantS3_ @ 142 NONAME
-	_ZN18NmBaseClientPlugin22updateEnvelopePropertyE20NmEnvelopeProperties @ 143 NONAME
-	_ZN18NmBaseClientPlugin24createEditorViewCommandsERK15NmActionRequestR5QListIP8NmActionE @ 144 NONAME
-	_ZN18NmBaseClientPlugin24createViewerViewCommandsERK15NmActionRequestR5QListIP8NmActionE @ 145 NONAME
-	_ZN18NmBaseClientPlugin25createMessageListCommandsERK15NmActionRequestR5QListIP8NmActionE @ 146 NONAME
-	_ZN18NmBaseClientPlugin26createNewMailViewerToolBarEv @ 147 NONAME
-	_ZN18NmBaseClientPlugin27deleteMessageFromViewerViewEv @ 148 NONAME
-	_ZN18NmBaseClientPlugin6attachEv @ 149 NONAME
-	_ZN18NmBaseClientPlugin6searchEv @ 150 NONAME
-	_ZN18NmBaseClientPlugin7refreshEv @ 151 NONAME
-	_ZN18NmBaseClientPlugin8goOnlineERK4NmId @ 152 NONAME
-	_ZN18NmBaseClientPlugin8sendMailEv @ 153 NONAME
-	_ZN18NmBaseClientPlugin8settingsEv @ 154 NONAME
-	_ZN18NmBaseClientPlugin9goOfflineERK4NmId @ 155 NONAME
-	_ZN18NmBaseClientPlugin9replyMailEv @ 156 NONAME
-	_ZN18NmBaseClientPluginC2Ev @ 157 NONAME
-	_ZN18NmBaseClientPluginD0Ev @ 158 NONAME
-	_ZN18NmBaseClientPluginD1Ev @ 159 NONAME
-	_ZN18NmBaseClientPluginD2Ev @ 160 NONAME
-	_ZN18NmMailboxListModel11qt_metacallEN11QMetaObject4CallEiPPv @ 161 NONAME
-	_ZN18NmMailboxListModel11qt_metacastEPKc @ 162 NONAME
-	_ZN18NmMailboxListModel16refreshModelItemERK4NmIdb @ 163 NONAME
-	_ZN18NmMailboxListModel16staticMetaObjectE @ 164 NONAME DATA 16
-	_ZN18NmMailboxListModel17createMailboxItemEPK9NmMailbox @ 165 NONAME
-	_ZN18NmMailboxListModel18handleMailboxEventE14NmMailboxEventRK5QListI4NmIdE @ 166 NONAME
-	_ZN18NmMailboxListModel19getStaticMetaObjectEv @ 167 NONAME
-	_ZN18NmMailboxListModel7refreshER5QListIP9NmMailboxE @ 168 NONAME
-	_ZN18NmMailboxListModelC1ER13NmDataManagerP7QObject @ 169 NONAME
-	_ZN18NmMailboxListModelC2ER13NmDataManagerP7QObject @ 170 NONAME
-	_ZN18NmMailboxListModelD0Ev @ 171 NONAME
-	_ZN18NmMailboxListModelD1Ev @ 172 NONAME
-	_ZN18NmMailboxListModelD2Ev @ 173 NONAME
-	_ZN18NmMessageListModel10removeItemEiR22NmMessageListModelItem @ 174 NONAME
-	_ZN18NmMessageListModel11qt_metacallEN11QMetaObject4CallEiPPv @ 175 NONAME
-	_ZN18NmMessageListModel11qt_metacastEPKc @ 176 NONAME
-	_ZN18NmMessageListModel11setDividersEb @ 177 NONAME
-	_ZN18NmMessageListModel11setNewParamEP14NmUiStartParam @ 178 NONAME
-	_ZN18NmMessageListModel13itemFromModelERK4NmId @ 179 NONAME
-	_ZN18NmMessageListModel14dividersActiveEv @ 180 NONAME
-	_ZN18NmMessageListModel14updateEnvelopeE20NmEnvelopePropertiesRK4NmId @ 181 NONAME
-	_ZN18NmMessageListModel16currentMailboxIdEv @ 182 NONAME
-	_ZN18NmMessageListModel16staticMetaObjectE @ 183 NONAME DATA 16
-	_ZN18NmMessageListModel17createMessageItemEP17NmMessageEnvelope @ 184 NONAME
-	_ZN18NmMessageListModel18handleMessageEventE14NmMessageEventRK4NmIdRK5QListIS1_E @ 185 NONAME
-	_ZN18NmMessageListModel19getStaticMetaObjectEv @ 186 NONAME
-	_ZN18NmMessageListModel21dividerInsertionIndexEi @ 187 NONAME
-	_ZN18NmMessageListModel21setEnvelopePropertiesE20NmEnvelopePropertiesRK5QListI4NmIdE @ 188 NONAME
-	_ZN18NmMessageListModel21updateMessageEnvelopeERK4NmIdS2_S2_ @ 189 NONAME
-	_ZN18NmMessageListModel22createTitleDividerItemEP17NmMessageEnvelope @ 190 NONAME
-	_ZN18NmMessageListModel22insertDividerIntoModelEP17NmMessageEnvelopei @ 191 NONAME
-	_ZN18NmMessageListModel22insertMessageIntoModelEP17NmMessageEnvelopeib @ 192 NONAME
-	_ZN18NmMessageListModel22removeMessageFromModelERK4NmId @ 193 NONAME
-	_ZN18NmMessageListModel25insertNewMessageIntoModelERK4NmIdS2_S2_ @ 194 NONAME
-	_ZN18NmMessageListModel7changedERK17NmMessageEnvelopeS2_ @ 195 NONAME
-	_ZN18NmMessageListModel7refreshE4NmIdS0_RK5QListIP17NmMessageEnvelopeE @ 196 NONAME
-	_ZN18NmMessageListModelC1ER13NmDataManagerP7QObject @ 197 NONAME
-	_ZN18NmMessageListModelC2ER13NmDataManagerP7QObject @ 198 NONAME
-	_ZN18NmMessageListModelD0Ev @ 199 NONAME
-	_ZN18NmMessageListModelD1Ev @ 200 NONAME
-	_ZN18NmMessageListModelD2Ev @ 201 NONAME
-	_ZN19NmDataPluginFactory10loadPluginERK4QDirRK7QString @ 202 NONAME
-	_ZN19NmDataPluginFactory12mPluginArrayE @ 203 NONAME DATA 4
-	_ZN19NmDataPluginFactory14pluginInstanceE4NmId @ 204 NONAME
-	_ZN19NmDataPluginFactory15mReferenceCountE @ 205 NONAME DATA 4
-	_ZN19NmDataPluginFactory15pluginInstancesEv @ 206 NONAME
-	_ZN19NmDataPluginFactory15releaseInstanceERPS_ @ 207 NONAME
-	_ZN19NmDataPluginFactory17interfaceInstanceE4NmId @ 208 NONAME
-	_ZN19NmDataPluginFactory17interfaceInstanceEP7QObject @ 209 NONAME
-	_ZN19NmDataPluginFactory18mPluginLoaderArrayE @ 210 NONAME DATA 4
-	_ZN19NmDataPluginFactory8instanceEv @ 211 NONAME
-	_ZN19NmDataPluginFactory9mInstanceE @ 212 NONAME DATA 4
-	_ZN19NmDataPluginFactoryC1Ev @ 213 NONAME
-	_ZN19NmDataPluginFactoryC2Ev @ 214 NONAME
-	_ZN19NmDataPluginFactoryD0Ev @ 215 NONAME
-	_ZN19NmDataPluginFactoryD1Ev @ 216 NONAME
-	_ZN19NmDataPluginFactoryD2Ev @ 217 NONAME
-	_ZN22NmCheckOutboxOperation11qt_metacallEN11QMetaObject4CallEiPPv @ 218 NONAME
-	_ZN22NmCheckOutboxOperation11qt_metacastEPKc @ 219 NONAME
-	_ZN22NmCheckOutboxOperation16staticMetaObjectE @ 220 NONAME DATA 16
-	_ZN22NmCheckOutboxOperation19getStaticMetaObjectEv @ 221 NONAME
-	_ZN22NmMessageListModelItem11envelopePtrEv @ 222 NONAME
-	_ZN22NmMessageListModelItem11setEnvelopeEP17NmMessageEnvelope @ 223 NONAME
-	_ZN22NmMessageListModelItem11setEnvelopeERK17NmMessageEnvelope @ 224 NONAME
-	_ZN22NmMessageListModelItem11setExpandedEb @ 225 NONAME
-	_ZN22NmMessageListModelItem11setItemTypeENS_17NmMessageItemTypeE @ 226 NONAME
-	_ZN22NmMessageListModelItem15setTitleDividerERK7QString @ 227 NONAME
-	_ZN22NmMessageListModelItem19callEmitDataChangedEv @ 228 NONAME
-	_ZN22NmMessageListModelItemC1Ev @ 229 NONAME
-	_ZN22NmMessageListModelItemC2Ev @ 230 NONAME
-	_ZN22NmMessageListModelItemD0Ev @ 231 NONAME
-	_ZN22NmMessageListModelItemD1Ev @ 232 NONAME
-	_ZN22NmMessageListModelItemD2Ev @ 233 NONAME
-	_ZN25NmAddAttachmentsOperation11qt_metacallEN11QMetaObject4CallEiPPv @ 234 NONAME
-	_ZN25NmAddAttachmentsOperation11qt_metacastEPKc @ 235 NONAME
-	_ZN25NmAddAttachmentsOperation16staticMetaObjectE @ 236 NONAME DATA 16
-	_ZN25NmAddAttachmentsOperation19getStaticMetaObjectEv @ 237 NONAME
-	_ZN25NmAddAttachmentsOperation21completeOperationPartERK7QStringRK4NmIdi @ 238 NONAME
-	_ZN25NmAddAttachmentsOperation22operationPartCompletedERK7QStringRK4NmIdi @ 239 NONAME
-	_ZN25NmAddAttachmentsOperationC2Ev @ 240 NONAME
-	_ZN25NmAddAttachmentsOperationD0Ev @ 241 NONAME
-	_ZN25NmAddAttachmentsOperationD1Ev @ 242 NONAME
-	_ZN25NmAddAttachmentsOperationD2Ev @ 243 NONAME
-	_ZN25NmStoreEnvelopesOperation11qt_metacallEN11QMetaObject4CallEiPPv @ 244 NONAME
-	_ZN25NmStoreEnvelopesOperation11qt_metacastEPKc @ 245 NONAME
-	_ZN25NmStoreEnvelopesOperation16staticMetaObjectE @ 246 NONAME DATA 16
-	_ZN25NmStoreEnvelopesOperation19getStaticMetaObjectEv @ 247 NONAME
-	_ZN26NmMessageCreationOperation11qt_metacallEN11QMetaObject4CallEiPPv @ 248 NONAME
-	_ZN26NmMessageCreationOperation11qt_metacastEPKc @ 249 NONAME
-	_ZN26NmMessageCreationOperation16staticMetaObjectE @ 250 NONAME DATA 16
-	_ZN26NmMessageCreationOperation19getStaticMetaObjectEv @ 251 NONAME
-	_ZN7NmIcons7getIconENS_4IconE @ 252 NONAME
-	_ZN7NmIcons9freeIconsEv @ 253 NONAME
-	_ZNK10NmUiEngine10metaObjectEv @ 254 NONAME
-	_ZNK10NmUiEngine16isSendingMessageEv @ 255 NONAME
-	_ZNK10NmUiEngine16messageBeingSentEv @ 256 NONAME
-	_ZNK11NmOperation10metaObjectEv @ 257 NONAME
-	_ZNK11NmOperation9isRunningEv @ 258 NONAME
-	_ZNK13NmDataManager10metaObjectEv @ 259 NONAME
-	_ZNK16NmFolderMetaData2idEv @ 260 NONAME
-	_ZNK16NmFolderMetaData4nameEv @ 261 NONAME
-	_ZNK17NmFolderListModel11columnCountERK11QModelIndex @ 262 NONAME
-	_ZNK17NmFolderListModel4dataERK11QModelIndexi @ 263 NONAME
-	_ZNK17NmFolderListModel6parentERK11QModelIndex @ 264 NONAME
-	_ZNK17NmFolderListModel8rowCountERK11QModelIndex @ 265 NONAME
-	_ZNK17NmMailboxMetaData2idEv @ 266 NONAME
-	_ZNK17NmMailboxMetaData4nameEv @ 267 NONAME
-	_ZNK17NmMailboxMetaData6IconIdEv @ 268 NONAME
-	_ZNK17NmMailboxMetaData7addressEv @ 269 NONAME
-	_ZNK18NmBaseClientPlugin10metaObjectEv @ 270 NONAME
-	_ZNK18NmMailboxListModel10metaObjectEv @ 271 NONAME
-	_ZNK18NmMailboxListModel4dataERK11QModelIndexi @ 272 NONAME
-	_ZNK18NmMessageListModel10metaObjectEv @ 273 NONAME
-	_ZNK18NmMessageListModel17getInsertionIndexERK17NmMessageEnvelope @ 274 NONAME
-	_ZNK18NmMessageListModel30messagesBelongUnderSameDividerEPK17NmMessageEnvelopeS2_ @ 275 NONAME
-	_ZNK18NmMessageListModel4dataERK11QModelIndexi @ 276 NONAME
-	_ZNK22NmCheckOutboxOperation10metaObjectEv @ 277 NONAME
-	_ZNK22NmMessageListModelItem12titleDividerEv @ 278 NONAME
-	_ZNK22NmMessageListModelItem8envelopeEv @ 279 NONAME
-	_ZNK22NmMessageListModelItem8expandedEv @ 280 NONAME
-	_ZNK22NmMessageListModelItem8itemTypeEv @ 281 NONAME
-	_ZNK25NmAddAttachmentsOperation10metaObjectEv @ 282 NONAME
-	_ZNK25NmStoreEnvelopesOperation10metaObjectEv @ 283 NONAME
-	_ZNK26NmMessageCreationOperation10metaObjectEv @ 284 NONAME
-	_ZTI10NmUiEngine @ 285 NONAME
-	_ZTI11NmOperation @ 286 NONAME
-	_ZTI13NmDataManager @ 287 NONAME
-	_ZTI16NmFolderMetaData @ 288 NONAME
-	_ZTI17NmFolderListModel @ 289 NONAME
-	_ZTI17NmMailboxMetaData @ 290 NONAME
-	_ZTI18NmBaseClientPlugin @ 291 NONAME
-	_ZTI18NmMailboxListModel @ 292 NONAME
-	_ZTI18NmMessageListModel @ 293 NONAME
-	_ZTI19NmDataPluginFactory @ 294 NONAME
-	_ZTI22NmCheckOutboxOperation @ 295 NONAME
-	_ZTI22NmMessageListModelItem @ 296 NONAME
-	_ZTI25NmAddAttachmentsOperation @ 297 NONAME
-	_ZTI25NmStoreEnvelopesOperation @ 298 NONAME
-	_ZTI26NmMessageCreationOperation @ 299 NONAME
-	_ZTV10NmUiEngine @ 300 NONAME
-	_ZTV11NmOperation @ 301 NONAME
-	_ZTV13NmDataManager @ 302 NONAME
-	_ZTV16NmFolderMetaData @ 303 NONAME
-	_ZTV17NmFolderListModel @ 304 NONAME
-	_ZTV17NmMailboxMetaData @ 305 NONAME
-	_ZTV18NmBaseClientPlugin @ 306 NONAME
-	_ZTV18NmMailboxListModel @ 307 NONAME
-	_ZTV18NmMessageListModel @ 308 NONAME
-	_ZTV19NmDataPluginFactory @ 309 NONAME
-	_ZTV22NmCheckOutboxOperation @ 310 NONAME
-	_ZTV22NmMessageListModelItem @ 311 NONAME
-	_ZTV25NmAddAttachmentsOperation @ 312 NONAME
-	_ZTV25NmStoreEnvelopesOperation @ 313 NONAME
-	_ZTV26NmMessageCreationOperation @ 314 NONAME
-	_ZThn8_N18NmBaseClientPlugin10getActionsERK15NmActionRequestR5QListIP8NmActionE @ 315 NONAME
-	_ZThn8_N18NmBaseClientPluginD0Ev @ 316 NONAME
-	_ZThn8_N18NmBaseClientPluginD1Ev @ 317 NONAME
-	_ZN10NmUiEngine18updateActiveFolderERK4NmIdS2_ @ 318 NONAME
-	_ZN19NmDataPluginFactory33applicationStateInterfaceInstanceE4NmId @ 319 NONAME
-	_ZN19NmDataPluginFactory33applicationStateInterfaceInstanceEP7QObject @ 320 NONAME
-	_ZN10NmUiEngine17fetchMessagePartsERK4NmIdS2_S2_RK5QListIS0_E @ 321 NONAME
-	_ZN18NmMessageListModel18setIgnoreFolderIdsEb @ 322 NONAME
+	_ZN10NmUiEngine17fetchMessagePartsERK4NmIdS2_S2_RK5QListIS0_E @ 33 NONAME
+	_ZN10NmUiEngine18createReplyMessageERK4NmIdS2_b @ 34 NONAME
+	_ZN10NmUiEngine18handleConnectEventE14NmConnectStateRK4NmIdi @ 35 NONAME
+	_ZN10NmUiEngine18handleMailboxEventE14NmMailboxEventRK5QListI4NmIdE @ 36 NONAME
+	_ZN10NmUiEngine18handleMessageEventE14NmMessageEventRK4NmIdRK5QListIS1_ES3_ @ 37 NONAME
+	_ZN10NmUiEngine18operationCompletedERK26NmOperationCompletionEvent @ 38 NONAME
+	_ZN10NmUiEngine18removeDraftMessageEP9NmMessage @ 39 NONAME
+	_ZN10NmUiEngine18updateActiveFolderERK4NmIdS2_ @ 40 NONAME
+	_ZN10NmUiEngine19getStaticMetaObjectEv @ 41 NONAME
+	_ZN10NmUiEngine20contentToMessagePartERK4NmIdS2_S2_R13NmMessagePart @ 42 NONAME
+	_ZN10NmUiEngine20createForwardMessageERK4NmIdS2_ @ 43 NONAME
+	_ZN10NmUiEngine20handleSyncStateEventE11NmSyncStateRK26NmOperationCompletionEvent @ 44 NONAME
+	_ZN10NmUiEngine22sendOperationCompletedEv @ 45 NONAME
+	_ZN10NmUiEngine23refreshMailboxListModelEv @ 46 NONAME
+	_ZN10NmUiEngine25messageListModelForSearchERK4NmId @ 47 NONAME
+	_ZN10NmUiEngine28handleCompletedSendOperationEv @ 48 NONAME
+	_ZN10NmUiEngine33handleCompletedSaveDraftOperationEv @ 49 NONAME
+	_ZN10NmUiEngine35handleCompletedRemoveDraftOperationEv @ 50 NONAME
+	_ZN10NmUiEngine6searchERK4NmIdRK11QStringList @ 51 NONAME
+	_ZN10NmUiEngine7messageERK4NmIdS2_S2_ @ 52 NONAME
+	_ZN10NmUiEngine8goOnlineERK4NmId @ 53 NONAME
+	_ZN10NmUiEngine8instanceEv @ 54 NONAME
+	_ZN10NmUiEngine9goOfflineERK4NmId @ 55 NONAME
+	_ZN10NmUiEngine9mInstanceE @ 56 NONAME DATA 4
+	_ZN10NmUiEngine9syncStateERK4NmId @ 57 NONAME
+	_ZN10NmUiEngineC1Ev @ 58 NONAME
+	_ZN10NmUiEngineC2Ev @ 59 NONAME
+	_ZN10NmUiEngineD0Ev @ 60 NONAME
+	_ZN10NmUiEngineD1Ev @ 61 NONAME
+	_ZN10NmUiEngineD2Ev @ 62 NONAME
+	_ZN11NmOperation11qt_metacallEN11QMetaObject4CallEiPPv @ 63 NONAME
+	_ZN11NmOperation11qt_metacastEPKc @ 64 NONAME
+	_ZN11NmOperation15cancelOperationEv @ 65 NONAME
+	_ZN11NmOperation15deleteOperationEv @ 66 NONAME
+	_ZN11NmOperation16staticMetaObjectE @ 67 NONAME DATA 16
+	_ZN11NmOperation17completeOperationEi @ 68 NONAME
+	_ZN11NmOperation17doCancelOperationEv @ 69 NONAME
+	_ZN11NmOperation17runAsyncOperationEv @ 70 NONAME
+	_ZN11NmOperation18operationCancelledEv @ 71 NONAME
+	_ZN11NmOperation18operationCompletedEi @ 72 NONAME
+	_ZN11NmOperation19doCompleteOperationEv @ 73 NONAME
+	_ZN11NmOperation19getStaticMetaObjectEv @ 74 NONAME
+	_ZN11NmOperation23addPreliminaryOperationEPS_ @ 75 NONAME
+	_ZN11NmOperation23updateOperationProgressEi @ 76 NONAME
+	_ZN11NmOperation24operationProgressChangedEi @ 77 NONAME
+	_ZN11NmOperation25doUpdateOperationProgressEv @ 78 NONAME
+	_ZN11NmOperation34handlePreliminaryOperationFinishedEv @ 79 NONAME
+	_ZN11NmOperationC2Ev @ 80 NONAME
+	_ZN11NmOperationD0Ev @ 81 NONAME
+	_ZN11NmOperationD1Ev @ 82 NONAME
+	_ZN11NmOperationD2Ev @ 83 NONAME
+	_ZN13NmDataManager10folderByIdERK4NmIdS2_ @ 84 NONAME
+	_ZN13NmDataManager11listFoldersE4NmIdR5QListIP8NmFolderE @ 85 NONAME
+	_ZN13NmDataManager11mailboxByIdERK4NmId @ 86 NONAME
+	_ZN13NmDataManager11qt_metacallEN11QMetaObject4CallEiPPv @ 87 NONAME
+	_ZN13NmDataManager11qt_metacastEPKc @ 88 NONAME
+	_ZN13NmDataManager12envelopeByIdERK4NmIdS2_S2_ @ 89 NONAME
+	_ZN13NmDataManager12listMessagesERK4NmIdS2_R5QListIP17NmMessageEnvelopeE @ 90 NONAME
+	_ZN13NmDataManager13listMailboxesER5QListIP9NmMailboxE @ 91 NONAME
+	_ZN13NmDataManager14folderTypeByIdE4NmIdS0_ @ 92 NONAME
+	_ZN13NmDataManager14listMailboxIdsER5QListI4NmIdE @ 93 NONAME
+	_ZN13NmDataManager16staticMetaObjectE @ 94 NONAME DATA 16
+	_ZN13NmDataManager19getStandardFolderIdERK4NmId12NmFolderType @ 95 NONAME
+	_ZN13NmDataManager19getStaticMetaObjectEv @ 96 NONAME
+	_ZN13NmDataManager20contentToMessagePartERK4NmIdS2_S2_R13NmMessagePart @ 97 NONAME
+	_ZN13NmDataManager6folderERK4NmIdS2_ @ 98 NONAME
+	_ZN13NmDataManager7mailboxERK4NmId @ 99 NONAME
+	_ZN13NmDataManager7messageERK4NmIdS2_S2_ @ 100 NONAME
+	_ZN13NmDataManagerC1Ev @ 101 NONAME
+	_ZN13NmDataManagerC2Ev @ 102 NONAME
+	_ZN13NmDataManagerD0Ev @ 103 NONAME
+	_ZN13NmDataManagerD1Ev @ 104 NONAME
+	_ZN13NmDataManagerD2Ev @ 105 NONAME
+	_ZN16NmFolderMetaData5setIdERK4NmId @ 106 NONAME
+	_ZN16NmFolderMetaData7setNameERK7QString @ 107 NONAME
+	_ZN16NmFolderMetaDataC1Ev @ 108 NONAME
+	_ZN16NmFolderMetaDataC2Ev @ 109 NONAME
+	_ZN16NmFolderMetaDataD0Ev @ 110 NONAME
+	_ZN16NmFolderMetaDataD1Ev @ 111 NONAME
+	_ZN16NmFolderMetaDataD2Ev @ 112 NONAME
+	_ZN17NmFolderListModel7refreshER5QListIP8NmFolderE @ 113 NONAME
+	_ZN17NmFolderListModelC1ER13NmDataManagerP7QObject @ 114 NONAME
+	_ZN17NmFolderListModelC2ER13NmDataManagerP7QObject @ 115 NONAME
+	_ZN17NmFolderListModelD0Ev @ 116 NONAME
+	_ZN17NmFolderListModelD1Ev @ 117 NONAME
+	_ZN17NmFolderListModelD2Ev @ 118 NONAME
+	_ZN17NmMailboxMetaData10setAddressERK7QString @ 119 NONAME
+	_ZN17NmMailboxMetaData5setIdERK4NmId @ 120 NONAME
+	_ZN17NmMailboxMetaData7setNameERK7QString @ 121 NONAME
+	_ZN17NmMailboxMetaData9setIconIdERK4NmId @ 122 NONAME
+	_ZN17NmMailboxMetaDataC1Ev @ 123 NONAME
+	_ZN17NmMailboxMetaDataC2Ev @ 124 NONAME
+	_ZN17NmMailboxMetaDataD0Ev @ 125 NONAME
+	_ZN17NmMailboxMetaDataD1Ev @ 126 NONAME
+	_ZN17NmMailboxMetaDataD2Ev @ 127 NONAME
+	_ZN18NmBaseClientPlugin10getActionsERK15NmActionRequestR5QListIP8NmActionE @ 128 NONAME
+	_ZN18NmBaseClientPlugin10markAsReadEv @ 129 NONAME
+	_ZN18NmBaseClientPlugin11forwardMailEv @ 130 NONAME
+	_ZN18NmBaseClientPlugin11openMessageEv @ 131 NONAME
+	_ZN18NmBaseClientPlugin11qt_metacallEN11QMetaObject4CallEiPPv @ 132 NONAME
+	_ZN18NmBaseClientPlugin11qt_metacastEPKc @ 133 NONAME
+	_ZN18NmBaseClientPlugin12markAsUnreadEv @ 134 NONAME
+	_ZN18NmBaseClientPlugin12replyAllMailEv @ 135 NONAME
+	_ZN18NmBaseClientPlugin13createNewMailEv @ 136 NONAME
+	_ZN18NmBaseClientPlugin13deleteMessageEv @ 137 NONAME
+	_ZN18NmBaseClientPlugin13handleRequestE23NmActionResponseCommandRK15NmActionRequest @ 138 NONAME
+	_ZN18NmBaseClientPlugin14openAttachmentEv @ 139 NONAME
+	_ZN18NmBaseClientPlugin14setPriorityLowEv @ 140 NONAME
+	_ZN18NmBaseClientPlugin15setPriorityHighEv @ 141 NONAME
+	_ZN18NmBaseClientPlugin16removeAttachmentEv @ 142 NONAME
+	_ZN18NmBaseClientPlugin16staticMetaObjectE @ 143 NONAME DATA 16
+	_ZN18NmBaseClientPlugin17setPriorityNormalEv @ 144 NONAME
+	_ZN18NmBaseClientPlugin18mailboxListChangedERK4NmIdN10NmSettings16MailboxEventTypeE @ 145 NONAME
+	_ZN18NmBaseClientPlugin19getStaticMetaObjectEv @ 146 NONAME
+	_ZN18NmBaseClientPlugin22mailboxPropertyChangedERK4NmId8QVariantS3_ @ 147 NONAME
+	_ZN18NmBaseClientPlugin22updateEnvelopePropertyE20NmEnvelopeProperties @ 148 NONAME
+	_ZN18NmBaseClientPlugin24createEditorViewCommandsERK15NmActionRequestR5QListIP8NmActionE @ 149 NONAME
+	_ZN18NmBaseClientPlugin24createViewerViewCommandsERK15NmActionRequestR5QListIP8NmActionE @ 150 NONAME
+	_ZN18NmBaseClientPlugin25createMessageListCommandsERK15NmActionRequestR5QListIP8NmActionE @ 151 NONAME
+	_ZN18NmBaseClientPlugin26createNewMailViewerToolBarEv @ 152 NONAME
+	_ZN18NmBaseClientPlugin27deleteMessageFromViewerViewEv @ 153 NONAME
+	_ZN18NmBaseClientPlugin6attachEv @ 154 NONAME
+	_ZN18NmBaseClientPlugin6searchEv @ 155 NONAME
+	_ZN18NmBaseClientPlugin7refreshEv @ 156 NONAME
+	_ZN18NmBaseClientPlugin8goOnlineERK4NmId @ 157 NONAME
+	_ZN18NmBaseClientPlugin8sendMailEv @ 158 NONAME
+	_ZN18NmBaseClientPlugin8settingsEv @ 159 NONAME
+	_ZN18NmBaseClientPlugin9goOfflineERK4NmId @ 160 NONAME
+	_ZN18NmBaseClientPlugin9replyMailEv @ 161 NONAME
+	_ZN18NmBaseClientPluginC2Ev @ 162 NONAME
+	_ZN18NmBaseClientPluginD0Ev @ 163 NONAME
+	_ZN18NmBaseClientPluginD1Ev @ 164 NONAME
+	_ZN18NmBaseClientPluginD2Ev @ 165 NONAME
+	_ZN18NmMailboxListModel11qt_metacallEN11QMetaObject4CallEiPPv @ 166 NONAME
+	_ZN18NmMailboxListModel11qt_metacastEPKc @ 167 NONAME
+	_ZN18NmMailboxListModel16refreshModelItemERK4NmId @ 168 NONAME
+	_ZN18NmMailboxListModel16staticMetaObjectE @ 169 NONAME DATA 16
+	_ZN18NmMailboxListModel17createMailboxItemEPK9NmMailbox @ 170 NONAME
+	_ZN18NmMailboxListModel18handleMailboxEventE14NmMailboxEventRK5QListI4NmIdE @ 171 NONAME
+	_ZN18NmMailboxListModel19getStaticMetaObjectEv @ 172 NONAME
+	_ZN18NmMailboxListModel7refreshER5QListIP9NmMailboxE @ 173 NONAME
+	_ZN18NmMailboxListModelC1ER13NmDataManagerP7QObject @ 174 NONAME
+	_ZN18NmMailboxListModelC2ER13NmDataManagerP7QObject @ 175 NONAME
+	_ZN18NmMailboxListModelD0Ev @ 176 NONAME
+	_ZN18NmMailboxListModelD1Ev @ 177 NONAME
+	_ZN18NmMailboxListModelD2Ev @ 178 NONAME
+	_ZN18NmMessageListModel10removeItemEiR22NmMessageListModelItem @ 179 NONAME
+	_ZN18NmMessageListModel11qt_metacallEN11QMetaObject4CallEiPPv @ 180 NONAME
+	_ZN18NmMessageListModel11qt_metacastEPKc @ 181 NONAME
+	_ZN18NmMessageListModel11setDividersEb @ 182 NONAME
+	_ZN18NmMessageListModel11setNewParamEP14NmUiStartParam @ 183 NONAME
+	_ZN18NmMessageListModel13itemFromModelERK4NmId @ 184 NONAME
+	_ZN18NmMessageListModel14dividersActiveEv @ 185 NONAME
+	_ZN18NmMessageListModel14updateEnvelopeE20NmEnvelopePropertiesRK4NmId @ 186 NONAME
+	_ZN18NmMessageListModel16currentMailboxIdEv @ 187 NONAME
+	_ZN18NmMessageListModel16staticMetaObjectE @ 188 NONAME DATA 16
+	_ZN18NmMessageListModel17createMessageItemEP17NmMessageEnvelope @ 189 NONAME
+	_ZN18NmMessageListModel18handleMessageEventE14NmMessageEventRK4NmIdRK5QListIS1_ES3_ @ 190 NONAME
+	_ZN18NmMessageListModel18setIgnoreFolderIdsEb @ 191 NONAME
+	_ZN18NmMessageListModel19getStaticMetaObjectEv @ 192 NONAME
+	_ZN18NmMessageListModel21dividerInsertionIndexEi @ 193 NONAME
+	_ZN18NmMessageListModel21setEnvelopePropertiesE20NmEnvelopePropertiesRK5QListI4NmIdE @ 194 NONAME
+	_ZN18NmMessageListModel21updateMessageEnvelopeERK4NmIdS2_S2_ @ 195 NONAME
+	_ZN18NmMessageListModel22createTitleDividerItemEP17NmMessageEnvelope @ 196 NONAME
+	_ZN18NmMessageListModel22insertDividerIntoModelEP17NmMessageEnvelopei @ 197 NONAME
+	_ZN18NmMessageListModel22insertMessageIntoModelEP17NmMessageEnvelopeib @ 198 NONAME
+	_ZN18NmMessageListModel22removeMessageFromModelERK4NmId @ 199 NONAME
+	_ZN18NmMessageListModel25insertNewMessageIntoModelERK4NmIdS2_S2_ @ 200 NONAME
+	_ZN18NmMessageListModel7changedERK17NmMessageEnvelopeS2_ @ 201 NONAME
+	_ZN18NmMessageListModel7refreshE4NmIdS0_RK5QListIP17NmMessageEnvelopeE @ 202 NONAME
+	_ZN18NmMessageListModelC1ER13NmDataManagerP7QObject @ 203 NONAME
+	_ZN18NmMessageListModelC2ER13NmDataManagerP7QObject @ 204 NONAME
+	_ZN18NmMessageListModelD0Ev @ 205 NONAME
+	_ZN18NmMessageListModelD1Ev @ 206 NONAME
+	_ZN18NmMessageListModelD2Ev @ 207 NONAME
+	_ZN19NmDataPluginFactory10loadPluginERK4QDirRK7QString @ 208 NONAME
+	_ZN19NmDataPluginFactory12mPluginArrayE @ 209 NONAME DATA 4
+	_ZN19NmDataPluginFactory14pluginInstanceE4NmId @ 210 NONAME
+	_ZN19NmDataPluginFactory15mReferenceCountE @ 211 NONAME DATA 4
+	_ZN19NmDataPluginFactory15pluginInstancesEv @ 212 NONAME
+	_ZN19NmDataPluginFactory15releaseInstanceERPS_ @ 213 NONAME
+	_ZN19NmDataPluginFactory17interfaceInstanceE4NmId @ 214 NONAME
+	_ZN19NmDataPluginFactory17interfaceInstanceEP7QObject @ 215 NONAME
+	_ZN19NmDataPluginFactory18mPluginLoaderArrayE @ 216 NONAME DATA 4
+	_ZN19NmDataPluginFactory33applicationStateInterfaceInstanceE4NmId @ 217 NONAME
+	_ZN19NmDataPluginFactory33applicationStateInterfaceInstanceEP7QObject @ 218 NONAME
+	_ZN19NmDataPluginFactory8instanceEv @ 219 NONAME
+	_ZN19NmDataPluginFactory9mInstanceE @ 220 NONAME DATA 4
+	_ZN19NmDataPluginFactoryC1Ev @ 221 NONAME
+	_ZN19NmDataPluginFactoryC2Ev @ 222 NONAME
+	_ZN19NmDataPluginFactoryD0Ev @ 223 NONAME
+	_ZN19NmDataPluginFactoryD1Ev @ 224 NONAME
+	_ZN19NmDataPluginFactoryD2Ev @ 225 NONAME
+	_ZN22NmMessageListModelItem11envelopePtrEv @ 226 NONAME
+	_ZN22NmMessageListModelItem11setEnvelopeEP17NmMessageEnvelope @ 227 NONAME
+	_ZN22NmMessageListModelItem11setEnvelopeERK17NmMessageEnvelope @ 228 NONAME
+	_ZN22NmMessageListModelItem11setExpandedEb @ 229 NONAME
+	_ZN22NmMessageListModelItem11setItemTypeENS_17NmMessageItemTypeE @ 230 NONAME
+	_ZN22NmMessageListModelItem15setTitleDividerERK7QString @ 231 NONAME
+	_ZN22NmMessageListModelItem19callEmitDataChangedEv @ 232 NONAME
+	_ZN22NmMessageListModelItemC1Ev @ 233 NONAME
+	_ZN22NmMessageListModelItemC2Ev @ 234 NONAME
+	_ZN22NmMessageListModelItemD0Ev @ 235 NONAME
+	_ZN22NmMessageListModelItemD1Ev @ 236 NONAME
+	_ZN22NmMessageListModelItemD2Ev @ 237 NONAME
+	_ZN25NmAddAttachmentsOperation11qt_metacallEN11QMetaObject4CallEiPPv @ 238 NONAME
+	_ZN25NmAddAttachmentsOperation11qt_metacastEPKc @ 239 NONAME
+	_ZN25NmAddAttachmentsOperation16staticMetaObjectE @ 240 NONAME DATA 16
+	_ZN25NmAddAttachmentsOperation19getStaticMetaObjectEv @ 241 NONAME
+	_ZN25NmAddAttachmentsOperation21completeOperationPartERK7QStringRK4NmIdi @ 242 NONAME
+	_ZN25NmAddAttachmentsOperation22operationPartCompletedERK7QStringRK4NmIdi @ 243 NONAME
+	_ZN25NmAddAttachmentsOperationC2Ev @ 244 NONAME
+	_ZN25NmAddAttachmentsOperationD0Ev @ 245 NONAME
+	_ZN25NmAddAttachmentsOperationD1Ev @ 246 NONAME
+	_ZN25NmAddAttachmentsOperationD2Ev @ 247 NONAME
+	_ZN25NmStoreEnvelopesOperation11qt_metacallEN11QMetaObject4CallEiPPv @ 248 NONAME
+	_ZN25NmStoreEnvelopesOperation11qt_metacastEPKc @ 249 NONAME
+	_ZN25NmStoreEnvelopesOperation16staticMetaObjectE @ 250 NONAME DATA 16
+	_ZN25NmStoreEnvelopesOperation19getStaticMetaObjectEv @ 251 NONAME
+	_ZN26NmMessageCreationOperation11qt_metacallEN11QMetaObject4CallEiPPv @ 252 NONAME
+	_ZN26NmMessageCreationOperation11qt_metacastEPKc @ 253 NONAME
+	_ZN26NmMessageCreationOperation16staticMetaObjectE @ 254 NONAME DATA 16
+	_ZN26NmMessageCreationOperation19getStaticMetaObjectEv @ 255 NONAME
+	_ZN7NmIcons7getIconENS_4IconE @ 256 NONAME
+	_ZN7NmIcons9freeIconsEv @ 257 NONAME
+	_ZNK10NmUiEngine10metaObjectEv @ 258 NONAME
+	_ZNK10NmUiEngine16isSendingMessageEv @ 259 NONAME
+	_ZNK10NmUiEngine16messageBeingSentEv @ 260 NONAME
+	_ZNK11NmOperation10metaObjectEv @ 261 NONAME
+	_ZNK11NmOperation9isRunningEv @ 262 NONAME
+	_ZNK13NmDataManager10metaObjectEv @ 263 NONAME
+	_ZNK16NmFolderMetaData2idEv @ 264 NONAME
+	_ZNK16NmFolderMetaData4nameEv @ 265 NONAME
+	_ZNK17NmFolderListModel11columnCountERK11QModelIndex @ 266 NONAME
+	_ZNK17NmFolderListModel4dataERK11QModelIndexi @ 267 NONAME
+	_ZNK17NmFolderListModel6parentERK11QModelIndex @ 268 NONAME
+	_ZNK17NmFolderListModel8rowCountERK11QModelIndex @ 269 NONAME
+	_ZNK17NmMailboxMetaData2idEv @ 270 NONAME
+	_ZNK17NmMailboxMetaData4nameEv @ 271 NONAME
+	_ZNK17NmMailboxMetaData6IconIdEv @ 272 NONAME
+	_ZNK17NmMailboxMetaData7addressEv @ 273 NONAME
+	_ZNK18NmBaseClientPlugin10metaObjectEv @ 274 NONAME
+	_ZNK18NmMailboxListModel10metaObjectEv @ 275 NONAME
+	_ZNK18NmMailboxListModel4dataERK11QModelIndexi @ 276 NONAME
+	_ZNK18NmMessageListModel10metaObjectEv @ 277 NONAME
+	_ZNK18NmMessageListModel17getInsertionIndexERK17NmMessageEnvelope @ 278 NONAME
+	_ZNK18NmMessageListModel30messagesBelongUnderSameDividerEPK17NmMessageEnvelopeS2_ @ 279 NONAME
+	_ZNK18NmMessageListModel4dataERK11QModelIndexi @ 280 NONAME
+	_ZNK22NmMessageListModelItem12titleDividerEv @ 281 NONAME
+	_ZNK22NmMessageListModelItem8envelopeEv @ 282 NONAME
+	_ZNK22NmMessageListModelItem8expandedEv @ 283 NONAME
+	_ZNK22NmMessageListModelItem8itemTypeEv @ 284 NONAME
+	_ZNK25NmAddAttachmentsOperation10metaObjectEv @ 285 NONAME
+	_ZNK25NmStoreEnvelopesOperation10metaObjectEv @ 286 NONAME
+	_ZNK26NmMessageCreationOperation10metaObjectEv @ 287 NONAME
+	_ZTI10NmUiEngine @ 288 NONAME
+	_ZTI11NmOperation @ 289 NONAME
+	_ZTI13NmDataManager @ 290 NONAME
+	_ZTI16NmFolderMetaData @ 291 NONAME
+	_ZTI17NmFolderListModel @ 292 NONAME
+	_ZTI17NmMailboxMetaData @ 293 NONAME
+	_ZTI18NmBaseClientPlugin @ 294 NONAME
+	_ZTI18NmMailboxListModel @ 295 NONAME
+	_ZTI18NmMessageListModel @ 296 NONAME
+	_ZTI19NmDataPluginFactory @ 297 NONAME
+	_ZTI22NmMessageListModelItem @ 298 NONAME
+	_ZTI25NmAddAttachmentsOperation @ 299 NONAME
+	_ZTI25NmStoreEnvelopesOperation @ 300 NONAME
+	_ZTI26NmMessageCreationOperation @ 301 NONAME
+	_ZTV10NmUiEngine @ 302 NONAME
+	_ZTV11NmOperation @ 303 NONAME
+	_ZTV13NmDataManager @ 304 NONAME
+	_ZTV16NmFolderMetaData @ 305 NONAME
+	_ZTV17NmFolderListModel @ 306 NONAME
+	_ZTV17NmMailboxMetaData @ 307 NONAME
+	_ZTV18NmBaseClientPlugin @ 308 NONAME
+	_ZTV18NmMailboxListModel @ 309 NONAME
+	_ZTV18NmMessageListModel @ 310 NONAME
+	_ZTV19NmDataPluginFactory @ 311 NONAME
+	_ZTV22NmMessageListModelItem @ 312 NONAME
+	_ZTV25NmAddAttachmentsOperation @ 313 NONAME
+	_ZTV25NmStoreEnvelopesOperation @ 314 NONAME
+	_ZTV26NmMessageCreationOperation @ 315 NONAME
+	_ZThn8_N18NmBaseClientPlugin10getActionsERK15NmActionRequestR5QListIP8NmActionE @ 316 NONAME
+	_ZThn8_N18NmBaseClientPluginD0Ev @ 317 NONAME
+	_ZThn8_N18NmBaseClientPluginD1Ev @ 318 NONAME
+	_ZN10NmUiEngine24messageEventForListModelE14NmMessageEventRK4NmIdRK5QListIS1_ES3_ @ 319 NONAME
 
--- a/emailuis/nmailuiengine/inc/nmdataplugininterface.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/inc/nmdataplugininterface.h	Fri May 28 13:56:43 2010 +0300
@@ -33,7 +33,6 @@
 class NmMessageCreationOperation;
 class NmStoreEnvelopesOperation;
 class NmAddAttachmentsOperation;
-class NmCheckOutboxOperation;
 class NmMessageSendingOperation;
 
 /*!
@@ -177,8 +176,6 @@
         const NmMessage &message,
         const NmId &attachmentPartId) = 0;
 
-    virtual QPointer<NmCheckOutboxOperation> checkOutbox(const NmId &mailboxId) = 0;
-    
     virtual NmSyncState syncState(const NmId& mailboxId) const = 0;
     
     virtual NmConnectState connectionState(const NmId& mailboxId) const = 0;
@@ -187,6 +184,8 @@
         const QStringList &searchStrings) = 0;
 
     virtual int cancelSearch(const NmId &mailboxId) = 0;
+
+    virtual QPointer<NmOperation> removeDraftMessage(NmMessage *message) = 0;
 };
 
 Q_DECLARE_INTERFACE(NmDataPluginInterface, "sf.app.commonmail.emailuis.nmailuiengine.NmDataPluginInterface/1.0")
--- a/emailuis/nmailuiengine/inc/nmmailboxlistmodel.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/inc/nmmailboxlistmodel.h	Fri May 28 13:56:43 2010 +0300
@@ -37,7 +37,7 @@
     virtual ~NmMailboxListModel();
     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
     void refresh(QList<NmMailbox*> &mailboxList);
-    void refreshModelItem(const NmId &mailboxId, bool allowEmitDataChanged = true);
+    void refreshModelItem(const NmId &mailboxId);
 
 public slots:
     void handleMailboxEvent(NmMailboxEvent event, const QList<NmId> &mailboxIds);
--- a/emailuis/nmailuiengine/inc/nmmessagelistmodel.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/inc/nmmessagelistmodel.h	Fri May 28 13:56:43 2010 +0300
@@ -67,7 +67,8 @@
 
     void handleMessageEvent(NmMessageEvent event,
                             const NmId &folderId,
-                            const QList<NmId> &messageIds);
+                            const QList<NmId> &messageIds,
+                            const NmId &mailboxId);
 
 
 private:
--- a/emailuis/nmailuiengine/inc/nmuiengine.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/inc/nmuiengine.h	Fri May 28 13:56:43 2010 +0300
@@ -38,7 +38,6 @@
 class NmMessageCreationOperation;
 class NmStoreEnvelopesOperation;
 class NmAddAttachmentsOperation;
-class NmCheckOutboxOperation;
 class NmMessageSendingOperation;
 
 
@@ -137,6 +136,11 @@
                       const NmId &folderId,
                       const NmId &messageId);
     
+    void removeDraftMessage(NmMessage *message);
+    
+    void saveDraftMessage(NmMessage *message,
+                          const QList<NmOperation*> &preliminaryOperations);
+    
     void sendMessage(NmMessage *message,
                      const QList<NmOperation*> &preliminaryOperations);
 
@@ -152,8 +156,6 @@
         const NmMessage &message, 
         const NmId &attachmentPartId);
 
-    QPointer<NmCheckOutboxOperation> checkOutbox(const NmId &mailboxId);
-    
     NmSyncState syncState(const NmId& mailboxId);
 
     NmConnectState connectionState(const NmId& mailboxId);
@@ -170,6 +172,8 @@
 public slots:
 
     void handleCompletedSendOperation();
+    void handleCompletedRemoveDraftOperation();
+    void handleCompletedSaveDraftOperation();
 
     void handleSyncStateEvent(NmSyncState syncState,
                               const NmOperationCompletionEvent &event);
@@ -190,6 +194,11 @@
                             const QList<NmId> &mailboxIds);
 
     void handleMatchFound(const NmId &messageId, const NmId &folderId);
+    
+    void messageEventForListModel(NmMessageEvent event,
+                            const NmId &folderId,
+                            const QList<NmId> &messageIds, 
+                            const NmId& mailboxId);
 
 
 signals:
@@ -219,9 +228,12 @@
     NmDataPluginFactory *mPluginFactory;
     NmDataManager *mDataManager;                // Owned
     NmMailboxListModel *mMailboxListModel;      // Owned
+    NmMessageListModel *mInboxListModel;      // Owned
     NmMessageListModel *mMessageListModel;      // Owned
     NmMessageListModel *mMessageSearchListModel; // Owned
     QPointer<NmMessageSendingOperation> mSendOperation;  // Not owned
+    QPointer<NmOperation> mRemoveDraftOperation; // not owned
+    QPointer<NmOperation> mSaveDraftOperation;   // not owned
 };
 
 
--- a/emailuis/nmailuiengine/inc/nmuiengineheaders.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/inc/nmuiengineheaders.h	Fri May 28 13:56:43 2010 +0300
@@ -39,6 +39,7 @@
 #include <hbicon.h>
 #include <hbiconanimationmanager.h>
 #include <hbmenu.h>
+#include <hbindicator.h>
 
 // nmailuiengine
 #include "nmuienginedef.h"
@@ -60,7 +61,6 @@
 #include "nmmessagesendingoperation.h"
 #include "nmaddattachmentsoperation.h"
 #include "nmmessagecreationoperation.h"
-#include "nmcheckoutboxoperation.h"
 #include "nmmessagecreationoperation.h"
 #include "nmapplicationstateinterface.h"
 
--- a/emailuis/nmailuiengine/nmailuiengine.pro	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/nmailuiengine.pro	Fri May 28 13:56:43 2010 +0300
@@ -43,7 +43,6 @@
            inc/nmoperation.h \
            inc/nmaddattachmentsoperation.h \
            inc/nmmessagesendingoperation.h \
-           inc/nmcheckoutboxoperation.h \
            inc/nmstoreenvelopesoperation.h \
            inc/nmapplicationstateinterface.h 
 
--- a/emailuis/nmailuiengine/src/nmaddattachmentoperation.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/src/nmaddattachmentoperation.cpp	Fri May 28 13:56:43 2010 +0300
@@ -22,6 +22,7 @@
   */
 NmAddAttachmentsOperation::NmAddAttachmentsOperation()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -29,6 +30,7 @@
  */
 NmAddAttachmentsOperation::~NmAddAttachmentsOperation()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -39,6 +41,8 @@
  */
 void NmAddAttachmentsOperation::completeOperationPart(const QString &fileName, const NmId &msgPartId, int result)
 {
+    NM_FUNCTION;
+    
     emit operationPartCompleted(fileName, msgPartId, result);
 }
 
--- a/emailuis/nmailuiengine/src/nmbaseclientplugin.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/src/nmbaseclientplugin.cpp	Fri May 28 13:56:43 2010 +0300
@@ -104,9 +104,9 @@
 mViewerToolBarRequest(NULL),
 mViewerViewRequest(NULL)
 {
-    NMLOG("NmBaseClientPlugin::NmBaseClientPlugin()-->");
+    NM_FUNCTION;
+    
     mUiEngine = NmUiEngine::instance();
-    NMLOG("<--NmBaseClientPlugin::NmBaseClientPlugin()");
 }
 
 /*!
@@ -114,27 +114,29 @@
 */
 NmBaseClientPlugin::~NmBaseClientPlugin()
 {
-    NMLOG("NmBaseClientPlugin::~NmBaseClientPlugin()-->");
+    NM_FUNCTION;
+    
     NmUiEngine::releaseInstance(mUiEngine);
     mUiEngine = NULL;
-    NMLOG("<--NmBaseClientPlugin::~NmBaseClientPlugin()");
 }
 
+
 /*!
-    Provides list of supported NmActions.
+    Provides a list of supported NmActions.
     Implementation of NmUiExtensionInterface.
+
     Parameter \a request controls list of request services.
     Parameter \a actionList is updated by supported NmActions.
 */
-void NmBaseClientPlugin::getActions(
-      const NmActionRequest &request,
-      QList<NmAction *> &actionList)
+void NmBaseClientPlugin::getActions(const NmActionRequest &request,
+                                    QList<NmAction *> &actionList)
 {
-    NMLOG("NmBaseClientPlugin::getActions()-->");
-
+    NM_FUNCTION;
+    
     if (request.observer()) {
         switch (request.contextView()) {
             case NmActionContextViewMessageList:
+            case NmActionContextViewMessageSearchList:
             {
                 createMessageListCommands(request, actionList);
                 break;
@@ -151,30 +153,28 @@
             }
             default:
             {
-                NMLOG(QString("NmBaseClientPlugin::getActions(): Unknown contextView()=%1").arg(request.contextView()));
+                NM_COMMENT(QString("NmBaseClientPlugin::getActions(): unknown contextView()=%1").arg(request.contextView()));
                 break;
             }
         }
     }
-    NMLOG("<--NmBaseClientPlugin::getActions()");
 }
 
+
 /*!
     Public slot connected to options menu refresh NmAction.
     Refreshes mailbox using the NmUiEngine instance.
 */
 void NmBaseClientPlugin::refresh()
 {
-    NMLOG("NmBaseClientPlugin::refresh()-->");
-
+    NM_FUNCTION;
+    
     int err = mUiEngine->refreshMailbox(mMenuRequest.mailboxId());
 
     if (NmNoError != err) {
         // Failed to refresh the mailbox!
-        NMLOG(QString("NmBaseClientPlugin::refresh(): failed err=%1").arg(err));
+        NM_ERROR(1,QString("NmBaseClientPlugin::refresh(): failed err=%1").arg(err));
     }
-
-    NMLOG("<--NmBaseClientPlugin::refresh()");
 }
 
 /*!
@@ -183,6 +183,8 @@
 */
 void NmBaseClientPlugin::openMessage()
 {
+    NM_FUNCTION;
+    
     handleRequest(NmActionResponseCommandOpen, mMenuRequest);
 }
 
@@ -191,8 +193,8 @@
 */
 void NmBaseClientPlugin::deleteMessage()
 {
-    NMLOG("NmBaseClientPlugin::deleteMessage()-->");
-
+    NM_FUNCTION;
+    
     QList<NmId> messageList;
     messageList.append(mMenuRequest.messageId());
 
@@ -201,10 +203,9 @@
                                         messageList);
     if (NmNoError != err) {
         // Failed to delete the messages!
-        NMLOG(QString("NmBaseClientPlugin::deleteMessage(): failed err=%1").arg(err));
+        NM_ERROR(1,QString("NmBaseClientPlugin::deleteMessage(): failed err=%1").arg(err));
     }
     messageList.clear();
-    NMLOG("<--NmBaseClientPlugin::deleteMessage()");
 }
 
 /*!
@@ -213,6 +214,8 @@
 */
 void NmBaseClientPlugin::deleteMessageFromViewerView()
 {
+    NM_FUNCTION;
+    
     handleRequest(NmActionResponseCommandDeleteMail, mViewerViewRequest);
 }
 
@@ -222,6 +225,8 @@
 */
 void NmBaseClientPlugin::createNewMailViewerToolBar()
 {
+    NM_FUNCTION;
+    
     handleRequest(NmActionResponseCommandNewMail, mViewerToolBarRequest);
 }
 
@@ -231,6 +236,8 @@
 */
 void NmBaseClientPlugin::createNewMail()
 {
+    NM_FUNCTION;
+    
     handleRequest(NmActionResponseCommandNewMail, mMenuRequest);
 }
 
@@ -240,6 +247,8 @@
 */
 void NmBaseClientPlugin::settings()
 {
+    NM_FUNCTION;
+    
     handleRequest(NmActionResponseCommandSettings, mMenuRequest);
 }
 
@@ -249,6 +258,8 @@
 */
 void NmBaseClientPlugin::sendMail()
 {
+    NM_FUNCTION;
+    
     handleRequest(NmActionResponseCommandSendMail, mEditorToolBarRequest);
 }
 
@@ -259,6 +270,8 @@
 
 void NmBaseClientPlugin::replyMail()
 {
+    NM_FUNCTION;
+    
     handleRequest(NmActionResponseCommandReply, mViewerViewRequest);
 }
 
@@ -269,6 +282,8 @@
 
 void NmBaseClientPlugin::replyAllMail()
 {
+    NM_FUNCTION;
+    
     handleRequest(NmActionResponseCommandReplyAll, mViewerViewRequest);
 }
 
@@ -278,6 +293,8 @@
 */
 void NmBaseClientPlugin::forwardMail()
 {
+    NM_FUNCTION;
+    
     handleRequest(NmActionResponseCommandForward, mViewerViewRequest);
 }
 
@@ -286,6 +303,8 @@
 */
 void NmBaseClientPlugin::setPriorityHigh()
 {
+    NM_FUNCTION;
+    
     handleRequest(NmActionResponseCommandPriorityHigh, mMenuRequest);
 }
 
@@ -294,6 +313,8 @@
 */
 void NmBaseClientPlugin::setPriorityNormal()
 {
+    NM_FUNCTION;
+    
     handleRequest(NmActionResponseCommandNone, mMenuRequest);
 }
 
@@ -302,6 +323,8 @@
 */
 void NmBaseClientPlugin::setPriorityLow()
 {
+    NM_FUNCTION;
+    
     handleRequest(NmActionResponseCommandPriorityLow, mMenuRequest);
 }
 
@@ -310,6 +333,8 @@
 */
 void NmBaseClientPlugin::attach()
 {
+    NM_FUNCTION;
+    
     handleRequest(NmActionResponseCommandAttach, mEditorToolBarRequest);
 }
 
@@ -318,6 +343,8 @@
 */
 void NmBaseClientPlugin::removeAttachment()
 {
+    NM_FUNCTION;
+    
     handleRequest(NmActionResponseCommandRemoveAttachment, mMenuRequest);
 }
 
@@ -326,6 +353,8 @@
 */
 void NmBaseClientPlugin::openAttachment()
 {
+    NM_FUNCTION;
+    
     handleRequest(NmActionResponseCommandOpenAttachment, mMenuRequest);
 }
 
@@ -335,6 +364,8 @@
 */
 void NmBaseClientPlugin::search()
 {
+    NM_FUNCTION;
+    
     handleRequest(NmActionResponseCommandSearch, mViewerToolBarRequest);
 }
 
@@ -347,6 +378,8 @@
 void NmBaseClientPlugin::mailboxListChanged(const NmId &mailboxId,
     NmSettings::MailboxEventType type)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(mailboxId)
     Q_UNUSED(type)
     handleRequest(NmActionResponseCommandMailboxDeleted, mMenuRequest);
@@ -362,15 +395,15 @@
 void NmBaseClientPlugin::mailboxPropertyChanged(const NmId &mailboxId, QVariant property,
     QVariant value)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(property)
     Q_UNUSED(value)
 
     NmActionObserver *observer = mMenuRequest.observer();
     if (observer) {
         // Force model item to be updated, because framework adapter sends it too slowly.
-        // Data changed signal is not emitted by this change, it is send when ever famework adapter
-        // calls data model's handleMailboxEvent method.
-        mUiEngine->mailboxListModel().refreshModelItem(mailboxId, false);
+        mUiEngine->mailboxListModel().refreshModelItem(mailboxId);
 
         // Notify view of changes.
         NmActionResponse response(NmActionResponseCommandUpdateMailboxName, mMenuRequest);
@@ -384,6 +417,8 @@
 */
 void NmBaseClientPlugin::goOnline(const NmId &mailboxId)
 {
+    NM_FUNCTION;
+    
 		(void) mUiEngine->refreshMailbox(mailboxId);
 }
 /*!
@@ -392,6 +427,8 @@
 */
 void NmBaseClientPlugin::goOffline(const NmId &mailboxId)
 {
+    NM_FUNCTION;
+    
         mUiEngine->goOffline(mailboxId);
 }
 
@@ -405,8 +442,8 @@
     const NmActionRequest &request,
     QList<NmAction *> &actionList)
 {
-    NMLOG("NmBaseClientPlugin::createMessageListCommands()-->");
-
+    NM_FUNCTION;
+    
     switch (request.menuType()) {
         case NmActionOptionsMenu:
         {
@@ -478,7 +515,7 @@
                         request.requestData().value<NmMessageEnvelope*>();    
                     if (envelope){
                         if (envelope->isRead()){
-                            NMLOG("nmailui: envelope is read");
+                            NM_COMMENT("nmailui: envelope is read");
                             NmAction* unreadAction = new NmAction(0);
                             unreadAction->setObjectName("baseclientplugin_unreadaction");
                             unreadAction->setText(hbTrId("txt_mail_menu_mark_as_unread"));
@@ -491,7 +528,7 @@
                             actionList.append(unreadAction);
                         }
                         else {
-                            NMLOG("nmailui: envelope is unread");
+                            NM_COMMENT("nmailui: envelope is unread");
                             NmAction* readAction = new NmAction(0);
                             readAction->setObjectName("baseclientplugin_readaction");
                             readAction->setText(hbTrId("txt_mail_menu_mark_as_read"));
@@ -510,11 +547,10 @@
         }
         default:
         {
-            NMLOG(QString("NmBaseClientPlugin::createMessageListCommands(): Unknown menuType()=%1").arg(request.menuType()));
+            NM_COMMENT(QString("NmBaseClientPlugin::createMessageListCommands(): unknown menuType()=%1").arg(request.menuType()));
             break;
         }
     }
-    NMLOG("<--NmBaseClientPlugin::createMessageListCommands()");
 }
 
 /*!
@@ -527,8 +563,8 @@
     const NmActionRequest &request,
     QList<NmAction *> &actionList)
 {
-    NMLOG("NmBaseClientPlugin::createViewerViewCommands()-->");
-
+    NM_FUNCTION;
+    
     switch (request.menuType()) {
     	case NmActionOptionsMenu:
 		{
@@ -621,7 +657,7 @@
         }
         default:
         {
-            NMLOG(QString("NmBaseClientPlugin::createViewerViewCommands(): Unknown menuType()=%1").arg(request.menuType()));
+            NM_COMMENT(QString("NmBaseClientPlugin::createViewerViewCommands(): unknown menuType()=%1").arg(request.menuType()));
             break;
         }
     }
@@ -638,8 +674,8 @@
     const NmActionRequest &request,
     QList<NmAction *> &actionList)
 {
-    NMLOG("NmBaseClientPlugin::createEditorViewCommands()-->");
-
+    NM_FUNCTION;
+    
     switch (request.menuType()) {
         case NmActionToolbar:
         {
@@ -723,12 +759,10 @@
         }
         default:
         {
-            NMLOG(QString("NmBaseClientPlugin::createEditorViewCommands(): Unknown menuType()=%1").arg(request.menuType()));
+            NM_COMMENT(QString("NmBaseClientPlugin::createEditorViewCommands(): unknown menuType()=%1").arg(request.menuType()));
             break;
         }
     }
-
-    NMLOG("<--NmBaseClientPlugin::createEditorViewCommands()");
 }
 
 /*!
@@ -736,9 +770,9 @@
 */
 void NmBaseClientPlugin::markAsRead()
 {
-    NMLOG("NmBaseClientPlugin::markAsRead()-->");
+    NM_FUNCTION;
+    
     updateEnvelopeProperty(MarkAsRead);
-    NMLOG("<--NmBaseClientPlugin::markAsRead()");
 }
 
 /*!
@@ -746,9 +780,9 @@
 */
 void NmBaseClientPlugin::markAsUnread()
 {
-    NMLOG("NmBaseClientPlugin::markAsUnread()-->");
+    NM_FUNCTION;
+    
     updateEnvelopeProperty(MarkAsUnread);
-    NMLOG("<--NmBaseClientPlugin::markAsUnread()");
 }
 
 /*!
@@ -756,6 +790,8 @@
 */
 void NmBaseClientPlugin::handleRequest(NmActionResponseCommand command, const NmActionRequest &request)
 {
+    NM_FUNCTION;
+    
     NmActionObserver *observer = request.observer();
     if (observer) {
         NmActionResponse response(command, request);
@@ -767,8 +803,8 @@
 */
 void NmBaseClientPlugin::updateEnvelopeProperty(NmEnvelopeProperties property)
 {
-    NMLOG("NmBaseClientPlugin::updateEnvelopeProperty()-->");
-
+    NM_FUNCTION;
+    
     QList<const NmMessageEnvelope*> envelopeList;
     NmMessageEnvelope *envelope =
             mMenuRequest.requestData().value<NmMessageEnvelope*>();
@@ -783,5 +819,4 @@
                                         envelopeList);
     }
     envelopeList.clear();
-    NMLOG("<--NmBaseClientPlugin::updateEnvelopeProperty()");
 }
--- a/emailuis/nmailuiengine/src/nmdatamanager.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/src/nmdatamanager.cpp	Fri May 28 13:56:43 2010 +0300
@@ -31,6 +31,8 @@
 NmDataManager::NmDataManager() 
 :mFactory(NULL)
 {
+    NM_FUNCTION;
+    
     mFactory = NmDataPluginFactory::instance();
 }
 
@@ -39,6 +41,8 @@
 */
 NmDataManager::~NmDataManager()
 {
+    NM_FUNCTION;
+    
     NmDataPluginFactory::releaseInstance(mFactory);
 }
 
@@ -47,6 +51,8 @@
 */
 void NmDataManager::listMailboxIds(QList<NmId> &mailboxIdList)
 {
+    NM_FUNCTION;
+    
     int count(mFactory->pluginInstances()->count());
     for (int i(0); i < count; i++) {
         NmDataPluginInterface *instance =
@@ -63,6 +69,8 @@
 */
 void NmDataManager::listMailboxes(QList<NmMailbox*> &mailboxList)
 {
+    NM_FUNCTION;
+    
     int count = mFactory->pluginInstances()->count();
     for (int i(0); i < count; i++) {
         NmDataPluginInterface *instance =
@@ -80,6 +88,8 @@
 */
 void NmDataManager::listFolders(const NmId mailboxId, QList<NmFolder*> &folderList)
 {
+    NM_FUNCTION;
+    
     NmDataPluginInterface *instance = mFactory->interfaceInstance(mailboxId);
     if (instance) {
         instance->listFolders(mailboxId, folderList);
@@ -96,6 +106,8 @@
         const NmId &folderId,
         QList<NmMessageEnvelope*> &messageEnvelopeList)
 {
+    NM_FUNCTION;
+    
     NmDataPluginInterface *instance = mFactory->interfaceInstance(folderId);
     if (instance) {
         instance->listMessages(mailboxId, folderId, messageEnvelopeList);
@@ -111,7 +123,8 @@
     const NmId &mailboxId,
     const NmId &folderId)
 {
-    NMLOG("nmuiengine: getFolderById");
+    NM_FUNCTION;
+    
     NmFolderMetaData *folderMetaData(NULL);
     QList<NmFolder*> folderList;
     listFolders(mailboxId, folderList);
@@ -135,7 +148,8 @@
 */
 NmMailboxMetaData *NmDataManager::mailboxById(const NmId &mailboxId)
 {
-    NMLOG("nmuiengine: getMailboxById");
+    NM_FUNCTION;
+    
     NmMailboxMetaData *mailboxMetaData(NULL);
     NmMailbox* mbox = mailbox(mailboxId);
 
@@ -161,8 +175,8 @@
     const NmId &folderId,
     const NmId &messageId)
 {
-    NMLOG("nmuiengine: getMessageById");
-
+    NM_FUNCTION;
+    
     NmMessageEnvelope *msgEnvelope(NULL);
     NmMessage* msg = message(mailboxId, folderId, messageId);
 
@@ -180,6 +194,8 @@
 */
 NmMailbox *NmDataManager::mailbox(const NmId &mailboxId)
 {
+    NM_FUNCTION;
+    
     NmMailbox *newMailboxObject(NULL);
     NmDataPluginInterface *instance = mFactory->interfaceInstance(mailboxId);
     int retVal(NmNotFoundError);
@@ -204,6 +220,8 @@
     const NmId &mailboxId,
     const NmId &folderId)
 {
+    NM_FUNCTION;
+    
     NmFolder* newFolderObject(NULL);
     QList<NmFolder*> folderList;
     listFolders(mailboxId, folderList);
@@ -227,6 +245,8 @@
     const NmId &folderId,
     const NmId &messageId)
 {
+    NM_FUNCTION;
+    
     NmMessage *newMessageObject(NULL);
     NmDataPluginInterface *instance = mFactory->interfaceInstance(mailboxId);
 
@@ -254,6 +274,8 @@
     const NmId &messageId,
     NmMessagePart &messagePart)
 {
+    NM_FUNCTION;
+    
     int retVal(NmNotFoundError);
     NmDataPluginInterface *instance = mFactory->interfaceInstance(mailboxId);
     if (instance) {
@@ -270,6 +292,8 @@
         const NmId &mailboxId,
         NmFolderType folderType )
 {
+    NM_FUNCTION;
+    
     NmId folderId;
     NmDataPluginInterface *instance = mFactory->interfaceInstance(mailboxId);
     if (instance) {
@@ -291,6 +315,8 @@
 */
 NmFolderType NmDataManager::folderTypeById(NmId mailboxId, NmId folderId)
 {
+    NM_FUNCTION;
+    
     NmFolderType folderType(NmFolderOther);
     if (getStandardFolderId(mailboxId,NmFolderInbox)==folderId){
         folderType=NmFolderInbox;
--- a/emailuis/nmailuiengine/src/nmdatapluginfactory.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/src/nmdatapluginfactory.cpp	Fri May 28 13:56:43 2010 +0300
@@ -38,7 +38,7 @@
  */
 NmDataPluginFactory::NmDataPluginFactory()
 {
-
+    NM_FUNCTION;
 }
 
 /*!
@@ -46,6 +46,8 @@
  */
 NmDataPluginFactory::~NmDataPluginFactory()
 {
+    NM_FUNCTION;
+    
     if (mPluginArray) {
         qDeleteAll(mPluginArray->begin(), mPluginArray->end());
         mPluginArray->clear();
@@ -62,6 +64,8 @@
  */
 NmDataPluginFactory *NmDataPluginFactory::instance()
 {
+    NM_FUNCTION;
+    
     if (!mInstance) {
         mInstance = new NmDataPluginFactory();
     }
@@ -74,6 +78,8 @@
  */
 void NmDataPluginFactory::releaseInstance(NmDataPluginFactory *&instance)
     {
+    NM_FUNCTION;
+    
     //can't have passed out instances if we don't have any
     if (mInstance) {
         if (instance == mInstance) {
@@ -92,6 +98,8 @@
  */
 NmDataPluginInterface *NmDataPluginFactory::interfaceInstance(QObject *plugin)
 {
+    NM_FUNCTION;
+    
     NmDataPluginInterface *pluginInterface = NULL;
     if (plugin) {
         pluginInterface= qobject_cast<NmDataPluginInterface*>(plugin);
@@ -104,6 +112,8 @@
  */
 NmDataPluginInterface *NmDataPluginFactory::interfaceInstance(NmId mailboxId)
 {
+    NM_FUNCTION;
+    
     return interfaceInstance(pluginInstance(mailboxId));
 }
 
@@ -112,6 +122,8 @@
  */
 NmApplicationStateInterface *NmDataPluginFactory::applicationStateInterfaceInstance(QObject *plugin)
 {
+    NM_FUNCTION;
+    
     NmApplicationStateInterface *pluginInterface = NULL;
     if (plugin) {
         pluginInterface= qobject_cast<NmApplicationStateInterface*>(plugin);
@@ -124,6 +136,8 @@
  */
 NmApplicationStateInterface *NmDataPluginFactory::applicationStateInterfaceInstance(NmId mailboxId)
 {
+    NM_FUNCTION;
+    
     return applicationStateInterfaceInstance(pluginInstance(mailboxId));
 }
 
@@ -132,6 +146,8 @@
  */
 QObject *NmDataPluginFactory::pluginInstance(NmId mailboxId)
 {
+    NM_FUNCTION;
+    
     QObject *value(NULL);
 
     quint64 tmp = mailboxId.id();
@@ -158,6 +174,8 @@
  */
 QList<QObject*> *NmDataPluginFactory::pluginInstances()
 {
+    NM_FUNCTION;
+    
     //if plugins have not been already created, do it now.
     if (!mPluginArray) {
         mPluginArray = new QList<QObject*>();
@@ -194,6 +212,8 @@
     const QDir &pluginDir,
     const QString &pluginName )
 {
+    NM_FUNCTION;
+    
     /*!
         This creates plugin entity.
      */
--- a/emailuis/nmailuiengine/src/nmfolderlistmodel.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/src/nmfolderlistmodel.cpp	Fri May 28 13:56:43 2010 +0300
@@ -37,10 +37,13 @@
 
 NmFolderListModelPrivate::NmFolderListModelPrivate()
 {
+    NM_FUNCTION;
 }
 
 NmFolderListModelPrivate::~NmFolderListModelPrivate()
 {
+    NM_FUNCTION;
+    
     while (!mMetaDataList.isEmpty()) {
         delete mMetaDataList.takeLast();
     }
@@ -53,6 +56,8 @@
 :QAbstractListModel(parent),
 mDataManager(dataManager)
 {
+    NM_FUNCTION;
+    
     d = new NmFolderListModelPrivate;
 }
 
@@ -61,6 +66,8 @@
  */
 NmFolderListModel::~NmFolderListModel()
 {
+    NM_FUNCTION;
+    
     delete d;
 }
 
@@ -69,6 +76,8 @@
  */
 QModelIndex NmFolderListModel::parent(const QModelIndex &child) const
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(child);
     return QModelIndex();
 }
@@ -78,6 +87,8 @@
  */
 int NmFolderListModel::rowCount(const QModelIndex &parent) const
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(parent);
     return d->mMetaDataList.size();
 }
@@ -87,6 +98,8 @@
  */
 int NmFolderListModel::columnCount(const QModelIndex &parent) const
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(parent);
 	return 1;
 }
@@ -97,6 +110,8 @@
  */
 QVariant NmFolderListModel::data(const QModelIndex &index, int role) const
 {
+    NM_FUNCTION;
+    
     if (!index.isValid())
         return QVariant();
 
@@ -120,7 +135,8 @@
 void NmFolderListModel::refresh(
         QList<NmFolder*>& folderList)
 {
-    NMLOG("nmuiengine: folder list model refresh");
+    NM_FUNCTION;
+    
     while (!d->mMetaDataList.isEmpty()) {
         delete d->mMetaDataList.takeLast();
     }
--- a/emailuis/nmailuiengine/src/nmfoldermetadata.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/src/nmfoldermetadata.cpp	Fri May 28 13:56:43 2010 +0300
@@ -42,6 +42,8 @@
 */
 NmFolderMetaData::NmFolderMetaData()
 {
+    NM_FUNCTION;
+    
     d = new NmFolderMetaDataPrivate;
 }
 
@@ -51,6 +53,8 @@
 */
 NmFolderMetaData::~NmFolderMetaData()
 {
+    NM_FUNCTION;
+    
     delete d;
 }
 
@@ -59,6 +63,8 @@
 */
 QString NmFolderMetaData::name() const
 {
+    NM_FUNCTION;
+    
     return d->mName;
 }
 
@@ -67,6 +73,8 @@
 */
 void NmFolderMetaData::setName(const QString &name)
 {
+    NM_FUNCTION;
+    
     d->mName = name;
 }
 
@@ -75,6 +83,8 @@
 */
 NmId NmFolderMetaData::id() const
 {
+    NM_FUNCTION;
+    
     return d->mId;
 }
 
@@ -83,6 +93,8 @@
 */
 void NmFolderMetaData::setId(const NmId &id)
 {
+    NM_FUNCTION;
+    
     d->mId = id;
 }
 
--- a/emailuis/nmailuiengine/src/nmicons.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/src/nmicons.cpp	Fri May 28 13:56:43 2010 +0300
@@ -66,6 +66,8 @@
 */
 HbIcon &NmIcons::getIcon(NmIcons::Icon icon)
 {
+    NM_FUNCTION;
+    
     if (!icons[icon]) {
         for (int i(0); icon_res[i].id != NmIcons::NmLastItem; i++) {
             if (icon_res[i].id == icon) {
@@ -81,7 +83,7 @@
         }
     }
     if (!icons[icon]) {
-        NMLOG(QString("nmailuiengine: Cannot open icon file: ###").arg(__FILE__));
+        NM_ERROR(1,QString("nmailuiengine: cannot open icon file: %1").arg(__FILE__));
     }
     return *icons[icon];
 }
@@ -91,7 +93,8 @@
 */
 void NmIcons::freeIcons()
 {
-    NMLOG("nmailuiengine: Enter freeIcons");
+    NM_FUNCTION;
+    
     for (int i(0); icon_res[i].id != NmIcons::NmLastItem; i++) {
         if (icons[i]) {
             delete icons[i];
--- a/emailuis/nmailuiengine/src/nmmailboxlistmodel.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/src/nmmailboxlistmodel.cpp	Fri May 28 13:56:43 2010 +0300
@@ -34,6 +34,7 @@
 :QStandardItemModel(parent),
 mDataManager(dataManager)
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -41,6 +42,8 @@
  */
 NmMailboxListModel::~NmMailboxListModel()
 {
+    NM_FUNCTION;
+    
     clear();
 }
 
@@ -50,6 +53,8 @@
  */
 QVariant NmMailboxListModel::data(const QModelIndex &index, int role) const
 {
+    NM_FUNCTION;
+    
     QVariant qVariant;
     if (index.isValid() && Qt::DisplayRole == role) {
         NmMailboxListModelItem *item = static_cast<NmMailboxListModelItem*>(itemFromIndex(index));
@@ -65,7 +70,8 @@
 void NmMailboxListModel::refresh(
         QList<NmMailbox*> &mailboxList)
 {
-    NMLOG("nmuiengine: mailbox list model refresh");
+    NM_FUNCTION;
+    
     clear();
     for (int i(0); i < mailboxList.count(); i++) {
         NmMailbox *mailbox = mailboxList[i];
@@ -79,13 +85,11 @@
 /*!
     Updates specific model item.
     \param mailboxId Mailbox id.
-    \param allowEmitDataChanged If <code>true</code> data changed signal
-           is emitted \sa QStandardItem, otherwise signal is not send.
  */
-void NmMailboxListModel::refreshModelItem(const NmId &mailboxId, bool allowEmitDataChanged)
+void NmMailboxListModel::refreshModelItem(const NmId &mailboxId)
 {
-    NMLOG("NmMailboxListModel::refreshModelItem");
-
+    NM_FUNCTION;
+    
     // Get correct mailbox data.
     NmMailbox* mailbox = mDataManager.mailbox(mailboxId);
     NmMailboxListModelItem *entryItem(NULL);
@@ -102,21 +106,13 @@
 
     // Update entry item's data.
     if (mailbox && entryItem) {
-        if (allowEmitDataChanged) {
-            // Changes data and emits datachanged.
-            NmMailboxMetaData *metaData = new NmMailboxMetaData;
-            metaData->setId(mailbox->id());
-            metaData->setName(mailbox->name());
-            entryItem->setItemMetaData(metaData);
-        } else {
-            // Only changes meta data information (mailbox name).
-            // No need for updating mailbox id.
-            // Do not call emitDataChanged, because it seems that if
-            // emitDataChanged is called twice, it leads to KERN-EXEC 3 Panic.
-            entryItem->itemMetaData()->setName(mailbox->name());
-       }
+        // Changes data and emits datachanged.
+        NmMailboxMetaData *metaData = new NmMailboxMetaData;
+        metaData->setId(mailbox->id());
+        metaData->setName(mailbox->name());
+        metaData->setAddress(mailbox->address().address());
+        entryItem->setItemMetaData(metaData);
     }
-    NMLOG("NmMailboxListModel::refreshModelItem - OK");
 }
 
 /*!
@@ -124,7 +120,8 @@
  */
 void NmMailboxListModel::handleMailboxEvent(NmMailboxEvent event, const QList<NmId> &mailboxIds)
 {
-    NMLOG("NmMailboxListModel::handleMailboxEvent");
+    NM_FUNCTION;
+    
     for (int a(0); a < mailboxIds.count(); a++) {
         NmId mailboxId = mailboxIds[a];
         switch (event) {
@@ -174,6 +171,8 @@
  */
 NmMailboxListModelItem *NmMailboxListModel::createMailboxItem(const NmMailbox *mailbox)
 {
+    NM_FUNCTION;
+    
     NmMailboxMetaData *newMeta = new NmMailboxMetaData();
     newMeta->setId(mailbox->id());
     newMeta->setName(mailbox->name());
--- a/emailuis/nmailuiengine/src/nmmailboxlistmodelitem.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/src/nmmailboxlistmodelitem.cpp	Fri May 28 13:56:43 2010 +0300
@@ -30,6 +30,7 @@
 :QStandardItem(),
 mMailbox(NULL)
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -37,6 +38,8 @@
  */
 NmMailboxListModelItem::~NmMailboxListModelItem()
 {
+    NM_FUNCTION;
+    
     delete mMailbox;
 }
 
@@ -45,6 +48,8 @@
  */
 void NmMailboxListModelItem::setItemMetaData(NmMailboxMetaData *mailbox)
 {
+    NM_FUNCTION;
+    
     if (mMailbox) {
         delete mMailbox;
     }
@@ -57,6 +62,8 @@
  */
 NmMailboxMetaData *NmMailboxListModelItem::itemMetaData()
 {
+    NM_FUNCTION;
+    
     return mMailbox;
 }
 
@@ -65,6 +72,8 @@
  */
 void NmMailboxListModelItem::callEmitDataChanged()
 {
+    NM_FUNCTION;
+    
     emitDataChanged();
 }
 
--- a/emailuis/nmailuiengine/src/nmmailboxmetadata.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/src/nmmailboxmetadata.cpp	Fri May 28 13:56:43 2010 +0300
@@ -43,6 +43,8 @@
 */
 NmMailboxMetaData::NmMailboxMetaData()
 {
+    NM_FUNCTION;
+    
     d = new NmMailboxMetaDataPrivate;
 }
 
@@ -52,6 +54,8 @@
 */
 NmMailboxMetaData::~NmMailboxMetaData()
 {
+    NM_FUNCTION;
+    
     delete d;
 }
 
@@ -60,6 +64,8 @@
 */
 QString NmMailboxMetaData::name() const
 {
+    NM_FUNCTION;
+    
     return d->mName;
 }
 
@@ -68,6 +74,8 @@
 */
 void NmMailboxMetaData::setName(const QString &name)
 {
+    NM_FUNCTION;
+    
     d->mName = name;
 }
 
@@ -76,6 +84,8 @@
 */
 NmId NmMailboxMetaData::id() const
 {
+    NM_FUNCTION;
+    
     return d->mId;
 }
 
@@ -84,6 +94,8 @@
 */
 void NmMailboxMetaData::setId(const NmId& id)
 {
+    NM_FUNCTION;
+    
     d->mId = id;
 }
 
@@ -92,6 +104,8 @@
 */
 NmId NmMailboxMetaData::IconId() const
 {
+    NM_FUNCTION;
+    
     return d->mIconId;
 }
 
@@ -100,6 +114,8 @@
 */
 void NmMailboxMetaData::setIconId(const NmId &id)
 {
+    NM_FUNCTION;
+    
     d->mIconId = id;
 }
 
@@ -108,6 +124,8 @@
 */
 QString NmMailboxMetaData::address() const
 {
+    NM_FUNCTION;
+    
     return d->mAddress;
 }
 
@@ -116,5 +134,7 @@
 */
 void NmMailboxMetaData::setAddress(const QString &address)
 {
+    NM_FUNCTION;
+    
     d->mAddress = address;
 }
--- a/emailuis/nmailuiengine/src/nmmessagelistmodel.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/src/nmmessagelistmodel.cpp	Fri May 28 13:56:43 2010 +0300
@@ -41,6 +41,8 @@
   mCurrentFolderType(NmFolderInbox),
   mIgnoreFolderIds(false)
 {
+    NM_FUNCTION;
+    
     // Check for setting whether dividers are active
     // mDividersActive = ...
     // update also the test cases
@@ -52,6 +54,8 @@
 */
 NmMessageListModel::~NmMessageListModel()
 {
+    NM_FUNCTION;
+    
     clear();
 }
 
@@ -62,6 +66,8 @@
 */
 QVariant NmMessageListModel::data(const QModelIndex &index, int role) const
 {
+    NM_FUNCTION;
+    
     QVariant qVariant;
 
     if (index.isValid()){
@@ -91,6 +97,8 @@
         const NmId folderId,
         const QList<NmMessageEnvelope*> &messageEnvelopeList)
 {
+    NM_FUNCTION;
+
     // Store the current mailbox and folder IDs.
     mCurrentMailboxId = mailboxId;
     mCurrentFolderId = folderId;
@@ -107,18 +115,29 @@
     int childCount(0);
 
     for (int i(0); i < messageEnvelopeList.count(); i++) {
-        NmMessageEnvelope* nextMessage = messageEnvelopeList[i];
-
-        if (mDividersActive &&
-            !messagesBelongUnderSameDivider(insertedMessage, nextMessage)) {
-            insertDividerIntoModel(nextMessage, parentCount);
-            parentCount++;
-            childCount = 0;
+        NmMessageEnvelope *nextMessage = messageEnvelopeList[i];
+        // imap and pop is using common sent, outbox or draft folder
+        // for all mailboxes, here we want to filter out messages that
+        // are not under this mailbox
+        bool insert(true);
+        if (nextMessage 
+            && (NmFolderSent == mCurrentFolderType
+             || NmFolderOutbox == mCurrentFolderType
+             || NmFolderDrafts == mCurrentFolderType)) {
+            insert = (mCurrentMailboxId == nextMessage->mailboxId());  
         }
-
-        insertMessageIntoModel(nextMessage, childCount, false);
-        insertedMessage = nextMessage;
-        childCount++;
+        if (insert) {
+            if (mDividersActive &&
+                !messagesBelongUnderSameDivider(insertedMessage, nextMessage)) {
+                insertDividerIntoModel(nextMessage, parentCount);
+                parentCount++;
+                childCount = 0;
+            }
+    
+            insertMessageIntoModel(nextMessage, childCount, false);
+            insertedMessage = nextMessage;
+            childCount++;
+        }
     }
 }
 
@@ -130,6 +149,8 @@
     NmMessageEnvelope *messageForDivider,
     int parentRow)
 {
+    NM_FUNCTION;
+    
     mParentPtr = createTitleDividerItem(messageForDivider);
     insertRow(parentRow,mParentPtr);
     mParentPtr->callEmitDataChanged();
@@ -142,6 +163,8 @@
 void NmMessageListModel::insertMessageIntoModel(
 		NmMessageEnvelope *messageEnvelope, int childRow, bool emitSignal)
 {
+    NM_FUNCTION;
+    
     NmMessageListModelItem *mailItem = createMessageItem(messageEnvelope);
     if (mParentPtr) {
         // Add under parent divider
@@ -164,6 +187,8 @@
     const NmMessageEnvelope *message1,
     const NmMessageEnvelope *message2) const
 {
+    NM_FUNCTION;
+    
     bool retVal(false);
     // First check pointer validity
     if (message1 && message2) {
@@ -188,11 +213,10 @@
 */
 void NmMessageListModel::handleMessageEvent(NmMessageEvent event,
                                             const NmId &folderId,
-                                            const QList<NmId> &messageIds)
+                                            const QList<NmId> &messageIds,
+                                            const NmId &mailboxId)
 {
-    NMLOG(QString("nmmessagelistmodel::handleMessageEvent()"));
-    
-    NmId mailboxId = mCurrentMailboxId;
+    NM_FUNCTION;
     const int idCount = messageIds.count();
 
     // Folder ID does not concern us if this model instance is used for e.g.
@@ -214,8 +238,9 @@
             // the current mailbox.
             mCurrentFolderId = folderId; 
         }
-
-        if (mCurrentFolderId != folderId) {
+        // MailboxId checking here is done because we want to filter out messages
+        // that belongs to other mailboxes in case of imap/pop sent, outbox or draft folder
+        if (mCurrentFolderId != folderId || mCurrentMailboxId != mailboxId) {
             // The event does not concern the folder currently being displayed.
             // Thus, ignore it.
             return;
@@ -256,7 +281,8 @@
     const NmId &folderId,
     const NmId &msgId)
 {
-    NMLOG(QString("NmMessageListModel::insertNewMessageIntoModel"));
+    NM_FUNCTION;
+    
     // envelope ownership is here
     NmMessageEnvelope *newMsgEnve = mDataManager.envelopeById(mailboxId, folderId, msgId);
     if (newMsgEnve) {
@@ -320,7 +346,8 @@
 int NmMessageListModel::getInsertionIndex(
     const NmMessageEnvelope &envelope) const
 {
-    // NMLOG(QString("nmailuiengine: getInsertionIndex"));
+    NM_FUNCTION;
+    
     int ret(NmNotFoundError);
     
     // Date+descending sort mode based comparison.
@@ -353,6 +380,8 @@
 */
 int NmMessageListModel::dividerInsertionIndex(int messageIndex)
 {
+    NM_FUNCTION;
+    
     bool found(false);
     int ret(NmNoError);
     QModelIndex index;
@@ -376,6 +405,8 @@
 NmMessageListModelItem *NmMessageListModel::createTitleDividerItem(
 		NmMessageEnvelope *messageForDivider)
 {
+    NM_FUNCTION;
+    
     NmMessageListModelItem *item = new NmMessageListModelItem();
     item->setItemType(NmMessageListModelItem::NmMessageItemTitleDivider);
 
@@ -405,7 +436,8 @@
 NmMessageListModelItem *NmMessageListModel::createMessageItem(
 		NmMessageEnvelope *envelope)
 {
-
+    NM_FUNCTION;
+    
     NmMessageListModelItem *mailItem = new NmMessageListModelItem();
     mailItem->setEnvelope(*envelope);
     mailItem->setItemType(NmMessageListModelItem::NmMessageItemMessage);
@@ -418,6 +450,8 @@
 */
 bool NmMessageListModel::dividersActive()
 {
+    NM_FUNCTION;
+    
     return mDividersActive;
 }
 
@@ -426,6 +460,8 @@
 */
 void NmMessageListModel::setDividers(bool active)
 {
+    NM_FUNCTION;
+    
     mDividersActive = active;
 }
 
@@ -436,6 +472,8 @@
     NmEnvelopeProperties property,
     const QList<NmId> &messageIds)
 {
+    NM_FUNCTION;
+    
     for (int i(0); i < messageIds.count(); i++) {
         updateEnvelope(property, messageIds[i]);
     }
@@ -447,6 +485,8 @@
 */
 NmId NmMessageListModel::currentMailboxId()
 {
+    NM_FUNCTION;
+    
     return mCurrentMailboxId;
 }
 
@@ -460,6 +500,8 @@
 */
 void NmMessageListModel::setIgnoreFolderIds(bool ignore)
 {
+    NM_FUNCTION;
+    
     mIgnoreFolderIds = ignore;
 }
 
@@ -469,6 +511,8 @@
 */
 void NmMessageListModel::removeMessageFromModel(const NmId &msgId)
 {
+    NM_FUNCTION;
+    
     QList<QStandardItem*> items = findItems("*", Qt::MatchWildcard | Qt::MatchRecursive);
     int count(items.count());
     bool found(false);
@@ -521,6 +565,8 @@
 */
 void NmMessageListModel::removeItem(int row, NmMessageListModelItem &item)
 {
+    NM_FUNCTION;
+    
     QStandardItem *parent = item.parent();
     removeRow(row, indexFromItem(parent));
 }
@@ -530,6 +576,8 @@
 */
 NmMessageListModelItem *NmMessageListModel::itemFromModel(const NmId &messageId)
 {
+    NM_FUNCTION;
+    
     QList<QStandardItem*> items = findItems("*", Qt::MatchWildcard | Qt::MatchRecursive);
     int count(items.count());
     bool found(false);
@@ -553,6 +601,8 @@
 */
 bool NmMessageListModel::changed(const NmMessageEnvelope &first, const NmMessageEnvelope &second)
 {
+    NM_FUNCTION;
+    
     return first != second;
 }
 
@@ -563,6 +613,8 @@
         const NmId &folderId,
         const NmId &msgId)
 {
+    NM_FUNCTION;
+    
     NmMessageListModelItem *item = itemFromModel(msgId);
     // envelope ownership is here
     NmMessageEnvelope *newEnvelope = mDataManager.envelopeById(mailboxId, folderId, msgId);
@@ -582,6 +634,8 @@
 */
 void NmMessageListModel::updateEnvelope(NmEnvelopeProperties property, const NmId &msgId)
 {
+    NM_FUNCTION;
+    
     NmMessageListModelItem *item = itemFromModel(msgId);
     if (item) {
         bool changed(false);
--- a/emailuis/nmailuiengine/src/nmmessagelistmodelitem.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/src/nmmessagelistmodelitem.cpp	Fri May 28 13:56:43 2010 +0300
@@ -51,6 +51,8 @@
 */
 NmMessageListModelItem::NmMessageListModelItem()
 {
+    NM_FUNCTION;
+    
     d = new NmMessageListModelItemPrivate();
 }
 
@@ -60,6 +62,8 @@
 */
 NmMessageListModelItem::~NmMessageListModelItem()
 {
+    NM_FUNCTION;
+    
     delete d;
 }
 
@@ -68,6 +72,8 @@
 */
 void NmMessageListModelItem::setEnvelope(const NmMessageEnvelope &envelope)
 {
+    NM_FUNCTION;
+    
     delete d->mEnvelope;
     d->mEnvelope = new NmMessageEnvelope(envelope);
 	emitDataChanged();
@@ -78,6 +84,8 @@
 */
 void NmMessageListModelItem::setEnvelope(NmMessageEnvelope *envelope)
 {
+    NM_FUNCTION;
+    
     if (envelope) {
         delete d->mEnvelope;
         d->mEnvelope = envelope;
@@ -90,6 +98,8 @@
 */
 const NmMessageEnvelope &NmMessageListModelItem::envelope() const
 {
+    NM_FUNCTION;
+    
     if (!d->mEnvelope) {
         d->mEnvelope = new NmMessageEnvelope();
     }
@@ -102,6 +112,8 @@
 */
 NmMessageEnvelope *NmMessageListModelItem::envelopePtr()
 {
+    NM_FUNCTION;
+    
     if (!d->mEnvelope) {
         d->mEnvelope = new NmMessageEnvelope();
     }
@@ -113,6 +125,8 @@
 */
 NmMessageListModelItem::NmMessageItemType NmMessageListModelItem::itemType() const
 {
+    NM_FUNCTION;
+    
     return d->mType;
 }
 
@@ -121,6 +135,8 @@
 */
 void NmMessageListModelItem::setItemType(NmMessageListModelItem::NmMessageItemType type)
 {
+    NM_FUNCTION;
+    
     d->mType = type;
 }
 
@@ -129,6 +145,8 @@
 */
 QString NmMessageListModelItem::titleDivider() const
 {
+    NM_FUNCTION;
+    
     return d->mDivider;
 }
 
@@ -137,6 +155,8 @@
 */
 void NmMessageListModelItem::setTitleDivider(const QString &divider)
 {
+    NM_FUNCTION;
+    
     d->mDivider = divider;
 }
 
@@ -145,6 +165,8 @@
 */
 bool NmMessageListModelItem::expanded() const
 {
+    NM_FUNCTION;
+    
     return d->mExpanded;
 }
 
@@ -153,6 +175,8 @@
 */
 void NmMessageListModelItem::setExpanded(bool expanded)
 {
+    NM_FUNCTION;
+    
     d->mExpanded = expanded;
 }
 
@@ -161,5 +185,7 @@
  */
 void NmMessageListModelItem::callEmitDataChanged()
 {
+    NM_FUNCTION;
+    
     emitDataChanged();
 }
--- a/emailuis/nmailuiengine/src/nmoperation.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/src/nmoperation.cpp	Fri May 28 13:56:43 2010 +0300
@@ -25,6 +25,8 @@
 : mProgress(0),
   mIsRunning(true)
 {
+    NM_FUNCTION;
+    
     QMetaObject::invokeMethod(this, "runAsyncOperation", Qt::QueuedConnection);
 }
 
@@ -33,6 +35,8 @@
  */
 NmOperation::~NmOperation()
 {
+    NM_FUNCTION;
+    
     while (!mPreliminaryOperations.isEmpty()) {
         QPointer<NmOperation> operation = mPreliminaryOperations.takeLast();
         if (operation && operation->isRunning()) {
@@ -46,6 +50,8 @@
  */
 bool NmOperation::isRunning() const
 {
+    NM_FUNCTION;
+    
     return mIsRunning;
 }
 
@@ -54,6 +60,8 @@
  */
 void NmOperation::addPreliminaryOperation(NmOperation *operation)
 {
+    NM_FUNCTION;
+    
     // if the preliminary operation is already completed
     // the input parameter can be null
     if (operation && operation->isRunning()) {
@@ -75,6 +83,8 @@
  */
 void NmOperation::completeOperation(int result)
 {
+    NM_FUNCTION;
+    
     mIsRunning = false;
     // Operation is completed, emit the signal
     doCompleteOperation();
@@ -89,6 +99,8 @@
  */
 void NmOperation::cancelOperation()
 {
+    NM_FUNCTION;
+    
     mIsRunning = false;
     // Operation is canceled, emit the signal
     this->doCancelOperation();
@@ -102,6 +114,8 @@
  */
 void NmOperation::updateOperationProgress(int progress)
 {
+    NM_FUNCTION;
+    
     mProgress = progress;
     this->doUpdateOperationProgress();
     emit this->operationProgressChanged(mProgress);
@@ -115,6 +129,8 @@
  */
 void NmOperation::runAsyncOperation()
 {
+    NM_FUNCTION;
+    
     int count = mPreliminaryOperations.count();
     int ready = 0;
     // go through preliminary operations
@@ -137,6 +153,8 @@
  */
 void NmOperation::handlePreliminaryOperationFinished()
 {
+    NM_FUNCTION;
+    
     QMetaObject::invokeMethod(this, "runAsyncOperation", Qt::QueuedConnection);
 }
 
@@ -148,7 +166,7 @@
  */ 
 void NmOperation::doCompleteOperation()
 {
-    
+    NM_FUNCTION;
 }
 
 /*!
@@ -159,6 +177,7 @@
  */
 void NmOperation::doCancelOperation()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -169,6 +188,7 @@
  */
 void NmOperation::doUpdateOperationProgress()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -178,6 +198,8 @@
  */
 void NmOperation::deleteOperation()
 {
+    NM_FUNCTION;
+    
     this->deleteLater();   
 }
 
--- a/emailuis/nmailuiengine/src/nmuiengine.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiengine/src/nmuiengine.cpp	Fri May 28 13:56:43 2010 +0300
@@ -27,15 +27,22 @@
 NmUiEngine *NmUiEngine::mInstance;
 int NmUiEngine::mReferenceCount;
 
+const QString syncIndicatorName = "com.nokia.hb.nmsyncindicator/1.0";
+
 /*!
     Constructor
 */
 NmUiEngine::NmUiEngine() 
 : mMailboxListModel(NULL),
+  mInboxListModel(NULL),
   mMessageListModel(NULL),
   mMessageSearchListModel(NULL),
-  mSendOperation(NULL)
+  mSendOperation(NULL),
+  mRemoveDraftOperation(NULL),
+  mSaveDraftOperation(NULL)
 {
+    NM_FUNCTION;
+    
     mPluginFactory = NmDataPluginFactory::instance();
     mDataManager = new NmDataManager();
     // Connect to the plugins to receive change notifications
@@ -78,11 +85,16 @@
 */
 NmUiEngine::~NmUiEngine()
 {
+    NM_FUNCTION;
+    
     if (mMessageSearchListModel) {
         delete mMessageSearchListModel;
         mMessageSearchListModel = NULL;
     }
-
+    if (mInboxListModel) {
+        delete mInboxListModel;
+        mInboxListModel = NULL;
+    }  
     if (mMessageListModel) {
         delete mMessageListModel;
         mMessageListModel = NULL;
@@ -107,6 +119,12 @@
     if (mSendOperation && mSendOperation->isRunning()) {
         mSendOperation->cancelOperation();
     }
+    if(mRemoveDraftOperation && mRemoveDraftOperation->isRunning()) {
+        mRemoveDraftOperation->cancelOperation();        
+    }
+    if(mSaveDraftOperation && mSaveDraftOperation->isRunning()) {
+        mSaveDraftOperation->cancelOperation();
+    }
 }
 
 /*!
@@ -114,6 +132,8 @@
 */
 NmUiEngine *NmUiEngine::instance()
 {
+    NM_FUNCTION;
+    
     if (!mInstance) {
     	mInstance = new NmUiEngine();
     }
@@ -126,6 +146,8 @@
 */
 void NmUiEngine::releaseInstance(NmUiEngine *&instance)
 {
+    NM_FUNCTION;
+    
     //can't have passed out instances if we don't have any
     if (mInstance) {
         if(instance == mInstance) {
@@ -145,6 +167,8 @@
 */
 NmMailboxListModel &NmUiEngine::mailboxListModel()
 {
+    NM_FUNCTION;
+    
     if (!mMailboxListModel) {
         refreshMailboxListModel(); // creates the model too
     }
@@ -158,6 +182,8 @@
 */
 void NmUiEngine::refreshMailboxListModel()
 {
+    NM_FUNCTION;
+    
     if (!mMailboxListModel) {
         mMailboxListModel = new NmMailboxListModel(*mDataManager);
         
@@ -191,40 +217,82 @@
 NmMessageListModel &NmUiEngine::messageListModel(const NmId &mailboxId,
                                                  const NmId &folderId)
 {
-    if (!mMessageListModel) {
-        mMessageListModel = new NmMessageListModel(*mDataManager);
-    }
-    else {
-        mMessageListModel->clear();
-    }
+    NM_FUNCTION;
 
     QObject *plugin = mPluginFactory->pluginInstance(mailboxId);
+    bool isInbox(false);
+    if (standardFolderId(mailboxId,NmFolderInbox)==folderId){
+        isInbox=true;
+    }
+    if (plugin) { 
+        // Connect plugin message events to handler slot messageEventForListModel
+        QObject::connect(plugin, SIGNAL(messageEvent(NmMessageEvent, const NmId &, 
+                                const QList<NmId> &, const NmId&)),
+                                this, SLOT(messageEventForListModel(NmMessageEvent, 
+                                const NmId &, const QList<NmId> &, const NmId&)), Qt::UniqueConnection );
+        // Create inbox list model only once when entering to inbox for the first time
+        // or re-create inbox list model when mailbox has changed    
+        if ((!mInboxListModel&&isInbox)||
+            (mInboxListModel&&isInbox&&mailboxId!=mInboxListModel->currentMailboxId())){
+            // Delete previous model and set to NULL. Deleting model will also
+            // delete all items in model. 
+            if (mInboxListModel){
+                delete mInboxListModel;
+                mInboxListModel=NULL;
+            }
+            // Create new inbox model 
+            mInboxListModel = new NmMessageListModel(*mDataManager);
+            // Initial fill up of inbox list model, otherwise updated in the background
+            QList<NmMessageEnvelope*> messageEnvelopeList;
+            mDataManager->listMessages(mailboxId, folderId, messageEnvelopeList);
+            mInboxListModel->refresh(mailboxId, folderId, messageEnvelopeList);
 
-    if (plugin) {
-        QObject::connect(plugin,
-            SIGNAL(messageEvent(NmMessageEvent, const NmId &, const QList<NmId> &, const NmId&)),
-            mMessageListModel,
-            SLOT(handleMessageEvent(NmMessageEvent, const NmId &, const QList<NmId> &)),
-            Qt::UniqueConnection );
+            while (!messageEnvelopeList.isEmpty()) {
+                delete messageEnvelopeList.takeFirst();
+            }
+        }
+        // Selected folder is not inbox folder for the mailbox
+        else if (!isInbox){
+            // Recreate model for other folders when needed, previous model
+            // items are deleted from the memory with the old model
+            if (mMessageListModel){
+                delete mMessageListModel;
+                mMessageListModel=NULL;
+            }
+            mMessageListModel = new NmMessageListModel(*mDataManager);
+    
+            // Fill up other model 
+            QList<NmMessageEnvelope*> messageEnvelopeList;
+            mDataManager->listMessages(mailboxId, folderId, messageEnvelopeList);
+            mMessageListModel->refresh(mailboxId, folderId, messageEnvelopeList);
 
+            while (!messageEnvelopeList.isEmpty()) {
+                delete messageEnvelopeList.takeFirst(); 
+            }             
+        }    
+    }
+     
+    // Connect sync state changed
+    if (plugin){
         QObject::connect(
             plugin, SIGNAL(syncStateEvent(NmSyncState, const NmOperationCompletionEvent &)),
             this, SLOT(handleSyncStateEvent(NmSyncState, const NmOperationCompletionEvent &)),
             Qt::UniqueConnection);
-
-        // No need for mailbox event subscription here, already done in
-        // constructor.
     }
-
-    QList<NmMessageEnvelope*> messageEnvelopeList;
-    mDataManager->listMessages(mailboxId, folderId, messageEnvelopeList);
-    mMessageListModel->refresh(mailboxId, folderId, messageEnvelopeList);
-
-    while (!messageEnvelopeList.isEmpty()) {
-        delete messageEnvelopeList.takeFirst();
+    NmMessageListModel* ret(NULL);
+    if (isInbox){
+        ret = mInboxListModel;    
+        // Inbox list model is queried, other model is not
+        // needed anymore and memory should be freeded
+        if (mMessageListModel){
+            delete mMessageListModel;
+            mMessageListModel=NULL;
+        }
     }
-
-    return *mMessageListModel;
+    else {
+        ret = mMessageListModel;    
+    }
+    return *ret;
 }
 
 
@@ -237,6 +305,8 @@
 */
 NmMessageListModel &NmUiEngine::messageListModelForSearch(const NmId &mailboxId)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(mailboxId);
 
     if (!mMessageSearchListModel) {
@@ -251,9 +321,9 @@
 
     if (plugin) {
         QObject::connect(plugin,
-            SIGNAL(messageEvent(NmMessageEvent, const NmId &, const QList<NmId> &, const NmId&)),
+            SIGNAL(messageEvent(NmMessageEvent, const NmId &, const QList<NmId> &, const NmId &)),
             mMessageSearchListModel,
-            SLOT(handleMessageEvent(NmMessageEvent, const NmId &, const QList<NmId> &)),
+            SLOT(handleMessageEvent(NmMessageEvent, const NmId &, const QList<NmId> &, const NmId &)),
             Qt::UniqueConnection);
     }
 
@@ -273,6 +343,8 @@
     const NmId &mailboxId,
     NmFolderType folderType)
 {
+    NM_FUNCTION;
+    
     NmId value;
     if (folderType != NmFolderOther) {
         NmDataPluginInterface *plugin =
@@ -293,6 +365,8 @@
                       const NmId &folderId,
                       const NmId &messageId)
 {
+    NM_FUNCTION;
+    
     NmMessage *message = mDataManager->message(mailboxId, folderId, messageId);
     return message;
 }
@@ -304,7 +378,8 @@
     const NmId &folderId,
     const NmId &messageId )
 {
-    NMLOG("NmUiEngine::fetchMessage() <---");
+    NM_FUNCTION;
+    
     QPointer<NmOperation> value(NULL);
     NmDataPluginInterface *plugin =
         mPluginFactory->interfaceInstance(mailboxId);
@@ -323,7 +398,8 @@
     const NmId &messageId,
     const NmId &messagePartId)
 {
-    NMLOG("NmUiEngine::fetchMessagePart() <---");
+    NM_FUNCTION;
+    
     QPointer<NmOperation> value(NULL);
     NmDataPluginInterface *plugin =
         mPluginFactory->interfaceInstance(mailboxId);
@@ -342,7 +418,8 @@
     const NmId &messageId,
     const QList<NmId> &messagePartIds)
 {
-    NMLOG("NmUiEngine::fetchMessageParts() <---");
+    NM_FUNCTION;
+    
     QPointer<NmOperation> value(NULL);
     NmDataPluginInterface *plugin =
         mPluginFactory->interfaceInstance(mailboxId);
@@ -361,6 +438,8 @@
         const NmId &messageId,
         const NmId &messagePartId)
 {
+    NM_FUNCTION;
+    
     NmDataPluginInterface *plugin =
         mPluginFactory->interfaceInstance(mailboxId);
     if (plugin) {
@@ -380,33 +459,70 @@
     const NmId &messageId,
     NmMessagePart &messagePart)
 {
+    NM_FUNCTION;
+    
     return mDataManager->contentToMessagePart(mailboxId, folderId, messageId, messagePart);
 }
 
+
 /*!
-    Deletes messages from model and routes call to plugin
+    Deletes messages from the model and forwards the call to plugin.
+
+    \param mailboxId The ID of the mailbox which contains the deleted message(s).
+    \param folderId The ID of the folder which contains the deleted message(s).
+    \param messageIdList A list containing the IDs of the message to be deleted.
+
+    \return A possible error code (returned by the plugin).
 */
-int NmUiEngine::deleteMessages(
-	const NmId &mailboxId,
-	const NmId &folderId,
-	const QList<NmId> &messageIdList)
+int NmUiEngine::deleteMessages(const NmId &mailboxId,
+                               const NmId &folderId,
+                               const QList<NmId> &messageIdList)
 {
+    NM_FUNCTION;
+    
     int result(NmNotFoundError);
-	if (mMessageListModel) {
-	    mMessageListModel->handleMessageEvent(NmMessageDeleted, folderId, messageIdList);
+    
+    bool isInbox(false);
+    if (standardFolderId(mailboxId,NmFolderInbox)==folderId){
+        isInbox=true;
+    } 
+    if (isInbox&&mInboxListModel){
+        mInboxListModel->handleMessageEvent(NmMessageDeleted, folderId,
+                                               messageIdList, mailboxId);   
+    }   
+    else if (mMessageListModel) {
+	    mMessageListModel->handleMessageEvent(NmMessageDeleted, folderId,
+                                              messageIdList, mailboxId);
 	}
+
+	// If the search list model exists and contains message, remove the
+	// message from it too.
+	if (mMessageSearchListModel && mMessageSearchListModel->rowCount()) {
+        mMessageSearchListModel->handleMessageEvent(NmMessageDeleted, folderId,
+                                                    messageIdList, mailboxId);
+	}
+
     NmDataPluginInterface *plugin =
-            mPluginFactory->interfaceInstance(mailboxId);
+        mPluginFactory->interfaceInstance(mailboxId);
+
     if (plugin) {
-          result = plugin->deleteMessages(
-	            mailboxId, folderId, messageIdList);
+          result = plugin->deleteMessages(mailboxId, folderId, messageIdList);
     }
+
 	return result;
 }
 
+
 /*!
-    Sets envelope property given in argument.
-    Operation is automatically deleted after completion or cancelling.
+    Sets the envelope property for the given envelopes.
+    The operation is automatically deleted after the completion or cancelling.
+
+    \param mailboxId The ID of the mailbox containing the envelope(s).
+    \param folderId The ID of the folder containing the envelope(s).
+    \param property The property to set.
+    \param envelopeList The list containing the envelopes.
+
+    \return The constructed operation.
 */
 QPointer<NmStoreEnvelopesOperation> NmUiEngine::setEnvelopes(
         const NmId &mailboxId,
@@ -414,26 +530,42 @@
         NmEnvelopeProperties property,
         const QList<const NmMessageEnvelope*> &envelopeList)
 {
-    NMLOG("NmUiEngine::setEnvelopes() <---");
+    NM_FUNCTION;
+    
     QPointer<NmStoreEnvelopesOperation> operation(NULL);
-    if (mMessageListModel && envelopeList.count()) {
+    NmMessageListModel *theMessageListModel = mMessageListModel;
+
+    if (!theMessageListModel) {
+        theMessageListModel = &messageListModel(mailboxId, folderId);
+    }
+
+    if (theMessageListModel && envelopeList.count()) {
         QList<NmId> messageIdList;
         
         for (int i(0); i < envelopeList.count(); i++){
             messageIdList.append(envelopeList[i]->messageId());
         }
-        mMessageListModel->setEnvelopeProperties(
-                           property, messageIdList);
-        // Store new envelopes to plugin
+
+        theMessageListModel->setEnvelopeProperties(property, messageIdList);
+
+        if (mMessageSearchListModel && mMessageSearchListModel->rowCount()) {
+            // Update the envelopes in the search list model as well.
+            mMessageSearchListModel->setEnvelopeProperties(property,
+                                                           messageIdList);
+        }
+
+        // Store the new envelopes to plugin.
         NmDataPluginInterface *plugin =
             mPluginFactory->interfaceInstance(mailboxId);
+
         if (plugin) {
-            operation = plugin->storeEnvelopes(
-                    mailboxId, folderId, envelopeList);
+            operation =
+                plugin->storeEnvelopes(mailboxId, folderId, envelopeList);
         }
+
         messageIdList.clear();
-    }  
-    NMLOG("NmUiEngine::setEnvelopes() --->");
+    }
+
     return operation;
 }
 
@@ -467,7 +599,8 @@
 */
 QPointer<NmMessageCreationOperation> NmUiEngine::createNewMessage(const NmId &mailboxId)
 {
-    NMLOG("NmUiEngine::createNewMessage() <---");
+    NM_FUNCTION;
+    
     QPointer<NmMessageCreationOperation> value(NULL);
     NmDataPluginInterface *plugin =
         mPluginFactory->interfaceInstance(mailboxId);
@@ -485,7 +618,8 @@
         const NmId &mailboxId,
         const NmId &originalMessageId)
 {
-    NMLOG("NmUiEngine::createForwardMessage() <---");
+    NM_FUNCTION;
+    
     QPointer<NmMessageCreationOperation> value(NULL);
     NmDataPluginInterface *plugin =
         mPluginFactory->interfaceInstance(mailboxId);
@@ -504,7 +638,8 @@
         const NmId &originalMessageId,
         bool replyAll)
 {
-    NMLOG("NmUiEngine::createReplyMessage() <---");
+    NM_FUNCTION;
+    
     QPointer<NmMessageCreationOperation> value(NULL);
     NmDataPluginInterface *plugin =
         mPluginFactory->interfaceInstance(mailboxId);
@@ -519,6 +654,8 @@
 */
 int NmUiEngine::saveMessage(const NmMessage &message)
 {
+    NM_FUNCTION;
+    
     const NmId &mailboxId = message.envelope().mailboxId();
     int ret(NmNotFoundError);
     NmDataPluginInterface *plugin =
@@ -534,11 +671,17 @@
 */
 int NmUiEngine::refreshMailbox(const NmId &mailboxId )
 {
+    NM_FUNCTION;
+    
     int ret(NmNotFoundError);
     NmDataPluginInterface *plugin =
         mPluginFactory->interfaceInstance(mailboxId);
     if (plugin) {
         ret = plugin->refreshMailbox(mailboxId);
+        if (NmNoError == ret) {
+            HbIndicator indicator;
+            indicator.activate(syncIndicatorName, QVariant());
+        }
     }
     return ret;
 }
@@ -548,6 +691,8 @@
 */
 int NmUiEngine::goOnline(const NmId &mailboxId )
 {
+    NM_FUNCTION;
+    
     int ret(NmNotFoundError);
     NmDataPluginInterface *plugin =
         mPluginFactory->interfaceInstance(mailboxId);
@@ -562,6 +707,8 @@
 */
 int NmUiEngine::goOffline(const NmId &mailboxId )
 {
+    NM_FUNCTION;
+    
     int ret(NmNotFoundError);
     NmDataPluginInterface *plugin =
         mPluginFactory->interfaceInstance(mailboxId);
@@ -580,6 +727,8 @@
     const NmId &folderId,
     const NmId &messageId)
 {
+    NM_FUNCTION;
+    
     int result(NmNotFoundError);
     NmDataPluginInterface *plugin =
             mPluginFactory->interfaceInstance(mailboxId);
@@ -591,10 +740,83 @@
 
 
 /*!
+  Handles draft message deletion after editor has closed, takes ownership of message. 
+ */
+void NmUiEngine::removeDraftMessage(NmMessage *message)
+{
+    NM_FUNCTION;
+
+    if (message) {
+        NmDataPluginInterface *plugin =
+            mPluginFactory->interfaceInstance(message->envelope().mailboxId());
+        
+        if (plugin) {
+            // to be on the safer side:
+            // we shouldn't even be here if mRemoveDraftOperation != NULL
+            if (mRemoveDraftOperation && mRemoveDraftOperation->isRunning()) {
+                mRemoveDraftOperation->cancelOperation();
+            }
+            // ownership of message changes
+            mRemoveDraftOperation = plugin->removeDraftMessage(message);
+            
+            if (mRemoveDraftOperation) {
+                connect(mRemoveDraftOperation, 
+                        SIGNAL(operationCompleted(int)), 
+                        this, 
+                        SLOT(handleCompletedRemoveDraftOperation()));
+            }
+        }
+    }    
+}
+
+/*!
+    Handles draft message saving after editor has closed, takes ownership of message.
+ */
+void NmUiEngine::saveDraftMessage(NmMessage *message,
+                                  const QList<NmOperation*> &preliminaryOperations)
+{
+    NM_FUNCTION;
+    
+    if (message) {
+        NmDataPluginInterface *plugin =
+            mPluginFactory->interfaceInstance(message->envelope().mailboxId());
+        
+        if (plugin) {
+            // to be on the safer side:
+            // we shouldn't even be here if mSaveDraftOperation != NULL
+            if (mSaveDraftOperation && mSaveDraftOperation->isRunning()) {
+                mSaveDraftOperation->cancelOperation();
+            }
+            // ownership of message changes
+            mSaveDraftOperation = plugin->saveMessageWithSubparts(*message);
+            // don't put this to mOperations as we need to handle this
+            // operation separately
+            if (mSaveDraftOperation) {
+                for (int i(0); i < preliminaryOperations.count(); i++ ) {
+                    QPointer<NmOperation> op = preliminaryOperations[i];
+                    mSaveDraftOperation->addPreliminaryOperation(op);
+                }
+                
+                connect(mSaveDraftOperation, 
+                        SIGNAL(operationCompleted(int)), 
+                        this, 
+                        SLOT(handleCompletedSaveDraftOperation()));
+                
+                // message object is not needed any more, so delete it
+                delete message;
+                message = NULL;
+            }
+        }
+    }
+}
+
+/*!
     Sends the given message.
  */
 void NmUiEngine::sendMessage(NmMessage *message, const QList<NmOperation *> &preliminaryOperations)
 {
+    NM_FUNCTION;
+    
     //First trigger message storing
     if (message) {
         NmDataPluginInterface *plugin =
@@ -630,6 +852,8 @@
  */
 bool NmUiEngine::isSendingMessage() const
 {
+    NM_FUNCTION;
+    
     int ret(false);
     if (mSendOperation && mSendOperation->isRunning()) {
         ret = true;
@@ -642,6 +866,8 @@
  */
 const NmMessage *NmUiEngine::messageBeingSent() const
 {
+    NM_FUNCTION;
+    
     const NmMessage *message = NULL;
     
     if (mSendOperation != NULL) {
@@ -659,7 +885,8 @@
     const NmMessage &message,
     const QList<QString> &fileList)
 {
-    NMLOG("NmUiEngine::addAttachments() <---");
+    NM_FUNCTION;
+    
     NmDataPluginInterface *plugin =
         mPluginFactory->interfaceInstance(message.envelope().mailboxId());
     
@@ -678,7 +905,8 @@
     const NmMessage &message,
     const NmId &attachmentPartId)
 {
-    NMLOG("NmUiEngine::removeAttachments() <---");
+    NM_FUNCTION;
+    
     NmDataPluginInterface *plugin =
         mPluginFactory->interfaceInstance(message.envelope().mailboxId());
     
@@ -690,26 +918,12 @@
 }
 
 /*!
-    Operation is automatically deleted after completion or cancelling.
- */
-QPointer<NmCheckOutboxOperation> NmUiEngine::checkOutbox(const NmId &mailboxId)
-{
-    NMLOG("NmUiEngine::checkOutbox() <---");
-    NmDataPluginInterface *plugin =
-        mPluginFactory->interfaceInstance(mailboxId);
-
-    QPointer<NmCheckOutboxOperation> ret(NULL); 
-    if (plugin) {
-        ret = plugin->checkOutbox(mailboxId);
-    }  
-    return ret;
-}
-
-/*!
     Returns the current sync state of the mailbox
  */
 NmSyncState NmUiEngine::syncState(const NmId& mailboxId)
 {
+    NM_FUNCTION;
+    
     NmDataPluginInterface *plugin =
                 mPluginFactory->interfaceInstance(mailboxId);
     if (plugin) {
@@ -725,6 +939,8 @@
  */
 NmConnectState NmUiEngine::connectionState(const NmId& mailboxId)
 {
+    NM_FUNCTION;
+    
     NmDataPluginInterface *plugin =
                 mPluginFactory->interfaceInstance(mailboxId);
     if (plugin) {
@@ -747,6 +963,8 @@
 int NmUiEngine::search(const NmId &mailboxId,
                        const QStringList &searchStrings)
 {
+    NM_FUNCTION;
+    
     // Get the plugin instance.
     QObject *pluginInstance = mPluginFactory->pluginInstance(mailboxId);
 
@@ -789,6 +1007,8 @@
 */
 int NmUiEngine::cancelSearch(const NmId &mailboxId)
 {
+    NM_FUNCTION;
+    
     int retVal(NmNoError);
 
     // Get the plugin interface.
@@ -806,7 +1026,9 @@
     \return Folder type
 */
 NmFolderType NmUiEngine::folderTypeById(NmId mailboxId, NmId folderId)
-{   
+{
+    NM_FUNCTION;
+    
     NmFolderType ret(NmFolderInbox);
     if (mDataManager){
         ret = mDataManager->folderTypeById(mailboxId,folderId);    
@@ -821,6 +1043,8 @@
 */
 void NmUiEngine::updateActiveFolder(const NmId &mailboxId, const NmId &folderId)
 {
+    NM_FUNCTION;
+    
     NmApplicationStateInterface *interface = 
         mPluginFactory->applicationStateInterfaceInstance(mailboxId);
     if (interface) {
@@ -833,20 +1057,43 @@
 */
 void NmUiEngine::handleCompletedSendOperation()
 {
-    NMLOG("NmUiEngine::handleCompletedSendOperation()");
+    NM_FUNCTION;
+    
     emit sendOperationCompleted();
 }
 
 /*!
+    Handle completed remove draft operation.
+*/
+void NmUiEngine::handleCompletedRemoveDraftOperation()
+{
+    NM_FUNCTION;
+    
+    // draft message deletion observing not yet implemented...
+}
+
+/*!
+    Handle completed save draft operation.
+*/
+void NmUiEngine::handleCompletedSaveDraftOperation()
+{
+    NM_FUNCTION;
+    
+    // draft message saving observing not yet implemented...
+}
+
+/*!
     Handles synch operation related events
  */
 void NmUiEngine::handleSyncStateEvent(NmSyncState syncState, const NmOperationCompletionEvent &event)
 {
-    NMLOG("NmUiEngine::handleSyncStateEvent()");
-
+    NM_FUNCTION;
+    
     if ( syncState == SyncComplete ) {
         // signal for reporting about (sync) operation completion status
         emit operationCompleted(event);
+        HbIndicator indicator;
+        indicator.deactivate(syncIndicatorName, QVariant());
     }
 
     // signal for handling sync state icons
@@ -862,6 +1109,8 @@
                                     const QList<NmId> &messageIds, 
                                     const NmId& mailboxId)
 {
+    NM_FUNCTION;
+    
     switch (event) {
         case NmMessageDeleted:
         {
@@ -882,6 +1131,8 @@
 void NmUiEngine::handleMailboxEvent(NmMailboxEvent event,
                                     const QList<NmId> &mailboxIds)
 {
+    NM_FUNCTION;
+    
     switch (event) {
         case NmMailboxDeleted:
         {
@@ -904,26 +1155,59 @@
 */
 void NmUiEngine::handleMatchFound(const NmId &messageId, const NmId &folderId)
 {
+    NM_FUNCTION;
+    
     if (!mMessageSearchListModel) {
         // No search list model!
         return;
     }
 
-    // Add the found message into the search model.
-    QList<NmId> messageIdList;
-    messageIdList.append(messageId);
+    // Resolve the folder type.
+    NmId mailboxId = mMessageSearchListModel->currentMailboxId();
+    NmFolderType folderType = folderTypeById(mailboxId, folderId);
 
-    mMessageSearchListModel->handleMessageEvent(NmMessageFound,
-                                                folderId,
-                                                messageIdList);
+    // Do not display matches from outbox or draft folders.
+    if (folderType != NmFolderOutbox && folderType != NmFolderDrafts) {
+        // Add the found message into the search model.
+        QList<NmId> messageIdList;
+        messageIdList.append(messageId);
+
+        mMessageSearchListModel->handleMessageEvent(NmMessageFound, folderId,
+                                                    messageIdList, mailboxId);
+    }
 }
 
+/*!
+    Function sens events from plugin to both models. Inbox model for
+    active mailbox is always alove whereas mMessageListModel can represent
+    other folder in the device (sent, outbox, drafts, etc.)
+*/
+void NmUiEngine::messageEventForListModel(NmMessageEvent event,
+                        const NmId &folderId,
+                        const QList<NmId> &messageIds, 
+                        const NmId& mailboxId)
+{
+    NM_FUNCTION;
+    
+    // Forward event to both list models. Models will take care of checking
+    // whether event really belongs to current mailbox & folder
+    if (mInboxListModel){
+        mInboxListModel->handleMessageEvent(event, folderId,
+                                            messageIds, mailboxId);   
+    }
+    if (mMessageListModel){
+        mMessageListModel->handleMessageEvent(event, folderId,
+                                              messageIds, mailboxId);    
+    }  
+}
 
 /*!
     receives events when going online, and offline.
 */
 void NmUiEngine::handleConnectEvent(NmConnectState connectState, const NmId &mailboxId, const int errorCode)
 {
+    NM_FUNCTION;
+    
     // signal for connection state icon handling
     emit connectionEvent(connectState, mailboxId);
 
--- a/emailuis/nmailuiwidgets/bwins/nmailuiwidgetsu.def	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiwidgets/bwins/nmailuiwidgetsu.def	Fri May 28 13:56:43 2010 +0300
@@ -1,146 +1,140 @@
 EXPORTS
 	?trUtf8@NmAttachmentListItem@@SA?AVQString@@PBD0H@Z @ 1 NONAME ; class QString NmAttachmentListItem::trUtf8(char const *, char const *, int)
-	?screenSize@NmAttachmentListItem@@AAE?AVQSize@@W4Orientation@Qt@@@Z @ 2 NONAME ; class QSize NmAttachmentListItem::screenSize(enum Qt::Orientation)
-	?itemActivated@NmAttachmentListWidget@@IAEXH@Z @ 3 NONAME ; void NmAttachmentListWidget::itemActivated(int)
-	?textCursor@NmHtmlLineEdit@@QBE?AVQTextCursor@@XZ @ 4 NONAME ; class QTextCursor NmHtmlLineEdit::textCursor(void) const
-	?keyPressEvent@NmRecipientLineEdit@@MAEXPAVQKeyEvent@@@Z @ 5 NONAME ; void NmRecipientLineEdit::keyPressEvent(class QKeyEvent *)
-	?sendMouseReleaseEvent@NmEditorTextEdit@@QAEXPAVQGraphicsSceneMouseEvent@@@Z @ 6 NONAME ; void NmEditorTextEdit::sendMouseReleaseEvent(class QGraphicsSceneMouseEvent *)
-	?paint@NmAttachmentListWidget@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 7 NONAME ; void NmAttachmentListWidget::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *)
-	?tr@NmEditorTextEdit@@SA?AVQString@@PBD0H@Z @ 8 NONAME ; class QString NmEditorTextEdit::tr(char const *, char const *, int)
-	?toHtml@NmHtmlLineEdit@@QBE?AVQString@@XZ @ 9 NONAME ; class QString NmHtmlLineEdit::toHtml(void) const
-	?resetFileNameLength@NmAttachmentListItem@@QAEXW4Orientation@Qt@@@Z @ 10 NONAME ; void NmAttachmentListItem::resetFileNameLength(enum Qt::Orientation)
-	?metaObject@NmBaseViewScrollArea@@UBEPBUQMetaObject@@XZ @ 11 NONAME ; struct QMetaObject const * NmBaseViewScrollArea::metaObject(void) const
-	?init@NmEditorTextEdit@@QAEXPAVNmBaseViewScrollArea@@@Z @ 12 NONAME ; void NmEditorTextEdit::init(class NmBaseViewScrollArea *)
-	?emailAddressList@NmRecipientLineEdit@@QAE?AV?$QList@VNmAddress@@@@XZ @ 13 NONAME ; class QList<class NmAddress> NmRecipientLineEdit::emailAddressList(void)
-	?getStaticMetaObject@NmAttachmentListItem@@SAABUQMetaObject@@XZ @ 14 NONAME ; struct QMetaObject const & NmAttachmentListItem::getStaticMetaObject(void)
-	?getStaticMetaObject@NmBaseViewScrollArea@@SAABUQMetaObject@@XZ @ 15 NONAME ; struct QMetaObject const & NmBaseViewScrollArea::getStaticMetaObject(void)
-	?getStaticMetaObject@NmAttachmentListWidget@@SAABUQMetaObject@@XZ @ 16 NONAME ; struct QMetaObject const & NmAttachmentListWidget::getStaticMetaObject(void)
-	??_ENmAttachmentListItem@@UAE@I@Z @ 17 NONAME ; NmAttachmentListItem::~NmAttachmentListItem(unsigned int)
-	?sendMouseMoveEvent@NmEditorTextEdit@@QAEXPAVQGraphicsSceneMouseEvent@@@Z @ 18 NONAME ; void NmEditorTextEdit::sendMouseMoveEvent(class QGraphicsSceneMouseEvent *)
-	?updateEditorHeight@NmEditorTextEdit@@QAEXXZ @ 19 NONAME ; void NmEditorTextEdit::updateEditorHeight(void)
-	?qt_metacast@NmHtmlLineEdit@@UAEPAXPBD@Z @ 20 NONAME ; void * NmHtmlLineEdit::qt_metacast(char const *)
-	?metaObject@NmEditorTextEdit@@UBEPBUQMetaObject@@XZ @ 21 NONAME ; struct QMetaObject const * NmEditorTextEdit::metaObject(void) const
-	?setFileNameText@NmAttachmentListItem@@QAEXABVQString@@@Z @ 22 NONAME ; void NmAttachmentListItem::setFileNameText(class QString const &)
-	?qt_metacast@NmBaseViewScrollArea@@UAEPAXPBD@Z @ 23 NONAME ; void * NmBaseViewScrollArea::qt_metacast(char const *)
-	?tr@NmBaseViewScrollArea@@SA?AVQString@@PBD0H@Z @ 24 NONAME ; class QString NmBaseViewScrollArea::tr(char const *, char const *, int)
-	?qt_metacall@NmAttachmentListWidget@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 25 NONAME ; int NmAttachmentListWidget::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?trUtf8@NmAttachmentListWidget@@SA?AVQString@@PBD0H@Z @ 26 NONAME ; class QString NmAttachmentListWidget::trUtf8(char const *, char const *, int)
-	?qt_metacall@NmRecipientLineEdit@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 27 NONAME ; int NmRecipientLineEdit::qt_metacall(enum QMetaObject::Call, int, void * *)
-	??0NmAttachmentListItem@@QAE@PAVQGraphicsItem@@@Z @ 28 NONAME ; NmAttachmentListItem::NmAttachmentListItem(class QGraphicsItem *)
-	?trUtf8@NmBaseViewScrollArea@@SA?AVQString@@PBD0H@Z @ 29 NONAME ; class QString NmBaseViewScrollArea::trUtf8(char const *, char const *, int)
-	??1NmHtmlLineEdit@@UAE@XZ @ 30 NONAME ; NmHtmlLineEdit::~NmHtmlLineEdit(void)
-	?setProgressBarValue@NmAttachmentListItem@@QAEXH@Z @ 31 NONAME ; void NmAttachmentListItem::setProgressBarValue(int)
-	?trUtf8@NmHtmlLineEdit@@SA?AVQString@@PBD0@Z @ 32 NONAME ; class QString NmHtmlLineEdit::trUtf8(char const *, char const *)
-	??0NmRecipientLineEdit@@QAE@PAVQGraphicsItem@@@Z @ 33 NONAME ; NmRecipientLineEdit::NmRecipientLineEdit(class QGraphicsItem *)
-	?setAttachmentSize@NmAttachmentListWidget@@QAEXHABVQString@@@Z @ 34 NONAME ; void NmAttachmentListWidget::setAttachmentSize(int, class QString const &)
-	?trUtf8@NmEditorTextEdit@@SA?AVQString@@PBD0H@Z @ 35 NONAME ; class QString NmEditorTextEdit::trUtf8(char const *, char const *, int)
-	?setPlainText@NmHtmlLineEdit@@QAEXABVQString@@@Z @ 36 NONAME ; void NmHtmlLineEdit::setPlainText(class QString const &)
-	?longPressGesture@NmBaseViewScrollArea@@MAEXABVQPointF@@@Z @ 37 NONAME ; void NmBaseViewScrollArea::longPressGesture(class QPointF const &)
-	?updateCustomTextColor@NmEditorTextEdit@@QAEXXZ @ 38 NONAME ; void NmEditorTextEdit::updateCustomTextColor(void)
-	?orientationChanged@NmAttachmentListWidget@@AAEXW4Orientation@Qt@@@Z @ 39 NONAME ; void NmAttachmentListWidget::orientationChanged(enum Qt::Orientation)
-	?insertSelectedContacts@NmRecipientLineEdit@@QAEXABVQVariant@@@Z @ 40 NONAME ; void NmRecipientLineEdit::insertSelectedContacts(class QVariant const &)
-	?qt_metacast@NmAttachmentListWidget@@UAEPAXPBD@Z @ 41 NONAME ; void * NmAttachmentListWidget::qt_metacast(char const *)
-	?getStaticMetaObject@NmHtmlLineEdit@@SAABUQMetaObject@@XZ @ 42 NONAME ; struct QMetaObject const & NmHtmlLineEdit::getStaticMetaObject(void)
-	?qt_metacall@NmEditorTextEdit@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 43 NONAME ; int NmEditorTextEdit::qt_metacall(enum QMetaObject::Call, int, void * *)
-	??1NmAttachmentListWidget@@UAE@XZ @ 44 NONAME ; NmAttachmentListWidget::~NmAttachmentListWidget(void)
-	??_ENmRecipientLineEdit@@UAE@I@Z @ 45 NONAME ; NmRecipientLineEdit::~NmRecipientLineEdit(unsigned int)
-	?qt_metacast@NmRecipientLineEdit@@UAEPAXPBD@Z @ 46 NONAME ; void * NmRecipientLineEdit::qt_metacast(char const *)
-	?setCustomTextColor@NmEditorTextEdit@@QAEXABU?$QPair@_NVQColor@@@@@Z @ 47 NONAME ; void NmEditorTextEdit::setCustomTextColor(struct QPair<bool, class QColor> const &)
-	?setDocument@NmHtmlLineEdit@@QAEXPAVQTextDocument@@@Z @ 48 NONAME ; void NmHtmlLineEdit::setDocument(class QTextDocument *)
-	?trUtf8@NmEditorTextEdit@@SA?AVQString@@PBD0@Z @ 49 NONAME ; class QString NmEditorTextEdit::trUtf8(char const *, char const *)
-	??0NmBaseViewScrollArea@@QAE@PAVQGraphicsItem@@@Z @ 50 NONAME ; NmBaseViewScrollArea::NmBaseViewScrollArea(class QGraphicsItem *)
-	?longPressed@NmAttachmentListWidget@@IAEXHVQPointF@@@Z @ 51 NONAME ; void NmAttachmentListWidget::longPressed(int, class QPointF)
-	?staticMetaObject@NmEditorTextEdit@@2UQMetaObject@@B @ 52 NONAME ; struct QMetaObject const NmEditorTextEdit::staticMetaObject
-	??0NmEditorTextEdit@@QAE@PAVQGraphicsItem@@@Z @ 53 NONAME ; NmEditorTextEdit::NmEditorTextEdit(class QGraphicsItem *)
-	??_ENmEditorTextEdit@@UAE@I@Z @ 54 NONAME ; NmEditorTextEdit::~NmEditorTextEdit(unsigned int)
-	?sendLongPressEvent@NmEditorTextEdit@@QAEXABVQPointF@@@Z @ 55 NONAME ; void NmEditorTextEdit::sendLongPressEvent(class QPointF const &)
-	?hideProgressBar@NmAttachmentListItem@@QAEXXZ @ 56 NONAME ; void NmAttachmentListItem::hideProgressBar(void)
-	?qt_metacast@NmAttachmentListItem@@UAEPAXPBD@Z @ 57 NONAME ; void * NmAttachmentListItem::qt_metacast(char const *)
-	?handleMouseReleaseEvent@NmBaseViewScrollArea@@IAEXPAVQGraphicsSceneMouseEvent@@@Z @ 58 NONAME ; void NmBaseViewScrollArea::handleMouseReleaseEvent(class QGraphicsSceneMouseEvent *)
-	?removeProgressBar@NmAttachmentListItem@@AAEXXZ @ 59 NONAME ; void NmAttachmentListItem::removeProgressBar(void)
-	??1NmBaseViewScrollArea@@UAE@XZ @ 60 NONAME ; NmBaseViewScrollArea::~NmBaseViewScrollArea(void)
-	?sendMousePressEvent@NmEditorTextEdit@@QAEXPAVQGraphicsSceneMouseEvent@@@Z @ 61 NONAME ; void NmEditorTextEdit::sendMousePressEvent(class QGraphicsSceneMouseEvent *)
-	??_ENmHtmlLineEdit@@UAE@I@Z @ 62 NONAME ; NmHtmlLineEdit::~NmHtmlLineEdit(unsigned int)
-	?tr@NmAttachmentListWidget@@SA?AVQString@@PBD0H@Z @ 63 NONAME ; class QString NmAttachmentListWidget::tr(char const *, char const *, int)
-	?handleMousePressEvent@NmBaseViewScrollArea@@IAEXPAVQGraphicsSceneMouseEvent@@@Z @ 64 NONAME ; void NmBaseViewScrollArea::handleMousePressEvent(class QGraphicsSceneMouseEvent *)
-	?insertItemToLayout@NmAttachmentListWidget@@AAEXPAVNmAttachmentListItem@@@Z @ 65 NONAME ; void NmAttachmentListWidget::insertItemToLayout(class NmAttachmentListItem *)
-	?metaObject@NmHtmlLineEdit@@UBEPBUQMetaObject@@XZ @ 66 NONAME ; struct QMetaObject const * NmHtmlLineEdit::metaObject(void) const
-	?editorContentHeightChanged@NmEditorTextEdit@@IAEXXZ @ 67 NONAME ; void NmEditorTextEdit::editorContentHeightChanged(void)
-	?setTextColor@NmAttachmentListItem@@QAEXVQColor@@@Z @ 68 NONAME ; void NmAttachmentListItem::setTextColor(class QColor)
-	??1NmAttachmentListItem@@UAE@XZ @ 69 NONAME ; NmAttachmentListItem::~NmAttachmentListItem(void)
-	?count@NmAttachmentListWidget@@QBEHXZ @ 70 NONAME ; int NmAttachmentListWidget::count(void) const
-	?handleTextChanged@NmRecipientLineEdit@@AAEXABVQString@@@Z @ 71 NONAME ; void NmRecipientLineEdit::handleTextChanged(class QString const &)
-	?longPressedActivated@NmAttachmentListItem@@AAEXXZ @ 72 NONAME ; void NmAttachmentListItem::longPressedActivated(void)
-	?handleLongPressGesture@NmBaseViewScrollArea@@IAEXABVQPointF@@@Z @ 73 NONAME ; void NmBaseViewScrollArea::handleLongPressGesture(class QPointF const &)
-	?updateScrollPosition@NmEditorTextEdit@@QAEXABVQPointF@@@Z @ 74 NONAME ; void NmEditorTextEdit::updateScrollPosition(class QPointF const &)
-	?contentHeight@NmEditorTextEdit@@QBEMXZ @ 75 NONAME ; float NmEditorTextEdit::contentHeight(void) const
-	?qt_metacast@NmEditorTextEdit@@UAEPAXPBD@Z @ 76 NONAME ; void * NmEditorTextEdit::qt_metacast(char const *)
-	?mouseMoveEvent@NmBaseViewScrollArea@@UAEXPAVQGraphicsSceneMouseEvent@@@Z @ 77 NONAME ; void NmBaseViewScrollArea::mouseMoveEvent(class QGraphicsSceneMouseEvent *)
-	?qt_metacall@NmAttachmentListItem@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 78 NONAME ; int NmAttachmentListItem::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?handleLongPressed@NmAttachmentListWidget@@AAEXVQPointF@@@Z @ 79 NONAME ; void NmAttachmentListWidget::handleLongPressed(class QPointF)
-	?staticMetaObject@NmBaseViewScrollArea@@2UQMetaObject@@B @ 80 NONAME ; struct QMetaObject const NmBaseViewScrollArea::staticMetaObject
-	?setHeaderHeight@NmEditorTextEdit@@QAEXH@Z @ 81 NONAME ; void NmEditorTextEdit::setHeaderHeight(int)
-	?init@NmAttachmentListWidget@@AAEXXZ @ 82 NONAME ; void NmAttachmentListWidget::init(void)
-	?rearrangeLayout@NmAttachmentListWidget@@AAEXXZ @ 83 NONAME ; void NmAttachmentListWidget::rearrangeLayout(void)
-	?trUtf8@NmRecipientLineEdit@@SA?AVQString@@PBD0@Z @ 84 NONAME ; class QString NmRecipientLineEdit::trUtf8(char const *, char const *)
-	?trUtf8@NmAttachmentListItem@@SA?AVQString@@PBD0@Z @ 85 NONAME ; class QString NmAttachmentListItem::trUtf8(char const *, char const *)
-	?metaObject@NmRecipientLineEdit@@UBEPBUQMetaObject@@XZ @ 86 NONAME ; struct QMetaObject const * NmRecipientLineEdit::metaObject(void) const
-	?tr@NmAttachmentListItem@@SA?AVQString@@PBD0@Z @ 87 NONAME ; class QString NmAttachmentListItem::tr(char const *, char const *)
-	?trUtf8@NmBaseViewScrollArea@@SA?AVQString@@PBD0@Z @ 88 NONAME ; class QString NmBaseViewScrollArea::trUtf8(char const *, char const *)
-	?tr@NmBaseViewScrollArea@@SA?AVQString@@PBD0@Z @ 89 NONAME ; class QString NmBaseViewScrollArea::tr(char const *, char const *)
-	?setFileSizeText@NmAttachmentListItem@@QAEXABVQString@@@Z @ 90 NONAME ; void NmAttachmentListItem::setFileSizeText(class QString const &)
-	?customTextColor@NmEditorTextEdit@@QBE?AU?$QPair@_NVQColor@@@@XZ @ 91 NONAME ; struct QPair<bool, class QColor> NmEditorTextEdit::customTextColor(void) const
-	?staticMetaObject@NmHtmlLineEdit@@2UQMetaObject@@B @ 92 NONAME ; struct QMetaObject const NmHtmlLineEdit::staticMetaObject
-	?inputMethodEvent@NmRecipientLineEdit@@MAEXPAVQInputMethodEvent@@@Z @ 93 NONAME ; void NmRecipientLineEdit::inputMethodEvent(class QInputMethodEvent *)
-	?mouseReleaseEvent@NmBaseViewScrollArea@@UAEXPAVQGraphicsSceneMouseEvent@@@Z @ 94 NONAME ; void NmBaseViewScrollArea::mouseReleaseEvent(class QGraphicsSceneMouseEvent *)
-	?constructUi@NmAttachmentListWidget@@AAEXXZ @ 95 NONAME ; void NmAttachmentListWidget::constructUi(void)
-	?toPlainText@NmHtmlLineEdit@@QBE?AVQString@@XZ @ 96 NONAME ; class QString NmHtmlLineEdit::toPlainText(void) const
-	?getStaticMetaObject@NmEditorTextEdit@@SAABUQMetaObject@@XZ @ 97 NONAME ; struct QMetaObject const & NmEditorTextEdit::getStaticMetaObject(void)
-	?setScrollPosition@NmEditorTextEdit@@QAEXHH@Z @ 98 NONAME ; void NmEditorTextEdit::setScrollPosition(int, int)
-	?tr@NmEditorTextEdit@@SA?AVQString@@PBD0@Z @ 99 NONAME ; class QString NmEditorTextEdit::tr(char const *, char const *)
-	?staticMetaObject@NmAttachmentListItem@@2UQMetaObject@@B @ 100 NONAME ; struct QMetaObject const NmAttachmentListItem::staticMetaObject
-	??_ENmBaseViewScrollArea@@UAE@I@Z @ 101 NONAME ; NmBaseViewScrollArea::~NmBaseViewScrollArea(unsigned int)
-	?itemLongPressed@NmAttachmentListItem@@IAEXVQPointF@@@Z @ 102 NONAME ; void NmAttachmentListItem::itemLongPressed(class QPointF)
-	?progressBarValue@NmAttachmentListItem@@QBEHXZ @ 103 NONAME ; int NmAttachmentListItem::progressBarValue(void) const
-	?setCustomTextColor@NmEditorTextEdit@@QAEX_NABVQColor@@@Z @ 104 NONAME ; void NmEditorTextEdit::setCustomTextColor(bool, class QColor const &)
-	??0NmHtmlLineEdit@@QAE@PAVQGraphicsItem@@@Z @ 105 NONAME ; NmHtmlLineEdit::NmHtmlLineEdit(class QGraphicsItem *)
-	?init@NmAttachmentListItem@@AAEXXZ @ 106 NONAME ; void NmAttachmentListItem::init(void)
-	?tr@NmRecipientLineEdit@@SA?AVQString@@PBD0@Z @ 107 NONAME ; class QString NmRecipientLineEdit::tr(char const *, char const *)
-	??1NmEditorTextEdit@@UAE@XZ @ 108 NONAME ; NmEditorTextEdit::~NmEditorTextEdit(void)
-	?generateEmailAddressList@NmRecipientLineEdit@@AAEXXZ @ 109 NONAME ; void NmRecipientLineEdit::generateEmailAddressList(void)
-	?trUtf8@NmAttachmentListWidget@@SA?AVQString@@PBD0@Z @ 110 NONAME ; class QString NmAttachmentListWidget::trUtf8(char const *, char const *)
-	?mousePressEvent@NmBaseViewScrollArea@@UAEXPAVQGraphicsSceneMouseEvent@@@Z @ 111 NONAME ; void NmBaseViewScrollArea::mousePressEvent(class QGraphicsSceneMouseEvent *)
-	?handleItemActivated@NmAttachmentListWidget@@AAEXXZ @ 112 NONAME ; void NmAttachmentListWidget::handleItemActivated(void)
-	?metaObject@NmAttachmentListWidget@@UBEPBUQMetaObject@@XZ @ 113 NONAME ; struct QMetaObject const * NmAttachmentListWidget::metaObject(void) const
-	?constructUi@NmAttachmentListItem@@AAEXXZ @ 114 NONAME ; void NmAttachmentListItem::constructUi(void)
-	?trUtf8@NmHtmlLineEdit@@SA?AVQString@@PBD0H@Z @ 115 NONAME ; class QString NmHtmlLineEdit::trUtf8(char const *, char const *, int)
-	?setHtml@NmHtmlLineEdit@@QAEXABVQString@@@Z @ 116 NONAME ; void NmHtmlLineEdit::setHtml(class QString const &)
-	?tr@NmHtmlLineEdit@@SA?AVQString@@PBD0H@Z @ 117 NONAME ; class QString NmHtmlLineEdit::tr(char const *, char const *, int)
-	?itemActivated@NmAttachmentListItem@@IAEXXZ @ 118 NONAME ; void NmAttachmentListItem::itemActivated(void)
-	?mouseReleaseEvent@NmAttachmentListItem@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 119 NONAME ; void NmAttachmentListItem::mouseReleaseEvent(class QGraphicsSceneMouseEvent *)
-	?tr@NmAttachmentListWidget@@SA?AVQString@@PBD0@Z @ 120 NONAME ; class QString NmAttachmentListWidget::tr(char const *, char const *)
-	?getStaticMetaObject@NmRecipientLineEdit@@SAABUQMetaObject@@XZ @ 121 NONAME ; struct QMetaObject const & NmRecipientLineEdit::getStaticMetaObject(void)
-	?findItem@NmAttachmentListWidget@@AAEHPBVQObject@@@Z @ 122 NONAME ; int NmAttachmentListWidget::findItem(class QObject const *)
-	??1NmRecipientLineEdit@@UAE@XZ @ 123 NONAME ; NmRecipientLineEdit::~NmRecipientLineEdit(void)
-	?removeAttachment@NmAttachmentListWidget@@QAEXH@Z @ 124 NONAME ; void NmAttachmentListWidget::removeAttachment(int)
-	?trUtf8@NmRecipientLineEdit@@SA?AVQString@@PBD0H@Z @ 125 NONAME ; class QString NmRecipientLineEdit::trUtf8(char const *, char const *, int)
-	?tr@NmRecipientLineEdit@@SA?AVQString@@PBD0H@Z @ 126 NONAME ; class QString NmRecipientLineEdit::tr(char const *, char const *, int)
-	?progressValue@NmAttachmentListWidget@@QBEHH@Z @ 127 NONAME ; int NmAttachmentListWidget::progressValue(int) const
-	?staticMetaObject@NmAttachmentListWidget@@2UQMetaObject@@B @ 128 NONAME ; struct QMetaObject const NmAttachmentListWidget::staticMetaObject
-	??_ENmAttachmentListWidget@@UAE@I@Z @ 129 NONAME ; NmAttachmentListWidget::~NmAttachmentListWidget(unsigned int)
-	?setTextColor@NmAttachmentListWidget@@QAEXVQColor@@@Z @ 130 NONAME ; void NmAttachmentListWidget::setTextColor(class QColor)
-	?setTextCursor@NmHtmlLineEdit@@QAEXABVQTextCursor@@@Z @ 131 NONAME ; void NmHtmlLineEdit::setTextCursor(class QTextCursor const &)
-	?handleMouseMoveEvent@NmBaseViewScrollArea@@IAEXPAVQGraphicsSceneMouseEvent@@@Z @ 132 NONAME ; void NmBaseViewScrollArea::handleMouseMoveEvent(class QGraphicsSceneMouseEvent *)
-	?staticMetaObject@NmRecipientLineEdit@@2UQMetaObject@@B @ 133 NONAME ; struct QMetaObject const NmRecipientLineEdit::staticMetaObject
-	?setProgressBarValue@NmAttachmentListWidget@@QAEXHH@Z @ 134 NONAME ; void NmAttachmentListWidget::setProgressBarValue(int, int)
-	?metaObject@NmAttachmentListItem@@UBEPBUQMetaObject@@XZ @ 135 NONAME ; struct QMetaObject const * NmAttachmentListItem::metaObject(void) const
-	?insertAttachment@NmAttachmentListWidget@@QAEXHABVQString@@0@Z @ 136 NONAME ; void NmAttachmentListWidget::insertAttachment(int, class QString const &, class QString const &)
-	?hideProgressBar@NmAttachmentListWidget@@QAEXH@Z @ 137 NONAME ; void NmAttachmentListWidget::hideProgressBar(int)
-	??0NmAttachmentListWidget@@QAE@PAVQGraphicsItem@@@Z @ 138 NONAME ; NmAttachmentListWidget::NmAttachmentListWidget(class QGraphicsItem *)
-	?mousePressEvent@NmAttachmentListItem@@MAEXPAVQGraphicsSceneMouseEvent@@@Z @ 139 NONAME ; void NmAttachmentListItem::mousePressEvent(class QGraphicsSceneMouseEvent *)
-	?tr@NmAttachmentListItem@@SA?AVQString@@PBD0H@Z @ 140 NONAME ; class QString NmAttachmentListItem::tr(char const *, char const *, int)
-	?document@NmHtmlLineEdit@@QBEPAVQTextDocument@@XZ @ 141 NONAME ; class QTextDocument * NmHtmlLineEdit::document(void) const
-	?qt_metacall@NmBaseViewScrollArea@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 142 NONAME ; int NmBaseViewScrollArea::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?qt_metacall@NmHtmlLineEdit@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 143 NONAME ; int NmHtmlLineEdit::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?tr@NmHtmlLineEdit@@SA?AVQString@@PBD0@Z @ 144 NONAME ; class QString NmHtmlLineEdit::tr(char const *, char const *)
+	?handleLongPressGesture@NmBaseViewScrollArea@@IAEXABVQPointF@@@Z @ 2 NONAME ; void NmBaseViewScrollArea::handleLongPressGesture(class QPointF const &)
+	?updateScrollPosition@NmEditorTextEdit@@QAEXABVQPointF@@@Z @ 3 NONAME ; void NmEditorTextEdit::updateScrollPosition(class QPointF const &)
+	?screenSize@NmAttachmentListItem@@AAE?AVQSize@@W4Orientation@Qt@@@Z @ 4 NONAME ; class QSize NmAttachmentListItem::screenSize(enum Qt::Orientation)
+	?qt_metacast@NmEditorTextEdit@@UAEPAXPBD@Z @ 5 NONAME ; void * NmEditorTextEdit::qt_metacast(char const *)
+	?itemActivated@NmAttachmentListWidget@@IAEXH@Z @ 6 NONAME ; void NmAttachmentListWidget::itemActivated(int)
+	?contentHeight@NmEditorTextEdit@@QBEMXZ @ 7 NONAME ; float NmEditorTextEdit::contentHeight(void) const
+	?mouseMoveEvent@NmBaseViewScrollArea@@UAEXPAVQGraphicsSceneMouseEvent@@@Z @ 8 NONAME ; void NmBaseViewScrollArea::mouseMoveEvent(class QGraphicsSceneMouseEvent *)
+	?textCursor@NmHtmlLineEdit@@QBE?AVQTextCursor@@XZ @ 9 NONAME ; class QTextCursor NmHtmlLineEdit::textCursor(void) const
+	?qt_metacall@NmAttachmentListItem@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 10 NONAME ; int NmAttachmentListItem::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?keyPressEvent@NmRecipientLineEdit@@MAEXPAVQKeyEvent@@@Z @ 11 NONAME ; void NmRecipientLineEdit::keyPressEvent(class QKeyEvent *)
+	?handleLongPressed@NmAttachmentListWidget@@AAEXVQPointF@@@Z @ 12 NONAME ; void NmAttachmentListWidget::handleLongPressed(class QPointF)
+	?staticMetaObject@NmBaseViewScrollArea@@2UQMetaObject@@B @ 13 NONAME ; struct QMetaObject const NmBaseViewScrollArea::staticMetaObject
+	?setHeaderHeight@NmEditorTextEdit@@QAEXH@Z @ 14 NONAME ; void NmEditorTextEdit::setHeaderHeight(int)
+	?paint@NmAttachmentListWidget@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 15 NONAME ; void NmAttachmentListWidget::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *)
+	?tr@NmEditorTextEdit@@SA?AVQString@@PBD0H@Z @ 16 NONAME ; class QString NmEditorTextEdit::tr(char const *, char const *, int)
+	?init@NmAttachmentListWidget@@AAEXXZ @ 17 NONAME ; void NmAttachmentListWidget::init(void)
+	?rearrangeLayout@NmAttachmentListWidget@@AAEXXZ @ 18 NONAME ; void NmAttachmentListWidget::rearrangeLayout(void)
+	?trUtf8@NmRecipientLineEdit@@SA?AVQString@@PBD0@Z @ 19 NONAME ; class QString NmRecipientLineEdit::trUtf8(char const *, char const *)
+	?toHtml@NmHtmlLineEdit@@QBE?AVQString@@XZ @ 20 NONAME ; class QString NmHtmlLineEdit::toHtml(void) const
+	?resetFileNameLength@NmAttachmentListItem@@QAEXW4Orientation@Qt@@@Z @ 21 NONAME ; void NmAttachmentListItem::resetFileNameLength(enum Qt::Orientation)
+	?trUtf8@NmAttachmentListItem@@SA?AVQString@@PBD0@Z @ 22 NONAME ; class QString NmAttachmentListItem::trUtf8(char const *, char const *)
+	?tr@NmAttachmentListItem@@SA?AVQString@@PBD0@Z @ 23 NONAME ; class QString NmAttachmentListItem::tr(char const *, char const *)
+	?metaObject@NmRecipientLineEdit@@UBEPBUQMetaObject@@XZ @ 24 NONAME ; struct QMetaObject const * NmRecipientLineEdit::metaObject(void) const
+	?metaObject@NmBaseViewScrollArea@@UBEPBUQMetaObject@@XZ @ 25 NONAME ; struct QMetaObject const * NmBaseViewScrollArea::metaObject(void) const
+	?init@NmEditorTextEdit@@QAEXPAVNmBaseViewScrollArea@@@Z @ 26 NONAME ; void NmEditorTextEdit::init(class NmBaseViewScrollArea *)
+	?emailAddressList@NmRecipientLineEdit@@QAE?AV?$QList@VNmAddress@@@@XZ @ 27 NONAME ; class QList<class NmAddress> NmRecipientLineEdit::emailAddressList(void)
+	?trUtf8@NmBaseViewScrollArea@@SA?AVQString@@PBD0@Z @ 28 NONAME ; class QString NmBaseViewScrollArea::trUtf8(char const *, char const *)
+	?tr@NmBaseViewScrollArea@@SA?AVQString@@PBD0@Z @ 29 NONAME ; class QString NmBaseViewScrollArea::tr(char const *, char const *)
+	?getStaticMetaObject@NmAttachmentListItem@@SAABUQMetaObject@@XZ @ 30 NONAME ; struct QMetaObject const & NmAttachmentListItem::getStaticMetaObject(void)
+	?getStaticMetaObject@NmBaseViewScrollArea@@SAABUQMetaObject@@XZ @ 31 NONAME ; struct QMetaObject const & NmBaseViewScrollArea::getStaticMetaObject(void)
+	?getStaticMetaObject@NmAttachmentListWidget@@SAABUQMetaObject@@XZ @ 32 NONAME ; struct QMetaObject const & NmAttachmentListWidget::getStaticMetaObject(void)
+	??_ENmAttachmentListItem@@UAE@I@Z @ 33 NONAME ; NmAttachmentListItem::~NmAttachmentListItem(unsigned int)
+	?updateEditorHeight@NmEditorTextEdit@@QAEXXZ @ 34 NONAME ; void NmEditorTextEdit::updateEditorHeight(void)
+	?setFileSizeText@NmAttachmentListItem@@QAEXABVQString@@@Z @ 35 NONAME ; void NmAttachmentListItem::setFileSizeText(class QString const &)
+	?qt_metacast@NmHtmlLineEdit@@UAEPAXPBD@Z @ 36 NONAME ; void * NmHtmlLineEdit::qt_metacast(char const *)
+	?metaObject@NmEditorTextEdit@@UBEPBUQMetaObject@@XZ @ 37 NONAME ; struct QMetaObject const * NmEditorTextEdit::metaObject(void) const
+	?staticMetaObject@NmHtmlLineEdit@@2UQMetaObject@@B @ 38 NONAME ; struct QMetaObject const NmHtmlLineEdit::staticMetaObject
+	?setFileNameText@NmAttachmentListItem@@QAEXABVQString@@@Z @ 39 NONAME ; void NmAttachmentListItem::setFileNameText(class QString const &)
+	?customTextColor@NmEditorTextEdit@@QBE?AU?$QPair@_NVQColor@@@@XZ @ 40 NONAME ; struct QPair<bool, class QColor> NmEditorTextEdit::customTextColor(void) const
+	?qt_metacast@NmBaseViewScrollArea@@UAEPAXPBD@Z @ 41 NONAME ; void * NmBaseViewScrollArea::qt_metacast(char const *)
+	?inputMethodEvent@NmRecipientLineEdit@@MAEXPAVQInputMethodEvent@@@Z @ 42 NONAME ; void NmRecipientLineEdit::inputMethodEvent(class QInputMethodEvent *)
+	?mouseReleaseEvent@NmBaseViewScrollArea@@UAEXPAVQGraphicsSceneMouseEvent@@@Z @ 43 NONAME ; void NmBaseViewScrollArea::mouseReleaseEvent(class QGraphicsSceneMouseEvent *)
+	?tr@NmBaseViewScrollArea@@SA?AVQString@@PBD0H@Z @ 44 NONAME ; class QString NmBaseViewScrollArea::tr(char const *, char const *, int)
+	?qt_metacall@NmAttachmentListWidget@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 45 NONAME ; int NmAttachmentListWidget::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?trUtf8@NmAttachmentListWidget@@SA?AVQString@@PBD0H@Z @ 46 NONAME ; class QString NmAttachmentListWidget::trUtf8(char const *, char const *, int)
+	?constructUi@NmAttachmentListWidget@@AAEXXZ @ 47 NONAME ; void NmAttachmentListWidget::constructUi(void)
+	?qt_metacall@NmRecipientLineEdit@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 48 NONAME ; int NmRecipientLineEdit::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??0NmAttachmentListItem@@QAE@PAVQGraphicsItem@@@Z @ 49 NONAME ; NmAttachmentListItem::NmAttachmentListItem(class QGraphicsItem *)
+	?toPlainText@NmHtmlLineEdit@@QBE?AVQString@@XZ @ 50 NONAME ; class QString NmHtmlLineEdit::toPlainText(void) const
+	?trUtf8@NmBaseViewScrollArea@@SA?AVQString@@PBD0H@Z @ 51 NONAME ; class QString NmBaseViewScrollArea::trUtf8(char const *, char const *, int)
+	?tr@NmEditorTextEdit@@SA?AVQString@@PBD0@Z @ 52 NONAME ; class QString NmEditorTextEdit::tr(char const *, char const *)
+	?setScrollPosition@NmEditorTextEdit@@QAEXHH@Z @ 53 NONAME ; void NmEditorTextEdit::setScrollPosition(int, int)
+	?getStaticMetaObject@NmEditorTextEdit@@SAABUQMetaObject@@XZ @ 54 NONAME ; struct QMetaObject const & NmEditorTextEdit::getStaticMetaObject(void)
+	?staticMetaObject@NmAttachmentListItem@@2UQMetaObject@@B @ 55 NONAME ; struct QMetaObject const NmAttachmentListItem::staticMetaObject
+	??1NmHtmlLineEdit@@UAE@XZ @ 56 NONAME ; NmHtmlLineEdit::~NmHtmlLineEdit(void)
+	?setProgressBarValue@NmAttachmentListItem@@QAEXH@Z @ 57 NONAME ; void NmAttachmentListItem::setProgressBarValue(int)
+	?trUtf8@NmHtmlLineEdit@@SA?AVQString@@PBD0@Z @ 58 NONAME ; class QString NmHtmlLineEdit::trUtf8(char const *, char const *)
+	??_ENmBaseViewScrollArea@@UAE@I@Z @ 59 NONAME ; NmBaseViewScrollArea::~NmBaseViewScrollArea(unsigned int)
+	?progressBarValue@NmAttachmentListItem@@QBEHXZ @ 60 NONAME ; int NmAttachmentListItem::progressBarValue(void) const
+	?itemLongPressed@NmAttachmentListItem@@IAEXVQPointF@@@Z @ 61 NONAME ; void NmAttachmentListItem::itemLongPressed(class QPointF)
+	?gestureEvent@NmAttachmentListItem@@MAEXPAVQGestureEvent@@@Z @ 62 NONAME ; void NmAttachmentListItem::gestureEvent(class QGestureEvent *)
+	?setCustomTextColor@NmEditorTextEdit@@QAEX_NABVQColor@@@Z @ 63 NONAME ; void NmEditorTextEdit::setCustomTextColor(bool, class QColor const &)
+	?init@NmAttachmentListItem@@AAEXXZ @ 64 NONAME ; void NmAttachmentListItem::init(void)
+	??0NmRecipientLineEdit@@QAE@PAVQGraphicsItem@@@Z @ 65 NONAME ; NmRecipientLineEdit::NmRecipientLineEdit(class QGraphicsItem *)
+	??0NmHtmlLineEdit@@QAE@PAVQGraphicsItem@@@Z @ 66 NONAME ; NmHtmlLineEdit::NmHtmlLineEdit(class QGraphicsItem *)
+	?tr@NmRecipientLineEdit@@SA?AVQString@@PBD0@Z @ 67 NONAME ; class QString NmRecipientLineEdit::tr(char const *, char const *)
+	?setAttachmentSize@NmAttachmentListWidget@@QAEXHABVQString@@@Z @ 68 NONAME ; void NmAttachmentListWidget::setAttachmentSize(int, class QString const &)
+	?trUtf8@NmEditorTextEdit@@SA?AVQString@@PBD0H@Z @ 69 NONAME ; class QString NmEditorTextEdit::trUtf8(char const *, char const *, int)
+	?setPlainText@NmHtmlLineEdit@@QAEXABVQString@@@Z @ 70 NONAME ; void NmHtmlLineEdit::setPlainText(class QString const &)
+	?longPressGesture@NmBaseViewScrollArea@@MAEXABVQPointF@@@Z @ 71 NONAME ; void NmBaseViewScrollArea::longPressGesture(class QPointF const &)
+	?updateCustomTextColor@NmEditorTextEdit@@QAEXXZ @ 72 NONAME ; void NmEditorTextEdit::updateCustomTextColor(void)
+	?orientationChanged@NmAttachmentListWidget@@AAEXW4Orientation@Qt@@@Z @ 73 NONAME ; void NmAttachmentListWidget::orientationChanged(enum Qt::Orientation)
+	?insertSelectedContacts@NmRecipientLineEdit@@QAEXABVQVariant@@@Z @ 74 NONAME ; void NmRecipientLineEdit::insertSelectedContacts(class QVariant const &)
+	?qt_metacast@NmAttachmentListWidget@@UAEPAXPBD@Z @ 75 NONAME ; void * NmAttachmentListWidget::qt_metacast(char const *)
+	?getStaticMetaObject@NmHtmlLineEdit@@SAABUQMetaObject@@XZ @ 76 NONAME ; struct QMetaObject const & NmHtmlLineEdit::getStaticMetaObject(void)
+	?qt_metacall@NmEditorTextEdit@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 77 NONAME ; int NmEditorTextEdit::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??1NmEditorTextEdit@@UAE@XZ @ 78 NONAME ; NmEditorTextEdit::~NmEditorTextEdit(void)
+	?generateEmailAddressList@NmRecipientLineEdit@@AAEXXZ @ 79 NONAME ; void NmRecipientLineEdit::generateEmailAddressList(void)
+	?trUtf8@NmAttachmentListWidget@@SA?AVQString@@PBD0@Z @ 80 NONAME ; class QString NmAttachmentListWidget::trUtf8(char const *, char const *)
+	??1NmAttachmentListWidget@@UAE@XZ @ 81 NONAME ; NmAttachmentListWidget::~NmAttachmentListWidget(void)
+	??_ENmRecipientLineEdit@@UAE@I@Z @ 82 NONAME ; NmRecipientLineEdit::~NmRecipientLineEdit(unsigned int)
+	?mousePressEvent@NmBaseViewScrollArea@@UAEXPAVQGraphicsSceneMouseEvent@@@Z @ 83 NONAME ; void NmBaseViewScrollArea::mousePressEvent(class QGraphicsSceneMouseEvent *)
+	?qt_metacast@NmRecipientLineEdit@@UAEPAXPBD@Z @ 84 NONAME ; void * NmRecipientLineEdit::qt_metacast(char const *)
+	?setCustomTextColor@NmEditorTextEdit@@QAEXABU?$QPair@_NVQColor@@@@@Z @ 85 NONAME ; void NmEditorTextEdit::setCustomTextColor(struct QPair<bool, class QColor> const &)
+	?setDocument@NmHtmlLineEdit@@QAEXPAVQTextDocument@@@Z @ 86 NONAME ; void NmHtmlLineEdit::setDocument(class QTextDocument *)
+	?handleItemActivated@NmAttachmentListWidget@@AAEXXZ @ 87 NONAME ; void NmAttachmentListWidget::handleItemActivated(void)
+	?trUtf8@NmEditorTextEdit@@SA?AVQString@@PBD0@Z @ 88 NONAME ; class QString NmEditorTextEdit::trUtf8(char const *, char const *)
+	??0NmBaseViewScrollArea@@QAE@PAVQGraphicsItem@@@Z @ 89 NONAME ; NmBaseViewScrollArea::NmBaseViewScrollArea(class QGraphicsItem *)
+	?metaObject@NmAttachmentListWidget@@UBEPBUQMetaObject@@XZ @ 90 NONAME ; struct QMetaObject const * NmAttachmentListWidget::metaObject(void) const
+	?constructUi@NmAttachmentListItem@@AAEXXZ @ 91 NONAME ; void NmAttachmentListItem::constructUi(void)
+	?longPressed@NmAttachmentListWidget@@IAEXHVQPointF@@@Z @ 92 NONAME ; void NmAttachmentListWidget::longPressed(int, class QPointF)
+	?trUtf8@NmHtmlLineEdit@@SA?AVQString@@PBD0H@Z @ 93 NONAME ; class QString NmHtmlLineEdit::trUtf8(char const *, char const *, int)
+	?staticMetaObject@NmEditorTextEdit@@2UQMetaObject@@B @ 94 NONAME ; struct QMetaObject const NmEditorTextEdit::staticMetaObject
+	??0NmEditorTextEdit@@QAE@PAVQGraphicsItem@@@Z @ 95 NONAME ; NmEditorTextEdit::NmEditorTextEdit(class QGraphicsItem *)
+	?tr@NmHtmlLineEdit@@SA?AVQString@@PBD0H@Z @ 96 NONAME ; class QString NmHtmlLineEdit::tr(char const *, char const *, int)
+	?setHtml@NmHtmlLineEdit@@QAEXABVQString@@@Z @ 97 NONAME ; void NmHtmlLineEdit::setHtml(class QString const &)
+	??_ENmEditorTextEdit@@UAE@I@Z @ 98 NONAME ; NmEditorTextEdit::~NmEditorTextEdit(unsigned int)
+	?tr@NmAttachmentListWidget@@SA?AVQString@@PBD0@Z @ 99 NONAME ; class QString NmAttachmentListWidget::tr(char const *, char const *)
+	?itemActivated@NmAttachmentListItem@@IAEXXZ @ 100 NONAME ; void NmAttachmentListItem::itemActivated(void)
+	?hideProgressBar@NmAttachmentListItem@@QAEXXZ @ 101 NONAME ; void NmAttachmentListItem::hideProgressBar(void)
+	?qt_metacast@NmAttachmentListItem@@UAEPAXPBD@Z @ 102 NONAME ; void * NmAttachmentListItem::qt_metacast(char const *)
+	?getStaticMetaObject@NmRecipientLineEdit@@SAABUQMetaObject@@XZ @ 103 NONAME ; struct QMetaObject const & NmRecipientLineEdit::getStaticMetaObject(void)
+	?findItem@NmAttachmentListWidget@@AAEHPBVQObject@@@Z @ 104 NONAME ; int NmAttachmentListWidget::findItem(class QObject const *)
+	?removeAttachment@NmAttachmentListWidget@@QAEXH@Z @ 105 NONAME ; void NmAttachmentListWidget::removeAttachment(int)
+	??1NmRecipientLineEdit@@UAE@XZ @ 106 NONAME ; NmRecipientLineEdit::~NmRecipientLineEdit(void)
+	?trUtf8@NmRecipientLineEdit@@SA?AVQString@@PBD0H@Z @ 107 NONAME ; class QString NmRecipientLineEdit::trUtf8(char const *, char const *, int)
+	?tr@NmRecipientLineEdit@@SA?AVQString@@PBD0H@Z @ 108 NONAME ; class QString NmRecipientLineEdit::tr(char const *, char const *, int)
+	?progressValue@NmAttachmentListWidget@@QBEHH@Z @ 109 NONAME ; int NmAttachmentListWidget::progressValue(int) const
+	?staticMetaObject@NmAttachmentListWidget@@2UQMetaObject@@B @ 110 NONAME ; struct QMetaObject const NmAttachmentListWidget::staticMetaObject
+	??_ENmAttachmentListWidget@@UAE@I@Z @ 111 NONAME ; NmAttachmentListWidget::~NmAttachmentListWidget(unsigned int)
+	?setTextCursor@NmHtmlLineEdit@@QAEXABVQTextCursor@@@Z @ 112 NONAME ; void NmHtmlLineEdit::setTextCursor(class QTextCursor const &)
+	?setTextColor@NmAttachmentListWidget@@QAEXVQColor@@@Z @ 113 NONAME ; void NmAttachmentListWidget::setTextColor(class QColor)
+	?handleMouseMoveEvent@NmBaseViewScrollArea@@IAEXPAVQGraphicsSceneMouseEvent@@@Z @ 114 NONAME ; void NmBaseViewScrollArea::handleMouseMoveEvent(class QGraphicsSceneMouseEvent *)
+	?staticMetaObject@NmRecipientLineEdit@@2UQMetaObject@@B @ 115 NONAME ; struct QMetaObject const NmRecipientLineEdit::staticMetaObject
+	?setProgressBarValue@NmAttachmentListWidget@@QAEXHH@Z @ 116 NONAME ; void NmAttachmentListWidget::setProgressBarValue(int, int)
+	?handleMouseReleaseEvent@NmBaseViewScrollArea@@IAEXPAVQGraphicsSceneMouseEvent@@@Z @ 117 NONAME ; void NmBaseViewScrollArea::handleMouseReleaseEvent(class QGraphicsSceneMouseEvent *)
+	?insertAttachment@NmAttachmentListWidget@@QAEXHABVQString@@0@Z @ 118 NONAME ; void NmAttachmentListWidget::insertAttachment(int, class QString const &, class QString const &)
+	?metaObject@NmAttachmentListItem@@UBEPBUQMetaObject@@XZ @ 119 NONAME ; struct QMetaObject const * NmAttachmentListItem::metaObject(void) const
+	?removeProgressBar@NmAttachmentListItem@@AAEXXZ @ 120 NONAME ; void NmAttachmentListItem::removeProgressBar(void)
+	??1NmBaseViewScrollArea@@UAE@XZ @ 121 NONAME ; NmBaseViewScrollArea::~NmBaseViewScrollArea(void)
+	?hideProgressBar@NmAttachmentListWidget@@QAEXH@Z @ 122 NONAME ; void NmAttachmentListWidget::hideProgressBar(int)
+	??0NmAttachmentListWidget@@QAE@PAVQGraphicsItem@@@Z @ 123 NONAME ; NmAttachmentListWidget::NmAttachmentListWidget(class QGraphicsItem *)
+	??_ENmHtmlLineEdit@@UAE@I@Z @ 124 NONAME ; NmHtmlLineEdit::~NmHtmlLineEdit(unsigned int)
+	?tr@NmAttachmentListWidget@@SA?AVQString@@PBD0H@Z @ 125 NONAME ; class QString NmAttachmentListWidget::tr(char const *, char const *, int)
+	?handleMousePressEvent@NmBaseViewScrollArea@@IAEXPAVQGraphicsSceneMouseEvent@@@Z @ 126 NONAME ; void NmBaseViewScrollArea::handleMousePressEvent(class QGraphicsSceneMouseEvent *)
+	?insertItemToLayout@NmAttachmentListWidget@@AAEXPAVNmAttachmentListItem@@@Z @ 127 NONAME ; void NmAttachmentListWidget::insertItemToLayout(class NmAttachmentListItem *)
+	?metaObject@NmHtmlLineEdit@@UBEPBUQMetaObject@@XZ @ 128 NONAME ; struct QMetaObject const * NmHtmlLineEdit::metaObject(void) const
+	?editorContentHeightChanged@NmEditorTextEdit@@IAEXXZ @ 129 NONAME ; void NmEditorTextEdit::editorContentHeightChanged(void)
+	?setTextColor@NmAttachmentListItem@@QAEXVQColor@@@Z @ 130 NONAME ; void NmAttachmentListItem::setTextColor(class QColor)
+	??1NmAttachmentListItem@@UAE@XZ @ 131 NONAME ; NmAttachmentListItem::~NmAttachmentListItem(void)
+	?count@NmAttachmentListWidget@@QBEHXZ @ 132 NONAME ; int NmAttachmentListWidget::count(void) const
+	?tr@NmAttachmentListItem@@SA?AVQString@@PBD0H@Z @ 133 NONAME ; class QString NmAttachmentListItem::tr(char const *, char const *, int)
+	?handleTextChanged@NmRecipientLineEdit@@AAEXABVQString@@@Z @ 134 NONAME ; void NmRecipientLineEdit::handleTextChanged(class QString const &)
+	?document@NmHtmlLineEdit@@QBEPAVQTextDocument@@XZ @ 135 NONAME ; class QTextDocument * NmHtmlLineEdit::document(void) const
+	?tr@NmHtmlLineEdit@@SA?AVQString@@PBD0@Z @ 136 NONAME ; class QString NmHtmlLineEdit::tr(char const *, char const *)
+	?qt_metacall@NmHtmlLineEdit@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 137 NONAME ; int NmHtmlLineEdit::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?qt_metacall@NmBaseViewScrollArea@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 138 NONAME ; int NmBaseViewScrollArea::qt_metacall(enum QMetaObject::Call, int, void * *)
 
--- a/emailuis/nmailuiwidgets/eabi/nmailuiwidgetsu.def	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiwidgets/eabi/nmailuiwidgetsu.def	Fri May 28 13:56:43 2010 +0300
@@ -17,162 +17,154 @@
 	_ZN16NmEditorTextEdit15setHeaderHeightEi @ 16 NONAME
 	_ZN16NmEditorTextEdit16staticMetaObjectE @ 17 NONAME DATA 16
 	_ZN16NmEditorTextEdit17setScrollPositionEii @ 18 NONAME
-	_ZN16NmEditorTextEdit18sendLongPressEventERK7QPointF @ 19 NONAME
-	_ZN16NmEditorTextEdit18sendMouseMoveEventEP24QGraphicsSceneMouseEvent @ 20 NONAME
-	_ZN16NmEditorTextEdit18setCustomTextColorERK5QPairIb6QColorE @ 21 NONAME
-	_ZN16NmEditorTextEdit18setCustomTextColorEbRK6QColor @ 22 NONAME
-	_ZN16NmEditorTextEdit18updateEditorHeightEv @ 23 NONAME
-	_ZN16NmEditorTextEdit19getStaticMetaObjectEv @ 24 NONAME
-	_ZN16NmEditorTextEdit19sendMousePressEventEP24QGraphicsSceneMouseEvent @ 25 NONAME
-	_ZN16NmEditorTextEdit20updateScrollPositionERK7QPointF @ 26 NONAME
-	_ZN16NmEditorTextEdit21sendMouseReleaseEventEP24QGraphicsSceneMouseEvent @ 27 NONAME
-	_ZN16NmEditorTextEdit21updateCustomTextColorEv @ 28 NONAME
-	_ZN16NmEditorTextEdit26editorContentHeightChangedEv @ 29 NONAME
-	_ZN16NmEditorTextEdit4initEP20NmBaseViewScrollArea @ 30 NONAME
-	_ZN16NmEditorTextEditC1EP13QGraphicsItem @ 31 NONAME
-	_ZN16NmEditorTextEditC2EP13QGraphicsItem @ 32 NONAME
-	_ZN16NmEditorTextEditD0Ev @ 33 NONAME
-	_ZN16NmEditorTextEditD1Ev @ 34 NONAME
-	_ZN16NmEditorTextEditD2Ev @ 35 NONAME
-	_ZN19NmRecipientLineEdit11qt_metacallEN11QMetaObject4CallEiPPv @ 36 NONAME
-	_ZN19NmRecipientLineEdit11qt_metacastEPKc @ 37 NONAME
-	_ZN19NmRecipientLineEdit13keyPressEventEP9QKeyEvent @ 38 NONAME
-	_ZN19NmRecipientLineEdit16emailAddressListEv @ 39 NONAME
-	_ZN19NmRecipientLineEdit16inputMethodEventEP17QInputMethodEvent @ 40 NONAME
-	_ZN19NmRecipientLineEdit16staticMetaObjectE @ 41 NONAME DATA 16
-	_ZN19NmRecipientLineEdit17handleTextChangedERK7QString @ 42 NONAME
-	_ZN19NmRecipientLineEdit19getStaticMetaObjectEv @ 43 NONAME
-	_ZN19NmRecipientLineEdit22insertSelectedContactsERK8QVariant @ 44 NONAME
-	_ZN19NmRecipientLineEdit24generateEmailAddressListEv @ 45 NONAME
-	_ZN19NmRecipientLineEditC1EP13QGraphicsItem @ 46 NONAME
-	_ZN19NmRecipientLineEditC2EP13QGraphicsItem @ 47 NONAME
-	_ZN19NmRecipientLineEditD0Ev @ 48 NONAME
-	_ZN19NmRecipientLineEditD1Ev @ 49 NONAME
-	_ZN19NmRecipientLineEditD2Ev @ 50 NONAME
-	_ZN20NmAttachmentListItem10screenSizeEN2Qt11OrientationE @ 51 NONAME
-	_ZN20NmAttachmentListItem11constructUiEv @ 52 NONAME
-	_ZN20NmAttachmentListItem11qt_metacallEN11QMetaObject4CallEiPPv @ 53 NONAME
-	_ZN20NmAttachmentListItem11qt_metacastEPKc @ 54 NONAME
-	_ZN20NmAttachmentListItem12setTextColorE6QColor @ 55 NONAME
-	_ZN20NmAttachmentListItem13itemActivatedEv @ 56 NONAME
-	_ZN20NmAttachmentListItem15hideProgressBarEv @ 57 NONAME
-	_ZN20NmAttachmentListItem15itemLongPressedE7QPointF @ 58 NONAME
-	_ZN20NmAttachmentListItem15mousePressEventEP24QGraphicsSceneMouseEvent @ 59 NONAME
-	_ZN20NmAttachmentListItem15setFileNameTextERK7QString @ 60 NONAME
-	_ZN20NmAttachmentListItem15setFileSizeTextERK7QString @ 61 NONAME
-	_ZN20NmAttachmentListItem16staticMetaObjectE @ 62 NONAME DATA 16
-	_ZN20NmAttachmentListItem17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 63 NONAME
-	_ZN20NmAttachmentListItem17removeProgressBarEv @ 64 NONAME
-	_ZN20NmAttachmentListItem19getStaticMetaObjectEv @ 65 NONAME
-	_ZN20NmAttachmentListItem19resetFileNameLengthEN2Qt11OrientationE @ 66 NONAME
-	_ZN20NmAttachmentListItem19setProgressBarValueEi @ 67 NONAME
-	_ZN20NmAttachmentListItem20longPressedActivatedEv @ 68 NONAME
-	_ZN20NmAttachmentListItem4initEv @ 69 NONAME
-	_ZN20NmAttachmentListItemC1EP13QGraphicsItem @ 70 NONAME
-	_ZN20NmAttachmentListItemC2EP13QGraphicsItem @ 71 NONAME
-	_ZN20NmAttachmentListItemD0Ev @ 72 NONAME
-	_ZN20NmAttachmentListItemD1Ev @ 73 NONAME
-	_ZN20NmAttachmentListItemD2Ev @ 74 NONAME
-	_ZN20NmBaseViewScrollArea11qt_metacallEN11QMetaObject4CallEiPPv @ 75 NONAME
-	_ZN20NmBaseViewScrollArea11qt_metacastEPKc @ 76 NONAME
-	_ZN20NmBaseViewScrollArea14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 77 NONAME
-	_ZN20NmBaseViewScrollArea15mousePressEventEP24QGraphicsSceneMouseEvent @ 78 NONAME
-	_ZN20NmBaseViewScrollArea16longPressGestureERK7QPointF @ 79 NONAME
-	_ZN20NmBaseViewScrollArea16staticMetaObjectE @ 80 NONAME DATA 16
-	_ZN20NmBaseViewScrollArea17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 81 NONAME
-	_ZN20NmBaseViewScrollArea19getStaticMetaObjectEv @ 82 NONAME
-	_ZN20NmBaseViewScrollArea20handleMouseMoveEventEP24QGraphicsSceneMouseEvent @ 83 NONAME
-	_ZN20NmBaseViewScrollArea21handleMousePressEventEP24QGraphicsSceneMouseEvent @ 84 NONAME
-	_ZN20NmBaseViewScrollArea22handleLongPressGestureERK7QPointF @ 85 NONAME
-	_ZN20NmBaseViewScrollArea23handleMouseReleaseEventEP24QGraphicsSceneMouseEvent @ 86 NONAME
-	_ZN20NmBaseViewScrollAreaC1EP13QGraphicsItem @ 87 NONAME
-	_ZN20NmBaseViewScrollAreaC2EP13QGraphicsItem @ 88 NONAME
-	_ZN20NmBaseViewScrollAreaD0Ev @ 89 NONAME
-	_ZN20NmBaseViewScrollAreaD1Ev @ 90 NONAME
-	_ZN20NmBaseViewScrollAreaD2Ev @ 91 NONAME
-	_ZN22NmAttachmentListWidget11constructUiEv @ 92 NONAME
-	_ZN22NmAttachmentListWidget11longPressedEi7QPointF @ 93 NONAME
-	_ZN22NmAttachmentListWidget11qt_metacallEN11QMetaObject4CallEiPPv @ 94 NONAME
-	_ZN22NmAttachmentListWidget11qt_metacastEPKc @ 95 NONAME
-	_ZN22NmAttachmentListWidget12setTextColorE6QColor @ 96 NONAME
-	_ZN22NmAttachmentListWidget13itemActivatedEi @ 97 NONAME
-	_ZN22NmAttachmentListWidget15hideProgressBarEi @ 98 NONAME
-	_ZN22NmAttachmentListWidget15rearrangeLayoutEv @ 99 NONAME
-	_ZN22NmAttachmentListWidget16insertAttachmentEiRK7QStringS2_ @ 100 NONAME
-	_ZN22NmAttachmentListWidget16removeAttachmentEi @ 101 NONAME
-	_ZN22NmAttachmentListWidget16staticMetaObjectE @ 102 NONAME DATA 16
-	_ZN22NmAttachmentListWidget17handleLongPressedE7QPointF @ 103 NONAME
-	_ZN22NmAttachmentListWidget17setAttachmentSizeEiRK7QString @ 104 NONAME
-	_ZN22NmAttachmentListWidget18insertItemToLayoutEP20NmAttachmentListItem @ 105 NONAME
-	_ZN22NmAttachmentListWidget18orientationChangedEN2Qt11OrientationE @ 106 NONAME
-	_ZN22NmAttachmentListWidget19getStaticMetaObjectEv @ 107 NONAME
-	_ZN22NmAttachmentListWidget19handleItemActivatedEv @ 108 NONAME
-	_ZN22NmAttachmentListWidget19setProgressBarValueEii @ 109 NONAME
-	_ZN22NmAttachmentListWidget4initEv @ 110 NONAME
-	_ZN22NmAttachmentListWidget5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 111 NONAME
-	_ZN22NmAttachmentListWidget8findItemEPK7QObject @ 112 NONAME
-	_ZN22NmAttachmentListWidgetC1EP13QGraphicsItem @ 113 NONAME
-	_ZN22NmAttachmentListWidgetC2EP13QGraphicsItem @ 114 NONAME
-	_ZN22NmAttachmentListWidgetD0Ev @ 115 NONAME
-	_ZN22NmAttachmentListWidgetD1Ev @ 116 NONAME
-	_ZN22NmAttachmentListWidgetD2Ev @ 117 NONAME
-	_ZNK14NmHtmlLineEdit10metaObjectEv @ 118 NONAME
-	_ZNK14NmHtmlLineEdit10textCursorEv @ 119 NONAME
-	_ZNK14NmHtmlLineEdit11toPlainTextEv @ 120 NONAME
-	_ZNK14NmHtmlLineEdit6toHtmlEv @ 121 NONAME
-	_ZNK14NmHtmlLineEdit8documentEv @ 122 NONAME
-	_ZNK16NmEditorTextEdit10metaObjectEv @ 123 NONAME
-	_ZNK16NmEditorTextEdit13contentHeightEv @ 124 NONAME
-	_ZNK16NmEditorTextEdit15customTextColorEv @ 125 NONAME
-	_ZNK19NmRecipientLineEdit10metaObjectEv @ 126 NONAME
-	_ZNK20NmAttachmentListItem10metaObjectEv @ 127 NONAME
-	_ZNK20NmAttachmentListItem16progressBarValueEv @ 128 NONAME
-	_ZNK20NmBaseViewScrollArea10metaObjectEv @ 129 NONAME
-	_ZNK22NmAttachmentListWidget10metaObjectEv @ 130 NONAME
-	_ZNK22NmAttachmentListWidget13progressValueEi @ 131 NONAME
-	_ZNK22NmAttachmentListWidget5countEv @ 132 NONAME
-	_ZTI14NmHtmlLineEdit @ 133 NONAME
-	_ZTI16NmEditorTextEdit @ 134 NONAME
-	_ZTI19NmRecipientLineEdit @ 135 NONAME
-	_ZTI20NmAttachmentListItem @ 136 NONAME
-	_ZTI20NmBaseViewScrollArea @ 137 NONAME
-	_ZTI22NmAttachmentListWidget @ 138 NONAME
-	_ZTV14NmHtmlLineEdit @ 139 NONAME
-	_ZTV16NmEditorTextEdit @ 140 NONAME
-	_ZTV19NmRecipientLineEdit @ 141 NONAME
-	_ZTV20NmAttachmentListItem @ 142 NONAME
-	_ZTV20NmBaseViewScrollArea @ 143 NONAME
-	_ZTV22NmAttachmentListWidget @ 144 NONAME
-	_ZThn16_N14NmHtmlLineEditD0Ev @ 145 NONAME
-	_ZThn16_N14NmHtmlLineEditD1Ev @ 146 NONAME
-	_ZThn16_N16NmEditorTextEditD0Ev @ 147 NONAME
-	_ZThn16_N16NmEditorTextEditD1Ev @ 148 NONAME
-	_ZThn16_N19NmRecipientLineEditD0Ev @ 149 NONAME
-	_ZThn16_N19NmRecipientLineEditD1Ev @ 150 NONAME
-	_ZThn16_N20NmAttachmentListItemD0Ev @ 151 NONAME
-	_ZThn16_N20NmAttachmentListItemD1Ev @ 152 NONAME
-	_ZThn16_N20NmBaseViewScrollAreaD0Ev @ 153 NONAME
-	_ZThn16_N20NmBaseViewScrollAreaD1Ev @ 154 NONAME
-	_ZThn16_N22NmAttachmentListWidgetD0Ev @ 155 NONAME
-	_ZThn16_N22NmAttachmentListWidgetD1Ev @ 156 NONAME
-	_ZThn8_N14NmHtmlLineEditD0Ev @ 157 NONAME
-	_ZThn8_N14NmHtmlLineEditD1Ev @ 158 NONAME
-	_ZThn8_N16NmEditorTextEditD0Ev @ 159 NONAME
-	_ZThn8_N16NmEditorTextEditD1Ev @ 160 NONAME
-	_ZThn8_N19NmRecipientLineEdit13keyPressEventEP9QKeyEvent @ 161 NONAME
-	_ZThn8_N19NmRecipientLineEdit16inputMethodEventEP17QInputMethodEvent @ 162 NONAME
-	_ZThn8_N19NmRecipientLineEditD0Ev @ 163 NONAME
-	_ZThn8_N19NmRecipientLineEditD1Ev @ 164 NONAME
-	_ZThn8_N20NmAttachmentListItem15mousePressEventEP24QGraphicsSceneMouseEvent @ 165 NONAME
-	_ZThn8_N20NmAttachmentListItem17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 166 NONAME
-	_ZThn8_N20NmAttachmentListItemD0Ev @ 167 NONAME
-	_ZThn8_N20NmAttachmentListItemD1Ev @ 168 NONAME
-	_ZThn8_N20NmBaseViewScrollArea14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 169 NONAME
-	_ZThn8_N20NmBaseViewScrollArea15mousePressEventEP24QGraphicsSceneMouseEvent @ 170 NONAME
-	_ZThn8_N20NmBaseViewScrollArea17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 171 NONAME
-	_ZThn8_N20NmBaseViewScrollAreaD0Ev @ 172 NONAME
-	_ZThn8_N20NmBaseViewScrollAreaD1Ev @ 173 NONAME
-	_ZThn8_N22NmAttachmentListWidget5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 174 NONAME
-	_ZThn8_N22NmAttachmentListWidgetD0Ev @ 175 NONAME
-	_ZThn8_N22NmAttachmentListWidgetD1Ev @ 176 NONAME
+	_ZN16NmEditorTextEdit18setCustomTextColorERK5QPairIb6QColorE @ 19 NONAME
+	_ZN16NmEditorTextEdit18setCustomTextColorEbRK6QColor @ 20 NONAME
+	_ZN16NmEditorTextEdit18updateEditorHeightEv @ 21 NONAME
+	_ZN16NmEditorTextEdit19getStaticMetaObjectEv @ 22 NONAME
+	_ZN16NmEditorTextEdit20updateScrollPositionERK7QPointF @ 23 NONAME
+	_ZN16NmEditorTextEdit21updateCustomTextColorEv @ 24 NONAME
+	_ZN16NmEditorTextEdit26editorContentHeightChangedEv @ 25 NONAME
+	_ZN16NmEditorTextEdit4initEP20NmBaseViewScrollArea @ 26 NONAME
+	_ZN16NmEditorTextEditC1EP13QGraphicsItem @ 27 NONAME
+	_ZN16NmEditorTextEditC2EP13QGraphicsItem @ 28 NONAME
+	_ZN16NmEditorTextEditD0Ev @ 29 NONAME
+	_ZN16NmEditorTextEditD1Ev @ 30 NONAME
+	_ZN16NmEditorTextEditD2Ev @ 31 NONAME
+	_ZN19NmRecipientLineEdit11qt_metacallEN11QMetaObject4CallEiPPv @ 32 NONAME
+	_ZN19NmRecipientLineEdit11qt_metacastEPKc @ 33 NONAME
+	_ZN19NmRecipientLineEdit13keyPressEventEP9QKeyEvent @ 34 NONAME
+	_ZN19NmRecipientLineEdit16emailAddressListEv @ 35 NONAME
+	_ZN19NmRecipientLineEdit16inputMethodEventEP17QInputMethodEvent @ 36 NONAME
+	_ZN19NmRecipientLineEdit16staticMetaObjectE @ 37 NONAME DATA 16
+	_ZN19NmRecipientLineEdit17handleTextChangedERK7QString @ 38 NONAME
+	_ZN19NmRecipientLineEdit19getStaticMetaObjectEv @ 39 NONAME
+	_ZN19NmRecipientLineEdit22insertSelectedContactsERK8QVariant @ 40 NONAME
+	_ZN19NmRecipientLineEdit24generateEmailAddressListEv @ 41 NONAME
+	_ZN19NmRecipientLineEditC1EP13QGraphicsItem @ 42 NONAME
+	_ZN19NmRecipientLineEditC2EP13QGraphicsItem @ 43 NONAME
+	_ZN19NmRecipientLineEditD0Ev @ 44 NONAME
+	_ZN19NmRecipientLineEditD1Ev @ 45 NONAME
+	_ZN19NmRecipientLineEditD2Ev @ 46 NONAME
+	_ZN20NmAttachmentListItem10screenSizeEN2Qt11OrientationE @ 47 NONAME
+	_ZN20NmAttachmentListItem11constructUiEv @ 48 NONAME
+	_ZN20NmAttachmentListItem11qt_metacallEN11QMetaObject4CallEiPPv @ 49 NONAME
+	_ZN20NmAttachmentListItem11qt_metacastEPKc @ 50 NONAME
+	_ZN20NmAttachmentListItem12gestureEventEP13QGestureEvent @ 51 NONAME
+	_ZN20NmAttachmentListItem12setTextColorE6QColor @ 52 NONAME
+	_ZN20NmAttachmentListItem13itemActivatedEv @ 53 NONAME
+	_ZN20NmAttachmentListItem15hideProgressBarEv @ 54 NONAME
+	_ZN20NmAttachmentListItem15itemLongPressedE7QPointF @ 55 NONAME
+	_ZN20NmAttachmentListItem15setFileNameTextERK7QString @ 56 NONAME
+	_ZN20NmAttachmentListItem15setFileSizeTextERK7QString @ 57 NONAME
+	_ZN20NmAttachmentListItem16staticMetaObjectE @ 58 NONAME DATA 16
+	_ZN20NmAttachmentListItem17removeProgressBarEv @ 59 NONAME
+	_ZN20NmAttachmentListItem19getStaticMetaObjectEv @ 60 NONAME
+	_ZN20NmAttachmentListItem19resetFileNameLengthEN2Qt11OrientationE @ 61 NONAME
+	_ZN20NmAttachmentListItem19setProgressBarValueEi @ 62 NONAME
+	_ZN20NmAttachmentListItem4initEv @ 63 NONAME
+	_ZN20NmAttachmentListItemC1EP13QGraphicsItem @ 64 NONAME
+	_ZN20NmAttachmentListItemC2EP13QGraphicsItem @ 65 NONAME
+	_ZN20NmAttachmentListItemD0Ev @ 66 NONAME
+	_ZN20NmAttachmentListItemD1Ev @ 67 NONAME
+	_ZN20NmAttachmentListItemD2Ev @ 68 NONAME
+	_ZN20NmBaseViewScrollArea11qt_metacallEN11QMetaObject4CallEiPPv @ 69 NONAME
+	_ZN20NmBaseViewScrollArea11qt_metacastEPKc @ 70 NONAME
+	_ZN20NmBaseViewScrollArea14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 71 NONAME
+	_ZN20NmBaseViewScrollArea15mousePressEventEP24QGraphicsSceneMouseEvent @ 72 NONAME
+	_ZN20NmBaseViewScrollArea16longPressGestureERK7QPointF @ 73 NONAME
+	_ZN20NmBaseViewScrollArea16staticMetaObjectE @ 74 NONAME DATA 16
+	_ZN20NmBaseViewScrollArea17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 75 NONAME
+	_ZN20NmBaseViewScrollArea19getStaticMetaObjectEv @ 76 NONAME
+	_ZN20NmBaseViewScrollArea20handleMouseMoveEventEP24QGraphicsSceneMouseEvent @ 77 NONAME
+	_ZN20NmBaseViewScrollArea21handleMousePressEventEP24QGraphicsSceneMouseEvent @ 78 NONAME
+	_ZN20NmBaseViewScrollArea22handleLongPressGestureERK7QPointF @ 79 NONAME
+	_ZN20NmBaseViewScrollArea23handleMouseReleaseEventEP24QGraphicsSceneMouseEvent @ 80 NONAME
+	_ZN20NmBaseViewScrollAreaC1EP13QGraphicsItem @ 81 NONAME
+	_ZN20NmBaseViewScrollAreaC2EP13QGraphicsItem @ 82 NONAME
+	_ZN20NmBaseViewScrollAreaD0Ev @ 83 NONAME
+	_ZN20NmBaseViewScrollAreaD1Ev @ 84 NONAME
+	_ZN20NmBaseViewScrollAreaD2Ev @ 85 NONAME
+	_ZN22NmAttachmentListWidget11constructUiEv @ 86 NONAME
+	_ZN22NmAttachmentListWidget11longPressedEi7QPointF @ 87 NONAME
+	_ZN22NmAttachmentListWidget11qt_metacallEN11QMetaObject4CallEiPPv @ 88 NONAME
+	_ZN22NmAttachmentListWidget11qt_metacastEPKc @ 89 NONAME
+	_ZN22NmAttachmentListWidget12setTextColorE6QColor @ 90 NONAME
+	_ZN22NmAttachmentListWidget13itemActivatedEi @ 91 NONAME
+	_ZN22NmAttachmentListWidget15hideProgressBarEi @ 92 NONAME
+	_ZN22NmAttachmentListWidget15rearrangeLayoutEv @ 93 NONAME
+	_ZN22NmAttachmentListWidget16insertAttachmentEiRK7QStringS2_ @ 94 NONAME
+	_ZN22NmAttachmentListWidget16removeAttachmentEi @ 95 NONAME
+	_ZN22NmAttachmentListWidget16staticMetaObjectE @ 96 NONAME DATA 16
+	_ZN22NmAttachmentListWidget17handleLongPressedE7QPointF @ 97 NONAME
+	_ZN22NmAttachmentListWidget17setAttachmentSizeEiRK7QString @ 98 NONAME
+	_ZN22NmAttachmentListWidget18insertItemToLayoutEP20NmAttachmentListItem @ 99 NONAME
+	_ZN22NmAttachmentListWidget18orientationChangedEN2Qt11OrientationE @ 100 NONAME
+	_ZN22NmAttachmentListWidget19getStaticMetaObjectEv @ 101 NONAME
+	_ZN22NmAttachmentListWidget19handleItemActivatedEv @ 102 NONAME
+	_ZN22NmAttachmentListWidget19setProgressBarValueEii @ 103 NONAME
+	_ZN22NmAttachmentListWidget4initEv @ 104 NONAME
+	_ZN22NmAttachmentListWidget5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 105 NONAME
+	_ZN22NmAttachmentListWidget8findItemEPK7QObject @ 106 NONAME
+	_ZN22NmAttachmentListWidgetC1EP13QGraphicsItem @ 107 NONAME
+	_ZN22NmAttachmentListWidgetC2EP13QGraphicsItem @ 108 NONAME
+	_ZN22NmAttachmentListWidgetD0Ev @ 109 NONAME
+	_ZN22NmAttachmentListWidgetD1Ev @ 110 NONAME
+	_ZN22NmAttachmentListWidgetD2Ev @ 111 NONAME
+	_ZNK14NmHtmlLineEdit10metaObjectEv @ 112 NONAME
+	_ZNK14NmHtmlLineEdit10textCursorEv @ 113 NONAME
+	_ZNK14NmHtmlLineEdit11toPlainTextEv @ 114 NONAME
+	_ZNK14NmHtmlLineEdit6toHtmlEv @ 115 NONAME
+	_ZNK14NmHtmlLineEdit8documentEv @ 116 NONAME
+	_ZNK16NmEditorTextEdit10metaObjectEv @ 117 NONAME
+	_ZNK16NmEditorTextEdit13contentHeightEv @ 118 NONAME
+	_ZNK16NmEditorTextEdit15customTextColorEv @ 119 NONAME
+	_ZNK19NmRecipientLineEdit10metaObjectEv @ 120 NONAME
+	_ZNK20NmAttachmentListItem10metaObjectEv @ 121 NONAME
+	_ZNK20NmAttachmentListItem16progressBarValueEv @ 122 NONAME
+	_ZNK20NmBaseViewScrollArea10metaObjectEv @ 123 NONAME
+	_ZNK22NmAttachmentListWidget10metaObjectEv @ 124 NONAME
+	_ZNK22NmAttachmentListWidget13progressValueEi @ 125 NONAME
+	_ZNK22NmAttachmentListWidget5countEv @ 126 NONAME
+	_ZTI14NmHtmlLineEdit @ 127 NONAME
+	_ZTI16NmEditorTextEdit @ 128 NONAME
+	_ZTI19NmRecipientLineEdit @ 129 NONAME
+	_ZTI20NmAttachmentListItem @ 130 NONAME
+	_ZTI20NmBaseViewScrollArea @ 131 NONAME
+	_ZTI22NmAttachmentListWidget @ 132 NONAME
+	_ZTV14NmHtmlLineEdit @ 133 NONAME
+	_ZTV16NmEditorTextEdit @ 134 NONAME
+	_ZTV19NmRecipientLineEdit @ 135 NONAME
+	_ZTV20NmAttachmentListItem @ 136 NONAME
+	_ZTV20NmBaseViewScrollArea @ 137 NONAME
+	_ZTV22NmAttachmentListWidget @ 138 NONAME
+	_ZThn16_N14NmHtmlLineEditD0Ev @ 139 NONAME
+	_ZThn16_N14NmHtmlLineEditD1Ev @ 140 NONAME
+	_ZThn16_N16NmEditorTextEditD0Ev @ 141 NONAME
+	_ZThn16_N16NmEditorTextEditD1Ev @ 142 NONAME
+	_ZThn16_N19NmRecipientLineEditD0Ev @ 143 NONAME
+	_ZThn16_N19NmRecipientLineEditD1Ev @ 144 NONAME
+	_ZThn16_N20NmAttachmentListItemD0Ev @ 145 NONAME
+	_ZThn16_N20NmAttachmentListItemD1Ev @ 146 NONAME
+	_ZThn16_N20NmBaseViewScrollAreaD0Ev @ 147 NONAME
+	_ZThn16_N20NmBaseViewScrollAreaD1Ev @ 148 NONAME
+	_ZThn16_N22NmAttachmentListWidgetD0Ev @ 149 NONAME
+	_ZThn16_N22NmAttachmentListWidgetD1Ev @ 150 NONAME
+	_ZThn8_N14NmHtmlLineEditD0Ev @ 151 NONAME
+	_ZThn8_N14NmHtmlLineEditD1Ev @ 152 NONAME
+	_ZThn8_N16NmEditorTextEditD0Ev @ 153 NONAME
+	_ZThn8_N16NmEditorTextEditD1Ev @ 154 NONAME
+	_ZThn8_N19NmRecipientLineEdit13keyPressEventEP9QKeyEvent @ 155 NONAME
+	_ZThn8_N19NmRecipientLineEdit16inputMethodEventEP17QInputMethodEvent @ 156 NONAME
+	_ZThn8_N19NmRecipientLineEditD0Ev @ 157 NONAME
+	_ZThn8_N19NmRecipientLineEditD1Ev @ 158 NONAME
+	_ZThn8_N20NmAttachmentListItemD0Ev @ 159 NONAME
+	_ZThn8_N20NmAttachmentListItemD1Ev @ 160 NONAME
+	_ZThn8_N20NmBaseViewScrollArea14mouseMoveEventEP24QGraphicsSceneMouseEvent @ 161 NONAME
+	_ZThn8_N20NmBaseViewScrollArea15mousePressEventEP24QGraphicsSceneMouseEvent @ 162 NONAME
+	_ZThn8_N20NmBaseViewScrollArea17mouseReleaseEventEP24QGraphicsSceneMouseEvent @ 163 NONAME
+	_ZThn8_N20NmBaseViewScrollAreaD0Ev @ 164 NONAME
+	_ZThn8_N20NmBaseViewScrollAreaD1Ev @ 165 NONAME
+	_ZThn8_N22NmAttachmentListWidget5paintEP8QPainterPK24QStyleOptionGraphicsItemP7QWidget @ 166 NONAME
+	_ZThn8_N22NmAttachmentListWidgetD0Ev @ 167 NONAME
+	_ZThn8_N22NmAttachmentListWidgetD1Ev @ 168 NONAME
 
--- a/emailuis/nmailuiwidgets/inc/nmailuiwidgetsheaders.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiwidgets/inc/nmailuiwidgetsheaders.h	Fri May 28 13:56:43 2010 +0300
@@ -32,7 +32,6 @@
 #include <xqservicerequest.h>
 #include <qtcontacts.h>
 #include <qmobilityglobal.h>
-#include <mobcntmodel.h>
 #include <xqserviceutil.h>
 #include <xqappmgr.h>
 #include <xqserviceipcmarshal.h>
@@ -47,6 +46,7 @@
 #include <hbdocumentloader.h>
 #include <hbinstance.h>
 #include <hbcolorscheme.h>
+#include <hbtapgesture.h>
 
 // nmail
 #include <nmaddress.h>
--- a/emailuis/nmailuiwidgets/inc/nmattachmentlistitem.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiwidgets/inc/nmattachmentlistitem.h	Fri May 28 13:56:43 2010 +0300
@@ -24,7 +24,7 @@
 
 class HbProgressBar;
 class HbTextItem;
-class QTimer;
+class HbTapGesture;
 
 class NMAILUIWIDGETS_EXPORT NmAttachmentListItem : public HbWidget
 {
@@ -42,12 +42,10 @@
     void hideProgressBar();
 
 protected: 
-    void mousePressEvent( QGraphicsSceneMouseEvent *event );
-    void mouseReleaseEvent( QGraphicsSceneMouseEvent *event );
+    virtual void gestureEvent(QGestureEvent *event);
     
 private slots:
     void removeProgressBar();
-    void longPressedActivated();
 
 signals: 
     void itemActivated();
@@ -63,9 +61,6 @@
     HbTextItem *mFileNameText; //owned
     HbTextItem *mFileSizeText; //owned
     HbProgressBar *mProgressBar; //owned
-    QTimer *mTimer; //owned
-    bool mButtonPressed;
-    QPointF mLongPressedPoint;
     QColor mTextColor;
 };
 
--- a/emailuis/nmailuiwidgets/inc/nmeditortextedit.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiwidgets/inc/nmeditortextedit.h	Fri May 28 13:56:43 2010 +0300
@@ -36,10 +36,6 @@
     void init(NmBaseViewScrollArea *bgScrollArea);
     qreal contentHeight() const;
 
-    void sendMousePressEvent(QGraphicsSceneMouseEvent *event);
-    void sendMouseReleaseEvent(QGraphicsSceneMouseEvent *event);
-    void sendMouseMoveEvent(QGraphicsSceneMouseEvent *event);
-    void sendLongPressEvent(const QPointF &point);
     void setCustomTextColor(const QPair<bool, QColor> &customColor);
     void setCustomTextColor(bool useCustom, const QColor& color = Qt::black);
     QPair<bool, QColor> customTextColor() const;
--- a/emailuis/nmailuiwidgets/inc/nmrecipientlineedit.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiwidgets/inc/nmrecipientlineedit.h	Fri May 28 13:56:43 2010 +0300
@@ -54,12 +54,12 @@
 
 private:
     // mEmailAddressList contains all emailaddress that appear in the lineedit and 
-    // all emailaddress corresponding to the name inserted from PhoneBook,
-    // including invalid emailaddress user typed or invalid emailaddress picked from PhoneBook.
+    // all emailaddress corresponding to the contact's name added from Contacts,
+    // including invalid emailaddress user typed or invalid emailaddress added from Contacts.
     // Emailaddress validation check is conducted in nmeditorview.
     QList<NmAddress> mEmailAddressList; 
 	
-    QList<NmAddress> mContactsSelectedFromPhoneBook;
+    QList<NmAddress> mRecipientsAddedFromContacts;
 	
     // Flag "need to generate mEmailAddressList" is used whenever editing made after 
     // the emailaddress validation check failed.
--- a/emailuis/nmailuiwidgets/nmailuiwidgets.pro	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiwidgets/nmailuiwidgets.pro	Fri May 28 13:56:43 2010 +0300
@@ -42,8 +42,7 @@
     LIBS += -lnmailbase \
             -lxqservice \
             -lxqserviceutil \
-            -lqtcontacts \
-            -lmobcntmodel
+            -lqtcontacts
 
     defBlock = \      
       "$${LITERAL_HASH}if defined(MARM)" \
--- a/emailuis/nmailuiwidgets/src/nmattachmentlistitem.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiwidgets/src/nmattachmentlistitem.cpp	Fri May 28 13:56:43 2010 +0300
@@ -23,7 +23,6 @@
 static const int PROGRESSBAR_MIN = 0; 
 static const int PROGRESSBAR_MAX = 100;
 static const int PROGRESSBAR_HIDE_COUNTDOWN = 500;
-static const int LONGPRESS_TIMER = 2000;
 
 // Hardcoded file size length. Maximum (999.9 Mb) fits into size field.
 static const int FILE_SIZE_FIELD_LENGTH = 120;
@@ -47,12 +46,15 @@
     : HbWidget( parent ),
       mFileNameText(NULL),
       mFileSizeText(NULL),
-      mProgressBar(NULL),
-      mTimer(NULL),
-      mButtonPressed(false),
-      mLongPressedPoint(0,0)
+      mProgressBar(NULL)
 {
+    NM_FUNCTION;
+    
     init( );
+	
+    // Informs GestureFramework that NmAttachmentListItem widget is interested 
+    // Tap gesture and TapAndHold gesture.
+    grabGesture(Qt::TapGesture);
 }
 
 /*!
@@ -61,6 +63,8 @@
  */
 void NmAttachmentListItem::setTextColor(const QColor color)
 {
+    NM_FUNCTION;
+    
     mTextColor=color;
 }
 
@@ -69,11 +73,10 @@
  */
 NmAttachmentListItem::~NmAttachmentListItem( )
 {
+    NM_FUNCTION;
+    
     HbStyleLoader::unregisterFilePath(FILE_PATH_WIDGETML);
     HbStyleLoader::unregisterFilePath(FILE_PATH_CSS);
-    
-    delete mTimer;
-    mTimer = NULL; 
 }
 
 /*!
@@ -81,6 +84,8 @@
  */
 void NmAttachmentListItem::setFileNameText(const QString &fileName)
 {
+    NM_FUNCTION;
+    
     if (mFileNameText){
         if (mTextColor.isValid()){
             mFileNameText->setTextColor(mTextColor);
@@ -95,6 +100,8 @@
  */
 void NmAttachmentListItem::setFileSizeText(const QString &fileSize)
 {
+    NM_FUNCTION;
+    
     if (mFileSizeText){
         if (mTextColor.isValid()){
             mFileSizeText->setTextColor(mTextColor);
@@ -109,6 +116,8 @@
  */
 void NmAttachmentListItem::resetFileNameLength(Qt::Orientation orientation)
 {
+    NM_FUNCTION;
+    
 	QSizeF reso = screenSize(orientation);
 	
 	if (orientation == Qt::Horizontal) {
@@ -124,6 +133,8 @@
  */
 void NmAttachmentListItem::setProgressBarValue(const int value)
 {
+    NM_FUNCTION;
+    
     //first check if value is 0 or below -> hide progressbar
     if ( 0 >= value ){
         removeProgressBar();
@@ -150,6 +161,8 @@
 */
 int NmAttachmentListItem::progressBarValue() const
 {
+    NM_FUNCTION;
+    
     int ret = 0;
     if ( mProgressBar ){
         ret = mProgressBar->progressValue();
@@ -163,6 +176,8 @@
 */
 void NmAttachmentListItem::hideProgressBar()
 {
+    NM_FUNCTION;
+    
     QTimer::singleShot(PROGRESSBAR_HIDE_COUNTDOWN,this, SLOT(removeProgressBar()));
 }
 
@@ -171,16 +186,13 @@
 */
 void NmAttachmentListItem::init( )
 {
+    NM_FUNCTION;
+    
     constructUi();
 
     //set default values
     setFlag(QGraphicsItem::ItemIsFocusable);
     setFlag(QGraphicsItem::ItemIsSelectable);
-
-    //set temporary longpress timer
-    mTimer = new QTimer(this);
-    mTimer->setSingleShot(true);
-    connect(mTimer, SIGNAL(timeout()), this, SLOT(longPressedActivated()));
 }
 
 /*!
@@ -188,6 +200,8 @@
 */
 void NmAttachmentListItem::constructUi()
 {
+    NM_FUNCTION;
+    
     //construct default ui.    
     HbStyleLoader::registerFilePath(FILE_PATH_WIDGETML);
     HbStyleLoader::registerFilePath(FILE_PATH_CSS);
@@ -205,38 +219,12 @@
 
 
 /*!
-    \reimp
- */
-void NmAttachmentListItem::mousePressEvent( QGraphicsSceneMouseEvent *event )
-{
-    NMLOG("NmAttachmentListItem::mousePressEvent");
-
-    mButtonPressed = true;
-    mLongPressedPoint = event->scenePos();
-    if(mTimer){
-        mTimer->start(LONGPRESS_TIMER);        
-    }
-}
-
-/*!
-    \reimp
- */
-void NmAttachmentListItem::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
-{
-    Q_UNUSED(event);
-    NMLOG("NmAttachmentListItem::mouseReleasedEvent");
-    if ( mTimer && mButtonPressed ){
-        emit itemActivated();
-        mButtonPressed = false;
-        mTimer->stop();
-    }
-}
-
-/*!
     Hides the download progress bar
  */
 void NmAttachmentListItem::removeProgressBar()
 {
+    NM_FUNCTION;
+    
 	if ( mProgressBar ){
 	    HbStyle::setItemName( mProgressBar, "" );
 	    mProgressBar->deleteLater();
@@ -245,18 +233,6 @@
 	}
 }
 
-/*!
-
- */
-void NmAttachmentListItem::longPressedActivated()
-{
-    //check first if button is not released already
-    if ( mButtonPressed ){
-        NMLOG("NmAttachmentListItem::longPressedActivated");
-        emit itemLongPressed(mLongPressedPoint);
-        mButtonPressed = false;
-    }
-}
 
 /*!
     This function returns screen size depending on the orientation.
@@ -264,6 +240,8 @@
  */
 QSize NmAttachmentListItem::screenSize(Qt::Orientation orientation)
 {
+    NM_FUNCTION;
+    
     QSize ret(0,0);
     HbDeviceProfile currentP = HbDeviceProfile::current();
     HbDeviceProfile altP(currentP.alternateProfileName());
@@ -290,3 +268,35 @@
     return ret;
 }
 
+/*!
+    This function handles gestures
+ */
+void NmAttachmentListItem::gestureEvent(QGestureEvent *event)
+{
+    NM_FUNCTION;
+    
+    if (HbTapGesture *tap = qobject_cast<HbTapGesture *>(event->gesture(Qt::TapGesture))) {
+        switch(tap->tapStyleHint()) {
+        case HbTapGesture::Tap:
+            {
+                if (tap->state() == Qt::GestureFinished) {
+                    emit itemActivated();
+                }
+             }
+             break;
+            
+         case HbTapGesture::TapAndHold:
+             {
+                 if (tap->state() == Qt::GestureFinished) {
+                 emit itemLongPressed(event->mapToGraphicsScene(tap->position()));
+                 }
+             }    
+             break;
+        }
+    }
+    else {
+           HbWidget::gestureEvent(event);
+    }
+}
+
+
--- a/emailuis/nmailuiwidgets/src/nmattachmentlistwidget.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiwidgets/src/nmattachmentlistwidget.cpp	Fri May 28 13:56:43 2010 +0300
@@ -106,6 +106,8 @@
     mLayout(NULL),
     mOrientation(Qt::Vertical)
 {
+    NM_FUNCTION;
+    
     init( );
 }
 
@@ -115,6 +117,8 @@
  */
 NmAttachmentListWidget::~NmAttachmentListWidget( )
 {
+    NM_FUNCTION;
+    
     mItemList.clear();
 }
 
@@ -124,6 +128,8 @@
  */
 void NmAttachmentListWidget::setTextColor(const QColor color)
 {
+    NM_FUNCTION;
+    
     mTextColor=color;
 }
 
@@ -137,6 +143,8 @@
         const QString &fileName, 
         const QString &fileSize)
 {   
+    NM_FUNCTION;
+    
     NmAttachmentListItem *item = new NmAttachmentListItem(this);
     item->setObjectName(QString("nmattachmentlistitem_%1").arg(index));
 
@@ -163,8 +171,10 @@
  */
 void NmAttachmentListWidget::removeAttachment(int index)
 {
+    NM_FUNCTION;
+    
     if(!mLayout) {
-        NMLOG("NmAttachmentListWidget::removeAttachment: Layout loading failed!");
+        NM_ERROR(1,"NmAttachmentListWidget::removeAttachment(): layout loading failed");
         return;
     }
 
@@ -189,6 +199,8 @@
         int index, 
         const QString &fileSize)
 {
+    NM_FUNCTION;
+    
 	if (index>=0 && index<mItemList.count()) {
 	    mItemList.at(index)->setFileSizeText(fileSize);
 	}
@@ -199,6 +211,8 @@
  */
 int NmAttachmentListWidget::count() const
 {
+    NM_FUNCTION;
+    
     return mItemList.count();
 }
 
@@ -207,6 +221,8 @@
  */
 int NmAttachmentListWidget::progressValue(int index) const
 {
+    NM_FUNCTION;
+    
     int ret(NmNotFoundError);
     if(index >= 0 && index < mItemList.count()){
         ret = mItemList.at(index)->progressBarValue();
@@ -220,6 +236,8 @@
  */
 void NmAttachmentListWidget::hideProgressBar(int index)
 {
+    NM_FUNCTION;
+    
     if(index >= 0 && index < mItemList.count()){
         mItemList.at(index)->hideProgressBar();
     }
@@ -234,6 +252,8 @@
     const QStyleOptionGraphicsItem *option,
     QWidget *widget)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(option);
     Q_UNUSED(widget);
     if (painter&&mLayout){
@@ -270,6 +290,8 @@
  */
 void NmAttachmentListWidget::setProgressBarValue(int index, int value)
 {
+    NM_FUNCTION;
+    
     if(index >= 0 && index < mItemList.count()){
         mItemList[index]->setProgressBarValue(value);
     }
@@ -280,6 +302,8 @@
  */
 void NmAttachmentListWidget::init( )
 {
+    NM_FUNCTION;
+    
     //Get mainwindow for orientation changes
     HbMainWindow *mw = hbInstance->allMainWindows().at(0);
 
@@ -288,7 +312,7 @@
         connect(mw, SIGNAL(orientationChanged(Qt::Orientation)),this, SLOT(orientationChanged(Qt::Orientation)));
         mOrientation = mw->orientation();
     } else {
-        NMLOG("NmAttachmentListWidget::init: mainWindow missing!");
+        NM_ERROR(1,"NmAttachmentListWidget::init: mainWindow missing!");
     }
 
     //construct UI after orientation has been figured out
@@ -303,6 +327,8 @@
  */
 void NmAttachmentListWidget::constructUi()
 {
+    NM_FUNCTION;
+    
     setObjectName(QString(ATTACHMENT_WIDGET));
     HbDocumentLoader loader;
     bool loadingOk = false;
@@ -319,10 +345,10 @@
             mLayout = dynamic_cast<QGraphicsGridLayout*>(layout());
             mLayout->setContentsMargins(0,0,0,0);
         } else {
-            NMLOG("NmAttachmentListWidget::constructUi: Widget doesn't have layout!");
+            NM_ERROR(1,"NmAttachmentListWidget::constructUi: Widget doesn't have layout!");
         }
     } else {
-        NMLOG("NmAttachmentListWidget::constructUi: DocML loading failed.");
+        NM_ERROR(1,"NmAttachmentListWidget::constructUi: DocML loading failed.");
     }
 
 }
@@ -332,13 +358,15 @@
 */
 void NmAttachmentListWidget::handleLongPressed(QPointF point)
 {
+    NM_FUNCTION;
+    
     QObject *sender = QObject::sender();
     int index = findItem(sender);
     if(NmNotFoundError != index){
         emit longPressed(index, point);
     }
     else {
-        NMLOG("NmAttachmentListWidget::handleLongPressed: item cannot found!");
+        NM_ERROR(1,"NmAttachmentListWidget::handleLongPressed: item cannot found!");
     }
 
 }
@@ -348,13 +376,15 @@
 */
 void NmAttachmentListWidget::handleItemActivated()
 {
+    NM_FUNCTION;
+    
     QObject *sender = QObject::sender();
     int index = findItem(sender);
     if(NmNotFoundError != index){
         emit itemActivated(index);
     }
     else {
-        NMLOG("NmAttachmentListWidget::handleItemActivated: item cannot found!");
+        NM_ERROR(1,"NmAttachmentListWidget::handleItemActivated: item cannot found!");
     }
 }
 
@@ -364,8 +394,8 @@
 */
 void NmAttachmentListWidget::orientationChanged(Qt::Orientation orientation)
 {
-    NMLOG("NmAttachmentListWidget::orientationChanged");
-
+    NM_FUNCTION;
+    
     //be sure that orientation has been changed
     if(mOrientation != orientation){
         mOrientation = orientation;
@@ -381,6 +411,8 @@
 */
 int NmAttachmentListWidget::findItem(const QObject *obj)
 {
+    NM_FUNCTION;
+    
     int found(NmNotFoundError);
     int index(0);
 
@@ -401,8 +433,10 @@
 */
 void NmAttachmentListWidget::insertItemToLayout(NmAttachmentListItem* item)
 {
+    NM_FUNCTION;
+    
     if(!mLayout) {
-        NMLOG("NmAttachmentListWidget::insertItemToLayout: Layout loading failed!");
+        NM_ERROR(1,"NmAttachmentListWidget::insertItemToLayout: Layout loading failed!");
         return;
     }
     int layout_count = mLayout->count();
@@ -424,8 +458,10 @@
 */
 void NmAttachmentListWidget::rearrangeLayout()
 {
+    NM_FUNCTION;
+    
     if(!mLayout) {
-        NMLOG("NmAttachmentListWidget::rearrangeLayout: Layout loading failed!");
+        NM_ERROR(1,"NmAttachmentListWidget::rearrangeLayout: Layout loading failed!");
         return;
     }
 
--- a/emailuis/nmailuiwidgets/src/nmbaseviewscrollarea.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiwidgets/src/nmbaseviewscrollarea.cpp	Fri May 28 13:56:43 2010 +0300
@@ -23,6 +23,7 @@
 NmBaseViewScrollArea::NmBaseViewScrollArea(QGraphicsItem *parentView) :
     HbScrollArea(parentView)
     {
+    NM_FUNCTION;
     }
 
 /*!
@@ -30,6 +31,7 @@
 */
 NmBaseViewScrollArea::~NmBaseViewScrollArea()
     {
+    NM_FUNCTION;
     }
 
 /*!
@@ -38,6 +40,8 @@
 */
 void NmBaseViewScrollArea::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
+    NM_FUNCTION;
+    
     if (event){
         emit handleMousePressEvent(event);
         HbScrollArea::mousePressEvent(event);
@@ -50,6 +54,8 @@
 */
 void NmBaseViewScrollArea::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 {
+    NM_FUNCTION;
+    
     if (event){
         emit handleMouseReleaseEvent(event);
         HbScrollArea::mouseReleaseEvent(event);
@@ -62,6 +68,8 @@
 */
 void NmBaseViewScrollArea::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
 {
+    NM_FUNCTION;
+    
     if (event){
         emit handleMouseMoveEvent(event);
         HbScrollArea::mouseMoveEvent(event);
@@ -73,6 +81,8 @@
 */
 void NmBaseViewScrollArea::longPressGesture(const QPointF &point)
 {
+    NM_FUNCTION;
+    
     emit handleLongPressGesture(point);
 }
 
--- a/emailuis/nmailuiwidgets/src/nmeditortextedit.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiwidgets/src/nmeditortextedit.cpp	Fri May 28 13:56:43 2010 +0300
@@ -21,7 +21,7 @@
 static const double Un = 6.66;
 static const double BodyMargin = Un;
 static const int ChromeHeight = 160;
-static const double FieldHeightWhenSecondaryFont = 5 * Un;
+static const double FieldHeightWhenSecondaryFont = 7.46 * Un;
 static const int GroupBoxTitleHeight = 42;
 static const double HeightOfTheHeaderOnStartup =
     2 * FieldHeightWhenSecondaryFont + GroupBoxTitleHeight;
@@ -33,6 +33,7 @@
     HbTextEdit(parent),
     mFirstTimeToScrollPosUpdate(true)
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -40,10 +41,13 @@
 */
 NmEditorTextEdit::~NmEditorTextEdit()
 {
+    NM_FUNCTION;
 }
 
 void NmEditorTextEdit::init(NmBaseViewScrollArea *bgScrollArea)
 {
+    NM_FUNCTION;
+    
     mPreviousContentsHeight = 0;
     mFirstTime = true;
     mCustomTextColor = QPair<bool, QColor>(false,Qt::black);
@@ -54,13 +58,10 @@
     document()->setDocumentMargin(BodyMargin);
 
     mScrollArea = this->scrollArea();
-    mScrollArea->setLongPressEnabled(true);
+
     // Enable scrolling using cursor
     setScrollable(true);
     mScrollArea->setScrollDirections(Qt::Horizontal);
-    // Let all mouse events go into background scroll area which handles the scrolling
-    setAcceptedMouseButtons(Qt::NoButton);
-    mScrollArea->setAcceptedMouseButtons(Qt::NoButton);
 
     connect(this, SIGNAL(contentsChanged()), this, SLOT(updateEditorHeight()));
     connect(this, SIGNAL(cursorPositionChanged(int, int)),
@@ -73,6 +74,8 @@
  */
 qreal NmEditorTextEdit::contentHeight() const
 {
+    NM_FUNCTION;
+    
     QSizeF s = document()->size();
     return s.height();
 }
@@ -83,6 +86,8 @@
  */
 void NmEditorTextEdit::updateEditorHeight()
 {
+    NM_FUNCTION;
+    
     // Get current body content height
     qreal heightOfTheTextEdit = contentHeight();
 
@@ -104,6 +109,8 @@
  */
 void NmEditorTextEdit::setScrollPosition(int oldPos, int newPos)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(oldPos);
 
     if (mFirstTime) {
@@ -152,6 +159,8 @@
 */
 void NmEditorTextEdit::updateScrollPosition(const QPointF &newPosition)
 {
+    NM_FUNCTION;
+    
     // Temporary fix: When this is called for the first time, the editor is scrolled down for 
     // some reason so this will restore the scroll position.
     if(mFirstTimeToScrollPosUpdate) {
@@ -167,6 +176,8 @@
  */
 void NmEditorTextEdit::updateCustomTextColor()
 {
+    NM_FUNCTION;
+    
     if (mCustomTextColor.first) {
         QTextCursor tcursor = textCursor();
         QTextCharFormat fmt;
@@ -197,55 +208,21 @@
  */
 void NmEditorTextEdit::setHeaderHeight(int newHeight)
 {
+    NM_FUNCTION;
+    
     mHeaderHeight = newHeight;
     updateEditorHeight();
 }
 
 /*!
-    sendMousePressEvent. Function is used to relay mouse press event to base class
-*/
-void NmEditorTextEdit::sendMousePressEvent(QGraphicsSceneMouseEvent *event)
-{
-    if (event) {
-        HbAbstractEdit::mousePressEvent(event);
-    }
-}
-
-/*!
-    sendMouseReleaseEvent. Function is used to relay mouse release event to base class
-*/
-void NmEditorTextEdit::sendMouseReleaseEvent(QGraphicsSceneMouseEvent *event)
-{
-    if (event) {
-        HbAbstractEdit::mouseReleaseEvent(event);
-    }
-}
-
-/*!
-    sendMouseMoveEvent. Function is used to relay mouse move event to base class
-*/
-void NmEditorTextEdit::sendMouseMoveEvent(QGraphicsSceneMouseEvent *event)
-{
-    if (event) {
-        HbAbstractEdit::mouseMoveEvent(event);
-    }
-}
-
-/*!
-    sendLongPressEvent. Opens the context menu of the editor
-*/
-void NmEditorTextEdit::sendLongPressEvent(const QPointF &point)
-{
-    showContextMenu(point);
-}
-
-/*!
    Sets flag is custom text color should be used and sets the custom color.
    
    Function does not affect the color of existing content, only text that will be entered later.
  */
 void NmEditorTextEdit::setCustomTextColor(const QPair<bool, QColor> &customColor)
 {
+    NM_FUNCTION;
+    
     mCustomTextColor = customColor;
 }
 
@@ -257,6 +234,8 @@
  */
 void NmEditorTextEdit::setCustomTextColor(bool useCustom, const QColor& color)
 {   
+    NM_FUNCTION;
+    
     mCustomTextColor.first = useCustom;
     //check and set custom color
     mCustomTextColor.first ? mCustomTextColor.second = color : 
@@ -271,5 +250,7 @@
  */
 QPair<bool, QColor> NmEditorTextEdit::customTextColor() const
 {
+    NM_FUNCTION;
+    
     return mCustomTextColor;
 }
--- a/emailuis/nmailuiwidgets/src/nmhtmllineedit.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiwidgets/src/nmhtmllineedit.cpp	Fri May 28 13:56:43 2010 +0300
@@ -25,6 +25,7 @@
 NmHtmlLineEdit::NmHtmlLineEdit(QGraphicsItem *parent) :
     HbLineEdit(parent)
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -32,6 +33,7 @@
  */
 NmHtmlLineEdit::~NmHtmlLineEdit()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -41,40 +43,56 @@
  */
 void NmHtmlLineEdit::setDocument(QTextDocument *document)
 {
+    NM_FUNCTION;
+    
     HbAbstractEdit::setDocument(document);
 }
 
 QTextDocument *NmHtmlLineEdit::document() const
 {
+    NM_FUNCTION;
+    
     return HbAbstractEdit::document();
 }
 
 void NmHtmlLineEdit::setTextCursor(const QTextCursor &cursor)
 {
+    NM_FUNCTION;
+    
     HbAbstractEdit::setTextCursor(cursor);
 }
 
 QTextCursor NmHtmlLineEdit::textCursor() const
 {
+    NM_FUNCTION;
+    
     return HbAbstractEdit::textCursor();
 }
 
 QString NmHtmlLineEdit::toHtml() const
 {
+    NM_FUNCTION;
+    
     return HbAbstractEdit::toHtml();
 }
 
 void NmHtmlLineEdit::setHtml(const QString &text)
 {
+    NM_FUNCTION;
+    
     HbAbstractEdit::setHtml(text);
 }
 
 QString NmHtmlLineEdit::toPlainText () const
 {
+    NM_FUNCTION;
+    
     return HbAbstractEdit::toPlainText();
 }
 
 void NmHtmlLineEdit::setPlainText (const QString &text)
 {
+    NM_FUNCTION;
+    
     HbAbstractEdit::setPlainText(text);
 }
--- a/emailuis/nmailuiwidgets/src/nmrecipientlineedit.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiwidgets/src/nmrecipientlineedit.cpp	Fri May 28 13:56:43 2010 +0300
@@ -29,6 +29,8 @@
     : NmHtmlLineEdit(parent),
     mNeedToGenerateEmailAddressList(true)
 {
+    NM_FUNCTION;
+    
     connect(this, SIGNAL(textChanged(QString)), this, SLOT(handleTextChanged(QString)));
 }
 
@@ -38,6 +40,7 @@
 */
 NmRecipientLineEdit::~NmRecipientLineEdit()
 {
+    NM_FUNCTION;
 }
 
 
@@ -46,6 +49,8 @@
 */
 QList<NmAddress> NmRecipientLineEdit::emailAddressList()
 {
+    NM_FUNCTION;
+    
     if (mNeedToGenerateEmailAddressList) {
         // Empty mEmailAddressList.
         mEmailAddressList.clear();
@@ -61,14 +66,11 @@
 #ifdef Q_OS_SYMBIAN
 /*!
    This Slot inserts the selected contacts from Contacts-picker into the lineedit cursor position.    
-   "You shouldn't be able to convert the parameter selectedContacts into a QStringlist or QString,
-   you need to convert selectedContacts into a CntServicesContactList." -- Comments from 
-   Contacts-picker author Erkinheimo Joonas (Nokia-D/Espoo)
-   Contacts-Picker should be working in TB 10.1 MCL wk16 release, 
-   Custom metatypes problem will be fixed in wk16 by QtHighway.
 */
 void NmRecipientLineEdit::insertSelectedContacts(const QVariant &selectedContacts)
 {
+    NM_FUNCTION;
+    
     if (!selectedContacts.isNull()) {
         CntServicesContactList contactList;
         contactList = qVariantValue<CntServicesContactList>(selectedContacts);
@@ -87,12 +89,14 @@
                 NmHtmlLineEdit::keyPressEvent(&contactEmailAddressKeyEvent);
             }
             else {
-                // Handle a rare case: there's another contact has same name but has different emailaddress.
-                for (int i = 0; i != mContactsSelectedFromPhoneBook.count(); ++i) {
-                    if (mContactsSelectedFromPhoneBook.at(i).displayName() == contactName &&
-                  	    mContactsSelectedFromPhoneBook.at(i).address() != contactEmailAddress) {
-                        // Differentiate this contact's name by adding a * mark
-                        contactName.append("*");
+                // Handle a rare case: there are contacts has same name but different emailaddress.
+                for (int i = 0; i != mRecipientsAddedFromContacts.count(); ++i) {
+                    if (mRecipientsAddedFromContacts.at(i).displayName() == contactName &&
+                  	    mRecipientsAddedFromContacts.at(i).address() != contactEmailAddress) {
+                        // Differentiate this contact by supplying it's emailaddress
+                        contactName.append("<");
+                        contactName.append(contactEmailAddress);
+                        contactName.append(">");
                     }
                 }
                 
@@ -114,13 +118,13 @@
             contact.setAddress(contactEmailAddress);
             contact.setDisplayName(contactName);
             
-            // Add this NmAddress formated contact into mContactsSelectedFromPhoneBook.
-            mContactsSelectedFromPhoneBook.append(contact);
+            // Add this NmAddress formated contact into mRecipientsAddedFromContacts.
+            mRecipientsAddedFromContacts.append(contact);
         }
     }
     else {
         //Request returned NULL 
-        NMLOG("ContactsPicker request returned NULL.");
+        NM_COMMENT("ContactsPicker request returned NULL.");
     }
         
 }
@@ -137,6 +141,8 @@
 */
 void NmRecipientLineEdit::keyPressEvent(QKeyEvent *keyEvent)
 {
+    NM_FUNCTION;
+    
 	bool eventHandled = false;
 	
     if (keyEvent) {
@@ -184,6 +190,8 @@
 */
 void NmRecipientLineEdit::inputMethodEvent(QInputMethodEvent *event)
 {
+    NM_FUNCTION;
+    
 	bool eventHandled = false;
 	
     if (event) {
@@ -220,47 +228,67 @@
 
  
 /*!
-   Generate emailaddress list from the content of the lineedit.
+   Generate a list of all the email addresses from the content of the lineedit.
 */
 void NmRecipientLineEdit::generateEmailAddressList()
 {   
+    NM_FUNCTION;
+    
     // Remove whitespace from the start and the end of the lineedit content. 
     QString contentOfLineedit = (this->text()).trimmed();
     
-    // Split the lineedit content into individual items wherever a Semicolon(";") occurs, 
-    // empty entries don't appear in the result.
+    // Split the lineedit content by semicolon(";").
     QStringList itemsOfLineeditContent = contentOfLineedit.split(Semicolon, QString::SkipEmptyParts);
         
-    // Loop through all the items in the itemsOfLineeditContent list.
+    // Loop through all the items of the lineedit content.
     for (int i = 0; i != itemsOfLineeditContent.count(); ++i) {
         // Remove whitespace from the start and the end of the item.
         QString itemInLineedit = itemsOfLineeditContent.at(i).trimmed();
 
-        if (mContactsSelectedFromPhoneBook.count() > 0) {
-            // Loop through all the elements in the mContactsSelectedFromPhoneBook list.
-            for (int j = 0; j != mContactsSelectedFromPhoneBook.count(); ++j) {
-                NmAddress contact = mContactsSelectedFromPhoneBook.at(j);		
-                // If the item matches either the name or the emailaddress of this contact.
-                if (itemInLineedit == contact.displayName() || itemInLineedit == contact.address()) {
-                    // Add the contact into mEmailAddressList.
-                    mEmailAddressList.append(contact);  
-                }
-                else {
-                    // Form the item into Qmail NmAddress format.
-                    NmAddress recipient;
-                    recipient.setAddress(itemInLineedit);
-                    // no display name info available, so don't us it
-                    recipient.setDisplayName(QString()); 
-                    // Add this NmAddress formated lineedit item into mEmailAddressList.
-                    mEmailAddressList.append(recipient);  
-                }
+        // Get the count of the recipients added from Contacts.
+        int countOfRecipientsAddedFromContacts = mRecipientsAddedFromContacts.count();
+        
+        // If there is recipient added from Contacts.
+        if (countOfRecipientsAddedFromContacts > 0) {
+            QStringList listOfAddedContactsName;
+            QStringList listOfAddedContactsAddress;
+            
+            // Loop through all the recipients added from Contacts.
+            for (int j = 0; j != countOfRecipientsAddedFromContacts; ++j) {
+                NmAddress contact = mRecipientsAddedFromContacts.at(j);          
+                listOfAddedContactsName.append(contact.displayName());
+                listOfAddedContactsAddress.append(contact.address());
+            }
+                
+            int indexInAddedContactsName = listOfAddedContactsName.indexOf(itemInLineedit);
+            int indexInAddedContactsAddress = listOfAddedContactsAddress.indexOf(itemInLineedit);
+            
+            // If this itemInLineedit matches the name of one added contact.
+            if (indexInAddedContactsName >= 0) {
+                // Add the recipient into mEmailAddressList.
+                mEmailAddressList.append(mRecipientsAddedFromContacts.at(indexInAddedContactsName));  
+            }
+            // If this itemInLineedit matches the emailaddress of one added contact.
+            else if (indexInAddedContactsAddress >= 0) { 
+                // Add the recipient into mEmailAddressList.
+                mEmailAddressList.append(mRecipientsAddedFromContacts.at(indexInAddedContactsAddress));  
+            }
+            // This itemInLineedit is not added from Contacts
+            else { 
+                // Form the item into NmAddress format.
+                NmAddress recipient;
+                recipient.setAddress(itemInLineedit);
+                // There is no display name info available, so leave display name empty.
+                recipient.setDisplayName(QString()); 
+                // Add this NmAddress formated lineedit item into mEmailAddressList.
+                mEmailAddressList.append(recipient);  
             }
         }
-        else {
-            // Form the item into Qmail NmAddress format.
+        else { // There is no recipient is added from Contacts
+            // Form the item into NmAddress format.
             NmAddress recipient;
             recipient.setAddress(itemInLineedit);
-            // no display name info available, so don't us it
+            // There is no display name info available, so leave display name emapty.
             recipient.setDisplayName(QString()); 
             // Add this NmAddress formated lineedit item into mEmailAddressList.
             mEmailAddressList.append(recipient);  
@@ -274,6 +302,8 @@
 */
 void NmRecipientLineEdit::handleTextChanged(const QString &text)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(text);
     mNeedToGenerateEmailAddressList = true;
 }
--- a/emailuis/nmailuiwidgetsplugin/src/nmailuiwidgetsplugin.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmailuiwidgetsplugin/src/nmailuiwidgetsplugin.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
 *
 */
 
+#include "emailtrace.h"
+
 #include "nmailuiwidgetsplugin.h"
 #include <nmrecipientlineedit.h>
 #include <nmhtmllineedit.h>
@@ -24,6 +26,8 @@
 
 QObject *NMailUiWidgetsPlugin::createObject(const QString& type, const QString &name )
 {
+    NM_FUNCTION;
+    
     if( type == NmBaseViewScrollArea::staticMetaObject.className() ) {
         QObject *object = new NmBaseViewScrollArea;
         object->setObjectName(name);
--- a/emailuis/nmframeworkadapter/inc/nmframeworkadapter.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmframeworkadapter/inc/nmframeworkadapter.h	Fri May 28 13:56:43 2010 +0300
@@ -34,14 +34,15 @@
 class NmOperation;
 class NmMessageCreationOperation;
 class CFSMailClient;
+class CFSMailBox;
 class CFSMailFolder;
 class CFSMailMessage;
 class CFSMailMessagePart;
 class NmStoreEnvelopesOperation;
 class NmAddAttachmentsOperation;
-class NmCheckOutboxOperation;
 class NmMailboxSearchObserver;
 class NmMessageSendingOperation;
+class CEmailExtension;
 
 
 class NmFrameworkAdapter :
@@ -182,8 +183,6 @@
             const NmMessage &message, 
             const NmId &attachmentPartId);
 
-    QPointer<NmCheckOutboxOperation> checkOutbox(const NmId& mailboxId);
-    
     NmSyncState syncState(const NmId& mailboxId) const;
     
     NmConnectState connectionState(const NmId& mailboxId) const;
@@ -200,6 +199,8 @@
 
     void updateActiveFolder(const NmId &mailboxId, const NmId &folderId);
     
+    QPointer<NmOperation> removeDraftMessage(NmMessage *message);
+    
 signals:
 
     void mailboxEvent(NmMailboxEvent event, const QList<NmId> &mailboxIds);
@@ -291,12 +292,18 @@
             const NmId& mailboxId, 
             const NmId& folderId, 
             NmFolder*& unreadCount );
+    
+    void doUpdateActiveFolderL(const NmId &mailboxId, const NmId &folderId);
+    
+    CEmailExtension* getEMailStateExtensionL();      
 
 
 private: // Data
 
     CFSMailClient* mFSfw; // Singleton, not owned
     NmMailboxSearchObserver *mSearchObserver; // Owned
+    CFSMailBox* mCurrentMailBox; // Owned
+    CEmailExtension* mEmailExtension; // not owned
 };
 
 
--- a/emailuis/nmframeworkadapter/inc/nmframeworkadapterheaders.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmframeworkadapter/inc/nmframeworkadapterheaders.h	Fri May 28 13:56:43 2010 +0300
@@ -35,7 +35,6 @@
 // nmailuiengine 
 #include <nmoperation.h>
 #include <nmstoreenvelopesoperation.h>
-#include <nmcheckoutboxoperation.h>
 #include <nmmessagesendingoperation.h>
 #include <nmaddattachmentsoperation.h>
 #include <nmmessagecreationoperation.h>
@@ -51,12 +50,12 @@
 
 // emailcommon
 #include <nmcleanuputils.h>
+#include <cmailboxstateext.h>
 
 // nmframeworkadapter
 #include "nmframeworkadapter.h"
 #include "nmfwaaddattachmentsoperation.h"
 #include "nmfwaremoveattachmentoperation.h"
-#include "nmfwacheckoutboxoperation.h"
 #include "nmfwamessagecreationoperation.h"
 #include "nmfwaforwardmessagecreationoperation.h"
 #include "nmfwareplymessagecreationoperation.h"
@@ -67,6 +66,7 @@
 #include "nmfwastoreenvelopesoperation.h"
 #include "nmfwastoremessageoperation.h"
 #include "nmmailboxsearchobserver.h"
+#include "nmfwaremovedraftmessageoperation.h"
 
 // fs email
 #include <CFSMailCommon.h>
--- a/emailuis/nmframeworkadapter/inc/nmfwacheckoutboxoperation.h	Mon May 24 21:02:02 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 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:
- *
- */
-
-#ifndef NMFWACHECKOUTBOXOPERATION_H_
-#define NMFWACHECKOUTBOXOPERATION_H_
-
-#include <nmcheckoutboxoperation.h>
-#include <nmcommon.h>
-
-class CFSMailClient;
-
-class NmFwaCheckOutboxOperation : public NmCheckOutboxOperation
-{
-    Q_OBJECT
-public:
-    NmFwaCheckOutboxOperation(
-        const NmId &mailboxId,
-        CFSMailClient &mailClient);
-    
-    bool getMessageId(NmId &messageId) const;
-
-private:
-    void doRunAsyncOperation();
-    void doRunAsyncOperationL();
-    ~NmFwaCheckOutboxOperation();
-    
-private:
-    NmId mMailboxId;
-    CFSMailClient &mMailClient;
-    bool mFound;
-    NmId mMessageId;
-
-};
-
-#endif /* NMFWACHECKOUTBOXOPERATION_H_ */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/nmframeworkadapter/inc/nmfwaremovedraftmessageoperation.h	Fri May 28 13:56:43 2010 +0300
@@ -0,0 +1,60 @@
+/*
+ * Copyright (c) 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:
+ *
+ */
+
+#ifndef NMFWAREMOVEDRAFTMESSAGEOPERATION_H_
+#define NMFWAREMOVEDRAFTMESSAGEOPERATION_H_
+
+#include <QPointer>
+#include <nmoperation.h>
+#include <nmcommon.h>
+#include <CFSMailCommon.h>
+#include <MFSMailRequestObserver.h>
+
+class NmMessage;
+class NmDataPluginInterface;
+class CFSMailClient;
+
+class NmFwaRemoveDraftMessageOperation : public NmOperation,
+                                         public MFSMailRequestObserver
+{
+    Q_OBJECT
+public:
+    NmFwaRemoveDraftMessageOperation(NmDataPluginInterface &pluginInterface,
+                                 NmMessage *message,
+                                 CFSMailClient &mailClient);
+    
+    // from MFSMailRequestObserver
+    void RequestResponseL(TFSProgress aEvent, TInt aRequestId);
+
+protected:
+    void doRunAsyncOperation();
+    void doCompleteOperation();
+    void doCancelOperation();
+
+private:
+    ~NmFwaRemoveDraftMessageOperation();
+
+    void removeMessageL();
+
+private:
+    NmDataPluginInterface &mPluginInterface;
+    NmMessage *mMessage;    // Owned
+    CFSMailClient &mMailClient;
+    TInt mRequestId;
+};
+
+#endif /* NMFWAREMOVEDRAFTMESSAGEOPERATION_H_ */
--- a/emailuis/nmframeworkadapter/nmframeworkadapter.pro	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmframeworkadapter/nmframeworkadapter.pro	Fri May 28 13:56:43 2010 +0300
@@ -13,7 +13,7 @@
 #
 # Description: 
 #
-# Version : %version: e003sa37#27 %
+# Version : %version: e003sa37#30 %
 TEMPLATE = lib
 TARGET = nmframeworkadapter
 
@@ -36,10 +36,10 @@
            inc/nmfwaaddattachmentsoperation.h \
            inc/nmfwaremoveattachmentoperation.h \
            inc/nmfwastoremessageoperation.h \
-           inc/nmfwacheckoutboxoperation.h \
            inc/nmfwamessagepartfetchingoperation.h \
            inc/nmmailboxsearchobserver.h \
-           inc/nmfwamessagepartsfetchingoperation.h
+           inc/nmfwamessagepartsfetchingoperation.h \
+           inc/nmfwaremovedraftmessageoperation.h
 
 SOURCES += src/nmframeworkadapter.cpp \
            src/nmfwamessagefetchingoperation.cpp \
@@ -51,10 +51,10 @@
            src/nmfwaaddattachmentsoperation.cpp \
            src/nmfwaremoveattachmentoperation.cpp \
            src/nmfwastoremessageoperation.cpp \
-           src/nmfwacheckoutboxoperation.cpp \
            src/nmfwamessagepartfetchingoperation.cpp \
            src/nmmailboxsearchobserver.cpp \
-           src/nmfwamessagepartsfetchingoperation.cpp
+           src/nmfwamessagepartsfetchingoperation.cpp \
+           src/nmfwaremovedraftmessageoperation.cpp
 
 RESOURCES +=
 
@@ -65,7 +65,10 @@
 symbian*: {
     INCLUDEPATH += /epoc32/include/ecom \
     ../../emailservices/emailframework/inc \
-    ../../emailservices/emailframework/commonlib/inc \
+# <qmail>    
+#    ../../emailservices/emailframework/commonlib/inc \
+    ../../emailservices/emailcommon/inc \
+# </qmail>     
     ../../inc
     INCLUDEPATH += /epoc32/include/ecom
 
--- a/emailuis/nmframeworkadapter/src/nmframeworkadapter.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmframeworkadapter/src/nmframeworkadapter.cpp	Fri May 28 13:56:43 2010 +0300
@@ -38,18 +38,18 @@
 */
 NmFrameworkAdapter::NmFrameworkAdapter()
 : mFSfw(NULL),
-  mSearchObserver(NULL)
+  mSearchObserver(NULL),
+  mCurrentMailBox(NULL),
+  mEmailExtension(NULL)
 {
-    NMLOG("NmFrameworkAdapter::NmFrameworkAdapter() <---");
-
+    NM_FUNCTION;
+    
     // get s60 email framework
     TRAP_IGNORE(mFSfw = CFSMailClient::NewL());
 
     if (mFSfw) {
         TRAP_IGNORE(mFSfw->AddObserverL(*this));
     }
-
-    NMLOG("NmFrameworkAdapter::NmFrameworkAdapter() --->");
 }
 
 /*!
@@ -57,6 +57,16 @@
 */
 NmFrameworkAdapter::~NmFrameworkAdapter()
 {
+    NM_FUNCTION;
+    
+    if (mCurrentMailBox && mEmailExtension) {
+        mCurrentMailBox->ReleaseExtension( mEmailExtension );
+    }
+    delete mCurrentMailBox;
+    mCurrentMailBox = NULL;
+    
+    mEmailExtension = NULL;    
+    
     if (mSearchObserver) {
         delete mSearchObserver;
         mSearchObserver = NULL;
@@ -79,6 +89,8 @@
  */
 int NmFrameworkAdapter::listMailboxIds(QList<NmId>& mailboxIdList)
 {
+    NM_FUNCTION;
+    
     QList<NmMailbox*> mailboxList;
     int ret = listMailboxes(mailboxList);
 
@@ -103,6 +115,8 @@
  */
 int NmFrameworkAdapter::listMailboxes(QList<NmMailbox*>& mailboxList)
 {
+    NM_FUNCTION;
+    
     // get list of mailboxes from all plugins
     TFSMailMsgId id;
     id.SetNullId();
@@ -139,6 +153,8 @@
  */
 int NmFrameworkAdapter::getMailboxById(const NmId& id, NmMailbox*& mailbox)
 {
+    NM_FUNCTION;
+    
     const TFSMailMsgId mailMsgId(id.pluginId32(), id.id32());
     CFSMailBox *box(NULL);
     TRAPD(err, box = mFSfw->GetMailBoxByUidL(mailMsgId));
@@ -159,6 +175,8 @@
  */
 int NmFrameworkAdapter::deleteMailboxById(const NmId& /*id*/)
 {
+    NM_FUNCTION;
+    
     return 0;
 }
 
@@ -173,6 +191,8 @@
  */
 int NmFrameworkAdapter::getFolderById( const NmId& mailboxId, const NmId& folderId, NmFolder*& folder )
     {
+    NM_FUNCTION;
+    
     TRAPD(err, getFolderByIdL( mailboxId, folderId, folder ) );
     return err;
     }
@@ -182,6 +202,8 @@
  */
 void NmFrameworkAdapter::getFolderByIdL( const NmId& mailboxId, const NmId& folderId, NmFolder*& folder )
     {
+    NM_FUNCTION;
+    
     CFSMailFolder* fsFolder(NULL);
 	if (mFSfw)
 		{
@@ -217,6 +239,8 @@
     const NmId& messageId,
     NmMessage*& message)
 {
+    NM_FUNCTION;
+    
     TRAPD(err, getMessageByIdL(mailboxId,folderId,messageId,message));
     return err;
 }
@@ -230,6 +254,8 @@
     const NmId& messageId,
     NmMessage*& message)
 {
+    NM_FUNCTION;
+    
     // select message details to be listed
     TFSMailDetails details(EFSMsgDataStructure);
 
@@ -262,6 +288,8 @@
     const NmId& mailboxId,
     QList<NmFolder*>& folderList)
 {
+    NM_FUNCTION;
+    
     CFSMailBox* currentMailbox = NULL;
     TRAPD (err, currentMailbox = mFSfw->GetMailBoxByUidL(mailboxId));
     if (KErrNone == err) {
@@ -290,6 +318,8 @@
      QList<NmMessageEnvelope*> &messageEnvelopeList,
      const int maxEnvelopeCount)
 {
+    NM_FUNCTION;
+    
     if (!folder || maxEnvelopeCount < 1) {
         return;
     }
@@ -374,6 +404,8 @@
     const NmId &folderId,
     QList<NmMessageEnvelope*> &messageEnvelopeList)
 {
+    NM_FUNCTION;
+    
     TRAPD(err, listMessagesL(mailboxId,folderId,messageEnvelopeList, NmMaxItemsInMessageList));
     return err;
 }
@@ -397,6 +429,8 @@
         QList<NmMessageEnvelope*> &messageEnvelopeList,
         const int maxAmountOfEnvelopes)
 {
+    NM_FUNCTION;
+    
     TInt err = KErrNone;
     TRAP(err, listMessagesL(mailboxId,folderId, messageEnvelopeList,maxAmountOfEnvelopes) );
     return err;
@@ -413,6 +447,8 @@
         QList<NmMessageEnvelope*> &messageEnvelopeList,
         const int maxAmountOfEnvelopes)
 {
+    NM_FUNCTION;
+    
     // If we are requesting 0 or less mails, we can just return.
     if (maxAmountOfEnvelopes <= 0) {
         return;
@@ -456,6 +492,8 @@
     QList<NmMessage*> &messageList,
     const int maxAmountOfMessages)
 {
+    NM_FUNCTION;
+    
     TRAPD(err, listMessagesL(mailboxId,folderId,messageList, maxAmountOfMessages));
     return err;
 }
@@ -470,6 +508,8 @@
         QList<NmMessage*> &messageList,
         const int maxAmountOfEnvelopes)
 {
+    NM_FUNCTION;
+    
     CFSMailBox * currentMailbox(NULL);
     CFSMailFolder* folder(NULL);
 
@@ -575,6 +615,8 @@
 int NmFrameworkAdapter::search(const NmId &mailboxId,
                                const QStringList &searchStrings)
 {
+    NM_FUNCTION;
+    
     if (!mSearchObserver) {
         mSearchObserver = new NmMailboxSearchObserver();
     }
@@ -601,6 +643,8 @@
 */
 int NmFrameworkAdapter::cancelSearch(const NmId &mailboxId)
 {
+    NM_FUNCTION;
+    
     // Get the mailbox with the given ID.
     CFSMailBox *mailbox(NULL);
     TRAPD(err, mailbox = mFSfw->GetMailBoxByUidL(mailboxId));
@@ -617,11 +661,53 @@
     \param mailboxId Id of active mailbox, 0 if application is closed.
     \param folderId Id of active folder, 0 if application is closed.
 */
-void NmFrameworkAdapter::updateActiveFolder(const NmId &mailboxId, const NmId &folderId)
+void NmFrameworkAdapter::updateActiveFolder(
+    const NmId &mailboxId, const NmId &folderId)
+{
+    TRAP_IGNORE(doUpdateActiveFolderL(mailboxId, folderId));
+}
+
+/*!
+   Removes draft message asynchronously
+ */
+QPointer<NmOperation> NmFrameworkAdapter::removeDraftMessage(NmMessage *message)
+{
+    NM_FUNCTION;
+    
+    QPointer<NmOperation> oper = new NmFwaRemoveDraftMessageOperation(*this, message, *mFSfw);
+    return oper;
+}
+
+/*!
+   function to process updateActiveFolder. This method may leave.
+ */
+void NmFrameworkAdapter::doUpdateActiveFolderL(
+    const NmId &mailboxId, const NmId &folderId)
 {
-	  // TODO ExtensionL from CFSMailClient & state update
-    Q_UNUSED(mailboxId);
-    Q_UNUSED(folderId);
+    if ((mFSfw) && (!mCurrentMailBox || mCurrentMailBox->GetId()!=mailboxId)) {
+        mEmailExtension = NULL;        
+        delete mCurrentMailBox;
+        mCurrentMailBox = NULL;
+        mCurrentMailBox = mFSfw->GetMailBoxByUidL(mailboxId);
+        }
+    CEmailExtension *extension = getEMailStateExtensionL();
+    CMailboxStateExtension *boxExtension = 
+        static_cast<CMailboxStateExtension*>(extension);        
+    if (boxExtension) {
+        boxExtension->NotifyActiveFolderChanged(mailboxId, folderId);    
+    }
+}
+
+/*!
+   function to process updateActiveFolder. This method may leave.
+ */
+CEmailExtension* NmFrameworkAdapter::getEMailStateExtensionL()
+{      
+    if (!mEmailExtension && mCurrentMailBox) {
+        mEmailExtension = 
+            mCurrentMailBox->ExtensionL(KEmailMailboxStateExtensionUid);
+    }    
+    return mEmailExtension;
 }
 
 /*!
@@ -638,6 +724,8 @@
                                  const QStringList &searchStrings,
                                  NmMailboxSearchObserver &searchObserver)
 {
+    NM_FUNCTION;
+    
     // CFSMailBox has no support for search using folder IDs.
     Q_UNUSED(folderIds); 
 
@@ -685,6 +773,8 @@
     const NmId &folderId,
     const NmId &messageId )
 {
+    NM_FUNCTION;
+    
     NmOperation *oper = new NmFwaMessageFetchingOperation(mailboxId, folderId, messageId, *mFSfw);
     return oper;
 }
@@ -705,6 +795,8 @@
     const NmId &messageId,
     const NmId &messagePartId)
 {
+    NM_FUNCTION;
+    
     QPointer<NmOperation> oper = new NmFwaMessagePartFetchingOperation(
             mailboxId, folderId, messageId, messagePartId, *mFSfw);
     return oper;
@@ -726,6 +818,8 @@
     const NmId &messageId,
     const QList<NmId> &messagePartIds)
 {
+    NM_FUNCTION;
+    
     QPointer<NmOperation> oper = new NmFwaMessagePartsFetchingOperation(
             mailboxId, folderId, messageId, messagePartIds, *mFSfw);
     return oper;  
@@ -747,6 +841,8 @@
         const NmId &messageId,
         const NmId &messagePartId)
 {
+    NM_FUNCTION;
+    
     XQSharableFile retFile;
     TFSMailDetails details(EFSMsgDataEnvelope);
     TFSMailMsgId fsMboxId(mailboxId);
@@ -783,6 +879,8 @@
     const NmId& mailboxId,
     NmFolderType folderType )
 {
+    NM_FUNCTION;
+    
     TFSMailMsgId folderId;
     NmId resultId(0);
     CFSMailBox * currentMailbox(NULL);
@@ -832,6 +930,8 @@
  */
 int NmFrameworkAdapter::refreshMailbox(NmId mailboxId)
 {
+    NM_FUNCTION;
+    
     TRAPD(err, RefreshMailboxL(mailboxId)); // return value not used
     return ( err == KErrNone ) ? NmNoError : NmGeneralError;
 }
@@ -844,6 +944,8 @@
  */
 int NmFrameworkAdapter::goOnline(const NmId& mailboxId)
 {
+    NM_FUNCTION;
+    
     TRAPD(err, GoOnlineL(mailboxId)); // return value not used
     return ( err == KErrNone ) ? NmNoError : NmGeneralError;
 }
@@ -856,6 +958,8 @@
  */
 int NmFrameworkAdapter::goOffline(const NmId& mailboxId)
 {
+    NM_FUNCTION;
+    
     TRAPD(err, GoOfflineL(mailboxId)); // return value not used
     return ( err == KErrNone ) ? NmNoError : NmGeneralError;
 }
@@ -878,6 +982,8 @@
     const NmId &messageId,
     NmMessagePart &messagePart)
 {
+    NM_FUNCTION;
+    
     TRAPD(err, contentToMessagePartL(mailboxId,folderId,messageId,messagePart));
     return err;
 }
@@ -891,6 +997,8 @@
     const NmId &messageId,
     NmMessagePart &messagePart)
 {
+    NM_FUNCTION;
+    
     CFSMailMessagePart* cfsPart = CFSMailMessagePart::NewLC(messageId,messagePart);
     cfsPart->SetMailBoxId(TFSMailMsgId(mailboxId));
     cfsPart->SetFolderId(TFSMailMsgId(folderId));
@@ -965,6 +1073,8 @@
 	const NmId &folderId,
 	const QList<NmId> &messageIdList)
 {
+    NM_FUNCTION;
+    
     TInt err = NmNoError;
     RArray<TFSMailMsgId> messageIds;
     for (TInt i=0; i<messageIdList.size(); i++) {
@@ -995,8 +1105,9 @@
 	const NmId &folderId,
 	const QList<const NmMessageEnvelope*> &envelopeList)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(folderId);
-    NMLOG("NmFrameworkAdapter::storeEnvelopes() <---");
 
     QPointer<NmStoreEnvelopesOperation> operation(NULL);
     RPointerArray<CFSMailMessage> envelopeMessages;
@@ -1013,7 +1124,6 @@
                 *mFSfw);
         }
 
-    NMLOG("NmFrameworkAdapter::storeEnvelopes() --->");
     return operation;
 }
 
@@ -1026,6 +1136,8 @@
  */
 QPointer<NmMessageCreationOperation> NmFrameworkAdapter::createNewMessage(const NmId &mailboxId)
 {
+    NM_FUNCTION;
+    
     QPointer<NmMessageCreationOperation> oper =
         new NmFwaMessageCreationOperation(mailboxId, *mFSfw);
     return oper;
@@ -1043,6 +1155,8 @@
     const NmId &mailboxId,
     const NmId &originalMessageId)
 {
+    NM_FUNCTION;
+    
     QPointer<NmMessageCreationOperation> oper =
         new NmFwaForwardMessageCreationOperation(mailboxId, originalMessageId, *mFSfw);
     return oper;
@@ -1062,6 +1176,8 @@
     const NmId &originalMessageId,
     const bool replyAll)
 {
+    NM_FUNCTION;
+    
     QPointer<NmMessageCreationOperation> oper =
         new NmFwaReplyMessageCreationOperation(mailboxId, originalMessageId, replyAll, *mFSfw);
     return oper;
@@ -1072,6 +1188,8 @@
  */
 int NmFrameworkAdapter::saveMessage(const NmMessage &message)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(message);
     return NmNoError;
 }
@@ -1081,6 +1199,8 @@
  */
 QPointer<NmOperation> NmFrameworkAdapter::saveMessageWithSubparts(const NmMessage &message)
 {
+    NM_FUNCTION;
+    
     CFSMailMessage * cfsMessage = NULL;
     QPointer<NmOperation> oper(NULL);
 
@@ -1106,6 +1226,8 @@
     TAny* param2,
     TAny* param3)
 {
+    NM_FUNCTION;
+    
     switch (aEvent) {
         // Mailbox related events:
         case TFSEventNewMailbox:
@@ -1219,6 +1341,8 @@
     const NmId& folderId,
     const NmId& messageId)
 {
+    NM_FUNCTION;
+    
     TRAPD(error, removeMessageL(mailboxId, folderId, messageId));
     return error;
 }
@@ -1230,6 +1354,8 @@
 */
 void NmFrameworkAdapter::subscribeMailboxEvents(const NmId& mailboxId)
 {
+    NM_FUNCTION;
+    
     TRAP_IGNORE(mFSfw->SubscribeMailboxEventsL(mailboxId, *this));
 }
 
@@ -1240,11 +1366,15 @@
 */
 void NmFrameworkAdapter::unsubscribeMailboxEvents(const NmId& mailboxId)
 {
+    NM_FUNCTION;
+    
     mFSfw->UnsubscribeMailboxEvents(mailboxId, *this);
 }
 
 NmId NmFrameworkAdapter::getMailboxIdByMailMsgId(TFSMailMsgId mailbox)
 {
+    NM_FUNCTION;
+    
     NmId nmId(0);
 
     QList<NmId> mailboxIds;
@@ -1269,6 +1399,8 @@
     const NmId& folderId,
     const NmId& messageId)
 {
+    NM_FUNCTION;
+    
     CFSMailFolder* folder = mFSfw->GetFolderByUidL( TFSMailMsgId(mailboxId), TFSMailMsgId(folderId));
     CleanupStack::PushL(folder);
     if ( folder ) {
@@ -1284,6 +1416,8 @@
 QPointer<NmMessageSendingOperation> NmFrameworkAdapter::sendMessage(
     NmMessage *message)
 {
+    NM_FUNCTION;
+    
     QPointer<NmMessageSendingOperation>oper = new NmFwaMessageSendingOperation(*this, message, *mFSfw);
 	return oper;
 }
@@ -1295,6 +1429,8 @@
     const NmMessage &message,
     const QList<QString> &fileList)
 {
+    NM_FUNCTION;
+    
     QPointer<NmAddAttachmentsOperation>oper = new NmFwaAddAttachmentsOperation(message, fileList, *mFSfw);
     return oper;
 }
@@ -1306,26 +1442,19 @@
     const NmMessage &message,
     const NmId &attachmentPartId)
 {
+    NM_FUNCTION;
+    
     QPointer<NmOperation> oper = new NmFwaRemoveAttachmentOperation(message, attachmentPartId, *mFSfw);
     return oper;
 }
 
 /*!
-   Checks outbox for messages
- */
-QPointer<NmCheckOutboxOperation> NmFrameworkAdapter::checkOutbox(const NmId& mailboxId)
-{
-    QPointer<NmCheckOutboxOperation> oper =
-        new NmFwaCheckOutboxOperation(mailboxId, *mFSfw);
-
-    return oper;
-}
-
-/*!
     Returns the current sync state of the given mailbox
  */
 NmSyncState NmFrameworkAdapter::syncState(const NmId& mailboxId) const
 {
+    NM_FUNCTION;
+    
    CFSMailBox* mailBox = NULL;
    TRAPD(err, mailBox = mFSfw->GetMailBoxByUidL(TFSMailMsgId(mailboxId)) );
    if (KErrNone == err && mailBox) {
@@ -1348,6 +1477,8 @@
  */
 NmConnectState NmFrameworkAdapter::connectionState(const NmId& mailboxId) const
 {
+    NM_FUNCTION;
+    
     CFSMailBox* mailBox = NULL;
     TRAPD(err, mailBox = mFSfw->GetMailBoxByUidL(TFSMailMsgId(mailboxId)) );
     if (KErrNone == err && mailBox) {
@@ -1372,6 +1503,8 @@
 CFSMailMessage* NmFrameworkAdapter::mailMessageFromEnvelopeL(
     const NmMessageEnvelope& envelope)
 {
+    NM_FUNCTION;
+    
     NmMessage* nmMessage = new(ELeave) NmMessage( envelope );
     CFSMailMessage* message = CFSMailMessage::NewL( *nmMessage );
     delete nmMessage;
@@ -1387,6 +1520,8 @@
         CFSMailMessagePart *cfsParent,
         NmMessagePart *nmParent)
 {
+    NM_FUNCTION;
+    
     User::LeaveIfNull(cfsParent);
     User::LeaveIfNull(nmParent);
 
@@ -1410,6 +1545,8 @@
  */
 int NmFrameworkAdapter::RefreshMailboxL(NmId mailboxId)
 {
+    NM_FUNCTION;
+    
     int result(KErrNotFound);
     CFSMailBox *currentMailbox(NULL);
     currentMailbox = mFSfw->GetMailBoxByUidL(mailboxId);
@@ -1427,6 +1564,8 @@
  */
 int NmFrameworkAdapter::GoOnlineL(const NmId& mailboxId)
 {
+    NM_FUNCTION;
+    
     int result(KErrNotFound);
     CFSMailBox *currentMailbox(NULL);
     currentMailbox = mFSfw->GetMailBoxByUidL(mailboxId);
@@ -1444,6 +1583,8 @@
  */
 int NmFrameworkAdapter::GoOfflineL(const NmId& mailboxId)
 {
+    NM_FUNCTION;
+    
 	int result(KErrNotFound);
     CFSMailBox *currentMailbox(NULL);
     currentMailbox = mFSfw->GetMailBoxByUidL(mailboxId);
@@ -1461,6 +1602,8 @@
  */
 void NmFrameworkAdapter::handleMailboxEvent( TFSMailMsgId mailbox, NmMailboxEvent event)
 {
+    NM_FUNCTION;
+    
     QList<NmId> mailboxIds;
     NmId nmId;
     if (event == NmMailboxDeleted) {
@@ -1481,6 +1624,8 @@
     NmMessageEvent event,
     TFSMailMsgId mailbox)
 {
+    NM_FUNCTION;
+    
     NmId nmMsgId(0);
     QList<NmId> messageIds;
     RArray<TFSMailMsgId>* newFsEntries = reinterpret_cast<RArray<TFSMailMsgId>*> (param1);
@@ -1501,6 +1646,8 @@
  */
 void NmFrameworkAdapter::handleMailMoved(TAny* param1,TAny* param2,TAny* param3, TFSMailMsgId mailbox)
 {
+    NM_FUNCTION;
+    
     NmId nmMsgId(0);
     QList<NmId> messageIds;
     RArray<TFSMailMsgId>* newFsEntries = reinterpret_cast<RArray<TFSMailMsgId>*> (param1);
@@ -1526,6 +1673,8 @@
  */
 void NmFrameworkAdapter::handleMailCopied(TAny* param1,TAny* param2, TFSMailMsgId mailbox)
 {
+    NM_FUNCTION;
+    
     NmId nmMsgId(0);
     QList<NmId> messageIds;
     RArray<TFSMailMsgId>* newFsEntries = reinterpret_cast<RArray<TFSMailMsgId>*> (param1);
@@ -1544,6 +1693,8 @@
 
 void NmFrameworkAdapter::handleSyncstateEvent(TAny* param1, TFSMailMsgId mailbox)
 {
+    NM_FUNCTION;
+    
     TSSMailSyncState* state = static_cast<TSSMailSyncState*>( param1 );
     NmOperationCompletionEvent event;
     event.mMailboxId = NmConverter::mailMsgIdToNmId(mailbox);
--- a/emailuis/nmframeworkadapter/src/nmfwaaddattachmentsoperation.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmframeworkadapter/src/nmfwaaddattachmentsoperation.cpp	Fri May 28 13:56:43 2010 +0300
@@ -39,6 +39,8 @@
     CFSMailClient &mailClient) :
         mMailClient(mailClient)
 {
+    NM_FUNCTION;
+    
     // Take own copy of the file list.
     mFileList.clear();
     for (int i=0; i<fileList.count(); ++i) {
@@ -53,6 +55,8 @@
  */
 NmFwaAddAttachmentsOperation::~NmFwaAddAttachmentsOperation()
 {
+    NM_FUNCTION;
+    
     // Cancel all running operations.
     doCancelOperation();
     mFileList.clear(); 
@@ -67,6 +71,8 @@
  */
 void NmFwaAddAttachmentsOperation::doRunAsyncOperation()
 {
+    NM_FUNCTION;
+    
     TRAPD(err, doRunAsyncOperationL());
     // Trap harness catches an error.
     if (err != KErrNone) {
@@ -104,6 +110,8 @@
  */
 void NmFwaAddAttachmentsOperation::doRunAsyncOperationL()
 {
+    NM_FUNCTION;
+    
     if (mFileList.count() > 0) {
         // Add new attachment from first file in the list.
         HBufC *fileName = NmConverter::qstringToHBufCLC(mFileList.first());
@@ -124,6 +132,8 @@
 void NmFwaAddAttachmentsOperation::RequestResponseL(TFSProgress aEvent,
                                                     TInt aRequestId)
 {
+    NM_FUNCTION;
+    
     int err = NmNoError;
 
     // Request id should always be valid. If not,
@@ -196,6 +206,8 @@
  */
 void NmFwaAddAttachmentsOperation::doCompleteOperation()
 {
+    NM_FUNCTION;
+    
     mRequestId = NmNotFoundError;
 }
 
@@ -204,6 +216,8 @@
  */
 void NmFwaAddAttachmentsOperation::doCancelOperation()
 {
+    NM_FUNCTION;
+    
     if (mRequestId >= 0) {
         TRAP_IGNORE(mMailClient.CancelL(mRequestId));
         mRequestId = NmNotFoundError;
--- a/emailuis/nmframeworkadapter/src/nmfwacheckoutboxoperation.cpp	Mon May 24 21:02:02 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,115 +0,0 @@
-/*
- * Copyright (c) 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 "nmframeworkadapterheaders.h"
-
-NmFwaCheckOutboxOperation::NmFwaCheckOutboxOperation(
-    const NmId &mailboxId,
-    CFSMailClient &mailClient) :
-        mMailboxId(mailboxId),
-        mMailClient(mailClient),
-        mFound(false),
-        mMessageId(0)
-{
-}
-
-NmFwaCheckOutboxOperation::~NmFwaCheckOutboxOperation()
-{
-}
-
-void NmFwaCheckOutboxOperation::doRunAsyncOperation()
-{
-    TRAPD(err, doRunAsyncOperationL());
-    
-    if (err) {
-        completeOperation(NmGeneralError);
-    }
-}
-
-/*!
-    Gets the id of the message with index '0' in the Outbox .
-
-    \return true if there is a message in Outbox.
- */
-bool NmFwaCheckOutboxOperation::getMessageId(NmId &messageId) const
-{
-    messageId = mMessageId;
-    return mFound;
-}
-
-void NmFwaCheckOutboxOperation::doRunAsyncOperationL()
-{
-    int err = NmNotFoundError;
-
-    TFSMailMsgId mailboxId(mMailboxId.pluginId32(), mMailboxId.id32());
-    
-    CFSMailBox *mailbox = mMailClient.GetMailBoxByUidL(mailboxId);
-    
-    if (mailbox) {
-        CleanupStack::PushL(mailbox);
-    
-        TFSMailMsgId folderId = mailbox->GetStandardFolderId(EFSOutbox);
-
-        CFSMailFolder *folder =
-            mMailClient.GetFolderByUidL(mailboxId, folderId);
-
-        if (folder) {
-            CleanupStack::PushL(folder);
-
-            TFSMailSortCriteria sortCriteria;
-            sortCriteria.iField = EFSMailSortByDate;
-            sortCriteria.iOrder = EFSMailDescending;
-            
-            RArray<TFSMailSortCriteria> sortArray;
-            CleanupClosePushL(sortArray);
-            sortArray.AppendL(sortCriteria);
-            
-            MFSMailIterator *iter = folder->ListMessagesL(
-                EFSMsgDataIdOnly, sortArray);
-            
-            CleanupStack::PopAndDestroy(); // sortArray
-
-            if (iter) {
-                CleanupDeletePushL(iter);
-
-                TFSMailMsgId nullId;
-                TInt numberOfItems = 1;
-                RPointerArray<CFSMailMessage> messages;
-
-                CleanupClosePushL(messages);
-                TBool unused = iter->NextL(nullId, numberOfItems, messages);
-
-                if (messages.Count() > 0) {
-                    mMessageId = messages[0]->GetMessageId().GetNmId();
-                    mFound = true;
-                }
-
-                messages.ResetAndDestroy();
-                CleanupStack::PopAndDestroy(); // messages
-
-                CleanupStack::PopAndDestroy(iter);
-                
-                err = NmNoError;
-            }
-            CleanupStack::PopAndDestroy(folder);
-        }
-        CleanupStack::PopAndDestroy(mailbox);
-    }
-
-    completeOperation(err);
-}
-
--- a/emailuis/nmframeworkadapter/src/nmfwaforwardmessagecreationoperation.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmframeworkadapter/src/nmfwaforwardmessagecreationoperation.cpp	Fri May 28 13:56:43 2010 +0300
@@ -24,14 +24,18 @@
     NmFwaMessageCreationOperation(mailboxId, mailClient),
     mOriginalMessageId(originalMessageId)
 {
+    NM_FUNCTION;
 }
 
 NmFwaForwardMessageCreationOperation::~NmFwaForwardMessageCreationOperation()
 {
+    NM_FUNCTION;
 }
 
 void NmFwaForwardMessageCreationOperation::doRunAsyncOperation()
 {
+    NM_FUNCTION;
+    
     const TFSMailMsgId mailMsgId(mMailboxId.pluginId32(), mMailboxId.id32());
 
     CFSMailBox *mailBox = NULL;
--- a/emailuis/nmframeworkadapter/src/nmfwamessagecreationoperation.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmframeworkadapter/src/nmfwamessagecreationoperation.cpp	Fri May 28 13:56:43 2010 +0300
@@ -40,6 +40,7 @@
         mMailClient(mailClient),
         mRequestId(NmNotFoundError)
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -47,9 +48,10 @@
  */
 NmFwaMessageCreationOperation::~NmFwaMessageCreationOperation()
 {
+    NM_FUNCTION;
+    
     doCancelOperation();
     delete mMessage;
-    NMLOG("NmFwaMessageCreationOperation::~NmFwaMessageCreationOperation --->");
 }
 
 /*!
@@ -59,6 +61,8 @@
  */
 void NmFwaMessageCreationOperation::doRunAsyncOperation()
 {
+    NM_FUNCTION;
+    
     const TFSMailMsgId mailMsgId(mMailboxId.pluginId32(), mMailboxId.id32());
 
     CFSMailBox *mailBox = NULL;
@@ -105,6 +109,8 @@
  */
 void NmFwaMessageCreationOperation::doCompleteOperation()
 {
+    NM_FUNCTION;
+    
     mRequestId = NmNotFoundError;
 }
 
@@ -113,6 +119,8 @@
  */
 void NmFwaMessageCreationOperation::doCancelOperation()
 {
+    NM_FUNCTION;
+    
     if (mRequestId >= 0) {
         TRAP_IGNORE(mMailClient.CancelL(mRequestId));
         mRequestId = NmNotFoundError;
@@ -127,6 +135,8 @@
  */
 NmMessage *NmFwaMessageCreationOperation::getMessage()
 {
+    NM_FUNCTION;
+    
     // Ownership changes
     NmMessage *ret = mMessage;
     mMessage = NULL;
@@ -141,6 +151,8 @@
  */
 NmId NmFwaMessageCreationOperation::getMessageId()
 {
+    NM_FUNCTION;
+    
     NmId messageId;
     
     if (mMessage) {
@@ -159,6 +171,8 @@
 void NmFwaMessageCreationOperation::RequestResponseL(TFSProgress aEvent,
                                                      TInt aRequestId)
 {
+    NM_FUNCTION;
+    
     TFSProgress::TFSProgressStatus status = aEvent.iProgressStatus;
 
     if (aRequestId == mRequestId) {
--- a/emailuis/nmframeworkadapter/src/nmfwamessagefetchingoperation.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmframeworkadapter/src/nmfwamessagefetchingoperation.cpp	Fri May 28 13:56:43 2010 +0300
@@ -29,16 +29,20 @@
         mRequestId(0)
 
 {
+    NM_FUNCTION;
 }
 
 NmFwaMessageFetchingOperation::~NmFwaMessageFetchingOperation()
 {
+    NM_FUNCTION;
+    
     doCancelOperation();
-    NMLOG("NmFwaMessageFetchingOperation::~NmFwaMessageFetchingOperation --->");
 }
 
 void NmFwaMessageFetchingOperation::doRunAsyncOperation()
 {
+    NM_FUNCTION;
+    
     const TFSMailMsgId mailboxId(mMailboxId.pluginId32(), mMailboxId.id32());
     const TFSMailMsgId folderId(mFolderId.pluginId32(), mFolderId.id32());
     const TFSMailMsgId messageId(mMessageId.pluginId32(), mMessageId.id32());
@@ -67,6 +71,8 @@
  */
 void NmFwaMessageFetchingOperation::doCompleteOperation()
 {
+    NM_FUNCTION;
+    
     mRequestId = NmNotFoundError;
 }
 
@@ -75,6 +81,8 @@
  */
 void NmFwaMessageFetchingOperation::doCancelOperation()
 {
+    NM_FUNCTION;
+    
     if (mRequestId >= 0) {
         TRAP_IGNORE(mMailClient.CancelL(mRequestId));
         mRequestId = NmNotFoundError;
@@ -89,6 +97,8 @@
  */
 void NmFwaMessageFetchingOperation::RequestResponseL(TFSProgress aEvent, TInt aRequestId)
 {
+    NM_FUNCTION;
+    
     if (aRequestId == mRequestId) {
         if (aEvent.iProgressStatus == TFSProgress::EFSStatus_RequestComplete ) {
             completeOperation(NmNoError);
--- a/emailuis/nmframeworkadapter/src/nmfwamessagepartfetchingoperation.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmframeworkadapter/src/nmfwamessagepartfetchingoperation.cpp	Fri May 28 13:56:43 2010 +0300
@@ -35,7 +35,7 @@
     mRequestId(0)
 
 {
-    
+    NM_FUNCTION;
 }
 
 /*!
@@ -43,8 +43,9 @@
  */
 NmFwaMessagePartFetchingOperation::~NmFwaMessagePartFetchingOperation()
 {
+    NM_FUNCTION;
+    
     doCancelOperation();
-    NMLOG("NmFwaMessagePartFetchingOperation::~NmFwaMessagePartFetchingOperation --->");
 }
 
 /*!
@@ -52,6 +53,8 @@
  */
 void NmFwaMessagePartFetchingOperation::RequestResponseL(TFSProgress aEvent, TInt aRequestId)
 {
+    NM_FUNCTION;
+    
     if (aRequestId == mRequestId) {
         if (aEvent.iProgressStatus == TFSProgress::EFSStatus_RequestComplete ) {
             completeOperation(aEvent.iError);
@@ -81,6 +84,8 @@
  */
 void NmFwaMessagePartFetchingOperation::doRunAsyncOperation()
 {
+    NM_FUNCTION;
+    
     TRAPD(err, doRunAsyncOperationL());
     if (err != KErrNone) {
         completeOperation(NmGeneralError);
@@ -92,6 +97,8 @@
  */
 void NmFwaMessagePartFetchingOperation::doRunAsyncOperationL()
 {
+    NM_FUNCTION;
+    
     const TFSMailMsgId mailboxId(mMailboxId.pluginId32(), mMailboxId.id32());
     const TFSMailMsgId folderId(mFolderId.pluginId32(), mFolderId.id32());
     const TFSMailMsgId messageId(mMessageId.pluginId32(), mMessageId.id32());
@@ -123,6 +130,8 @@
  */
 void NmFwaMessagePartFetchingOperation::doCompleteOperation()
 {
+    NM_FUNCTION;
+    
     mRequestId = NmNotFoundError;
 }
 
@@ -131,6 +140,8 @@
  */
 void NmFwaMessagePartFetchingOperation::doCancelOperation()
 {
+    NM_FUNCTION;
+    
     if (mRequestId >= 0) {
         TRAP_IGNORE(mMailClient.CancelL(mRequestId));
         mRequestId = NmNotFoundError;
--- a/emailuis/nmframeworkadapter/src/nmfwamessagepartsfetchingoperation.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmframeworkadapter/src/nmfwamessagepartsfetchingoperation.cpp	Fri May 28 13:56:43 2010 +0300
@@ -34,6 +34,8 @@
     mRequestId(0)
 
 {
+    NM_FUNCTION;
+    
     // Take own copy of the message part id list.
     mMessagePartIds.Reset();
     for (int i=0; i<messagePartIds.count(); ++i) {
@@ -49,6 +51,8 @@
  */
 NmFwaMessagePartsFetchingOperation::~NmFwaMessagePartsFetchingOperation()
 {
+    NM_FUNCTION;
+    
     doCancelOperation();
 }
 
@@ -57,6 +61,8 @@
  */
 void NmFwaMessagePartsFetchingOperation::RequestResponseL(TFSProgress aEvent, TInt aRequestId)
 {
+    NM_FUNCTION;
+    
     if (aRequestId == mRequestId) {
         if (aEvent.iProgressStatus == TFSProgress::EFSStatus_RequestComplete ) {
             completeOperation(aEvent.iError);
@@ -86,6 +92,8 @@
  */
 void NmFwaMessagePartsFetchingOperation::doRunAsyncOperation()
 {
+    NM_FUNCTION;
+    
     TRAPD(err, doRunAsyncOperationL());
     if (err != KErrNone) {
         completeOperation(NmGeneralError);
@@ -97,6 +105,8 @@
  */
 void NmFwaMessagePartsFetchingOperation::doRunAsyncOperationL()
 {
+    NM_FUNCTION;
+    
     if (mMessagePartIds.Count() > 0) {
         
         const TFSMailMsgId mailboxId(mMailboxId.pluginId32(), mMailboxId.id32());
@@ -133,6 +143,8 @@
  */
 void NmFwaMessagePartsFetchingOperation::doCompleteOperation()
 {
+    NM_FUNCTION;
+    
     mRequestId = NmNotFoundError;
 }
 
@@ -141,6 +153,8 @@
  */
 void NmFwaMessagePartsFetchingOperation::doCancelOperation()
 {
+    NM_FUNCTION;
+    
     if (mRequestId >= 0) {
         TRAP_IGNORE(mMailClient.CancelL(mRequestId));
         mRequestId = NmNotFoundError;
--- a/emailuis/nmframeworkadapter/src/nmfwamessagesendingoperation.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmframeworkadapter/src/nmfwamessagesendingoperation.cpp	Fri May 28 13:56:43 2010 +0300
@@ -43,6 +43,8 @@
         mRequestId(NmNotFoundError),
         mSaved(false)
 {
+    NM_FUNCTION;
+    
     mMailClient.IncReferenceCount();
 }
 
@@ -51,13 +53,14 @@
  */
 NmFwaMessageSendingOperation::~NmFwaMessageSendingOperation()
 {
+    NM_FUNCTION;
+    
     if (mSaveOperation && mSaveOperation->isRunning()) {
         mSaveOperation->cancelOperation();
     }
     doCancelOperation();
     mMailClient.Close(); // decrease ref count
     delete mMessage;
-    NMLOG("NmFwaMessageSendingOperation::~NmFwaMessageSendingOperation --->");
 }
 
 /*!
@@ -65,6 +68,8 @@
  */
 const NmMessage *NmFwaMessageSendingOperation::getMessage() const
 {
+    NM_FUNCTION;
+    
     return mMessage;
 }
 
@@ -76,6 +81,8 @@
  */
 void NmFwaMessageSendingOperation::doRunAsyncOperation()
 {
+    NM_FUNCTION;
+    
     int err = NmNoError;
     
     if (mSaved) {
@@ -103,6 +110,8 @@
  */
 void NmFwaMessageSendingOperation::doCompleteOperation()
 {
+    NM_FUNCTION;
+    
     mRequestId = NmNotFoundError;
 }
 
@@ -111,6 +120,8 @@
  */
 void NmFwaMessageSendingOperation::doCancelOperation()
 {
+    NM_FUNCTION;
+    
     if (mRequestId >= 0) {
         TRAP_IGNORE(mMailClient.CancelL(mRequestId));
         mRequestId = NmNotFoundError;
@@ -129,6 +140,8 @@
 void NmFwaMessageSendingOperation::RequestResponseL(TFSProgress aEvent,
                                                     TInt aRequestId)
 {
+    NM_FUNCTION;
+    
     TFSProgress::TFSProgressStatus status = aEvent.iProgressStatus;
 
     if (aRequestId == mRequestId) {
@@ -149,6 +162,8 @@
  */
 void NmFwaMessageSendingOperation::handleCompletedSaveOperation(int error)
 {
+    NM_FUNCTION;
+    
     if (error == NmNoError) {
         mSaved = true;
         doRunAsyncOperation();
@@ -163,6 +178,8 @@
 */
 int NmFwaMessageSendingOperation::saveMessageWithSubparts()
 {
+    NM_FUNCTION;
+    
     int ret = NmNotFoundError;
     if (mMessage) {
         if (mSaveOperation && mSaveOperation->isRunning()) {
@@ -189,7 +206,8 @@
  */
 int NmFwaMessageSendingOperation::sendMessageL()
 {
-    NMLOG("NmFwaMessageSendingOperation::sendMessageL");
+    NM_FUNCTION;
+    
     int ret = NmNotFoundError;
     
     if (mMessage) {
--- a/emailuis/nmframeworkadapter/src/nmfwaremoveattachmentoperation.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmframeworkadapter/src/nmfwaremoveattachmentoperation.cpp	Fri May 28 13:56:43 2010 +0300
@@ -40,6 +40,8 @@
         mMessage(message),
         mMailClient(mailClient)
 {
+    NM_FUNCTION;
+    
     // Take a copy because original will be deleted during the operation
     mAttachmentPartId.setId(attachmentPartId.id());
 }
@@ -49,6 +51,8 @@
  */
 NmFwaRemoveAttachmentOperation::~NmFwaRemoveAttachmentOperation()
 {
+    NM_FUNCTION;
+    
     doCancelOperation();
 }
 
@@ -60,6 +64,8 @@
  */
 void NmFwaRemoveAttachmentOperation::doRunAsyncOperation()
 {
+    NM_FUNCTION;
+    
     TRAPD(err, doRunAsyncOperationL());
     if (err != KErrNone) {
         completeOperation(NmGeneralError);
@@ -72,6 +78,8 @@
  */
 void NmFwaRemoveAttachmentOperation::doRunAsyncOperationL()
 {
+    NM_FUNCTION;
+    
     CFSMailMessage *msg = NULL;
 
     msg = CFSMailMessage::NewL(mMessage);
@@ -110,6 +118,8 @@
 void NmFwaRemoveAttachmentOperation::RequestResponseL(TFSProgress aEvent,
                                                       TInt aRequestId)
 {
+    NM_FUNCTION;
+    
     if (aRequestId == mRequestId) {
         TFSProgress::TFSProgressStatus status = aEvent.iProgressStatus;
         if (status == TFSProgress::EFSStatus_RequestComplete) {
@@ -143,6 +153,8 @@
  */
 void NmFwaRemoveAttachmentOperation::doCancelOperation()
 {
+    NM_FUNCTION;
+    
     if (mRequestId >= 0) {
         TRAP_IGNORE(mMailClient.CancelL(mRequestId));
         mRequestId = KErrNotFound;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/nmframeworkadapter/src/nmfwaremovedraftmessageoperation.cpp	Fri May 28 13:56:43 2010 +0300
@@ -0,0 +1,148 @@
+/*
+ * Copyright (c) 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 "nmframeworkadapterheaders.h"
+
+/*!
+    \class NmFwaRemoveDraftMessageOperation
+    
+    \brief NmFwaRemoveDraftMessageOperation is an async operation which deletes a draft message.
+    
+    NmFwaRemoveDraftMessageOperation is an async operation which cdeletes a draft message. 
+    \sa NmOperation
+ */
+
+/*!
+    Constructor
+    
+    \param message pointer to the message under sent, ownership is transferred to operation
+    \param mailClient Reference to mail client object.
+ */
+NmFwaRemoveDraftMessageOperation::NmFwaRemoveDraftMessageOperation(
+    NmDataPluginInterface &pluginInterface,
+    NmMessage *message,
+    CFSMailClient &mailClient) :
+        mPluginInterface(pluginInterface),
+        mMessage(message),
+        mMailClient(mailClient),
+        mRequestId(NmNotFoundError)
+{
+    NM_FUNCTION;
+    
+    mMailClient.IncReferenceCount();
+}
+
+/*!
+    Destructor
+ */
+NmFwaRemoveDraftMessageOperation::~NmFwaRemoveDraftMessageOperation()
+{
+    NM_FUNCTION;
+    
+    doCancelOperation();
+    mMailClient.Close(); // decrease ref count
+    delete mMessage;
+    mMessage = NULL;
+}
+
+/*!
+    Called after base object construction via timer event, runs the
+    async operation.
+    
+    \sa NmOperation
+ */
+void NmFwaRemoveDraftMessageOperation::doRunAsyncOperation()
+{
+    NM_FUNCTION;
+    
+    TRAPD( err, removeMessageL() );
+        
+    if (err != KErrNone) {
+        completeOperation(NmGeneralError);
+    }
+}
+
+/*!
+    
+ */
+void NmFwaRemoveDraftMessageOperation::doCompleteOperation()
+{
+    NM_FUNCTION;
+    
+    mRequestId = NmNotFoundError;
+}
+
+/*!
+    
+ */
+void NmFwaRemoveDraftMessageOperation::doCancelOperation()
+{
+    NM_FUNCTION;
+
+    // remove draft operation is not cancellable
+}
+    
+/*!
+    Asynchronous request response message.
+    
+    \param aEvent Plugin event description.
+    \param aRequestId Request id of asyncronous operation.
+ */
+void NmFwaRemoveDraftMessageOperation::RequestResponseL(TFSProgress aEvent,
+                                                    TInt aRequestId)
+{
+    NM_FUNCTION;
+    
+    TFSProgress::TFSProgressStatus status = aEvent.iProgressStatus;
+
+    if (aRequestId == mRequestId) {
+        if (status == TFSProgress::EFSStatus_RequestComplete && !aEvent.iError) {
+            completeOperation(NmNoError);
+        }
+        else {
+            completeOperation(NmGeneralError);
+        }
+    }
+}
+
+/*!
+    Removes the message.
+ */
+void NmFwaRemoveDraftMessageOperation::removeMessageL()
+{
+    NM_FUNCTION;
+    
+    TFSMailMsgId mailboxId( mMessage->envelope().mailboxId() );
+    TFSMailMsgId folderId( mMessage->envelope().folderId() );
+    TFSMailMsgId messageId( mMessage->envelope().messageId() );
+    
+    CFSMailFolder* folder = mMailClient.GetFolderByUidL( mailboxId, folderId );
+    CleanupStack::PushL(folder);
+    if ( folder ) {
+        // try to use the asynchronous version first
+        TRAPD(err, mRequestId = folder->RemoveMessageL( messageId, *this ));
+        
+        if(err == KErrFSMailPluginNotSupported) {
+            // async version not supported, use sync version
+            folder->RemoveMessageL( messageId );
+            completeOperation(NmNoError);
+        }
+    }
+    else {
+        User::Leave( KErrNotFound );
+    }
+    CleanupStack::PopAndDestroy(folder);
+}
--- a/emailuis/nmframeworkadapter/src/nmfwareplymessagecreationoperation.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmframeworkadapter/src/nmfwareplymessagecreationoperation.cpp	Fri May 28 13:56:43 2010 +0300
@@ -26,14 +26,18 @@
     mOriginalMessageId(originalMessageId),
     mReplyAll(replyAll)
 {
+    NM_FUNCTION;
 }
 
 NmFwaReplyMessageCreationOperation::~NmFwaReplyMessageCreationOperation()
 {
+    NM_FUNCTION;
 }
 
 void NmFwaReplyMessageCreationOperation::doRunAsyncOperation()
 {
+    NM_FUNCTION;
+    
     const TFSMailMsgId mailMsgId(mMailboxId.pluginId32(), mMailboxId.id32());
 
     CFSMailBox *mailBox(NULL);
--- a/emailuis/nmframeworkadapter/src/nmfwastoreenvelopesoperation.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmframeworkadapter/src/nmfwastoreenvelopesoperation.cpp	Fri May 28 13:56:43 2010 +0300
@@ -25,19 +25,22 @@
         mMailClient(mailClient),
         mRequestId(0)
 {
+    NM_FUNCTION;
+    
     mMessages = messages;
 }
 
 NmFwaStoreEnvelopesOperation::~NmFwaStoreEnvelopesOperation()
 {
-    NMLOG("NmFwaStoreEnvelopesOperation::~NmFwaStoreEnvelopesOperation() <---");
+    NM_FUNCTION;
+    
     mMessages.ResetAndDestroy();
-    NMLOG("NmFwaStoreEnvelopesOperation::~NmFwaStoreEnvelopesOperation() --->");
 }
 
 void NmFwaStoreEnvelopesOperation::doRunAsyncOperation()
 {
-    NMLOG("NmFwaStoreEnvelopesOperation::doRunAsyncOperation() <---");
+    NM_FUNCTION;
+    
     const TFSMailMsgId mailboxId(mMailboxId.pluginId32(), mMailboxId.id32());
     CFSMailBox *mailbox(NULL);
     TRAP_IGNORE( mailbox = mMailClient.GetMailBoxByUidL(mailboxId) );
@@ -56,14 +59,13 @@
         delete mailbox;
         mailbox = NULL;
     }
-    NMLOG("NmFwaStoreEnvelopesOperation::doRunAsyncOperation() --->");
 }
 
 void NmFwaStoreEnvelopesOperation::doCancelOperation()
 {
-    NMLOG("NmFwaStoreEnvelopesOperation::doCancelOperation() <---");
+    NM_FUNCTION;
+    
     TRAP_IGNORE(mMailClient.CancelL(mRequestId));
-    NMLOG("NmFwaStoreEnvelopesOperation::doCancelOperation() --->");
 }
 
 /**
@@ -74,7 +76,8 @@
  */
 void NmFwaStoreEnvelopesOperation::RequestResponseL(TFSProgress aEvent, TInt aRequestId)
 {
-    NMLOG("NmFwaStoreEnvelopesOperation::RequestResponseL() <---");
+    NM_FUNCTION;
+    
     if (aRequestId == mRequestId) {
         if (aEvent.iProgressStatus == TFSProgress::EFSStatus_RequestComplete && aEvent.iParam) {
             completeOperation(NmNoError);
@@ -86,5 +89,4 @@
             completeOperation(NmGeneralError);
         }
     }
-    NMLOG("NmFwaStoreEnvelopesOperation::RequestResponseL() --->");
 }
--- a/emailuis/nmframeworkadapter/src/nmfwastoremessageoperation.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmframeworkadapter/src/nmfwastoremessageoperation.cpp	Fri May 28 13:56:43 2010 +0300
@@ -25,16 +25,21 @@
         mRequestId(NmNotFoundError),
         mStatus(EStoreHeader)
 {
+    NM_FUNCTION;
 }
 
 NmFwaStoreMessageOperation::~NmFwaStoreMessageOperation()
 {
+    NM_FUNCTION;
+    
     doCancelOperation();
     delete mMessage;
 }
 
 void NmFwaStoreMessageOperation::doRunAsyncOperation()
 {
+    NM_FUNCTION;
+    
     TInt err = KErrNone;
 
     if (mMessage) {
@@ -75,11 +80,15 @@
  */
 void NmFwaStoreMessageOperation::doCompleteOperation()
 {
+    NM_FUNCTION;
+    
     mRequestId = NmNotFoundError;
 }
 
 void NmFwaStoreMessageOperation::doCancelOperation()
 {
+    NM_FUNCTION;
+    
     if (mRequestId >= 0) {
         TRAP_IGNORE(mMailClient.CancelL(mRequestId));
         mRequestId = NmNotFoundError;
@@ -95,6 +104,8 @@
 void NmFwaStoreMessageOperation::RequestResponseL(TFSProgress aEvent,
                                                      TInt aRequestId)
 {
+    NM_FUNCTION;
+    
     if (aRequestId == mRequestId) {
         if (aEvent.iProgressStatus ==
                 TFSProgress::EFSStatus_RequestComplete) {
--- a/emailuis/nmframeworkadapter/src/nmmailboxsearchobserver.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmframeworkadapter/src/nmmailboxsearchobserver.cpp	Fri May 28 13:56:43 2010 +0300
@@ -29,7 +29,7 @@
 */
 NmMailboxSearchObserver::NmMailboxSearchObserver()
 {
-    
+    NM_FUNCTION;
 }
 
 
@@ -38,7 +38,7 @@
 */
 NmMailboxSearchObserver::~NmMailboxSearchObserver()
 {
-    
+    NM_FUNCTION;
 }
 
 
@@ -52,6 +52,8 @@
 */
 void NmMailboxSearchObserver::MatchFoundL(CFSMailMessage *aMatchMessage)
 {
+    NM_FUNCTION;
+    
     if (aMatchMessage) {
         NmMessage *message = aMatchMessage->GetNmMessage();
 
@@ -70,6 +72,8 @@
 */
 void NmMailboxSearchObserver::SearchCompletedL()
 {
+    NM_FUNCTION;
+    
     emit searchComplete();
 }
 
@@ -81,6 +85,8 @@
 void NmMailboxSearchObserver::ClientRequiredSearchPriority(
     TInt *apRequiredSearchPriority)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(apRequiredSearchPriority);
 }
 
--- a/emailuis/nmhswidget/conf/nmhswidgetmail.docml	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmhswidget/conf/nmhswidgetmail.docml	Fri May 28 13:56:43 2010 +0300
@@ -1,88 +1,93 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="1.0">
-	  <widget name="emailLayoutWidget" type="HbWidget">
-	      <widget name="iconSeparator" type="HbLabel">
-	          <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-	          <icon iconName="note_warning" name="icon"/>
-	          <real name="z" value="1"/>
-	          <enums name="aspectRatioMode" value="IgnoreAspectRatio"/>
-	          <sizepolicy horizontalPolicy="Ignored" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-	          <sizehint height="2" type="PREFERRED" width="50un"/>
-	      </widget>
-	      <widget name="iconNewMail" type="HbLabel">
-	          <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-	          <real name="z" value="2"/>
-	          <enums name="aspectRatioMode" value="IgnoreAspectRatio"/>
-	          <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Ignored" verticalStretch="0"/>
-	          <sizehint type="PREFERRED" width="1.25un"/>
-	      </widget>
-	      <widget name="labelSender" type="HbLabel">
-	          <real name="z" value="3"/>
-	          <string name="plainText" value="Mail Spammer"/>
-	          <sizehint height="var(hb-param-text-height-tiny)" type="PREFERRED" width="33.43284un"/>
-	          <sizepolicy horizontalPolicy="Ignored" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-	          <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-tiny)"/>
-	      </widget>
-	      <widget name="labelTime" type="HbLabel">
-	          <real name="z" value="4"/>
-	          <string name="plainText" value="12:45pm"/>
-	          <sizehint height="var(hb-param-text-height-tiny)" type="FIXED" width="13un"/>
-	          <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-	          <enums name="alignment" value="AlignRight|AlignTop|AlignTrailing"/>
-                  <fontspec name="fontSpec" role="Secondary" textheight="2.5un"/>
-	      </widget>
-	      <widget name="labelSubject" type="HbLabel">
-	          <real name="z" value="5"/>
-	          <string name="plainText" value="Check out great new medication.."/>
-	          <sizepolicy horizontalPolicy="Ignored" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-	          <sizehint height="var(hb-param-text-height-tiny)" type="PREFERRED" width="35un"/>
-	          <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-tiny)"/>
-	      </widget>
-	      <widget name="iconThree" type="HbLabel">
-	          <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-	          <icon iconName="note_warning" name="icon"/>
-	          <real name="z" value="6"/>
-	          <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-	          <sizehint height="var(hb-param-graphic-size-secondary)" type="FIXED" width="var(hb-param-graphic-size-secondary)"/>
-	      </widget>
-	      <widget name="iconTwo" type="HbLabel">
-	          <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-	          <icon iconName="note_warning" name="icon"/>
-	          <real name="z" value="7"/>
-	          <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-	          <sizehint height="var(hb-param-graphic-size-secondary)" type="FIXED" width="var(hb-param-graphic-size-secondary)"/>
-	      </widget>
-	      <widget name="iconOne" type="HbLabel">
-	          <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-	          <icon iconName="note_warning" name="icon"/>
-	          <real name="z" value="8"/>
-	          <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-	          <sizehint height="var(hb-param-graphic-size-secondary)" type="FIXED" width="var(hb-param-graphic-size-secondary)"/>
-	      </widget>
-	      <real name="z" value="1"/>
-	      <sizehint height="11.1un" type="FIXED" width="46un"/>
-	      <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-	      <layout type="anchor">
-	          <anchoritem dst="iconSeparator" dstEdge="LEFT" spacing="2" src="" srcEdge="LEFT"/>
-	          <anchoritem dst="iconSeparator" dstEdge="TOP" spacing="0" src="" srcEdge="TOP"/>
-	          <anchoritem dst="iconSeparator" dstEdge="RIGHT" spacing="-2" src="" srcEdge="RIGHT"/>
-	          <anchoritem dst="iconNewMail" dstEdge="LEFT" spacing="var(hb-param-margin-gene-middle-horizontal)" src="" srcEdge="LEFT"/>
-	          <anchoritem dst="iconNewMail" dstEdge="TOP" spacing="0.5un" src="iconSeparator" srcEdge="BOTTOM"/>
-	          <anchoritem dst="iconNewMail" dstEdge="BOTTOM" spacing="-0.5un" src="" srcEdge="BOTTOM"/>
-	          <anchoritem dst="labelSender" dstEdge="LEFT" spacing="var(hb-param-margin-gene-middle-horizontal)" src="iconNewMail" srcEdge="RIGHT"/>
-	          <anchoritem dst="labelSender" dstEdge="TOP" spacing="var(hb-param-margin-gene-top)" src="iconSeparator" srcEdge="BOTTOM"/>
-	          <anchoritem dst="labelTime" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-middle-horizontal)" src="" srcEdge="RIGHT"/>
-	          <anchoritem dst="labelTime" dstEdge="TOP" spacing="0" src="labelSender" srcEdge="TOP"/>
-	          <anchoritem dst="labelTime" dstEdge="LEFT" spacing="var(hb-param-margin-gene-middle-horizontal)" src="labelSender" srcEdge="RIGHT"/>
-	          <anchoritem dst="labelSubject" dstEdge="LEFT" spacing="var(hb-param-margin-gene-middle-horizontal)" src="iconNewMail" srcEdge="RIGHT"/>
-	          <anchoritem dst="labelSubject" dstEdge="TOP" spacing="var(hb-param-margin-gene-middle-vertical)" src="labelSender" srcEdge="BOTTOM"/>
-	          <anchoritem dst="iconThree" dstEdge="TOP" spacing="0" src="labelSubject" srcEdge="TOP"/>
-	          <anchoritem dst="iconThree" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-middle-horizontal)" src="" srcEdge="RIGHT"/>
-	          <anchoritem dst="iconTwo" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-middle-horizontal)" src="iconThree" srcEdge="LEFT"/>
-	          <anchoritem dst="iconTwo" dstEdge="TOP" spacing="0" src="labelSubject" srcEdge="TOP"/>
-	          <anchoritem dst="iconOne" dstEdge="TOP" spacing="0" src="labelSubject" srcEdge="TOP"/>
-	          <anchoritem dst="iconOne" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-middle-horizontal)" src="iconTwo" srcEdge="LEFT"/>
-	          <anchoritem dst="labelSubject" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-middle-horizontal)" src="iconOne" srcEdge="LEFT"/>
-	      </layout>
-	  </widget>
+<hbdocument version="1.1">
+    <widget name="emailLayoutWidget" type="HbWidget">
+        <widget name="iconSeparator" type="HbLabel">
+            <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+            <icon iconName="note_warning" name="icon"/>
+            <enums name="aspectRatioMode" value="IgnoreAspectRatio"/>
+            <real name="z" value="1"/>
+            <sizepolicy horizontalPolicy="Ignored" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint height="2" type="PREFERRED" width="50un"/>
+        </widget>
+        <widget name="iconNewMail" type="HbLabel">
+            <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+            <enums name="aspectRatioMode" value="IgnoreAspectRatio"/>
+            <real name="z" value="2"/>
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Ignored" verticalStretch="0"/>
+            <sizehint type="PREFERRED" width="1.25un"/>
+        </widget>
+        <widget name="labelSender" type="HbLabel">
+            <real name="z" value="3"/>
+            <sizepolicy horizontalPolicy="Ignored" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint height="var(hb-param-text-height-secondary)" type="PREFERRED" width="33.43284un"/>
+            <string name="plainText" value="Mail Spammer"/>
+            <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+        </widget>
+        <widget name="labelTime" type="HbLabel">
+            <enums name="alignment" value="AlignRight|AlignTop|AlignTrailing"/>
+            <real name="z" value="4"/>
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint height="var(hb-param-text-height-tiny)" type="FIXED" width="10un"/>
+            <string name="plainText" value="12:45pm"/>
+            <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-tiny)"/>
+        </widget>
+        <widget name="labelSubject" type="HbLabel">
+            <real name="z" value="5"/>
+            <sizepolicy horizontalPolicy="Ignored" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint height="var(hb-param-text-height-secondary)" type="PREFERRED" width="35un"/>
+            <string name="plainText" value="Check out great new medication.."/>
+            <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
+        </widget>
+        <widget name="iconThree" type="HbLabel">
+            <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+            <icon iconName="note_warning" name="icon"/>
+            <real name="z" value="6"/>
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint height="var(hb-param-graphic-size-secondary)" type="FIXED" width="var(hb-param-graphic-size-secondary)"/>
+        </widget>
+        <widget name="iconTwo" type="HbLabel">
+            <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+            <icon iconName="note_warning" name="icon"/>
+            <real name="z" value="7"/>
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint height="var(hb-param-graphic-size-secondary)" type="FIXED" width="var(hb-param-graphic-size-secondary)"/>
+        </widget>
+        <widget name="iconOne" type="HbLabel">
+            <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+            <icon iconName="note_warning" name="icon"/>
+            <real name="z" value="8"/>
+            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+            <sizehint height="var(hb-param-graphic-size-secondary)" type="FIXED" width="var(hb-param-graphic-size-secondary)"/>
+        </widget>
+        <real name="z" value="1"/>
+        <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+        <sizehint height="9.75un" type="FIXED" width="46un"/>
+        <sizehint type="MINIMUM" width="46un"/>
+        <sizehint height="48.39un" type="MAXIMUM" width="46un"/>
+        <layout type="anchor">
+            <anchoritem dst="iconSeparator" dstEdge="LEFT" spacing="2" src="" srcEdge="LEFT"/>
+            <anchoritem dst="iconSeparator" dstEdge="TOP" spacing="0" src="" srcEdge="TOP"/>
+            <anchoritem dst="iconSeparator" dstEdge="RIGHT" spacing="-2" src="" srcEdge="RIGHT"/>
+            <anchoritem dst="iconNewMail" dstEdge="LEFT" spacing="var(hb-param-margin-gene-middle-horizontal)" src="" srcEdge="LEFT"/>
+            <anchoritem dst="iconNewMail" dstEdge="TOP" spacing="1un" src="iconSeparator" srcEdge="BOTTOM"/>
+            <anchoritem dst="iconNewMail" dstEdge="BOTTOM" spacing="-1un" src="" srcEdge="BOTTOM"/>
+            <anchoritem dst="labelSubject" dstEdge="LEFT" spacing="var(hb-param-margin-gene-middle-horizontal)" src="iconNewMail" srcEdge="RIGHT"/>
+            <anchoritem dst="labelSubject" dstEdge="TOP" spacing="var(hb-param-margin-gene-middle-vertical)" src="labelSender" srcEdge="BOTTOM"/>
+            <anchoritem dst="labelSubject" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-middle-horizontal)" src="iconOne" srcEdge="LEFT"/>
+            <anchoritem dst="labelSender" dstEdge="LEFT" spacing="var(hb-param-margin-gene-middle-horizontal)" src="iconNewMail" srcEdge="RIGHT"/>
+            <anchoritem dst="labelSender" dstEdge="TOP" spacing="1un" src="iconSeparator" srcEdge="BOTTOM"/>
+            <anchoritem dst="labelSender" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-middle-horizontal)" src="labelTime" srcEdge="LEFT"/>
+            <anchoritem dst="labelTime" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-middle-horizontal)" src="" srcEdge="RIGHT"/>
+            <anchoritem dst="labelTime" dstEdge="CENTERV" spacing="0un" src="labelSender" srcEdge="CENTERV"/>
+            <anchoritem dst="iconOne" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-middle-horizontal)" src="iconTwo" srcEdge="LEFT"/>
+            <anchoritem dst="iconOne" dstEdge="CENTERV" spacing="0un" src="labelSubject" srcEdge="CENTERV"/>
+            <anchoritem dst="iconThree" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-middle-horizontal)" src="" srcEdge="RIGHT"/>
+            <anchoritem dst="iconThree" dstEdge="CENTERV" spacing="0un" src="iconOne" srcEdge="CENTERV"/>
+            <anchoritem dst="iconTwo" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-middle-horizontal)" src="iconThree" srcEdge="LEFT"/>
+            <anchoritem dst="iconTwo" dstEdge="CENTERV" spacing="0un" src="iconOne" srcEdge="CENTERV"/>
+        </layout>
+    </widget>
+    <metadata activeUIState="Common ui state" display="NHD-3.2-inch_portrait" unit="un">
+        <uistate name="Common ui state" sections="#common"/>
+    </metadata>
 </hbdocument>
--- a/emailuis/nmhswidget/conf/nmhswidgettitle.docml	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmhswidget/conf/nmhswidgettitle.docml	Fri May 28 13:56:43 2010 +0300
@@ -1,12 +1,12 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="1.0">
+<hbdocument version="1.1">
     <widget name="titleLayoutWidget" type="HbWidget">
         <widget name="mailboxNameLabel" type="HbLabel">
             <real name="z" value="1"/>
             <sizepolicy horizontalPolicy="Ignored" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-            <sizehint height="var(hb-param-text-height-tiny)" type="PREFERRED" width="34.92537un"/>
+            <sizehint height="var(hb-param-text-height-secondary)" type="PREFERRED" width="34.92537un"/>
             <string name="plainText" value="Mailbox gmail"/>
-            <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-tiny)"/>
+            <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
         </widget>
         <widget name="mailboxIcon" type="HbLabel">
             <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
@@ -14,35 +14,42 @@
             <real name="z" value="2"/>
             <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
             <sizehint height="11un" type="FIXED" width="11un"/>
+            <sizehint height="11un" type="MINIMUM" width="11un"/>
+            <sizehint height="11un" type="MAXIMUM" width="11un"/>
         </widget>
         <widget name="unreadCountLabel" type="HbLabel">
             <enums name="alignment" value="AlignRight|AlignVCenter|AlignTrailing"/>
             <real name="z" value="3"/>
             <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-            <sizehint height="var(hb-param-text-height-tiny)" type="FIXED" width="6un"/>
+            <sizehint height="var(hb-param-text-height-secondary)" type="FIXED" width="6un"/>
             <string locid="txt_mail_widget_list_l1" name="plainText" value="(999)"/>
-            <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-tiny)"/>
+            <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
         </widget>
         <widget name="collapseExpandIcon" type="HbPushButton">
             <icon iconName="note_warning" name="icon"/>
             <real name="z" value="4"/>
             <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
             <sizehint height="5.5un" type="FIXED" width="5.5un"/>
+            <sizehint height="5.5un" type="MINIMUM" width="5.5un"/>
+            <sizehint height="5.5un" type="MAXIMUM" width="5.5un"/>
             <string name="alignment" value="AlignVCenter|AlignHCenter"/>
         </widget>
         <real name="z" value="1"/>
         <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
-        <sizehint height="7un" type="FIXED" width="46un"/>
+        <sizehint height="7.5un" type="FIXED" width="46un"/>
         <layout type="anchor">
             <anchoritem dst="mailboxIcon" dstEdge="LEFT" spacing="var(hb-param-margin-gene-middle-horizontal)" src="" srcEdge="LEFT"/>
             <anchoritem dst="mailboxIcon" dstEdge="BOTTOM" spacing="0un" src="" srcEdge="BOTTOM"/>
             <anchoritem dst="mailboxNameLabel" dstEdge="LEFT" spacing="var(hb-param-margin-gene-middle-horizontal)" src="mailboxIcon" srcEdge="RIGHT"/>
             <anchoritem dst="mailboxNameLabel" dstEdge="TOP" spacing="var(hb-param-margin-gene-top)" src="" srcEdge="TOP"/>
             <anchoritem dst="mailboxNameLabel" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-middle-horizontal)" src="unreadCountLabel" srcEdge="LEFT"/>
-            <anchoritem dst="unreadCountLabel" dstEdge="TOP" spacing="0un" src="mailboxNameLabel" srcEdge="TOP"/>
-            <anchoritem dst="unreadCountLabel" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-middle-horizontal)" src="collapseExpandIcon" srcEdge="LEFT"/>
             <anchoritem dst="collapseExpandIcon" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-middle-horizontal)" src="" srcEdge="RIGHT"/>
             <anchoritem dst="collapseExpandIcon" dstEdge="CENTERV" spacing="0un" src="unreadCountLabel" srcEdge="CENTERV"/>
+            <anchoritem dst="unreadCountLabel" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-middle-horizontal)" src="collapseExpandIcon" srcEdge="LEFT"/>
+            <anchoritem dst="unreadCountLabel" dstEdge="CENTERV" spacing="0un" src="mailboxNameLabel" srcEdge="CENTERV"/>
         </layout>
     </widget>
+    <metadata activeUIState="Common ui state" display="NHD-3.2-inch_portrait" unit="un">
+        <uistate name="Common ui state" sections="#common"/>
+    </metadata>
 </hbdocument>
--- a/emailuis/nmhswidget/inc/nmhswidgetemailrow.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmhswidget/inc/nmhswidgetemailrow.h	Fri May 28 13:56:43 2010 +0300
@@ -22,10 +22,10 @@
 #include <QDateTime>
 #include <hbwidget.h>
 #include "nmcommon.h"
+#include "nmmessageenvelope.h"
 
 //FORWARD DECLARATIONS:
 class HbLabel;
-class NmMessageEnvelope;
 
 class NmHsWidgetEmailRow : public HbWidget
 {
@@ -36,6 +36,8 @@
     ~NmHsWidgetEmailRow();
     NmId messageId();
     bool loadDocML();
+    void setFontsSize( bool read );
+    void setFontsColor( bool pressed );
 
 public slots:
     void updateMailData( const NmMessageEnvelope& envelope );
@@ -51,6 +53,7 @@
 protected:
     void mousePressEvent(QGraphicsSceneMouseEvent *event);
     void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+    bool event( QEvent *event );
     
 private:
     HbLabel *mSenderLabel;
@@ -61,6 +64,7 @@
     NmId mMessageId;
     QDateTime mMessageSentTime;
     QList <HbLabel*> mStatusIcons;  
+    NmMessageEnvelope mEnvelope;
     
 };
 
--- a/emailuis/nmhswidget/inc/nmhswidgettitlerow.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmhswidget/inc/nmhswidgettitlerow.h	Fri May 28 13:56:43 2010 +0300
@@ -34,6 +34,8 @@
     bool loadDocML();
     
     void setAccountIcon(const QString& accountIconName );
+    void setExpandCollapseIcon(const bool& expand);
+    void setFontsColor( bool pressed );
     
 private:
 
@@ -49,6 +51,8 @@
     
 protected:
     void mousePressEvent(QGraphicsSceneMouseEvent *event);
+    void mouseReleaseEvent(QGraphicsSceneMouseEvent *event);
+    bool event( QEvent *event );
     
 private:
     HbLabel *mMailboxIcon;
--- a/emailuis/nmhswidget/nmhswidget.pro	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmhswidget/nmhswidget.pro	Fri May 28 13:56:43 2010 +0300
@@ -68,7 +68,6 @@
 
 INCLUDEPATH += ./inc \
     ../../inc \
-    ../nmailuiengine/inc \
     ../inc
 DEPENDPATH += .
 TRANSLATIONS = mailwidget.ts
--- a/emailuis/nmhswidget/src/nmhswidget.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmhswidget/src/nmhswidget.cpp	Fri May 28 13:56:43 2010 +0300
@@ -14,7 +14,6 @@
  * Description: 
  *
  */
-#include <QDebug>
 #include <QtGui>
 #include <QGraphicsLinearLayout>
 #include <hbcolorscheme.h>
@@ -29,6 +28,7 @@
 #include "nmhswidgetemailrow.h"
 #include "nmhswidgetconsts.h"
 #include "nmhswidgetdatetimeobserver.h"
+#include "emailtrace.h"
 
 NmHsWidget::NmHsWidget(QGraphicsItem *parent, Qt::WindowFlags flags)
     : HbWidget(parent, flags), 
@@ -36,16 +36,14 @@
       mRowLayout(0),
       mTitleRow(0),
       mAccountId(0),
-      mAccountIconName(0),
+      mAccountIconName(),
       mTranslator(0),
       mBackgroundFrameDrawer(0),
-      mIsExpanded(true),
+      mIsExpanded(false),
       mStaticWidget(true),
       mDateObserver(0)
 {
-    qDebug() << "NmHsWidget::NmHsWidget IN -->>";
-       
-    qDebug() << "NmHsWidget::NmHsWidget OUT <<--";
+    NM_FUNCTION;
 }
 
 /*!
@@ -53,27 +51,19 @@
 */
 NmHsWidget::~NmHsWidget()
 {
-    qDebug() << "NmHsWidget::~NmHsWidget IN -->>";
-    if(mTranslator){
-        delete mTranslator;
-        mTranslator = NULL;
-    }
-    
-    if(mEngine){
-        delete mEngine;
-        mEngine = NULL;
-        }
-    
-    if(mBackgroundFrameDrawer){
-        delete mBackgroundFrameDrawer;
-        mBackgroundFrameDrawer = NULL;
-        }
-		
-	if(mDateObserver){
-        delete mDateObserver;
-        mDateObserver = NULL;
-        }
-    qDebug() << "NmHsWidget::~NmHsWidget OUT <<--";
+    NM_FUNCTION;
+
+    delete mTranslator;
+    mTranslator = NULL;
+
+    delete mEngine;
+    mEngine = NULL;
+
+    delete mBackgroundFrameDrawer;
+    mBackgroundFrameDrawer = NULL;
+
+    delete mDateObserver;
+    mDateObserver = NULL;
 }
 
 /*!
@@ -83,12 +73,11 @@
 */
 void NmHsWidget::onShow()
 {
-    qDebug() << "NmHsWidget::onShow IN -->>";
+    NM_FUNCTION;
     if (mEngine)
         {
         mEngine->activate();
         }
-    qDebug() << "NmHsWidget::onShow OUT <<--";
 }
 
 /*!
@@ -98,12 +87,11 @@
 */
 void NmHsWidget::onHide()
 {
-    qDebug() << "NmHsWidget::onHide IN -->>";
+    NM_FUNCTION;
     if (mEngine)
         {
         mEngine->suspend();
         }
-    qDebug() << "NmHsWidget::onHide OUT <<--";
 }
 
 /*!
@@ -113,17 +101,15 @@
 */
 bool NmHsWidget::setupLocalization()
 {
-    qDebug() << "NmHsWidget::setupLocalization IN -->>";
+    NM_FUNCTION;
     
     //Use correct localisation
     bool ret(false); 
     mTranslator = new QTranslator();
     QString lang = QLocale::system().name();
     ret = mTranslator->load(KNmHsWidgetLocFileName + lang, KNmHsWidgetLocLocation);
-    qDebug() << "NmHsWidget::setupLocalization mTranslator->load loadSucceed:"<<ret;
     QCoreApplication::installTranslator(mTranslator);
 
-    qDebug() << "NmHsWidget::setupLocalization OUT <<--";
     return ret;
 }
 
@@ -133,7 +119,8 @@
 */
 void NmHsWidget::setupUi()
 {
-    qDebug() << "NmHsWidget::setupUi IN -->>";
+    NM_FUNCTION;
+    
     setContentsMargins( KNmHsWidgetContentsMargin, KNmHsWidgetContentsMargin,
             KNmHsWidgetContentsMargin, KNmHsWidgetContentsMargin);
     
@@ -151,8 +138,6 @@
    //set to NULL to indicate that ownership transferred
    mBackgroundFrameDrawer = NULL;
    setBackgroundItem( backgroundLayoutItem );
-   
-   qDebug() << "NmHsWidget::setupUi OUT -->>";
 }
 
 /*!
@@ -162,9 +147,9 @@
 */
 void NmHsWidget::onInitialize()
 {
-    QT_TRY{
-        qDebug() << "NmHsWidget::onInitialize IN -->>";
-        
+    NM_FUNCTION;
+    
+    QT_TRY{       
         setupUi();
         //emit error if localization fails
         if(!setupLocalization()){
@@ -204,6 +189,7 @@
         updateMailData();
         mTitleRow->updateUnreadCount(mEngine->unreadCount());
         mTitleRow->setAccountIcon(mAccountIconName);
+        mTitleRow->setExpandCollapseIcon(mIsExpanded);
         
         //Get signals about changes in mail data
         connect(mEngine, SIGNAL( mailDataChanged() )
@@ -229,7 +215,6 @@
 	        //to place widget properly after adding to homescreen
 	        parentWidget()->resize(preferredSize()); 
 		}
-        qDebug() << "NmHsWidget::onInitialize OUT <<--";  
     }
     QT_CATCH(...){
         emit error();
@@ -244,9 +229,7 @@
 */
 void NmHsWidget::onUninitialize()
 {
-    qDebug() << "NmHsWidget::onUninitialize IN -->>";
-    
-    qDebug() << "NmHsWidget::onUninitialize OUT <<--";
+    NM_FUNCTION;
 }
 
 /*!
@@ -254,7 +237,8 @@
 */
 void NmHsWidget::updateMailData()
 {
-    qDebug() << "NmHsWidget::updateData IN -->>";
+    NM_FUNCTION;
+    
     QList<NmMessageEnvelope> envelopes;
     int count = 0;
     if (mIsExpanded) {
@@ -267,7 +251,6 @@
         {
         mMailRows[i]->updateMailData( envelopes[i] );
         }
-    qDebug() << "NmHsWidget::updateData OUT <<--"; 
 }
 
 /*!
@@ -276,12 +259,13 @@
 */
 void NmHsWidget::setAccountId(const QString &text)
 {
-    qDebug() << "NmHsWidget::setAccountId IN -->>"; 
+    NM_FUNCTION;
+    
     bool ok;
     quint64 id = text.toULongLong(&ok);
     if (!ok)
         {
-        qDebug() << "NmHsWidget::setAccountId: invalid account ID data, signal finished()!!!"; 
+        NM_ERROR(1,"NmHsWidget::setAccountId: invalid account ID data, signal finished()!!!"); 
         //No valid account id so give up
         emit finished();
         }
@@ -289,7 +273,6 @@
         {
         mAccountId.setId(id);
         }
-    qDebug() << "NmHsWidget::setAccountId OUT <<--"; 
 }
 
 /*!
@@ -298,7 +281,7 @@
 */
 QString NmHsWidget::accountId() const
 {
-    qDebug() << "NmHsWidget::accountId()"; 
+    NM_FUNCTION;
     return QString::number(mAccountId.id());
 }
 
@@ -307,9 +290,8 @@
 */
 void NmHsWidget::setAccountIconName(const QString &text)
 {
-    qDebug() << "NmHsWidget::setAccountIconName IN -->>"; 
+    NM_FUNCTION;
     mAccountIconName = text;
-    qDebug() << "NmHsWidget::setAccountIconName OUT <<--"; 
 }
 
 /*!
@@ -317,7 +299,7 @@
 */
 QString NmHsWidget::accountIconName() const
 {
-    qDebug() << "NmHsWidget::accountIconName()"; 
+    NM_FUNCTION;
     return mAccountIconName;
 }
 
@@ -326,9 +308,8 @@
 */
 void NmHsWidget::handleExpandCollapseEvent()
 {
-    qDebug() << "NmHsWidget::handleExpandCollapseEvent IN -->>";
+    NM_FUNCTION;
     toggleExpansionState();
-    qDebug() << "NmHsWidget::handleExpandCollapseEvent OUT <<--"; 
 }
 
 /*!
@@ -337,7 +318,7 @@
 */
 void NmHsWidget::toggleExpansionState()
 {
-    qDebug() << "NmHsWidget::setExpanded IN -->>"; 
+    NM_FUNCTION;
 
     mIsExpanded = !mIsExpanded;
     
@@ -349,7 +330,7 @@
     //handle state change drawing
     updateMailData();
     
-    qDebug() << "NmHsWidget::setExpanded OUT <<--"; 
+    mTitleRow->setExpandCollapseIcon(mIsExpanded);
 }
 
 /*!
@@ -357,7 +338,7 @@
 */
 void NmHsWidget::setWidgetStateProperty(QString value)
 {
-    qDebug() << "NmHsWidget::setWidgetStateProperty IN -->>"; 
+    NM_FUNCTION;
     if (value == KNmHsWidgetStateCollapsed)
         {
         mIsExpanded = false;
@@ -366,7 +347,6 @@
         {
         mIsExpanded = true;
         }
-    qDebug() << "NmHsWidget::setWidgetStateProperty OUT <<--"; 
 }
 
 /*!
@@ -374,7 +354,7 @@
 */
 QString NmHsWidget::widgetStateProperty()
 {
-    qDebug() << "NmHsWidget::widgetStateProperty()";
+    NM_FUNCTION;
     if (mIsExpanded)
         {
         return KNmHsWidgetStateExpanded;
@@ -392,9 +372,7 @@
 */
 void NmHsWidget::updateMailRowsList(const int mailCount)
 {
-    qDebug() << "NmHsWidget::updateMailRowsList IN -->>";
-    qDebug() << "NmHsWidget - mMailRows.count() == " <<  mMailRows.count();
-    qDebug() << "NmHsWidget - ordered count == " <<  mailCount;
+    NM_FUNCTION;
     
     int neededRowsCount = mailCount;
     //force size when static and expanded
@@ -408,10 +386,9 @@
         //more mails to show than rows
         if (mMailRows.count() < neededRowsCount)
             {
-            qDebug() << "NmHsWidget - add new mail row";
             NmHsWidgetEmailRow *row = new NmHsWidgetEmailRow();
             if( !row->loadDocML()){
-                qDebug() << "NmHsWidget::updateMailRowsList row->loadDocML() fails";
+                NM_ERROR(1,"NmHsWidget::updateMailRowsList row->loadDocML() fails");
                 //if docml loading fails no point to proceed
                 //but memoryleak must be prevented
                 delete row;
@@ -429,7 +406,6 @@
         //too many rows
         else if (mMailRows.count() > neededRowsCount)
             {
-            qDebug() << "NmHsWidget - remove mail row";
             mRowLayout->removeItem(mMailRows.last());
             delete mMailRows.takeLast();
             }
@@ -443,7 +419,6 @@
         {
         this->updateMailRowsVisibility(mailCount);
         }
-    qDebug() << "NmHsWidget::updateMailRowsList OUT <<--";
 }
 
 /*!
@@ -453,7 +428,7 @@
 */
 void NmHsWidget::updateMailRowsVisibility(const int visibleCount)
 {
-    qDebug() << "NmHsWidget::updateMailRowsVisibility IN -->>";
+    NM_FUNCTION;
   
     // set visible as many rows as requested by visibleCount param
     bool isVisible;
@@ -466,8 +441,6 @@
             }
         mMailRows.at(i)->setVisible(isVisible);
         }
-    
-    qDebug() << "NmHsWidget::updateMailRowsVisibility OUT <<--";
 }
 
 /*!
@@ -477,7 +450,7 @@
 */
 void NmHsWidget::onEngineException(const int& exc)
     {
-    qDebug() << "NmHsWidget:onEngineException IN -->>";
+    NM_FUNCTION;
     switch (exc)
         {
         case (NmEngineExcAccountDeleted):
--- a/emailuis/nmhswidget/src/nmhswidgetdatetimeobserver.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmhswidget/src/nmhswidgetdatetimeobserver.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,7 +15,7 @@
 *
 */
 
-#include <QDebug>
+#include "emailtrace.h"
 #include "nmhswidgetdatetimeobserver.h"
 #include "nmhswidgetdatetimeobserver_p.h"
 
@@ -28,9 +28,8 @@
     QObject(parent),
     d_ptr(0)
 {
-    qDebug() << "NmHsWidgetDateTimeObserver::NmHsWidgetDateTimeObserver --> IN";
+    NM_FUNCTION;
     d_ptr = new NmHsWidgetDateTimeObserverPrivate(this);
-    qDebug() << "NmHsWidgetDateTimeObserver::NmHsWidgetDateTimeObserver <-- OUT";
 }
 
 /*!
@@ -40,9 +39,8 @@
 */
 NmHsWidgetDateTimeObserver::~NmHsWidgetDateTimeObserver()
 {
-    qDebug() << "NmHsWidgetDateTimeObserver::~NmHsWidgetDateTimeObserver --> IN";
+    NM_FUNCTION;
     delete d_ptr;
-    qDebug() << "NmHsWidgetDateTimeObserver::~NmHsWidgetDateTimeObserver <-- OUT";
 }
 
 /*!
@@ -52,7 +50,6 @@
 */
 void NmHsWidgetDateTimeObserver::handleCompletion()
 {
-    qDebug() << "NmHsWidgetDateTimeObserver::handleCompletion --> IN";
+    NM_FUNCTION;
     emit dateTimeChanged();
-    qDebug() << "NmHsWidgetDateTimeObserver::handleCompletion <-- OUT";
 }
--- a/emailuis/nmhswidget/src/nmhswidgetdatetimeobserver_p.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmhswidget/src/nmhswidgetdatetimeobserver_p.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,10 +15,10 @@
 *
 */
 
-#include <QDebug>
 #include <bacntf.h>
 #include "nmhswidgetdatetimeobserver.h"
 #include "nmhswidgetdatetimeobserver_p.h"
+#include "emailtrace.h"
 
 /*!
     \fn NmHsWidgetDateTimeObserverPrivate::NmHsWidgetDateTimeObserverPrivate()
@@ -29,12 +29,11 @@
 NmHsWidgetDateTimeObserverPrivate::NmHsWidgetDateTimeObserverPrivate(NmHsWidgetDateTimeObserver *q) :
     q_ptr(q)
 {
-    qDebug() << "NmHsWidgetDateTimeObserverPrivate::NmHsWidgetDateTimeObserverPrivate --> IN" ;
+    NM_FUNCTION;
     TCallBack callback( LocaleChangeCallback, this );
     //TODO: Handle leave properly
     TRAP_IGNORE(iLocaleNotifier = CEnvironmentChangeNotifier::NewL( CActive::EPriorityStandard, callback ));
     iLocaleNotifier->Start();
-    qDebug() << "NmHsWidgetDateTimeObserverPrivate::NmHsWidgetDateTimeObserverPrivate <-- OUT" ;
 }
 
 /*!
@@ -44,12 +43,9 @@
 */
 NmHsWidgetDateTimeObserverPrivate::~NmHsWidgetDateTimeObserverPrivate()
 {
-    qDebug() << "NmHsWidgetDateTimeObserverPrivate::~NmHsWidgetDateTimeObserverPrivate --> IN" ;
-    if(iLocaleNotifier){
-        delete iLocaleNotifier;
-        iLocaleNotifier = NULL;
-    }
-    qDebug() << "NmHsWidgetDateTimeObserverPrivate::~NmHsWidgetDateTimeObserverPrivate <-- OUT" ;
+    NM_FUNCTION;
+    delete iLocaleNotifier;
+    iLocaleNotifier = NULL;
 }
 
 /*!
@@ -61,7 +57,7 @@
 */
 TInt NmHsWidgetDateTimeObserverPrivate::HandleLocaleChange()
 {
-    qDebug() << "NmHsWidgetDateTimeObserverPrivate::HandleLocaleChange";
+    NM_FUNCTION;
     TInt handled = 0;
     if( iLocaleNotifier->Change() & ( EChangesSystemTime | EChangesLocale | EChangesMidnightCrossover ))
         {
@@ -79,7 +75,7 @@
 */
 TInt NmHsWidgetDateTimeObserverPrivate::LocaleChangeCallback(TAny* aThisPtr)
 {
-    qDebug() << "NmHsWidgetDateTimeObserverPrivate::LocaleChangeCallback" ;
+    NM_FUNCTION;
     TInt ret = static_cast<NmHsWidgetDateTimeObserverPrivate*>(aThisPtr)->HandleLocaleChange();
     return ret;
 }
--- a/emailuis/nmhswidget/src/nmhswidgetemailengine.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmhswidget/src/nmhswidgetemailengine.cpp	Fri May 28 13:56:43 2010 +0300
@@ -16,7 +16,6 @@
  */
 
 #include <xqservicerequest.h>
-#include <QDebug>
 #include <QTimer>
 #include <QDir>
 #include <qpluginloader.h>
@@ -29,6 +28,7 @@
 #include "nmfolder.h"
 #include "nmdatapluginfactory.h"
 #include "nmhswidgetconsts.h"
+#include "emailtrace.h"
 
 /*!
  Constructor
@@ -36,7 +36,7 @@
 NmHsWidgetEmailEngine::NmHsWidgetEmailEngine(const NmId& monitoredMailboxId) :
     mMailboxId(monitoredMailboxId), 
     mFolderId(0), 
-    mAccountName(0), 
+    mAccountName(),
     mUnreadCount(-1),
     mEmailInterface(0), 
     mFactory(0), 
@@ -45,9 +45,7 @@
     mSuspended(false),
     mUpdateTimer(0)
 {
-    qDebug() << "NmHsWidgetEmailEngine() -- START";
-
-    qDebug() << "NmHsWidgetEmailEngine() -- END";
+    NM_FUNCTION;
 }
 
 /*!
@@ -58,7 +56,7 @@
  */
 bool NmHsWidgetEmailEngine::initialize()
 {
-    qDebug() << "initialize() -- START";
+    NM_FUNCTION;
         
     if (!constructNmPlugin()) {
         //if plugin connection fails, there's no reason to proceed
@@ -71,7 +69,6 @@
     mUpdateTimer->setInterval(NmHsWidgetEmailEngineUpdateTimerValue);
     connect(mUpdateTimer, SIGNAL(timeout()), this, SLOT(handleUpdateTimeout()) );
     
-    qDebug() << "initialize() -- END";
     return true;
 }
 
@@ -82,20 +79,20 @@
  */
 bool NmHsWidgetEmailEngine::constructNmPlugin()
 {
-    qDebug() << "NmHsWidgetEmailEngine::constructNmPlugin() -- START";
+    NM_FUNCTION;
 
     QObject* pluginInstance(0);
     //Get data plugin factory instance
     mFactory = NmDataPluginFactory::instance();
     if (!mFactory) {
-        qDebug() << "NmHsWidgetEmailEngine::constructNmPlugin() -- mFactory FAILED";
+        NM_ERROR(1,"NmHsWidgetEmailEngine::constructNmPlugin() -- mFactory FAILED");
         return false;
     }
 
     //Get plugin instance
     pluginInstance = mFactory->pluginInstance(mMailboxId);
     if (!pluginInstance) {
-        qDebug() << "NmHsWidgetEmailEngine::constructNmPlugin() -- pluginInstance FAILED";
+        NM_ERROR(1,"NmHsWidgetEmailEngine::constructNmPlugin() -- pluginInstance FAILED");
         return false;
     }
 
@@ -103,7 +100,7 @@
     mEmailInterface = mFactory->interfaceInstance(pluginInstance);
 
     if (!mEmailInterface) {
-        qDebug() << "NmHsWidgetEmailEngine::constructNmPlugin() -- mEmailInterface FAILED";
+        NM_ERROR(1,"NmHsWidgetEmailEngine::constructNmPlugin() -- mEmailInterface FAILED");
         return false;       
     }
     //Verify that the mailbox we are interested actually exists.
@@ -111,7 +108,7 @@
     QList<NmId> ids; 
     mEmailInterface->listMailboxIds(ids);
     if(!ids.contains(mMailboxId)){
-        qDebug() << "NmHsWidgetEmailEngine::constructNmPlugin() -- !ids.contains(mMailboxId) FAILED";
+        NM_ERROR(1,"NmHsWidgetEmailEngine::constructNmPlugin() -- !ids.contains(mMailboxId) FAILED");
         emit exceptionOccured(NmEngineExcAccountDeleted);
         return false;
     }
@@ -121,7 +118,6 @@
     //This is valid at least for IMAP accounts. 
     //Folder ID is then retrieved later when first message event is received
     mFolderId = mEmailInterface->getStandardFolderId(mMailboxId, NmFolderInbox);
-    qDebug() << "NmHsWidgetEmailEngine::constructNmPlugin() -- mFolderId==" << mFolderId.id();
 
     //Subscription is needed - otherwise the signals will not be received
     mEmailInterface->subscribeMailboxEvents(mMailboxId);
@@ -135,8 +131,6 @@
     connect(pluginInstance, SIGNAL( mailboxEvent(NmMailboxEvent, const QList<NmId>& ) ), this,
         SLOT( handleMailboxEvent(NmMailboxEvent, const QList<NmId>&) ));
 
-    qDebug() << "NmHsWidgetEmailEngine::constructNmPlugin() -- OK";
-
     return true;
 }
 
@@ -146,13 +140,11 @@
  */
 void NmHsWidgetEmailEngine::resetEnvelopeList()
 {
-    qDebug() << "NmHsWidgetEmailEngine::resetEnvelopeList() -- START";
+    NM_FUNCTION;
 
     while (!mEnvelopeList.isEmpty()) {
         delete mEnvelopeList.takeFirst();
     }
-
-    qDebug() << "NmHsWidgetEmailEngine::resetEnvelopeList() -- END";
 }
 
 /*!
@@ -160,7 +152,7 @@
  */
 NmHsWidgetEmailEngine::~NmHsWidgetEmailEngine()
 {
-    qDebug() << "~NmHsWidgetEmailEngine -- START";
+    NM_FUNCTION;
 
     resetEnvelopeList();
     if (mFactory) {
@@ -171,8 +163,6 @@
         mUpdateTimer->stop();
         delete mUpdateTimer;
     }
-    
-    qDebug() << "~NmHsWidgetEmailEngine -- END";
 }
 
 /*!
@@ -186,7 +176,7 @@
  */
 int NmHsWidgetEmailEngine::getEnvelopes(QList<NmMessageEnvelope> &list, int maxEnvelopeAmount)
 {
-    qDebug() << "NmHsWidgetEmailEngine::getEnvelopes()";
+    NM_FUNCTION;
     list.clear(); //Reset the parameter list to avoid side effects
     int i = 0;
     for (; i < mEnvelopeList.count() && i < maxEnvelopeAmount; i++) {
@@ -203,7 +193,7 @@
  */
 int NmHsWidgetEmailEngine::unreadCount()
 {
-    qDebug() << "NmHsWidgetEmailEngine::unreadCount()";
+    NM_FUNCTION;
     return mUnreadCount;
 }
 
@@ -214,7 +204,7 @@
  */
 QString NmHsWidgetEmailEngine::accountName()
 {
-    qDebug() << "NmHsWidgetEmailEngine::accountName()";
+    NM_FUNCTION;
     return mAccountName;
 }
 
@@ -231,9 +221,9 @@
  */
 bool NmHsWidgetEmailEngine::updateData()
 {
-    qDebug() << "NmHsWidgetEmailEngine::updateData() -- START";
+    NM_FUNCTION;
     if (!mEmailInterface) {
-        qDebug() << "NmHsWidgetEmailEngine::updateData() -- Interface missing";
+        NM_ERROR(1,"NmHsWidgetEmailEngine::updateData() -- Interface missing");
         emit exceptionOccured(NmEngineExcFailure); //fatal error
         return false; //if interface is missing there's nothing to do
     }
@@ -276,8 +266,6 @@
     }else{
         return false;
     }
-
-    qDebug() << "NmHsWidgetEmailEngine::updateData() -- END";
     return true;
 }
 
@@ -290,12 +278,12 @@
     const QList<NmId> &messageIds,
     const NmId& mailboxId)
 {
-    qDebug() << "NmHsWidgetEmailEngine::handleMessageEvent() -- START";
+    NM_FUNCTION;
     Q_UNUSED(event);
     Q_UNUSED(messageIds);
     
     if (!mEmailInterface) {
-        qDebug() << "NmHsWidgetEmailEngine::handleMessageEvent() -- Interface missing";
+        NM_ERROR(1,"NmHsWidgetEmailEngine::handleMessageEvent() -- Interface missing");
         emit exceptionOccured(NmEngineExcFailure); //fatal error
         return; //if interface is missing there's nothing to do
     }
@@ -315,7 +303,6 @@
             mUpdateTimer->start();
         }
     }
-    qDebug() << "NmHsWidgetEmailEngine::handleMessageEvent() -- END";
 }
 
 /*!
@@ -323,7 +310,7 @@
  */
 void NmHsWidgetEmailEngine::handleMailboxEvent(NmMailboxEvent event, const QList<NmId> &mailboxIds)
 {
-    qDebug() << "NmHsWidgetEmailEngine::handleMailboxEvent() -- START";
+    NM_FUNCTION;
     if (mailboxIds.contains(mMailboxId)) {
         switch (event) {
             case (NmMailboxChanged): {
@@ -344,7 +331,6 @@
                 break;
         }
     }
-    qDebug() << "NmHsWidgetEmailEngine::handleMailboxEvent() -- END";
 }
 
 /*!
@@ -352,12 +338,11 @@
  */
 void NmHsWidgetEmailEngine::handleUpdateTimeout()
 {
-    qDebug() << "NmHsWidgetEmailEngine::handleUpdateTimeout() -- START";
+    NM_FUNCTION;
     if (mUpdateTimer){
         mUpdateTimer->stop();
     }
     updateData();
-    qDebug() << "NmHsWidgetEmailEngine::updateAccount() -- END";
 }
 
 /*!
@@ -367,7 +352,7 @@
  */
 bool NmHsWidgetEmailEngine::updateAccount()
 {
-    qDebug() << "NmHsWidgetEmailEngine::updateAccount() -- START";
+    NM_FUNCTION;
 
     NmMailbox* box = NULL;
     if (mEmailInterface) {
@@ -383,7 +368,6 @@
         box = NULL;
         emit accountNameChanged(mAccountName);
     }
-    qDebug() << "NmHsWidgetEmailEngine::updateAccount() -- END";
     return true;
 }
 
@@ -393,9 +377,8 @@
  */
 void NmHsWidgetEmailEngine::suspend()
 {
-    qDebug() << "NmHsWidgetEmailEngine::suspend() -- START";
+    NM_FUNCTION;
     mSuspended = true;
-    qDebug() << "NmHsWidgetEmailEngine::suspend() -- END";
 }
 
 /*!
@@ -405,7 +388,7 @@
  */
 void NmHsWidgetEmailEngine::activate()
 {
-    qDebug() << "NmHsWidgetEmailEngine::activate() -- START";
+    NM_FUNCTION;
     mSuspended = false;
     if (mAccountEventReceivedWhenSuspended) {
         mAccountEventReceivedWhenSuspended = false;
@@ -415,7 +398,6 @@
         mMessageEventReceivedWhenSuspended = false;
         updateData();
     }
-    qDebug() << "NmHsWidgetEmailEngine::activate() -- END";
 }
 
 /*!
@@ -424,7 +406,7 @@
  */
 void NmHsWidgetEmailEngine::launchMailAppInboxView()
 {
-    qDebug() << "NmHsWidgetEmailEngine::launchMailAppInboxView() -- START";
+    NM_FUNCTION;
 
     XQServiceRequest request(
         emailFullServiceNameMailbox,
@@ -436,8 +418,6 @@
 
     request.setArguments(list);
     request.send();
-
-    qDebug() << "NmHsWidgetEmailEngine::launchMailAppInboxView() -- END";
 }
 
 /*!
@@ -447,7 +427,7 @@
  */
 void NmHsWidgetEmailEngine::launchMailAppMailViewer(const NmId &messageId)
 {
-    qDebug() << "NmHsWidgetEmailEngine::launchMailAppMailViewer() -- START";
+    NM_FUNCTION;
 
     XQServiceRequest request(
        emailFullServiceNameMessage,
@@ -461,6 +441,4 @@
 
     request.setArguments(list);
     request.send();
-
-    qDebug() << "NmHsWidgetEmailEngine::launchMailAppMailViewer() -- END";
 }
--- a/emailuis/nmhswidget/src/nmhswidgetemailrow.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmhswidget/src/nmhswidgetemailrow.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,18 +15,19 @@
  *
  */
 
-#include <QDebug>
 #include <QGraphicsLinearLayout>
 #include <hbdocumentloader.h>
 #include <hblabel.h>
 #include <hbextendedlocale.h>
 #include <HbFrameDrawer>
 #include <HbFrameItem>
+#include <HbColorScheme>
+#include <HbEvent>
 #include "nmicons.h"
 #include "nmcommon.h"
 #include "nmhswidgetemailrow.h"
 #include "nmhswidgetconsts.h"
-#include "nmmessageenvelope.h"
+#include "emailtrace.h"
 
 NmHsWidgetEmailRow::NmHsWidgetEmailRow(QGraphicsItem *parent, Qt::WindowFlags flags) :
     HbWidget(parent, flags), 
@@ -37,9 +38,7 @@
     mSeparatorIcon(0), 
     mMessageId(0)
 {
-    qDebug() << "NmHsWidgetEmailRow::NmHsWidgetEmailRow IN -->>";
-
-    qDebug() << "NmHsWidgetEmailRow::NmHsWidgetEmailRow OUT <<--";
+    NM_FUNCTION;
 }
 
 /*!
@@ -47,9 +46,7 @@
  */
 NmHsWidgetEmailRow::~NmHsWidgetEmailRow()
 {
-    qDebug() << "NmHsWidgetEmailRow::~NmHsWidgetEmailRow IN -->>";
-
-    qDebug() << "NmHsWidgetEmailRow::~NmHsWidgetEmailRow OUT <<--";
+    NM_FUNCTION;
 }
 
 /*!
@@ -57,7 +54,7 @@
  */
 NmId NmHsWidgetEmailRow::messageId()
 {
-    qDebug() << "NmHsWidgetEmailRow::messageId()";
+    NM_FUNCTION;
     return mMessageId;
 
 }
@@ -69,17 +66,17 @@
  */
 bool NmHsWidgetEmailRow::loadDocML()
 {
+    NM_FUNCTION;
+    
     HbFrameDrawer* backgroundFrameDrawer = 0;
     HbFrameItem* backgroundLayoutItem = 0;
-    QT_TRY{
-        qDebug() << "NmHsWidgetEmailRow::loadDocML IN -->>";
-    
+    QT_TRY{   
         // Use document loader to load the contents
         HbDocumentLoader loader;
         bool ok(false);
         loader.load(KNmHsWidgetMailRowDocML, &ok);
         if (!ok) {
-            qDebug() << "NmHsWidgetEmailRow::loadDocML fail @ loader <<--";
+            NM_ERROR(1,"NmHsWidgetEmailRow::loadDocML fail @ loader");
             return false;
         }
     
@@ -94,7 +91,7 @@
         //find container widget
         QGraphicsWidget *container = loader.findWidget(KNmHsWidgetMailRowContainer);
         if (!container) {
-            qDebug() << "NmHsWidgetEmailRow::loadDocML fail @ container <<--";
+            NM_ERROR(1,"NmHsWidgetEmailRow::loadDocML fail @ container");
             return false;
         }
         layout->addItem(container);
@@ -118,13 +115,12 @@
     
         //Verify that items are valid
         if (!mSenderLabel || !mSubjectLabel || !mTimeLabel || !mNewMailIcon || !mSeparatorIcon) {
-            qDebug() << "NmHsWidgetEmailRow::loadDocML fail @ labels & icons <<--";
+            NM_ERROR(1,"NmHsWidgetEmailRow::loadDocML fail @ labels & icons");
             return false;
         }
         //Verify all mStatusIcons
         for (int i = 0; i < mStatusIcons.length(); i++) {
             if (!mStatusIcons[i]) {
-                qDebug() << "NmHsWidgetEmailRow::loadDocML status icons <<--";
                 return false;
             }
         }
@@ -142,7 +138,6 @@
         //hide all the icons first to avoid blinking
         hideIcons();
     
-        qDebug() << "NmHsWidgetEmailRow::loadDocML OK OUT <<--";
         return true;
     }
     QT_CATCH(...){
@@ -160,8 +155,10 @@
  */
 void NmHsWidgetEmailRow::updateMailData(const NmMessageEnvelope& envelope)
 {
-    qDebug() << "NmHsWidgetEmailRow::updateMailData IN -->>";
+    NM_FUNCTION;
 
+    mEnvelope = NmMessageEnvelope(envelope);
+    
     //hide all icons, so no previous data is messing with the new
     hideIcons();
 
@@ -183,7 +180,10 @@
     
     //set new icons to widget based on the data
     setIconsToWidget( envelope );
-    qDebug() << "NmHsWidgetEmailRow::updateMailData OUT <<--";
+    
+    //set fonts color and size
+    setFontsSize(mEnvelope.isRead());
+    setFontsColor(false);
     }
 
 /*!
@@ -191,7 +191,7 @@
 */
 void NmHsWidgetEmailRow::updateDateTime()
     {
-    qDebug() << "NmHsWidgetEmailRow::updateDateTime IN -->>";
+    NM_FUNCTION;
     //Set Date with locale support
     //Time shown if message is sent today, otherwise show date
     HbExtendedLocale locale = HbExtendedLocale::system();
@@ -207,7 +207,6 @@
         QString dateSpec = r_qtn_date_without_year;
         mTimeLabel->setPlainText( locale.format(mMessageSentTime.date(), dateSpec) );
         }
-    qDebug() << "NmHsWidgetEmailRow::updateDateTime OUT <<--";
     }
 
 /*!
@@ -215,12 +214,11 @@
  */
 void NmHsWidgetEmailRow::hideIcons()
 {
-    qDebug() << "NmHsWidgetEmailRow::hideIcons IN -->>";
+    NM_FUNCTION;
     for (int i = 0; i < mStatusIcons.count(); i++) {
         mStatusIcons[i]->hide();
     }
     mNewMailIcon->hide();
-    qDebug() << "NmHsWidgetEmailRow::hideIcons OUT <<--";
 }
 
 /*!
@@ -228,7 +226,7 @@
  */
 void NmHsWidgetEmailRow::setIconsToWidget(const NmMessageEnvelope& envelope)
 {
-    qDebug() << "NmHsWidgetEmailRow::setIconsToWidget IN -->>";
+    NM_FUNCTION;
 
     bool unreadMail = !envelope.isRead();
     bool attachment = envelope.hasAttachments();
@@ -267,18 +265,69 @@
         mStatusIcons[count]->setIcon(iconList[count]);
         mStatusIcons[count]->show();
     }
+}
 
-    qDebug() << "NmHsWidgetEmailRow::setIconsToWidget OUT <<--";
-}
+
+/*!
+    sets fonts size. Unread and read mails are shown differently
+*/
+void NmHsWidgetEmailRow::setFontsSize( bool read )
+    {
+    NM_FUNCTION;
+    HbFontSpec fontSpec;
+    
+    if(!read){
+        fontSpec.setRole(HbFontSpec::Primary);
+        mTimeLabel->fontSpec().setRole(HbFontSpec::Primary);
+    }
+    else{
+        fontSpec.setRole(HbFontSpec::Secondary);
+        mTimeLabel->fontSpec().setRole(HbFontSpec::Secondary);
+    }  
+    
+    HbStyle style;
+    qreal size;
+    bool found = style.parameter(QString("hb-param-text-height-secondary"), size );
+    if (found) {
+        fontSpec.setTextHeight(size);
+    }
+    
+    mSenderLabel->setFontSpec(fontSpec);
+    mSubjectLabel->setFontSpec(fontSpec);
+    }
+
+/*!
+    sets fonts color.
+*/
+void NmHsWidgetEmailRow::setFontsColor( bool pressed )
+    {
+    NM_FUNCTION;;
+    QColor newFontColor;
+    
+    if(pressed){
+        newFontColor = HbColorScheme::color("qtc_hs_list_item_pressed");
+    }
+    else if(mEnvelope.isRead()){
+        newFontColor = HbColorScheme::color("qtc_hs_list_item_content_normal");
+    }
+    else{
+        newFontColor = HbColorScheme::color("qtc_hs_list_item_title_normal");
+    }
+ 
+    mSenderLabel->setTextColor(newFontColor);
+    mSubjectLabel->setTextColor(newFontColor);
+    mTimeLabel->setTextColor(newFontColor);
+    }
+
 
 /*!
  mousePressEvent(QGraphicsSceneMouseEvent *event)
  */
 void NmHsWidgetEmailRow::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
-    qDebug() << "NmHsWidgetTitleRow::mousePressEvent() IN -->>";
+    NM_FUNCTION;
     Q_UNUSED(event); 
-    qDebug() << "NmHsWidgetTitleRow::mousePressEvent() OUT <<--";
+    setFontsColor(true);
 }
 
 /*!
@@ -286,8 +335,22 @@
 */
 void NmHsWidgetEmailRow::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
 {
-    qDebug() << "NmHsWidgetTitleRow::mouseReleaseEvent() IN -->>";
+    NM_FUNCTION;
     Q_UNUSED(event);
+    setFontsColor(false);
     emit mailViewerLaunchTriggered(mMessageId);
-    qDebug() << "NmHsWidgetTitleRow::mouseReleaseEvent() OUT <<--";
 }
+
+/*
+ * NmHsWidgetEmailRow::event()
+ */
+bool NmHsWidgetEmailRow::event( QEvent *event )
+{
+    NM_FUNCTION;
+    QEvent::Type eventType = event->type();
+    if( eventType == HbEvent::ThemeChanged ){
+        setFontsColor(false);
+        return true;
+    }
+    return HbWidget::event(event);
+}
--- a/emailuis/nmhswidget/src/nmhswidgetplugin.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmhswidget/src/nmhswidgetplugin.cpp	Fri May 28 13:56:43 2010 +0300
@@ -21,6 +21,7 @@
 
 #include "nmhswidgetplugin.h"
 #include "nmhswidget.h"
+#include "emailtrace.h"
 
 #ifdef COVERAGE_MEASUREMENT
 #pragma CTC SKIP
@@ -40,7 +41,7 @@
                                              QServiceContext *context,
                                              QAbstractSecuritySession *session)
 {
-    qDebug() << "NmHsWidgetPlugin::createInstance";
+    NM_FUNCTION;
     Q_UNUSED(context);
     Q_UNUSED(session);
 
--- a/emailuis/nmhswidget/src/nmhswidgettitlerow.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmhswidget/src/nmhswidgettitlerow.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,15 +15,17 @@
  *
  */
 
-#include <QDebug>
 #include <QtGui>
 #include <QGraphicsLinearLayout>
 #include <hbdocumentloader.h>
 #include <hblabel.h>
 #include <HbPushButton>
+#include <HbColorScheme>
+#include <HbEvent>
 #include "nmicons.h"
 #include "nmhswidgettitlerow.h"
 #include "nmhswidgetconsts.h"
+#include "emailtrace.h"
 
 NmHsWidgetTitleRow::NmHsWidgetTitleRow(QGraphicsItem *parent, Qt::WindowFlags flags) :
     HbWidget(parent, flags), 
@@ -31,12 +33,10 @@
     mMailboxInfo(0), 
     mUnreadCountLabel(0),
     mCollapseExpIconLabel(0), 
-    mAccountName(0), 
+    mAccountName(),
     mUnreadCount(0)
 {
-    qDebug() << "NmHsWidgetTitleRow::NmHsWidgetTitleRow IN -->>";
-
-    qDebug() << "NmHsWidgetTitleRow::NmHsWidgetTitleRow OUT <<--";
+    NM_FUNCTION;
 }
 
 /*!
@@ -44,9 +44,7 @@
  */
 NmHsWidgetTitleRow::~NmHsWidgetTitleRow()
 {
-    qDebug() << "NmHsWidgetTitleRow::~NmHsWidgetTitleRow IN -->>";
-
-    qDebug() << "NmHsWidgetTitleRow::~NmHsWidgetTitleRow OUT <<--";
+    NM_FUNCTION;
 }
 
 /*!
@@ -55,15 +53,14 @@
  */
 bool NmHsWidgetTitleRow::loadDocML()
 {
+    NM_FUNCTION;
     QT_TRY{
-        qDebug() << "NmHsWidgetTitleRow::loadDocML IN -->>";
-    
         // Use document loader to load the contents
         HbDocumentLoader loader;
         bool ok(false);
         loader.load(KNmHsWidgetTitleRowDocML, &ok);
         if (!ok) {
-            qDebug() << "NmHsWidgetTitleRow::loadDocML Fail @ loader -->>";
+            NM_ERROR(1,"NmHsWidgetTitleRow::loadDocML Fail @ loader");
             return false; //failure
         }
     
@@ -78,7 +75,7 @@
         // find container widget
         QGraphicsWidget *container = loader.findWidget(KNmHsWidgetTitleRowContainer);
         if (!container) {
-            qDebug() << "NmHsWidgetTitleRow::loadDocML Fail @ container -->>";
+            NM_ERROR(1,"NmHsWidgetTitleRow::loadDocML Fail @ container");
             return false;
         }
         layout->addItem(container);
@@ -92,14 +89,16 @@
             KNmHsWidgetTitleRowCollapseExpandIconLabel));
     
         if (!mMailboxIcon || !mMailboxInfo || !mUnreadCountLabel || !mCollapseExpIconLabel) {
-            qDebug() << "NmHsWidgetTitleRow::loadDocML Fail @ icons & labels -->>";
+            NM_ERROR(1,"NmHsWidgetTitleRow::loadDocML Fail @ icons & labels");
             return false;
         }
     
         //Expand collapse button
         connect(mCollapseExpIconLabel, SIGNAL(clicked()), this, SIGNAL(expandCollapseButtonPressed()));
-    
-        qDebug() << "NmHsWidgetTitleRow::loadDocML OUT <<--";
+        
+        //set fonts color
+        setFontsColor(false);
+
         return true;
     }
     QT_CATCH(...){
@@ -112,10 +111,9 @@
  */
 void NmHsWidgetTitleRow::updateAccountName(const QString& accountName)
 {
-    qDebug() << "NmHsWidgetTitleRow::updateAccountName IN -->>";
+    NM_FUNCTION;
     mAccountName = accountName;
     updateData();
-    qDebug() << "NmHsWidgetTitleRow::updateAccountName OUT <<--";
 }
 
 /*!
@@ -123,9 +121,8 @@
  */
 void NmHsWidgetTitleRow::setAccountIcon(const QString& accountIconName)
 {
-    qDebug() << "NmHsWidgetTitleRow::setAccountIcon -- accountIconName" << accountIconName;
+    NM_FUNCTION;
     mMailboxIcon->setIcon(accountIconName);
-    qDebug() << "NmHsWidgetTitleRow::setAccountIcon OUT <<--";
 }
 
 /*!
@@ -133,10 +130,26 @@
  */
 void NmHsWidgetTitleRow::updateUnreadCount(const int& unreadCount)
 {
-    qDebug() << "NmHsWidgetTitleRow::updateUnreadCount IN -->>";
+    NM_FUNCTION;
     mUnreadCount = unreadCount;
     updateData();
-    qDebug() << "NmHsWidgetTitleRow::updateUnreadCount OUT <<--";
+}
+
+
+/*!
+ Slot for updating expand collapse icon
+ */
+void NmHsWidgetTitleRow::setExpandCollapseIcon(const bool& expand)
+{
+    NM_FUNCTION;
+    if(expand){
+        HbIcon icon("qtg_mono_arrow_up");
+        mCollapseExpIconLabel->setIcon(icon);
+    }
+    else{
+        HbIcon icon("qtg_mono_arrow_down");
+        mCollapseExpIconLabel->setIcon(icon);
+    }
 }
 
 /*!
@@ -144,7 +157,7 @@
  */
 void NmHsWidgetTitleRow::updateData()
 {
-    qDebug() << "NmHsWidgetTitleRow::updateData() IN -->>";
+    NM_FUNCTION;
     mMailboxInfo->setPlainText(mAccountName);
     //If unread count is -1, hide the unread count label completely.
     //This indicates that there are no mails at all (or the initial sync is not done)
@@ -156,16 +169,60 @@
     else {
         mUnreadCountLabel->setVisible(false);
     }
-    qDebug() << "NmHsWidgetTitleRow::updateData() OUT <<--";
 }
 
 /*!
+    sets fonts color.
+    param bool pressed indicates if row is pressed down or not
+*/
+void NmHsWidgetTitleRow::setFontsColor( bool pressed )
+    {
+    NM_FUNCTION;
+    QColor newFontColor;
+    
+    if(pressed){
+        newFontColor = HbColorScheme::color("qtc_hs_list_item_pressed");
+    }
+    else{
+        newFontColor = HbColorScheme::color("qtc_hs_list_item_title_normal");
+    }
+ 
+    mMailboxInfo->setTextColor(newFontColor);
+    mUnreadCountLabel->setTextColor(newFontColor);
+    }
+
+
+/*!
  mousePressEvent(QGraphicsSceneMouseEvent *event)
  */
 void NmHsWidgetTitleRow::mousePressEvent(QGraphicsSceneMouseEvent *event)
 {
-    qDebug() << "NmHsWidgetTitleRow::mousePressEvent() IN -->>";
+    NM_FUNCTION;
     Q_UNUSED(event); 
-	emit mailboxLaunchTriggered();
-    qDebug() << "NmHsWidgetTitleRow::mousePressEvent() OUT <<--";
+    setFontsColor(true);
+}
+
+/*!
+    mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
+*/
+void NmHsWidgetTitleRow::mouseReleaseEvent(QGraphicsSceneMouseEvent *event)
+{
+    NM_FUNCTION;
+    Q_UNUSED(event);
+    setFontsColor(false);
+    emit mailboxLaunchTriggered();
 }
+
+/*
+ * NmHsWidgetTitleRow::event()
+ */
+bool NmHsWidgetTitleRow::event( QEvent *event )
+{
+    NM_FUNCTION;
+    QEvent::Type eventType = event->type();
+    if( eventType == HbEvent::ThemeChanged ){
+        setFontsColor(false);
+        return true;
+    }
+    return HbWidget::event(event);
+}
--- a/emailuis/nmindicatorplugin/inc/nmindicator.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmindicatorplugin/inc/nmindicator.h	Fri May 28 13:56:43 2010 +0300
@@ -50,36 +50,22 @@
 
     bool handleInteraction(InteractionType type);
     QVariant indicatorData(int role) const;
-    HbIndicatorInterface::Category category() const;
-    bool acceptIcon(bool sending);
-    void updateGlobalStatus(bool sending);
 
 protected: // From HbIndicatorInterface
 
     bool handleClientRequest(RequestType type, const QVariant &parameter);
 
-signals:
-
-    void indicatorIconLost();
-    void globalStatusChanged(bool sending);
-    void mailboxLaunched(quint64 mailboxId);
-
 private slots:
 
-    void hideSendIndicator();
+    void delayedAction();
     
 private:
 
     void storeMailboxData(QVariant mailboxData);
-    void showSendProgress();
-    bool isSending() const;
 
 private:
 
 	NmMailboxInfo mMailbox;
-    bool mShowIndicator;
-    bool mSendingState;
-    bool mShowSendProgress;
 	bool mActive;
 };
 
--- a/emailuis/nmindicatorplugin/inc/nmindicatorplugin.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmindicatorplugin/inc/nmindicatorplugin.h	Fri May 28 13:56:43 2010 +0300
@@ -36,7 +36,6 @@
 public:
 
      NmIndicatorPlugin();
-
     ~NmIndicatorPlugin();
 
 public: // From HbIndicatorPluginInterface
@@ -47,22 +46,13 @@
     HbIndicatorInterface* createIndicator(const QString &indicatorType);
     int error() const;
 
-public slots:
-
-    bool indicatorIconLost();
-    bool showMailbox(quint64 mailboxId);
-    void indicatorDeactivated(QObject *indicator);
-    void globalStatusChanged(bool sending);
-
 private:
+    
     Q_DISABLE_COPY(NmIndicatorPlugin)
 
     int mError;
     QStringList mIndicatorTypes;
     QTranslator *mTranslator; // owned
-    QList<NmIndicator*> mIndicators;
-    NmIndicator *mStatusBarIndicator;
-    bool mSending;
 };
 
 #endif // NMINDICATORPLUGIN_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/nmindicatorplugin/inc/nmsendingindicator.h	Fri May 28 13:56:43 2010 +0300
@@ -0,0 +1,47 @@
+/*
+ * Copyright (c) 2010 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 Indicator class for sending progress state
+ *
+ */
+
+#ifndef NMSENDINGINDICATOR_H
+#define NMSENDINGINDICATOR_H
+
+#include <QObject>
+#include <hbindicatorinterface.h>
+
+static const QString NmSendingIndicatorType = "com.nokia.nmail.indicatorplugin.send/1.0";
+
+class NmSendingIndicator : public HbIndicatorInterface
+{
+    Q_OBJECT
+
+public:
+
+    NmSendingIndicator(const QString &indicatorType);
+    ~NmSendingIndicator();
+
+public: // From HbIndicatorInterface
+
+    QVariant indicatorData(int role) const;
+
+    bool handleClientRequest(RequestType type, const QVariant &parameter);
+
+private slots:
+
+    void hideSendIndicator();
+};
+
+#endif // NMSENDINGINDICATOR_H
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/nmindicatorplugin/inc/nmsyncindicator.h	Fri May 28 13:56:43 2010 +0300
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2010 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 Indicator class
+ *
+ */
+
+#include <hbindicatorinterface.h>
+
+#ifndef NMSYNCINDICATOR_H
+#define NMSYNCINDICATOR_H
+
+class NmSyncIndicator : public HbIndicatorInterface
+{
+public:
+    NmSyncIndicator();
+    virtual ~NmSyncIndicator();
+    virtual QVariant indicatorData(int role) const;   
+    static const char IndicatorType[];
+};
+
+#endif /* NMSYNCINDICATOR_H */
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/nmindicatorplugin/inc/nmunreadindicator.h	Fri May 28 13:56:43 2010 +0300
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2010 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 Indicator class for showing global unread state
+ *
+ */
+
+#ifndef NMUNREADINDICATOR_H
+#define NMUNREADINDICATOR_H
+
+#include <QObject>
+#include <hbindicatorinterface.h>
+
+static const QString NmUnreadIndicatorType = "com.nokia.nmail.indicatorplugin.unread/1.0";
+
+class NmUnreadIndicator : public HbIndicatorInterface
+{
+    Q_OBJECT
+
+public:
+
+    NmUnreadIndicator(const QString &indicatorType);
+    ~NmUnreadIndicator();
+
+public: // From HbIndicatorInterface
+
+    QVariant indicatorData(int role) const;
+};
+
+#endif // NMUNREADINDICATOR_H
+
--- a/emailuis/nmindicatorplugin/nmindicatorplugin.pro	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmindicatorplugin/nmindicatorplugin.pro	Fri May 28 13:56:43 2010 +0300
@@ -26,9 +26,15 @@
 INCLUDEPATH += ../../inc
 
 HEADERS += inc/nmindicatorplugin.h \
-           inc/nmindicator.h
+           inc/nmindicator.h \
+           inc/nmsendingindicator.h \
+           inc/nmsyncindicator.h \
+           inc/nmunreadindicator.h
 SOURCES += src/nmindicatorplugin.cpp \
-           src/nmindicator.cpp
+           src/nmindicator.cpp \
+           src/nmsendingindicator.cpp \
+           src/nmsyncindicator.cpp \
+           src/nmunreadindicator.cpp
 
 symbian {
     TARGET.EPOCALLOWDLLDATA=1
--- a/emailuis/nmindicatorplugin/src/nmindicator.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmindicatorplugin/src/nmindicator.cpp	Fri May 28 13:56:43 2010 +0300
@@ -27,8 +27,8 @@
 #include <HbStringUtil>
 
 const int NmMailboxInfoItemCount = 8;
-const int NmSendingStateDelay = 2000; // delay for 'send in progress' indicator
 const int NmMaxOutboxCount = 99;
+const int NmActivationDelay = 100; // 0.1s
 
 /*!
     \class NmMailboxInfo
@@ -40,7 +40,8 @@
 */
 NmMailboxInfo::NmMailboxInfo()
 {
-    NMLOG("NmMailboxInfo::NmMailboxInfo");
+    NM_FUNCTION;
+
     mId = 0;
     mSyncState = SyncComplete;
     mConnectState = Disconnected;
@@ -61,10 +62,7 @@
         HbIndicatorInterface::NotificationCategory,
         InteractionActivated)
 {
-    NMLOG("NmIndicator::NmIndicator");
-    mShowIndicator = false;
-    mSendingState = false;
-    mShowSendProgress = false;
+    NM_FUNCTION;
     mActive = false;
 }
 
@@ -73,7 +71,7 @@
 */
 NmIndicator::~NmIndicator()
 {
-    NMLOG("NmIndicator::~NmIndicator");
+    NM_FUNCTION;
 }
 
 /*!
@@ -90,28 +88,31 @@
 */
 bool NmIndicator::handleInteraction(InteractionType type)
 {
-    NMLOG("NmIndicator::handleInteraction");
+    NM_FUNCTION;
+
     bool handled = false;
     if (type == InteractionActivated) {
         mActive = false;
         handled = true;
 
-        // This indicator is responsible showing the status bar icon
-        if (mShowIndicator) {
-            // Do not show any indicators anymore
-            mShowIndicator = false;
-            emit dataChanged();
-
-            // Notify that the icon will be lost now
-            emit indicatorIconLost();
-        }
-        emit mailboxLaunched(mMailbox.mId.id());
-        emit deactivate();
+        QVariantMap data;
+        emit userActivated(data);
+        
+        // The action will be delayed to improve the usability
+        QTimer::singleShot(NmActivationDelay, this, SLOT(delayedAction()));
     }
     return handled;
 }
 
 /*!
+     Deactivate the indicator  
+*/
+void NmIndicator::delayedAction() 
+{
+    emit deactivate();
+}
+
+/*!
     \fn QVariant HbIndicatorInterface::indicatorData(int role) const = 0
 
     Returns the data stored under the given role. The indicator should at least have data elements for
@@ -127,28 +128,30 @@
 */
 QVariant NmIndicator::indicatorData(int role) const
 {
-    NMLOG(QString("NmIndicator::indicatorData %1").arg(role));
+    NM_FUNCTION;
+
     switch(role) {
         case PrimaryTextRole:
-            {
-            return mMailbox.mName;
+            if (mActive) {                
+                return mMailbox.mName;
             }
+            break;
         case SecondaryTextRole:
-            {
-            if (mMailbox.mOutboxMails>0) {
-                int outboxCount = mMailbox.mOutboxMails;
-                if (outboxCount>NmMaxOutboxCount) {
-                    outboxCount = NmMaxOutboxCount;
+            if (mActive) {
+                if (mMailbox.mOutboxMails>0) {
+                    int outboxCount = mMailbox.mOutboxMails;
+                    if (outboxCount>NmMaxOutboxCount) {
+                        outboxCount = NmMaxOutboxCount;
+                    }
+                    QString text = QString(hbTrId("txt_mail_status_menu_waiting_to_send")).
+                        arg(HbStringUtil::convertDigits(QString::number(outboxCount)));
+                    return text;
                 }
-                QString text = QString(hbTrId("txt_mail_status_menu_waiting_to_send")).
-                    arg(HbStringUtil::convertDigits(QString::number(outboxCount)));
-                return text;
-		    }
-            else if (mMailbox.mUnreadMails>0) {
-                return hbTrId("txt_mail_status_menu_new_mail");
-			}
+                else if (mMailbox.mUnreadMails>0) {
+                    return hbTrId("txt_mail_status_menu_new_mail");
+                }
+            }
             break;
-            }
         case DecorationNameRole:
             {
 			// Icon for the mailbox in the menu
@@ -162,11 +165,6 @@
             }
             break;
 		    }
-        case MonoDecorationNameRole:
-			if (mShowIndicator) {
-				return QString("qtg_status_new_email");
-			}
-			break;
         default:
         	break;
     }
@@ -174,40 +172,6 @@
 }
 
 /*!
-    Timer callback for hiding 'send in progress' indicator
-*/
-void NmIndicator::hideSendIndicator()
-{
-    if (mShowSendProgress) {
-        NMLOG("NmIndicator::hideSendIndicator - hide progress state");
-        mShowSendProgress = false;
-        emit dataChanged();
-    }
-}
-
-/*!
-    Checks if any mailbox is in sending state at the moment
-    \return true if any mailbox is in sending state
-*/
-bool NmIndicator::isSending() const
-{
-	return mSendingState;
-}
-
-/*!
-    Return type of the indicator
-    \sa HbIndicatorInterface
-*/
-HbIndicatorInterface::Category NmIndicator::category() const
-{
-	NMLOG("NmIndicatorPlugin::Category");
-    if (mMailbox.mOutboxMails>0 && mShowSendProgress) {
-        return HbIndicatorInterface::ProgressCategory;
-    }
-    return HbIndicatorInterface::NotificationCategory;
-}
-
-/*!
     Handles the requests sent from the client
     \a type is a type of the request.
     \a parameter is extra parameter from the client. Can be invalid, if not given.
@@ -220,7 +184,8 @@
 bool NmIndicator::handleClientRequest( RequestType type,
         const QVariant &parameter)
 {
-    NMLOG("NmIndicator::handleClientRequest");
+    NM_FUNCTION;
+
     bool handled(false);
     switch (type) {
         case RequestActivate:
@@ -239,12 +204,6 @@
             // also the deactivation may give updated data
 			storeMailboxData(parameter);
 
-            // This indicator was responsible showing the status bar icon
-            if (mShowIndicator) {
-                // Notify that the icon will be lost now
-                emit indicatorIconLost();
-            }
-
             emit deactivate();
             }
             break;
@@ -255,25 +214,12 @@
 }
 
 /*!
-    Start showing the 'send in progress' indicator
- */
-void NmIndicator::showSendProgress()
-{
-    // Activate the progress indicator
-    if (!mShowSendProgress && mActive) {
-        mShowSendProgress = true;
-
-        // Hide the progress state after some delay
-        QTimer::singleShot(NmSendingStateDelay, this, SLOT(hideSendIndicator()));
-    }
-}
-
-/*!
 	Stores mailbox data to member variable mMailbox.
  */
 void NmIndicator::storeMailboxData(QVariant mailboxData)
 {
-    NMLOG("NmIndicator::storeMailboxData");
+    NM_FUNCTION;
+
     QList<QVariant> infoList = mailboxData.toList();
 
     if (infoList.count() >= NmMailboxInfoItemCount) {
@@ -284,33 +230,6 @@
         mMailbox.mConnectState = infoList.at(4).value<NmConnectState>();
         mMailbox.mOutboxMails = infoList.at(5).toInt();
         mMailbox.mMailboxIconName = infoList.at(6).toString();
-
-        bool oldSendingState = mSendingState;
-        mSendingState = infoList.at(7).toInt();
-
-        // Sending state now activated
-        if (!oldSendingState && mSendingState) {
-            showSendProgress();
-        }
-
-        // Notify the global state
-        emit globalStatusChanged(mSendingState);
+        bool sendingState = infoList.at(7).toInt();
     }
 }
-
-/*!
-    Used for asking if this indicator can take status bar icon responsibility.
-    \param sending global sending state
-    \return true if the icon was accepted
- */
-bool NmIndicator::acceptIcon(bool sending)
-{
-    mSendingState = sending;
-
-    if (mActive) {
-        mShowIndicator = true;
-        emit dataChanged();
-    }
-    return mActive;
-}
-
--- a/emailuis/nmindicatorplugin/src/nmindicatorplugin.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmindicatorplugin/src/nmindicatorplugin.cpp	Fri May 28 13:56:43 2010 +0300
@@ -17,19 +17,20 @@
 
 #include "nmindicatorplugin.h"
 #include "nmindicator.h"
+#include "nmsendingindicator.h"
+#include "nmsyncindicator.h"
+#include "nmunreadindicator.h"
 
 #include <QCoreApplication>
 #include <QLocale>
 #include <QVariant>
 #include <QTimer>
 
-#include <xqservicerequest.h>
-#include <email_services_api.h>
-
 Q_EXPORT_PLUGIN(NmIndicatorPlugin)
 
 const int NmMaxIndicatorCount = 10;
-static const QString emailServiceNameMailbox = "nmail.com.nokia.symbian.IEmailInboxView";
+static const QString NmIndicatorName = "com.nokia.nmail.indicatorplugin_%1/1.0";
+
 
 /*!
     \class NmIndicatorPlugin
@@ -40,8 +41,9 @@
      Class constructor.
 */
 NmIndicatorPlugin::NmIndicatorPlugin()
-: mError(0), mTranslator(0), mStatusBarIndicator(0), mSending(false)
+: mError(0), mTranslator(0)
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -49,7 +51,8 @@
 */
 NmIndicatorPlugin::~NmIndicatorPlugin()
 {
-    NMLOG("NmIndicatorPlugin::~NmIndicatorPlugin");
+    NM_FUNCTION;
+    
 	delete mTranslator;
 }
 
@@ -58,11 +61,16 @@
  */
 QStringList NmIndicatorPlugin::indicatorTypes() const
 {
+    NM_FUNCTION;
+    
     QStringList types;
     for (int i=0; i<NmMaxIndicatorCount; i++) {
-		QString name = QString("com.nokia.nmail.indicatorplugin_%1/1.0").arg(i);
+		QString name = QString(NmIndicatorName).arg(i);
 		types << name;
     }
+    types << NmSendingIndicatorType;
+	types << NmSyncIndicator::IndicatorType;
+    types << NmUnreadIndicatorType;
     return types;
 }
 
@@ -73,6 +81,8 @@
 bool NmIndicatorPlugin::accessAllowed(const QString &indicatorType,
     const QVariantMap &securityInfo) const
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(indicatorType)
     Q_UNUSED(securityInfo)
 
@@ -81,30 +91,14 @@
     return true;
 }
 
-
-/*!
-    Called when any of the indicator receive updated status of the global status
- */
-void NmIndicatorPlugin::globalStatusChanged(bool sending)
-{
-    mSending = sending;
-
-    // Pass the information to the indicator handling the status bar icon
-    if (mStatusBarIndicator) {
-        mStatusBarIndicator->acceptIcon(sending);
-    }
-    else {
-		// No indicator is showing the status now.
-		indicatorIconLost();
-	}
-}
-
 /*!
 	Creates an indicator of type indicatorType. Ownership is passed to the caller.
  */
 HbIndicatorInterface* NmIndicatorPlugin::createIndicator(
         const QString &indicatorType)
 {
+    NM_FUNCTION;
+
     if (!mTranslator) {
         mTranslator = new QTranslator();
         QString lang = QLocale::system().name();
@@ -114,12 +108,19 @@
         QCoreApplication::installTranslator(mTranslator);
     }
 
-    NmIndicator* indicator = new NmIndicator(indicatorType);
-    connect(indicator, SIGNAL(indicatorIconLost()), this, SLOT(indicatorIconLost()));
-    connect(indicator, SIGNAL(destroyed(QObject *)), this, SLOT(indicatorDeactivated(QObject *)));
-    connect(indicator, SIGNAL(globalStatusChanged(bool)), this, SLOT(globalStatusChanged(bool)));
-    connect(indicator, SIGNAL(mailboxLaunched(quint64)), this, SLOT(showMailbox(quint64)));
-    mIndicators.append(indicator);
+    HbIndicatorInterface *indicator;
+    if (indicatorType == NmSendingIndicatorType) {
+        indicator = new NmSendingIndicator(indicatorType);
+    }
+    else if (indicatorType == NmUnreadIndicatorType) {
+        indicator = new NmUnreadIndicator(indicatorType);
+    }
+    else if (indicatorType == NmSyncIndicator::IndicatorType) {
+        indicator = new NmSyncIndicator();
+    }
+    else {
+        indicator = new NmIndicator(indicatorType);
+    }
 
     return indicator;
 }
@@ -129,65 +130,7 @@
  */
 int NmIndicatorPlugin::error() const
 {
+    NM_FUNCTION;
+    
     return mError;
 }
-
-/*!
-    Called when an indicator signals about lost indicator.
-    \param true if a new indicator was found
- */
-bool NmIndicatorPlugin::indicatorIconLost()
-{
-    bool found(false);
-    mStatusBarIndicator = NULL;
-
-    foreach (NmIndicator* indicator, mIndicators) {
-        // Find a new candidate to handle the status bar icon
-        if (indicator->acceptIcon(mSending)) {
-			mStatusBarIndicator = indicator;
-			found = true;
-            break;
-        }
-    }
-    return found;
-}
-
-/*!
-    Remove destroyed indicators from the list.
-    \param indicator item that has been deleted
- */
-void NmIndicatorPlugin::indicatorDeactivated(QObject *indObject)
-{
-    NMLOG(QString("NmIndicatorPlugin::indicatorDeactivated %1").arg((int)indObject));
-    NmIndicator *indicator = static_cast<NmIndicator*>(indObject);
-    mIndicators.removeAll(indicator);
-    if (mStatusBarIndicator == indicator) {
-		mStatusBarIndicator = NULL;
-
-		// Find new indicator to take care of the status bar icon
-		indicatorIconLost();
-	}
-}
-
-/*!
-    Opens inbox view to specific mailbox
-    \return true if inbox is succesfully opened
-*/
-bool NmIndicatorPlugin::showMailbox(quint64 mailboxId)
-{
-    NMLOG("NmIndicatorPlugin::showMailbox");
-    XQServiceRequest request(
-        emailServiceNameMailbox,
-        emailOperationViewInbox,
-        true);
-
-    QList<QVariant> list;
-    list.append(QVariant(mailboxId));
-
-    request.setArguments(list);
-
-    int returnValue(-1);
-    return request.send(returnValue);
-}
-
-
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/nmindicatorplugin/src/nmsendingindicator.cpp	Fri May 28 13:56:43 2010 +0300
@@ -0,0 +1,96 @@
+/*
+ * Copyright (c) 2010 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 "nmsendingindicator.h"
+#include <QTimer>
+#include <nmcommon.h>
+
+const int NmSendingStateDelay = 2000; // delay for 'send in progress' indicator
+
+/*!
+    \class NmSendingIndicator
+    \brief Handles sending progress indicator
+*/
+
+/*!
+     Class constructor.
+*/
+NmSendingIndicator::NmSendingIndicator(const QString &indicatorType)
+:HbIndicatorInterface(indicatorType,
+        HbIndicatorInterface::ProgressCategory,
+        HbIndicatorInterface::NoInteraction)
+{
+}
+
+/*!
+    Class destructor.
+*/
+NmSendingIndicator::~NmSendingIndicator()
+{
+}
+
+/*!
+    \fn QVariant HbIndicatorInterface::indicatorData(int role) const = 0
+
+    No texts or icons show by this indicator
+*/
+QVariant NmSendingIndicator::indicatorData(int role) const
+{
+    if (role==MonoDecorationNameRole) {
+		// Must return non-empty to make the indicator visible
+		return " ";
+	}
+
+    return QVariant();
+}
+
+/*!
+    Timer callback for hiding 'send in progress' indicator
+*/
+void NmSendingIndicator::hideSendIndicator()
+{
+    NM_FUNCTION;
+    emit deactivate();
+}
+
+/*!
+    Handles the requests sent from the client
+    \a type is a type of the request.
+    \a parameter is extra parameter from the client. Can be invalid, if not given.
+
+    Should return true, when the request is handled.
+    Default implementation returns false.
+
+    \sa RequestType, HbIndicator
+*/
+bool NmSendingIndicator::handleClientRequest( RequestType type,
+        const QVariant &parameter)
+{
+    NM_FUNCTION;
+    Q_UNUSED(parameter);
+
+    switch (type) {
+        case RequestActivate:
+            {
+            // Hide the progress state after some delay
+            QTimer::singleShot(NmSendingStateDelay, this, SLOT(hideSendIndicator()));
+            }
+            break;
+        default:
+            break;
+    }
+    return false;
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/nmindicatorplugin/src/nmsyncindicator.cpp	Fri May 28 13:56:43 2010 +0300
@@ -0,0 +1,42 @@
+/*
+ * Copyright (c) 2010 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 "nmsyncindicator.h"
+
+const char NmSyncIndicator::IndicatorType[] = "com.nokia.hb.nmsyncindicator/1.0";
+
+NmSyncIndicator::NmSyncIndicator() :
+HbIndicatorInterface(NmSyncIndicator::IndicatorType, ProgressCategory, NoInteraction)
+{
+}
+
+NmSyncIndicator::~NmSyncIndicator()
+{
+}
+
+QVariant NmSyncIndicator::indicatorData(int role) const
+{
+    if (role == MonoDecorationNameRole )
+    {
+        // Must return non-empty to make the indicator visible
+        return " ";
+    }
+    else
+    {
+        return QVariant();
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/nmindicatorplugin/src/nmunreadindicator.cpp	Fri May 28 13:56:43 2010 +0300
@@ -0,0 +1,54 @@
+/*
+ * Copyright (c) 2010 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 "nmunreadindicator.h"
+#include <nmcommon.h>
+
+/*!
+    \class NmUnreadIndicator
+    \brief Handles global unread indicator
+*/
+
+/*!
+     Class constructor.
+*/
+NmUnreadIndicator::NmUnreadIndicator(const QString &indicatorType)
+:HbIndicatorInterface(indicatorType,
+        HbIndicatorInterface::NotificationCategory,
+        HbIndicatorInterface::NoInteraction)
+{
+}
+
+/*!
+    Class destructor.
+*/
+NmUnreadIndicator::~NmUnreadIndicator()
+{
+}
+
+/*!
+    \fn QVariant HbIndicatorInterface::indicatorData(int role)
+
+    This indicator just shows the "@" in the status bar
+*/
+QVariant NmUnreadIndicator::indicatorData(int role) const
+{
+    if (role==MonoDecorationNameRole) {
+        return QString("qtg_status_new_email");
+    }
+
+    return QVariant();
+}
--- a/emailuis/nmsettingui/inc/nmsettingscommon.h	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmsettingui/inc/nmsettingscommon.h	Fri May 28 13:56:43 2010 +0300
@@ -26,7 +26,8 @@
     };
 
     enum MailboxProperty {
-        MailboxName = 0
+        MailboxName = 0,
+        MailboxAddress
     };
 
 }
--- a/emailuis/nmsettingui/src/nmmailboxentryitem.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmsettingui/src/nmmailboxentryitem.cpp	Fri May 28 13:56:43 2010 +0300
@@ -44,6 +44,7 @@
 : CpSettingFormEntryItemData(itemDataHelper, mailboxName, mailboxDescription, mailboxIcon, parent),
   mMailboxId(mailboxId.id())
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -51,6 +52,7 @@
 */
 NmMailboxEntryItem::~NmMailboxEntryItem()
 {
+    NM_FUNCTION;
 }
 
 /*!
@@ -58,7 +60,8 @@
 */
 CpBaseSettingView *NmMailboxEntryItem::createSettingView() const
 {
-	NMLOG("NmMailboxEntryItem::createSettingView");
+    NM_FUNCTION;
+    
     return 0;
 }
 
@@ -67,5 +70,7 @@
 */
 const NmId &NmMailboxEntryItem::id() const
 {
+    NM_FUNCTION;
+    
     return mMailboxId;
 }
--- a/emailuis/nmsettingui/src/nmmailboxselectionview.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmsettingui/src/nmmailboxselectionview.cpp	Fri May 28 13:56:43 2010 +0300
@@ -51,6 +51,8 @@
   mSettingsFactory(settingsFactory),
   mRefreshForm(false)
 {
+    NM_FUNCTION;
+    
     QScopedPointer<QSignalMapper> signalMapper(new QSignalMapper());
 
     // Connect the form's activated signal.
@@ -81,6 +83,8 @@
 */
 NmMailboxSelectionView::~NmMailboxSelectionView()
 {
+    NM_FUNCTION;
+    
     delete mItemDataHelper;
     delete mModel;
     delete mSignalMapper;
@@ -95,7 +99,8 @@
 */
 void NmMailboxSelectionView::buttonClick(QObject *item)
 {
-    NMLOG("NmMailboxSelectionView::buttonClick");
+    NM_FUNCTION;
+    
     NmMailboxEntryItem *entryItem = static_cast<NmMailboxEntryItem *>(item);
     const NmId &id = entryItem->id();
     const QString &name = entryItem->text();
@@ -111,7 +116,7 @@
 */
 void NmMailboxSelectionView::itemActivate(const QModelIndex &index)
 {
-    NMLOG("NmMailboxSelectionView::itemActivate");
+    NM_FUNCTION;
     
     HbDataForm *form = qobject_cast<HbDataForm*>(widget());
     HbDataFormModel *model = static_cast<HbDataFormModel *>(form->model());
@@ -141,7 +146,8 @@
 */
 void NmMailboxSelectionView::populateDataModel(const QList<NmMailbox *> &mailboxList)
 {
-    NMLOG("NmMailboxSelectionView::populateDataModel");
+    NM_FUNCTION;
+    
     mModel->clear();
     foreach (NmMailbox *mailbox, mailboxList) {
         NmId id = mailbox->id();
@@ -164,8 +170,8 @@
 void NmMailboxSelectionView::mailboxListChanged(const NmId &mailboxId,
     NmSettings::MailboxEventType type)
 {
-    NMLOG("NmMailboxSelectionView::mailboxListChanged");
-
+    NM_FUNCTION;
+    
     switch (type) {
         case NmSettings::MailboxDeleted: {
             // Search correct item.
@@ -191,7 +197,6 @@
             break;
         }
     }
-    NMLOG("NmMailboxSelectionView::mailboxListChanged - OK");
 }
 
 /*!
@@ -204,8 +209,8 @@
 void NmMailboxSelectionView::mailboxPropertyChanged(const NmId &mailboxId,
     QVariant property, QVariant value)
 {
-    NMLOG("NmMailboxSelectionView::mailboxPropertyChanged");
-
+    NM_FUNCTION;
+    
     // Search correct item.
     NmMailboxEntryItem *entryItem = 0;
     const int itemCount(mModel->rowCount());
@@ -228,6 +233,4 @@
         default:
             break;
     }
-
-    NMLOG("NmMailboxSelectionView::mailboxPropertyChanged - OK");
 }
--- a/emailuis/nmsettingui/src/nmmailboxsettingsmanager.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmsettingui/src/nmmailboxsettingsmanager.cpp	Fri May 28 13:56:43 2010 +0300
@@ -43,8 +43,8 @@
 */
 QStringList pluginFolders()
 {
-    NMLOG(QString("NmMailboxSettingsManager - HELPER FUNCTIONS - pluginFolders"));
-
+    NM_FUNCTION;
+    
     const QString nmSettingsPluginFolderPath("resource/qt/plugins/nmail/settings");
     QStringList pluginDirectories;
     QFileInfoList driveList = QDir::drives();
@@ -57,8 +57,7 @@
             pluginDirectories.append(pluginDirectory);
         }
     }
-
-    NMLOG(QString("NmMailboxSettingsManager - HELPER FUNCTIONS - pluginFolders - OK"));
+    
     return pluginDirectories;
 }
 
@@ -71,6 +70,8 @@
 NmMailboxSettingsManager::NmMailboxSettingsManager()
 : mDataManager(0)
 {
+    NM_FUNCTION;
+    
     QScopedPointer<NmDataManager> dataManager(new NmDataManager());
     loadPlugins();
     mDataManager = dataManager.take();
@@ -82,6 +83,8 @@
 */
 NmMailboxSettingsManager::~NmMailboxSettingsManager()
 {
+    NM_FUNCTION;
+    
     unloadPlugins();
     qDeleteAll(mPluginLoaders);
     mPluginLoaders.clear();
@@ -98,6 +101,8 @@
 */
 void NmMailboxSettingsManager::listMailboxes(QList<NmMailbox *> &mailboxList)
 {
+    NM_FUNCTION;
+    
     mDataManager->listMailboxes(mailboxList);
 }
 
@@ -110,6 +115,8 @@
 */
 HbIcon &NmMailboxSettingsManager::mailboxIcon(const NmId &mailboxId) const
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(mailboxId);
     // TODO: use some branding feature when it is available.
     return NmIcons::getIcon(NmIcons::NmIconDefaultMailbox);
@@ -128,8 +135,8 @@
 void NmMailboxSettingsManager::populateModel(HbDataFormModel &model,
     HbDataForm &form, const NmId &mailboxId) const
 {
-    NMLOG(QString("NmMailboxSettingsManager::populateModel"));
-
+    NM_FUNCTION;
+    
     NmSettingsPluginInterface *plugin = 0;
 
     foreach (QPluginLoader *loader, mPluginLoaders) {
@@ -165,7 +172,6 @@
             break;
         }
     }
-    NMLOG(QString("NmMailboxSettingsManager::populateModel - OK"));
 }
 
 
@@ -175,8 +181,8 @@
 */
 void NmMailboxSettingsManager::loadPlugins()
 {
-    NMLOG(QString("NmMailboxSettingsManager::loadPlugins"));
-
+    NM_FUNCTION;
+    
     QStringList directories(pluginFolders());
 
     foreach (const QString &directoryPath, directories) {
@@ -190,8 +196,6 @@
             loader.take();
         }
     }
-
-    NMLOG(QString("NmMailboxSettingsManager::loadPlugins - OK"));
 }
 
 
@@ -200,13 +204,11 @@
 */
 void NmMailboxSettingsManager::unloadPlugins()
 {
-    NMLOG(QString("NmMailboxSettingsManager::unloadPlugins"));
-
+    NM_FUNCTION;
+    
     foreach (QPluginLoader *loader, mPluginLoaders) {
         loader->unload();
     }
-
-    NMLOG(QString("NmMailboxSettingsManager::unloadPlugins - OK"));
 }
 
 // End of file.
--- a/emailuis/nmsettingui/src/nmmailboxsettingview.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmsettingui/src/nmmailboxsettingview.cpp	Fri May 28 13:56:43 2010 +0300
@@ -56,6 +56,8 @@
       mModel(NULL),
       mMailboxId(mailboxId.id())
 {
+    NM_FUNCTION;
+    
     setTitle(mailboxName);
 
     HbDocumentLoader documentLoader;
@@ -99,8 +101,8 @@
 */
 NmMailboxSettingView::~NmMailboxSettingView()
 {
-    NMLOG("NmMailboxSettingView::~NmMailboxSettingView()");
-
+    NM_FUNCTION;
+    
     if (mForm) {
         mForm->removeAllConnection();
         delete mForm;
@@ -119,6 +121,8 @@
 void NmMailboxSettingView::mailboxListChanged(const NmId &mailboxId,
     NmSettings::MailboxEventType type)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(mailboxId);
     Q_UNUSED(type);
 
@@ -140,6 +144,8 @@
                                                   QVariant property,
                                                   QVariant value)
 {
+    NM_FUNCTION;
+    
     Q_UNUSED(mailboxId);
 
     switch (property.toInt()) {
--- a/emailuis/nmsettingui/src/nmsettingsformcustomitems.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmsettingui/src/nmsettingsformcustomitems.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,6 +15,8 @@
 *
 */
 
+#include "emailtrace.h"
+
 #include <QModelIndex>
 #include <HbPushButton>
 #include <HbAbstractViewItem>
@@ -37,6 +39,7 @@
 NmSettingsFormCustomItems::NmSettingsFormCustomItems(QGraphicsItem *parent)
 : HbDataFormViewItem(parent)
 {
+    NM_FUNCTION;
 }
 
 
@@ -45,6 +48,7 @@
 */
 NmSettingsFormCustomItems::~NmSettingsFormCustomItems()
 {
+    NM_FUNCTION;
 }
 
 
@@ -53,11 +57,15 @@
 */
 HbAbstractViewItem *NmSettingsFormCustomItems::createItem()
 {
+    NM_FUNCTION;
+    
     return new NmSettingsFormCustomItems(*this);
 }
 
 bool NmSettingsFormCustomItems::canSetModelIndex(const QModelIndex &index) const
 {
+    NM_FUNCTION;
+    
     int type(index.data(HbDataFormModelItem::ItemTypeRole).toInt());
     return type==NmButtonItem;
 }
@@ -67,6 +75,8 @@
 */
 void NmSettingsFormCustomItems::restore()
 {
+    NM_FUNCTION;
+    
     HbDataFormModelItem::DataItemType itemType = static_cast<HbDataFormModelItem::DataItemType>(
         modelIndex().data(HbDataFormModelItem::ItemTypeRole).toInt());
      if (itemType==NmButtonItem) {
@@ -91,6 +101,8 @@
 */
 HbWidget *NmSettingsFormCustomItems::createCustomWidget()
 {
+    NM_FUNCTION;
+    
     HbDataFormModelItem::DataItemType itemType =
         static_cast<HbDataFormModelItem::DataItemType>(
             modelIndex().data(HbDataFormModelItem::ItemTypeRole).toInt());
--- a/emailuis/nmsettingui/src/nmsettingsviewfactory.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmsettingui/src/nmsettingsviewfactory.cpp	Fri May 28 13:56:43 2010 +0300
@@ -64,6 +64,8 @@
    mSettingsManager(new NmMailboxSettingsManager()), mSettingsViewLauncher(0),mPrevView(0),
    mMessageBox(0)
 {
+    NM_FUNCTION;
+    
     createMessageBox();
 }
 
@@ -90,6 +92,8 @@
      mSettingsManager(new NmMailboxSettingsManager()), mSettingsViewLauncher(viewLauncher),
      mPrevView(0), mMessageBox(0)
 {
+    NM_FUNCTION;
+    
     createMessageBox();
 }
 
@@ -99,6 +103,8 @@
 */
 NmSettingsViewFactory::~NmSettingsViewFactory()
 {
+    NM_FUNCTION;
+    
     delete mSettingsManager;
     delete mMessageBox;
 }
@@ -113,16 +119,15 @@
 */
 CpBaseSettingView *NmSettingsViewFactory::createSettingView() const
 {
-    NMLOG(QString("NmSettingsViewFactory::createSettingView(): Begin."));
-
+    NM_FUNCTION;
+    
     CpBaseSettingView *view = 0;
     QList<NmMailbox *> mailboxList;
     mSettingsManager->listMailboxes(mailboxList);
     const int mailboxCount(mailboxList.count());
 
     // Log the number of mailboxes.
-    NMLOG(QString("NmSettingsViewFactory::createSettingView(): Mailbox count is ") +
-          QString::number(mailboxCount));
+    NM_COMMENT(QString("NmSettingsViewFactory::createSettingView(): mailbox count is %1").arg(mailboxCount));
 
     switch(mailboxCount) {
         case 0: {
@@ -156,8 +161,7 @@
                 SIGNAL(mailboxPropertyChanged(const NmId &, QVariant, QVariant)),
                 view, SLOT(mailboxPropertyChanged(const NmId &, QVariant, QVariant)));
     }
-
-    NMLOG(QString("NmSettingsViewFactory::createSettingView(): End."));
+    
     return view;
 }
 
@@ -171,8 +175,8 @@
 void NmSettingsViewFactory::launchSettingView(const NmId &mailboxId,
                                               const QString &mailboxName) const
 {
-    NMLOG(QString("NmSettingsViewFactory::launchSettingView"));
-
+    NM_FUNCTION;
+    
     // There's always at least one valid main window available.
     HbMainWindow *mainWindow = hbInstance->allMainWindows().takeFirst();
 
@@ -233,8 +237,6 @@
     mPrevView = mainWindow->currentView();
     mainWindow->addView(view);
     mainWindow->setCurrentView(view);
-
-    NMLOG(QString("NmSettingsViewFactory::launchSettingView - OK"));
 }
 
 
@@ -245,8 +247,8 @@
 */
 void NmSettingsViewFactory::backPress()
 {
-    NMLOG(QString("NmSettingsViewFactory::backPress"));
-
+    NM_FUNCTION;
+    
     emit aboutToClose();
     HbMainWindow *mainWindow = hbInstance->allMainWindows().takeFirst();
     QList<HbView *> views = mainWindow->views();
@@ -260,8 +262,6 @@
         }
         mPrevView = 0;
     }
-
-    NMLOG(QString("NmSettingsViewFactory::backPress - OK"));
 }
 
 /*!
@@ -271,9 +271,11 @@
 */
 void NmSettingsViewFactory::launchWizard(HbAction *action)
 {
+    NM_FUNCTION;
+    
     if (action == mMessageBox->primaryAction()) {
         // Launch mail wizard.
-        NMLOG(QString("NmSettingsViewFactory::launchWizard(): Launching the mail wizard."));
+        NM_COMMENT(QString("NmSettingsViewFactory::launchWizard(): launching the mail wizard"));
         QStringList args;
         args << mailWizardStartArgs;
         QProcess::startDetached(mailWizardStartExe, args);
@@ -285,6 +287,8 @@
 */
 void NmSettingsViewFactory::createMessageBox()
 {
+    NM_FUNCTION;
+    
     mMessageBox = new HbMessageBox(HbMessageBox::MessageTypeQuestion);
     mMessageBox->setText(hbTrId("txt_mail_dialog_no_mailboxes_create_new"));
     mMessageBox->setTimeout(HbMessageBox::NoTimeout);
--- a/emailuis/nmsettingui/src/nmsettingsviewlauncher.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/emailuis/nmsettingui/src/nmsettingsviewlauncher.cpp	Fri May 28 13:56:43 2010 +0300
@@ -59,11 +59,9 @@
     const NmId &mailboxId,
     const QString &mailboxName)
 {
-    NMLOG(QString("NmSettingsViewLauncher::launchSettingsView"));
-
+    NM_FUNCTION;
+    
     mSettingsViewFactory->launchSettingView(mailboxId, mailboxName);
-
-    NMLOG(QString("NmSettingsViewLauncher::launchSettingsView - OK"));
 }
 
 // End of file.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/cmailboxstateext.h	Fri May 28 13:56:43 2010 +0300
@@ -0,0 +1,18 @@
+/*
+* Copyright (c) 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 "../emailservices/emailcommon/inc/cmailboxstateext.h"
\ No newline at end of file
--- a/ipsservices/ipssosaoplugin/inc/IpsSosAOImapPopLogic.h	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/ipssosaoplugin/inc/IpsSosAOImapPopLogic.h	Fri May 28 13:56:43 2010 +0300
@@ -134,6 +134,11 @@
      */
     inline TInt GetMailboxLogicIndex( TMsvId aMailboxId );
 
+    /**
+     * Removes orphaned logics. (mailbox has been deleted but logic has not been )
+     */
+    void RemoveOrphanLogicsL();
+    
 private:
     
     CMsvSession&                        iSession;
--- a/ipsservices/ipssosaoplugin/src/IpsSosAOImapPopLogic.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/ipssosaoplugin/src/IpsSosAOImapPopLogic.cpp	Fri May 28 13:56:43 2010 +0300
@@ -23,6 +23,7 @@
 #include <msvids.h>
 #include <msvuids.h>
 
+
 // becuase of RD_IPS_AO_PLUGIN flag, can be removed
 // when flag is removed
 #include "ipsplgsosbaseplugin.hrh"
@@ -31,7 +32,9 @@
 #include "IpsSosAOMboxLogic.h"
 #include "IpsSosAOEMNResolver.h"
 //<QMail>
+
 #include "IpsSosAOSettingsHandler.h"
+#include "IpsSosAoExtendedSettingsManager.h"
 //</QMail>
 
 
@@ -240,7 +243,7 @@
         case MMsvSessionObserver::EMsvEntriesChanged:
             {
             TMsvId parent = (*(TMsvId*) (aArg2));
-            //we check that parent is the root. if not, it cannot be a 
+            //we check that parent is the root. if not, it cannot be an 
             //event from service, thus can't be from connection change..
             if ( parent == KMsvRootIndexEntryId )
                 {
@@ -264,9 +267,16 @@
             }
             break;
         case MMsvSessionObserver::EMsvEntriesDeleted:
-            // NOTE: if mailbox is deleted somewhere else than ips plugin
-            // in here need to put logic for removing corresponding 
-            // mailboxlogic object
+            {
+            TMsvId parent = (*(TMsvId*) (aArg2));
+            //we check that parent is the root. if not, it cannot be an 
+            //event indicating deleted mailbox entry
+            if ( parent == KMsvRootIndexEntryId )
+                {
+                RemoveOrphanLogicsL();
+                }
+            }
+            break;
         case MMsvSessionObserver::EMsvEntriesMoved:
         default:
             break;
@@ -429,6 +439,9 @@
         CleanupStack::PopAndDestroy(settings);
 		//</QMail>
         }
+    
+    //finally, check for orphans ( mailbox has been deleted )
+    RemoveOrphanLogicsL();
     }
 
 // ----------------------------------------------------------------------------
@@ -493,5 +506,33 @@
     return index;
     }
 
+// ----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+//
+void CIpsSosAOImapPopLogic::RemoveOrphanLogicsL()
+    {
+    CMsvEntry* cEntry = iSession.GetEntryL( KMsvRootIndexEntryId );
+    CleanupStack::PushL( cEntry );
+    
+    CMsvEntrySelection* popEntries = cEntry->ChildrenWithMtmL( KSenduiMtmPop3Uid );
+    CleanupStack::PushL( popEntries );
+    
+    CMsvEntrySelection* imapEntries = cEntry->ChildrenWithMtmL( KSenduiMtmImap4Uid );
+    CleanupStack::PushL( imapEntries );
+        
+        
+    TInt count = iMailboxLogics.Count();
+    
+    for(TInt i=count-1; i>-1;i--)
+        {
+        if( popEntries->Find(iMailboxLogics[i]->GetMailboxId()) == KErrNotFound &&
+            imapEntries->Find(iMailboxLogics[i]->GetMailboxId()) == KErrNotFound)
+            {
+            StopAndRemoveMailboxL( iMailboxLogics[i]->GetMailboxId() );
+            }
+        }
+    
+    CleanupStack::PopAndDestroy( 3, cEntry );
+    }
 // End of file
 
--- a/ipsservices/ipssosaoplugin/src/IpsSosAOMboxLogic.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/ipssosaoplugin/src/IpsSosAOMboxLogic.cpp	Fri May 28 13:56:43 2010 +0300
@@ -221,7 +221,8 @@
     TRAP_IGNORE( settings = 
             CIpsSosAOSettingsHandler::NewL(iSession, iMailboxId));
     
-    if(settings){
+    if( settings )
+        {
         IpsServices::TIpsSetDataEmnStates state = IpsServices::EMailEmnOff;
         state = settings->EmailNotificationState();
         
@@ -250,11 +251,13 @@
     TRAPD( err, settings = CIpsSosAOSettingsHandler::NewL(
             iSession, iMailboxId) );
     
-    if(settings){
+    if( settings )
+        {
         HBufC* addr = NULL;
         TRAP(err, addr = settings->EmailAddressL());
         
-        if(addr){
+        if( addr )
+            {
             __ASSERT_DEBUG( ( 
                     addr->Length() <= KIpsSosAOTextBufferSize ), 
                     User::Panic( KIpsSosAOPanicLit, KErrGeneral) );
@@ -313,7 +316,8 @@
     TInt cycles = 0;
     
     if ( event == EEventStart && iState == EStateError && 
-            CanConnectIfRoamingL() )
+          ( (iIsRoaming && CanConnectIfRoamingL())||
+             !iIsRoaming ) )
         {
         event = EEventNop;
         iAgent->LoadSettingsL();
@@ -853,7 +857,6 @@
     TRAPD(err, mgr.OpenL());
     
     TCmGenConnSettings set;
-    
     if(err==KErrNone){
         TRAP(err, mgr.ReadGenConnSettingsL(set));
         }
--- a/ipsservices/ipssosaoplugin/src/IpsSosAOSettingsHandler.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/ipssosaoplugin/src/IpsSosAOSettingsHandler.cpp	Fri May 28 13:56:43 2010 +0300
@@ -155,9 +155,9 @@
     QVariant state;
     TBool ok = GetSettingValue(IpsServices::ReceptionActiveProfile, state);
     
-    if(ok ){
-        prof = state.toInt();
-        
+    if( ok )
+        {
+        prof = state.toInt();        
         ret = ProfileIntoAOState(prof);
         }   
     
@@ -170,10 +170,12 @@
     const IpsServices::TIpsSetDataAoStates aAlwaysOnlineState )
     {
     //we're allowed to switch ourselves off, not on.
-    if ( aAlwaysOnlineState == IpsServices::EMailAoOff ){
+    if ( aAlwaysOnlineState == IpsServices::EMailAoOff )
+        {
         if(!SetSettingValue(
                 IpsServices::ReceptionActiveProfile, 
-                IpsServices::EmailSyncProfileManualFetch)){
+                IpsServices::EmailSyncProfileManualFetch))
+            {
         
             CreateKeyValuePair(
                     IpsServices::ReceptionActiveProfile, 
@@ -194,7 +196,8 @@
     QVariant state = NULL;
     TBool ok = GetSettingValue(IpsServices::EmailNotificationState, state);
         
-    if(ok){
+    if(ok)
+        {
         ret = static_cast<IpsServices::TIpsSetDataEmnStates>(state.toInt());
         }
     */
@@ -208,7 +211,8 @@
     const IpsServices::TIpsSetDataEmnStates /*aEmnState*/ )
     {
     /* Not supported yet
-    if(!SetSettingValue(IpsServices::EmailNotificationState, aEmnState)){
+    if(!SetSettingValue(IpsServices::EmailNotificationState, aEmnState))
+        {
         CreateKeyValuePair(IpsServices::EmailNotificationState, aEmnState);
         }
     */
@@ -224,7 +228,8 @@
     QVariant state = NULL;
     TBool ok = GetSettingValue(IpsServices::FirstEmnReceived, state);
             
-    if(ok){
+    if(ok)
+        {
         ret = static_cast<TBool>(state.toInt());
         }
     */
@@ -237,7 +242,8 @@
 void CIpsSosAOSettingsHandler::SetFirstEmnReceived( TBool /*aValue*/ )
     {
     /* Not supported yet
-    if(!SetSettingValue( IpsServices::FirstEmnReceived, aValue )){
+    if(!SetSettingValue( IpsServices::FirstEmnReceived, aValue ))
+        {
         CreateKeyValuePair(IpsServices::FirstEmnReceived, aValue);
         }
     */
@@ -254,7 +260,8 @@
     QVariant state = NULL;
     TBool ok = GetSettingValue(IpsServices::EmnReceivedNotSynced, state);
                 
-    if(ok){
+    if(ok)
+        {
         ret = static_cast<TBool>(state.toInt());
         }
     */
@@ -268,7 +275,8 @@
     {
     /* Not supported yet
     
-    if(!SetSettingValue(IpsServices::EmnReceivedNotSynced, aFlag)){
+    if(!SetSettingValue(IpsServices::EmnReceivedNotSynced, aFlag))
+        {
         CreateKeyValuePair(IpsServices::EmnReceivedNotSynced, aFlag);
         }
     */
@@ -283,7 +291,8 @@
     QVariant state = NULL;
     TBool ok = GetSettingValue(IpsServices::ReceptionWeekDays, state);
                     
-    if(ok){
+    if(ok)
+        {
         ret = static_cast<TUint>(state.toUInt());
         }
     
@@ -298,7 +307,8 @@
     TBool ok = GetSettingValue(IpsServices::ReceptionDayStartTime, value);
     TDateTime time;
     
-    if(ok){
+    if(ok)
+        {
         TInt total = value.toInt();
         TInt minutes = total%KAOMinutesInHour;
         TInt hour = total/KAOMinutesInHour;
@@ -318,7 +328,8 @@
     TBool ok = GetSettingValue(IpsServices::ReceptionDayEndTime, value);
     TDateTime time;
     
-    if(ok){
+    if(ok)
+        {
         TInt total = value.toInt();
         TInt minutes = total%KAOMinutesInHour;
         TInt hour = total/KAOMinutesInHour;
@@ -338,24 +349,28 @@
     TInt high = I64HIGH(aLastUpdateInfo.iLastSuccessfulUpdate.Int64());
     TInt low = I64LOW(aLastUpdateInfo.iLastSuccessfulUpdate.Int64());
    
-    if(!SetSettingValue(IpsServices::AoLastSuccessfulUpdateL, low)){
+    if(!SetSettingValue(IpsServices::AoLastSuccessfulUpdateL, low))
+        {
         CreateKeyValuePair(IpsServices::AoLastSuccessfulUpdateL, low);
         }
         
-    if(!SetSettingValue(IpsServices::AoLastSuccessfulUpdateH, high)){
+    if(!SetSettingValue(IpsServices::AoLastSuccessfulUpdateH, high))
+        {
         CreateKeyValuePair(IpsServices::AoLastSuccessfulUpdateH, high);
         }
         
     if(!SetSettingValue(
             IpsServices::AoLastUpdateFailed, 
-            aLastUpdateInfo.iLastUpdateFailed)){
+            aLastUpdateInfo.iLastUpdateFailed))
+        {
         CreateKeyValuePair(IpsServices::AoLastUpdateFailed, 
                 aLastUpdateInfo.iLastUpdateFailed);
         }
         
     if(!SetSettingValue(
             IpsServices::AoUpdateSuccessfulWithCurSettings, 
-            aLastUpdateInfo.iUpdateSuccessfulWithCurSettings)){
+            aLastUpdateInfo.iUpdateSuccessfulWithCurSettings))
+        {
         CreateKeyValuePair(IpsServices::AoUpdateSuccessfulWithCurSettings, 
                 aLastUpdateInfo.iUpdateSuccessfulWithCurSettings);
         }
@@ -376,22 +391,26 @@
     QVariant success=NULL;
         
     TBool ok = GetSettingValue(IpsServices::AoLastSuccessfulUpdateH, high);
-    if(ok){
+    if( ok )
+        {
         ok = GetSettingValue(IpsServices::AoLastSuccessfulUpdateL, low);
         }
-     if(ok){
+     if( ok )
+         {
          info.iLastSuccessfulUpdate = MAKE_TINT64( high.toInt(), low.toInt() );
          }
     
     ok = GetSettingValue(IpsServices::AoLastUpdateFailed, fail);
     
-    if(ok){
+    if( ok )
+        {
         info.iLastUpdateFailed = static_cast<TBool>(fail.toInt());
         }
     
     ok = GetSettingValue(IpsServices::AoUpdateSuccessfulWithCurSettings, success);
     
-    if(ok){
+    if( ok )
+        {
         info.iUpdateSuccessfulWithCurSettings = static_cast<TBool>(success.toInt());
         }
     
@@ -404,15 +423,18 @@
     {
     QVariant value = NULL;
     TBool ok = EFalse;
-    if(IsDaytime()){
+    if( IsDaytime() )
+        {
         ok = GetSettingValue( IpsServices::ReceptionRefreshPeriodDayTime, value);
         }
-    else{
+    else
+        {
         ok = GetSettingValue(IpsServices::ReceptionRefreshPeriodOther, value);
         }    
     
     TInt ret = 0;
-    if(ok){
+    if( ok )
+        {
         ret = value.toInt();
         }
     
@@ -444,7 +466,8 @@
         QVariant& aValue) const
     {
     bool ret = false;
-    if(iExtMgr){
+    if( iExtMgr )
+        {
         ret = iExtMgr->readSetting(aItem, aValue);
         }
     return ret;
@@ -458,7 +481,8 @@
     {
     bool ret = false;
     
-    if(iExtMgr){
+    if( iExtMgr )
+        {
         ret = iExtMgr->writeSetting(aItem, aData);
         }
     return ret;
@@ -510,7 +534,8 @@
     {
     IpsServices::TIpsSetDataAoStates ret = IpsServices::EMailAoOff;
     
-    if ( aProfile != IpsServices::EmailSyncProfileManualFetch ){
+    if ( aProfile != IpsServices::EmailSyncProfileManualFetch )
+        {
         ret = IpsServices::EMailAoAlways;
         }
     
--- a/ipsservices/ipssosplugin/inc/ipsplgdeleteoperation.h	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/ipssosplugin/inc/ipsplgdeleteoperation.h	Fri May 28 13:56:43 2010 +0300
@@ -52,6 +52,24 @@
             CMsvSession& aMsvSession,
             TRequestStatus& aObserverRequestStatus,
             CMsvEntrySelection* aEntriesToDelete );
+        
+        /**
+        * Two-phased constructor
+        * 
+        * @param aMsvSession                client/server session to MsvServer
+        * @param aObserverRequestStatus     operations observer status
+        * @param aEntriesToDelete           Message entries to be deleted from server and locally
+        * @param aOperationObserver         observes the progress of this operation
+        * @param aRequestId                 identifier for this instance of operation, 
+        *                                   assigned by the client
+        * @return CIpsPlgCreateForwardMessageOperation* self pointer                                  
+        */
+        static CIpsPlgDeleteOperation* NewL(
+            CMsvSession& aMsvSession,
+            TRequestStatus& aObserverRequestStatus,
+            CMsvEntrySelection* aEntriesToDelete,
+            MFSMailRequestObserver& aOperationObserver,
+            const TInt aRequestId);
         // </qmail>    
 //<qmail> class renamed + comments removed
         virtual ~CIpsPlgDeleteOperation();
@@ -59,6 +77,11 @@
         virtual const TDesC8& ProgressL();
 //</qmail> 
 
+// <qmail>
+    protected:        
+        void SignalFSObserver( TInt aStatus );
+// </qmail>
+        
     private:
         // <qmail>   
         enum TIpsPlgDeleteMessagesState 
@@ -76,7 +99,14 @@
         CIpsPlgDeleteOperation(
             CMsvSession& aMsvSession,
             TRequestStatus& aObserverRequestStatus );
-		//</qmail>	
+		//</qmail>
+        //<qmail>
+        CIpsPlgDeleteOperation(
+            CMsvSession& aMsvSession,
+            TRequestStatus& aObserverRequestStatus,
+            MFSMailRequestObserver& aOperationObserver,
+            const TInt aRequestId);
+        //</qmail>
         // <qmail> 
         /**
         * 2nd phase constructor
@@ -128,6 +158,9 @@
         CMsvOperation*              iOperation; // owned
         CMsvEntry*                  iEntry; // owned
         CMsvEntrySelection*         iEntrySelection; // owned
+        MFSMailRequestObserver* iOperationObserver;  // not owned
+        TFSProgress iFSProgress;
+        TInt iFSRequestId;
         // <qmail> removed member iEntryCount
         TInt                        iSetFlagIndex;
         CMsvEntry*                  iSetFlagEntry; // owned
--- a/ipsservices/ipssosplugin/inc/ipsplgheaders.h	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/ipssosplugin/inc/ipsplgheaders.h	Fri May 28 13:56:43 2010 +0300
@@ -165,7 +165,7 @@
 
 // operations
 #include "ipsplgtimeroperation.h"
-#include "ipsplgoperationwait.h"
+// <qmail> removing #include "ipsplgoperationwait.h"
 #include "ipsplgonlineoperation.h"
 // <qmail>
 #include "ipsplgcreatemessageoperation.h"
--- a/ipsservices/ipssosplugin/inc/ipsplgonlineoperation.h	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/ipssosplugin/inc/ipsplgonlineoperation.h	Fri May 28 13:56:43 2010 +0300
@@ -57,17 +57,19 @@
      * @param aFSMailBoxId mailbox id
      * @param aFSOperationObserver callback interface to caller for reporting progress (completion) statuses
      * @param aFSRequestId id of the request
+     * @param aSignallingAllowed for asynchronous request response message
      */
     // <qmail> priority parameter has been removed
 	// <qmail> MFSMailRequestObserver& changed to pointer
-	// <qmail> aSignallingAllowed parameter has been removed
+	// <qmail> aSignallingAllowed parameter has been returned
     CIpsPlgOnlineOperation(
         CMsvSession& aMsvSession,
         TRequestStatus& aObserverRequestStatus,
         CIpsPlgTimerOperation& aActivityTimer,
         TFSMailMsgId aFSMailBoxId,
         MFSMailRequestObserver* aFSOperationObserver,
-        TInt aFSRequestId );
+        TInt aFSRequestId,
+        TBool aSignallingAllowed=ETrue );
 
     /**
     * Base constructor
@@ -150,7 +152,9 @@
         // Return this if iSubOperation==NULL.
         TBuf8<1>                iDummyProg;
         
-        // <qmail> removed: TBool           iSignallingAllowed;
+        // <qmail> boolean returned
+        TBool           iSignallingAllowed;
+        // </qmail>
         MFSMailRequestObserver* iFSOperationObserver; //not owned
     };
 
--- a/ipsservices/ipssosplugin/inc/ipsplgoperationwait.h	Mon May 24 21:02:02 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,87 +0,0 @@
-/*
-* Copyright (c) 2007-2008 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:  Operation waiter for running asyncronous operations
-*                synchronously
-*
-*/
-
-#ifndef IPSOPERATIONWAIT_H
-#define IPSOPERATIONWAIT_H
-
-
-#include <e32base.h>
-
-NONSHARABLE_CLASS( CIpsPlgOperationWait ) : public CActive
-    {
-    public:
-    
-        /**
-        *
-        */    
-        static CIpsPlgOperationWait* NewL( TInt aPriority = EPriorityStandard );
-        
-        /**
-        *
-        */    
-        static CIpsPlgOperationWait* NewLC( TInt aPriority = EPriorityStandard );
-    
-        /**
-        *
-        */
-        CIpsPlgOperationWait( TInt aPriority );
-
-        /**
-        *
-        */
-        virtual ~CIpsPlgOperationWait();
-
-        /**
-        *
-        */
-        void ConstructL();
-
-        /**
-        *
-        */
-        void Start();
-
-
-    protected:
-
-        /**
-        * From CActive
-        */
-        virtual void DoCancel();
-
-        /**
-        * From CActive
-        */
-        virtual void RunL();
-
-    private:
-        
-        /**
-        *
-        */    
-        void StopScheduler();
-
-    private: // Data
-
-        CActiveSchedulerWait iWait;
-
-    };
-
-
-
-#endif /* IPSOPERATIONWAIT_H */
--- a/ipsservices/ipssosplugin/inc/ipsplgpop3connectop.h	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/ipssosplugin/inc/ipsplgpop3connectop.h	Fri May 28 13:56:43 2010 +0300
@@ -44,10 +44,13 @@
 	    * @param aFSOperationObserver observer callback pointer
 	    * @param aFSRequestId client assigned identifier for the request instance
 	    * @param aEventHandler event handler for sending sync events
+	    * @param aSignallingAllowed for asynchronous request response message
+	    * @param aFetchWillFollow used when connection must be kept open
 	    * @return new instance of the class
 	    */
 		// <qmail> MFSMailRequestObserver& changed to pointer
-		// <qmail> aSignallingAllowed parameter removed
+		// <qmail> aSignallingAllowed parameter added
+        // <qmail> aFetchWillFollow parameter added
         static CIpsPlgPop3ConnectOp* NewL(
             CMsvSession& aMsvSession,
             TRequestStatus& aObserverRequestStatus,
@@ -57,7 +60,9 @@
             TFSMailMsgId aFSMailBoxId,
             MFSMailRequestObserver* aFSOperationObserver,
             TInt aFSRequestId,
-            CIpsPlgEventHandler* aEventHandler );
+            CIpsPlgEventHandler* aEventHandler,
+            TBool aSignallingAllowed=ETrue,
+            TBool aFetchWillFollow=EFalse );
 
         /**
         *
@@ -91,6 +96,8 @@
         TIpsOpType IpsOpType() const;
 // </qmail>
 
+        TInt GetOperationErrorCodeL( );
+        
     protected:
 
         /**
@@ -109,7 +116,8 @@
         *
         */
 		// <qmail> MFSMailRequestObserver& changed to pointer
-		// <qmail> aSignallingAllowed parameter removed
+		// <qmail> aSignallingAllowed parameter added
+        // <qmail> aFetchWillFollow parameter added
         CIpsPlgPop3ConnectOp(
             CMsvSession& aMsvSession,
             TRequestStatus& aObserverRequestStatus,
@@ -119,7 +127,9 @@
             TFSMailMsgId aFSMailBoxId,
             MFSMailRequestObserver* aFSOperationObserver,
             TInt aFSRequestId,
-            CIpsPlgEventHandler* aEventHandler );
+            CIpsPlgEventHandler* aEventHandler,
+            TBool aSignallingAllowed,
+            TBool aFetchWillFollow );
 
         /**
         *
@@ -134,7 +144,8 @@
         void DoPopulateL();
 	    // <qmail> removed TBool ValidateL() (did nothing)
 	    // <qmail> removed void DoQueryPasswordL() not used any more
-        void DoDisconnect();
+        // <qmail> DoDisconnect -> DoDisconnectL
+        void DoDisconnectL();
 		// </qmail>
         
         // <qmail> removed flag methods as they were not used or even defined anywhere
@@ -165,7 +176,10 @@
 	    TBool                                           iForcePopulate;
 	    // <qmail> removed iSelection;
 	    CIpsPlgEventHandler*                            iEventHandler; // not owned
-        TBool                                           iAlreadyConnected;
+	    // <qmail> iAlreadyConnected removed
+        // <qmail>
+        TBool                                           iFetchWillFollow;
+        // </qmail>
     };
 
 #endif
--- a/ipsservices/ipssosplugin/inc/ipsplgsmtpservice.h	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/ipssosplugin/inc/ipsplgsmtpservice.h	Fri May 28 13:56:43 2010 +0300
@@ -78,26 +78,12 @@
         TFSMailMsgId aMailBoxId,
         CFSMailMessage& aMessage );
 
-    /**
-     * Creates new email message to message store
-     *
-     * @param aMailBoxId msv entry id to mailbox which setting are used
-     * @param aSession Msv Session
-     * @since FS 1.0
-     * @return pointer created fs message object
-     */
-    CFSMailMessage* CreateNewSmtpMessageL(
-        const TFSMailMsgId& aMailBoxId );
-
-    CFSMailMessage* CreateForwardSmtpMessageL(
-        const TFSMailMsgId& aMailBoxId,
-        const TFSMailMsgId& aOriginalMessageId );
-
-    CFSMailMessage* CreateReplySmtpMessageL(
-        const TFSMailMsgId& aMailBoxId,
-        const TFSMailMsgId& aOriginalMessageId,
-        TBool aReplyToAll );
-
+    // <qmail> removing unused functions
+    // CreateNewSmtpMessageL
+    // CreateForwardSmtpMessageL
+    // CreateReplySmtpMessageL
+    // </qmail>
+            
 // <qmail> moved for public access
     /**
      * Creates proper fs message object and set flags
--- a/ipsservices/ipssosplugin/inc/ipsplgsosbaseplugin.h	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/ipssosplugin/inc/ipsplgsosbaseplugin.h	Fri May 28 13:56:43 2010 +0300
@@ -176,6 +176,15 @@
         const TFSMailMsgId& aMailBoxId,
         const TFSMailMsgId& aFolderId,
         const RArray<TFSMailMsgId>& aMessages );
+		
+//<qmail>
+    virtual void DeleteMessagesByUidL(
+        const TFSMailMsgId& aMailBoxId,
+        const TFSMailMsgId& aFolderId,
+        const RArray<TFSMailMsgId>& aMessages,
+        MFSMailRequestObserver& aOperationObserver,
+        const TInt aRequestId);
+//</qmail>
 
     // MESSAGE STORE OPERATIONS
 
--- a/ipsservices/ipssosplugin/ipssosplugin.pro	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/ipssosplugin/ipssosplugin.pro	Fri May 28 13:56:43 2010 +0300
@@ -53,7 +53,7 @@
 inc/ipsplgcreatereplymessageoperation.h \
 inc/ipsplgnewchildpartfromfileoperation.h \
 inc/ipsplgremovechildpartoperation.h \
-inc/ipsplgoperationwait.h \
+# <qmail> inc/ipsplgoperationwait.h \ removed
 inc/ipsplgpop3connectop.h \
 inc/ipsplgpop3fetchoperation.h \
 inc/ipsplgpop3plugin.h \
@@ -98,7 +98,7 @@
 src/ipsplgcreatereplymessageoperation.cpp \
 src/ipsplgnewchildpartfromfileoperation.cpp \
 src/ipsplgremovechildpartoperation.cpp \
-src/ipsplgoperationwait.cpp \
+# <qmail> removed src/ipsplgoperationwait.cpp \
 src/ipsplgpop3connectop.cpp \
 src/ipsplgpop3fetchoperation.cpp \
 src/ipsplgpop3plugin.cpp \
--- a/ipsservices/ipssosplugin/src/ipsplgdeleteoperation.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgdeleteoperation.cpp	Fri May 28 13:56:43 2010 +0300
@@ -41,6 +41,8 @@
         aMsvSession, 
         CActive::EPriorityStandard, 
         aObserverRequestStatus),
+    iOperationObserver(NULL),
+    iFSRequestId(KErrNotFound),
     iState( ESetFlags ) // <qmail>
     //</qmail> iBlank removed    
     {
@@ -49,6 +51,30 @@
     }
 //</qmail>
 
+// ----------------------------------------------------------------------------
+// CIpsPlgDeleteOperation::CIpsPlgDeleteOperation
+// ----------------------------------------------------------------------------
+//
+//<qmail>
+CIpsPlgDeleteOperation::CIpsPlgDeleteOperation(
+    CMsvSession& aMsvSession,
+    TRequestStatus& aObserverRequestStatus,
+    MFSMailRequestObserver& aOperationObserver,
+    const TInt aRequestId)
+    :
+    CMsvOperation( 
+        aMsvSession, 
+        CActive::EPriorityStandard, 
+        aObserverRequestStatus),
+    iOperationObserver(&aOperationObserver),
+    iFSRequestId(aRequestId),
+    iState( ESetFlags )
+    {
+    FUNC_LOG;
+    CActiveScheduler::Add(this);
+    }
+//</qmail>
+
 
 // ----------------------------------------------------------------------------
 // CIpsPlgDeleteOperation::ConstructL
@@ -115,6 +141,28 @@
     return self;
     }
 
+// <qmail>
+// ----------------------------------------------------------------------------
+// CIpsPlgDeleteOperation::NewL
+// ----------------------------------------------------------------------------
+//
+CIpsPlgDeleteOperation* CIpsPlgDeleteOperation::NewL(
+    CMsvSession& aMsvSession,
+    TRequestStatus& aObserverRequestStatus,
+    CMsvEntrySelection* aEntriesToDelete,
+    MFSMailRequestObserver& aOperationObserver,
+    const TInt aRequestId)
+    {
+    FUNC_LOG;
+    CIpsPlgDeleteOperation* self=new (ELeave) CIpsPlgDeleteOperation(
+        aMsvSession, aObserverRequestStatus, aOperationObserver, aRequestId );
+    CleanupStack::PushL(self);
+    self->ConstructL( aEntriesToDelete );
+    CleanupStack::Pop( self ); 
+    return self;
+    }
+// </qmail>
+
 // ----------------------------------------------------------------------------
 // CIpsPlgDeleteOperation::~CIpsPlgDeleteOperation
 // ----------------------------------------------------------------------------
@@ -161,6 +209,7 @@
     if ( iStatus.Int() != KErrNone )
         {
         // something failed, just complete
+        SignalFSObserver(iStatus.Int());
         TRequestStatus* status = &iObserverRequestStatus;
         User::RequestComplete(status, iStatus.Int());
         return;
@@ -177,6 +226,7 @@
         
         if ( err != KErrNone )
             {
+            SignalFSObserver(err);
             TRequestStatus* status = &iObserverRequestStatus;
             User::RequestComplete(status, iStatus.Int());
             }
@@ -198,6 +248,8 @@
         }
     else
         {
+        // Inform observer
+        SignalFSObserver(iStatus.Int());
         // nothing left to process, so complete the observer
         TRequestStatus* status = &iObserverRequestStatus;
         User::RequestComplete(status, iStatus.Int());
@@ -244,6 +296,7 @@
     // if error then complete this pass with the error code
     if ( err )
         {
+        SignalFSObserver(err);
         TRequestStatus* status = &iStatus;
         User::RequestComplete(status, err);
         }
@@ -279,6 +332,7 @@
     // if error then complete this pass with the error code
     if ( err )
         {
+        SignalFSObserver(err);
         TRequestStatus* status = &iStatus;
         User::RequestComplete( status, err );
         }
@@ -335,7 +389,25 @@
     
     return ret;
     }
-// </qmail>    
+// </qmail>
+
+//<qmail> 
+// ----------------------------------------------------------------------------
+// CIpsPlgDeleteOperation::SignalFSObserver
+// ----------------------------------------------------------------------------
+//
+void CIpsPlgDeleteOperation::SignalFSObserver(TInt aStatus)
+    {
+    if (iOperationObserver)
+        {
+        iFSProgress.iProgressStatus = TFSProgress::EFSStatus_RequestComplete;
+        iFSProgress.iError = aStatus;
+        iFSProgress.iParam = NULL;
+    
+        TRAP_IGNORE( iOperationObserver->RequestResponseL( iFSProgress, iFSRequestId ) );
+        }
+    }
+// </qmail>
 
 //  End of File
 
--- a/ipsservices/ipssosplugin/src/ipsplgmsgmapper.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgmsgmapper.cpp	Fri May 28 13:56:43 2010 +0300
@@ -308,8 +308,8 @@
     TBool unread( aEmlEntry.Unread() );
 
 // <qmail>
-    if ( !LogicalXor( unread, msgFlags & EFSMsgFlag_Read ) ||
-         !LogicalXor( unread, msgFlags & EFSMsgFlag_Read_Locally ))
+    if ( LogicalXor( unread, msgFlags & EFSMsgFlag_Read ) ||
+         LogicalXor( unread, msgFlags & EFSMsgFlag_Read_Locally ))
 // </qmail>
         {
         aEmlEntry.SetUnread( !unread );
--- a/ipsservices/ipssosplugin/src/ipsplgonlineoperation.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgonlineoperation.cpp	Fri May 28 13:56:43 2010 +0300
@@ -36,14 +36,15 @@
 // ----------------------------------------------------------------------------
 // <qmail> priority parameter has been removed
 // <qmail> MFSMailRequestObserver& changed to pointer
-// <qmail> aSignallingAllowed parameter has been removed
+// <qmail> aSignallingAllowed parameter has been returned
 CIpsPlgOnlineOperation::CIpsPlgOnlineOperation(
     CMsvSession& aMsvSession,
     TRequestStatus& aObserverRequestStatus,
     CIpsPlgTimerOperation& aActivityTimer,
     TFSMailMsgId aFSMailBoxId,
     MFSMailRequestObserver* aFSOperationObserver,
-    TInt aFSRequestId )
+    TInt aFSRequestId,
+    TBool aSignallingAllowed )
     :
     CIpsPlgBaseOperation(
         aMsvSession, 
@@ -55,6 +56,7 @@
     iMtmReg( NULL ), 
     iSubOperation( NULL ),
     iError( KErrNone ),
+    iSignallingAllowed( aSignallingAllowed ),
     iFSOperationObserver( aFSOperationObserver )
     {
     FUNC_LOG;
@@ -216,7 +218,9 @@
     {
     FUNC_LOG;
     // <qmail> clean up this function
-    if( iFSOperationObserver )
+    // <qmail>
+    if( iSignallingAllowed )
+    // </qmail>    
         {
         // Initialize the progress data
         TFSProgress prog = { TFSProgress::EFSStatus_RequestComplete, 1, 1, aStatus, NULL };
@@ -226,9 +230,13 @@
             {
             prog.iProgressStatus = TFSProgress::EFSStatus_RequestCancelled;
             }
-        
-        // do the actual signalling
-        TRAP_IGNORE( iFSOperationObserver->RequestResponseL( prog, iFSRequestId ) );
+        // <qmail>
+        if( iFSOperationObserver )
+            {
+            // do the actual signalling
+            TRAP_IGNORE( iFSOperationObserver->RequestResponseL( prog, iFSRequestId ) );
+            }
+        // </qmail>
         }
     }
 
--- a/ipsservices/ipssosplugin/src/ipsplgoperationwait.cpp	Mon May 24 21:02:02 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,123 +0,0 @@
-/*
-* Copyright (c) 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: 
-*       Simple wait operation for async functions
-*
-*/
-
-
-#include "emailtrace.h"
-#include "ipsplgheaders.h"
-
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-CIpsPlgOperationWait* CIpsPlgOperationWait::NewL( 
-    TInt aPriority )
-    {
-    FUNC_LOG;
-    CIpsPlgOperationWait* self = CIpsPlgOperationWait::NewLC( aPriority );
-    CleanupStack::Pop( self );
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-CIpsPlgOperationWait* CIpsPlgOperationWait::NewLC( 
-    TInt aPriority )
-    {
-    FUNC_LOG;
-    CIpsPlgOperationWait* self = new( ELeave ) CIpsPlgOperationWait( aPriority );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    return self;
-    }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-CIpsPlgOperationWait::CIpsPlgOperationWait( TInt aPriority ) : CActive( aPriority )
-    {
-    FUNC_LOG;
-    }
-    
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-CIpsPlgOperationWait::~CIpsPlgOperationWait()
-    {
-    FUNC_LOG;
-    Cancel();
-    }
-    
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CIpsPlgOperationWait::ConstructL()
-    {
-    FUNC_LOG;
-    CActiveScheduler::Add( this );
-    }
-
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CIpsPlgOperationWait::Start( )
-    {
-    FUNC_LOG;
-    SetActive();
-    iWait.Start();
-    }
-    
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CIpsPlgOperationWait::DoCancel()
-    {
-    FUNC_LOG;
-    if( iStatus == KRequestPending )
-        {
-        TRequestStatus* s=&iStatus;
-        User::RequestComplete( s, KErrCancel );
-        }
-    StopScheduler();
-    }
-    
-// ---------------------------------------------------------------------------
-// ---------------------------------------------------------------------------
-//
-void CIpsPlgOperationWait::RunL()
-    {
-    FUNC_LOG;
-    StopScheduler();
-    }
-
-void CIpsPlgOperationWait::StopScheduler()
-    {
-    FUNC_LOG;
-    if ( iWait.IsStarted() )
-        {
-        /*if (iWait.CanStopNow())
-            {*/
-        iWait.AsyncStop();
-        /*    }
-        else
-            {
-            iWait.AsyncStop(TCallBack(SchedulerStoppedCallBack, env));
-            }*/
-        }
-    }
-
--- a/ipsservices/ipssosplugin/src/ipsplgpop3connectop.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgpop3connectop.cpp	Fri May 28 13:56:43 2010 +0300
@@ -30,7 +30,8 @@
 // CIpsPlgPop3ConnectOp::NewL()
 // ----------------------------------------------------------------------------
 // <qmail> MFSMailRequestObserver& changed to pointer
-// <qmail> aSignallingAllowed parameter removed
+// <qmail> aSignallingAllowed parameter added
+// <qmail> aFetchWillFollow parameter added
 CIpsPlgPop3ConnectOp* CIpsPlgPop3ConnectOp::NewL(
     CMsvSession& aMsvSession,                           
     TRequestStatus& aObserverRequestStatus,
@@ -40,7 +41,9 @@
     TFSMailMsgId aFSMailBoxId,
     MFSMailRequestObserver* aFSOperationObserver,
     TInt aFSRequestId,
-    CIpsPlgEventHandler* aEventHandler )
+    CIpsPlgEventHandler* aEventHandler,
+    TBool aSignallingAllowed,
+    TBool aFetchWillFollow )
     {
     FUNC_LOG;
     CIpsPlgPop3ConnectOp* op = new(ELeave) CIpsPlgPop3ConnectOp(
@@ -52,7 +55,9 @@
         aFSMailBoxId,
         aFSOperationObserver,
         aFSRequestId,
-        aEventHandler );
+        aEventHandler,
+        aSignallingAllowed,
+        aFetchWillFollow );
 
     CleanupStack::PushL( op );
     op->ConstructL();
@@ -112,7 +117,7 @@
 void CIpsPlgPop3ConnectOp::DoRunL()
     {
     FUNC_LOG;
-    // <qmail> move TInt err declaration later, and narrow the scope
+    TInt err( KErrNone );
 
     // <qmail> remove EQueryingDetails state
     if ( iState == EStartConnect )
@@ -133,35 +138,46 @@
     else if ( iState == EConnected )
         {
         // Connect completed
-// <qmail> Login details checking removed
-        User::LeaveIfError( iStatus.Int() );
+        // <qmail> Login details checking removed
+        err = GetOperationErrorCodeL( );
+        User::LeaveIfError( err );
+
         if ( iForcePopulate && Connected() )
             {
             iState = EPopulate;
             DoPopulateL();
             }
+        // <qmail>
+        else if( iFetchWillFollow && Connected() )
+            {
+            // Leave connection open to make fetch
+            // operation possible
+            iState = EIdle;
+            CompleteObserver( KErrNone );
+            }
+        // </qmail>
         else
             {
             // <qmail>
             // start disconnecting
             iState = EDisconnecting;
-            DoDisconnect();
+            DoDisconnectL();
             // </qmail>
             }
         }
     else if ( iState == EPopulate )
         {
-        // <qmail> suboperation has completed, the result is in 'this->iStatus'
+        err = GetOperationErrorCodeL( );
         if ( iEventHandler )
             {
-            iEventHandler->SetNewPropertyEvent( iService, KIpsSosEmailSyncCompleted, iStatus.Int() );
+            iEventHandler->SetNewPropertyEvent( iService, KIpsSosEmailSyncCompleted, err );
             }
         CIpsPlgSyncStateHandler::SaveSuccessfulSyncTimeL( iMsvSession, iService );
 
         // <qmail>
         // start disconnecting
         iState = EDisconnecting;
-        DoDisconnect();
+        DoDisconnectL();
         // </qmail>
         }
     // <qmail>
@@ -240,7 +256,9 @@
 //
 // <qmail> priority parameter has been removed
 // <qmail> MFSMailRequestObserver& changed to pointer
-// <qmail> aSignallingAllowed parameter removed
+// <qmail> aSignallingAllowed parameter added
+// <qmail> aFetchWillFollow parameter added
+// <qmail> iAlreadyConnected removed
 CIpsPlgPop3ConnectOp::CIpsPlgPop3ConnectOp(
     CMsvSession& aMsvSession,
     TRequestStatus& aObserverRequestStatus,
@@ -250,7 +268,9 @@
     TFSMailMsgId aFSMailBoxId,
     MFSMailRequestObserver* aFSOperationObserver,
     TInt aFSRequestId,
-    CIpsPlgEventHandler* aEventHandler )
+    CIpsPlgEventHandler* aEventHandler,
+    TBool aSignallingAllowed,
+    TBool aFetchWillFollow )
     :
     CIpsPlgOnlineOperation(
         aMsvSession,
@@ -258,11 +278,12 @@
         aActivityTimer, 
         aFSMailBoxId,
         aFSOperationObserver, 
-        aFSRequestId ),
+        aFSRequestId,
+        aSignallingAllowed ),
     iState( EIdle ),
     iForcePopulate( aForcePopulate ),
     iEventHandler( aEventHandler ),
-    iAlreadyConnected( EFalse )
+    iFetchWillFollow( aFetchWillFollow )
     {
     iService = aServiceId; 
     }
@@ -297,7 +318,7 @@
     if ( tentry.Connected() )
         {      
         iState = EConnected;
-		iAlreadyConnected = ETrue;
+        // <qmail> iAlreadyConnected removed
         }
     else
         {
@@ -367,13 +388,35 @@
 
 // <qmail> removed QueryUsrPassL() from here as unneeded
 // <qmail> removed ValidateL() (did nothing)
-// <qmail> removed TInt CIpsPlgPop3ConnectOp::GetOperationErrorCodeL( )
+
+// ----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------    
+// 
+TInt CIpsPlgPop3ConnectOp::GetOperationErrorCodeL( )
+    {
+    FUNC_LOG;
+    if ( !iSubOperation )
+        {
+        return KErrNotFound;
+        }
+    if ( !iSubOperation->IsActive() && iSubOperation->iStatus.Int() != KErrNone )
+        {
+        return iSubOperation->iStatus.Int();
+        }
+    
+    TPckgBuf<TPop3Progress> paramPack;
+    paramPack.Copy( iSubOperation->ProgressL() );
+    const TPop3Progress& progress = paramPack();
+    
+    return progress.iErrorCode;
+    }
+
 // <qmail> removed CIpsPlgImap4ConnectOp::CredientialsSetL
 
 //<qmail> new functions
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
-void CIpsPlgPop3ConnectOp::DoDisconnect()
+void CIpsPlgPop3ConnectOp::DoDisconnectL()
     {
     FUNC_LOG;
     // <qmail> unnecessary: iStatus = KRequestPending;
@@ -398,7 +441,7 @@
     if ( limit > 0 )
         {
         // basically doing a _very_rough_ conversion from kilobyte value to number-of-rows
-    limit = ( limit * KPopulateAlgorithmBytesInKilo ) / KPopulateAlgorithmRowLength;
+        limit = ( limit * KPopulateAlgorithmBytesInKilo ) / KPopulateAlgorithmRowLength;
         }
     CleanupStack::PopAndDestroy( 2, settings );
     return limit;
--- a/ipsservices/ipssosplugin/src/ipsplgpop3fetchoperation.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgpop3fetchoperation.cpp	Fri May 28 13:56:43 2010 +0300
@@ -145,20 +145,21 @@
 
     iState = EStateConnecting;
     iStatus = KRequestPending;
-    
-    // when connecting for the fetch operation, don't let connect operation to do fetch,
-    // because we do it by ourself. That's why give 0 to connect operation.    
+    // <qmail>
     CIpsPlgPop3ConnectOp* connOp = CIpsPlgPop3ConnectOp::NewL(
         iMsvSession,
         iStatus, 
         iService, 
-        EFalse, 
+        EFalse, // We do fetch by ourselves
         *iActivityTimer,
         iFSMailboxId, 
         iFSOperationObserver, 
         iFSRequestId, 
-        NULL );
+        NULL,
+        EFalse, // Signalling not allowed
+        ETrue ); // Fetch will follow, let connection be open
         
+    // </qmail>    
     delete iSubOperation;
     iSubOperation = connOp;
 
@@ -344,9 +345,8 @@
                 progress.iErrorCode = err;
                 iFetchErrorProgress = paramPack.AllocL();
                 }
+            DoDisconnectL();
             
-            iState = EStateIdle;
-            CompleteObserver( err );
             if ( iEventHandler )
                 {
 				// <qmail>
@@ -355,6 +355,11 @@
                 }
             }
             break;
+        case EStateDisconnecting:
+            {
+            CompleteObserver( iStatus.Int() );
+            }
+            break;
             
         default:
             break;
@@ -409,3 +414,16 @@
     }
 // </qmail>
 
+//<qmail> new function
+// ----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+void CIpsPlgPop3FetchOperation::DoDisconnectL()
+    {
+    FUNC_LOG;
+    iState = EStateDisconnecting;
+    InvokeClientMtmAsyncFunctionL( KPOP3MTMDisconnect, iService ); // <qmail> 1 param removed
+    SetActive();
+    }
+// </qmail>
+
+
--- a/ipsservices/ipssosplugin/src/ipsplgsmtpoperation.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgsmtpoperation.cpp	Fri May 28 13:56:43 2010 +0300
@@ -370,14 +370,14 @@
             // is it safe to change flag from suspended to waiting?
             if ( sendState == KMsvSendStateSuspended )
                 {
+                // <qmail> remove activeschedulerwait
                 CMsvEntry* cEntry = CMsvEntry::NewL(
                     iMsvSession, entry.Id(), TMsvSelectionOrdering() );
                 CleanupStack::PushL( cEntry );
-                CIpsPlgOperationWait* wait = CIpsPlgOperationWait::NewLC( );
                 entry.SetSendingState( KMsvSendStateWaiting );
-                cEntry->ChangeL( entry, wait->iStatus );
-                wait->Start();
-                CleanupStack::PopAndDestroy(2, cEntry ); // wait, cEntry
+                cEntry->ChangeL( entry );
+                CleanupStack::PopAndDestroy( cEntry ); // cEntry
+                // </qmail>
                 }
             // add to send list
             iSelection->AppendL( entry.Id() );
--- a/ipsservices/ipssosplugin/src/ipsplgsmtpservice.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgsmtpservice.cpp	Fri May 28 13:56:43 2010 +0300
@@ -242,268 +242,11 @@
     CleanupStack::PopAndDestroy( 3, cEntry );   // >>> cEntry, header, store
     }
 
-// ---------------------------------------------------------------------------
-// CIpsPlgSmtpService::CreateNewSmtpMessageL
-// ---------------------------------------------------------------------------
-//
-CFSMailMessage* CIpsPlgSmtpService::CreateNewSmtpMessageL( 
-    const TFSMailMsgId& aMailBoxId )
-    {
-    FUNC_LOG;
-    TMsvPartList partList( KMsvMessagePartBody );
-    
-    CIpsPlgOperationWait* wait = CIpsPlgOperationWait::NewLC( );
-    
-    TMsvEntry mboxEntry;
-    TMsvId service;
-    iSession.GetEntry( aMailBoxId.Id(), service, mboxEntry );
-    
-    // new mail creating operation. Mail is created asynchronously
-    CImEmailOperation* newMailOp = CImEmailOperation::CreateNewL(
-            wait->iStatus, 
-            iSession,
-            KMsvDraftEntryId,
-            mboxEntry.iRelatedId, 
-            partList, 
-            0, 
-            KUidMsgTypeSMTP );
-    
-    CleanupStack::PushL( newMailOp );
-
-    // wait until new mail is created
-    wait->Start();
-   
-    TMsvId msgId = GetIdFromProgressL( newMailOp->FinalProgress() );
-    
-    CleanupStack::PopAndDestroy( 2, wait );
-    
-    return CreateFSMessageAndSetFlagsL( 
-            msgId, KErrNotFound, aMailBoxId.Id() );
-    }
-    
-// ---------------------------------------------------------------------------
-// CIpsPlgSmtpService::CreateForwardSmtpMessageL
-// ---------------------------------------------------------------------------
-//
-CFSMailMessage* CIpsPlgSmtpService::CreateForwardSmtpMessageL( 
-    const TFSMailMsgId& aMailBoxId,
-    const TFSMailMsgId& aOriginalMessageId )
-    {
-    FUNC_LOG;
-    // 1. part of function checs that body text and all
-    // attachments are fetched
-    TMsvEntry orgMsg;
-    TMsvId service;
-    User::LeaveIfError( iSession.GetEntry( 
-            aOriginalMessageId.Id(), service, orgMsg ) );
-    
-    if ( orgMsg.Id() ==  KMsvNullIndexEntryIdValue )
-        {
-        User::Leave(KErrNotFound);
-        }
-    
-    // In case original message is in Sent folder, it's serviceId must be
-    // changed before starting forward/reply msg creation operation
-    // (after forward msg is created, this is changed back)
-    TMsvId orgServiceId( 0 );
-    if ( ( orgMsg.Parent() == KMsvSentEntryIdValue ) && 
-         ( orgMsg.iMtm == KSenduiMtmSmtpUid ) )
-        {
-        orgServiceId = orgMsg.iServiceId;
-        ChangeServiceIdL( orgMsg );
-        }
-
-    TMsvPartList partList( KMsvMessagePartBody | KMsvMessagePartAttachments );
-    
-    CIpsPlgOperationWait* wait = CIpsPlgOperationWait::NewLC( );
-    CImEmailOperation* forwMailOp = CImEmailOperation::CreateForwardL(
-            wait->iStatus, 
-            iSession,
-            orgMsg.Id(),
-            KMsvDraftEntryId, 
-            partList, 
-            0, 
-            KUidMsgTypeSMTP );
-            
-    CleanupStack::PushL( forwMailOp );
-    
-    wait->Start();
-    
-    TMsvId msgId = GetIdFromProgressL( forwMailOp->FinalProgress() );
-    
-    CleanupStack::PopAndDestroy( 2, wait );
-
-    // If original message's serviceId was changed prior to forward/reply msg
-    // creation op, changing it back to the original
-    if ( orgServiceId )
-        {
-        ChangeServiceIdL( orgMsg, orgServiceId );
-        }
-    
-    return CreateFSMessageAndSetFlagsL( msgId, orgMsg.Id(), aMailBoxId.Id() );
-    }
-    
-// ---------------------------------------------------------------------------
-// CIpsPlgSmtpService::CreateReplySmtpMessageL
-// ---------------------------------------------------------------------------
-//
-CFSMailMessage* CIpsPlgSmtpService::CreateReplySmtpMessageL( 
-    const TFSMailMsgId& aMailBoxId,
-    const TFSMailMsgId& aOriginalMessageId,
-    TBool aReplyToAll )
-    {
-    FUNC_LOG;
-    // find orginal message header and check that body is fetched
-    TMsvEntry orgMsg;
-    TMsvId service;
-    User::LeaveIfError( 
-        iSession.GetEntry( aOriginalMessageId.Id(), service, orgMsg ) );
-    
-    if ( orgMsg.Id() ==  KMsvNullIndexEntryIdValue )
-        {
-        User::Leave(KErrNotFound);
-        }
-    
-    // In case original message is in Sent folder, it's serviceId must be
-    // changed before starting forward/reply msg creation operation
-    // (after forward msg is created, this is changed back)
-    TMsvId orgServiceId( 0 );
-    if ( ( orgMsg.Parent() == KMsvSentEntryIdValue ) && 
-         ( orgMsg.iMtm == KSenduiMtmSmtpUid ) )
-        {
-        orgServiceId = orgMsg.iServiceId;
-        ChangeServiceIdL( orgMsg );
-        }
-    
-    // partList flags control e.g. what kind of recipient set is created
-    TMsvPartList partList = KMsvMessagePartBody | KMsvMessagePartDescription
-    | KMsvMessagePartOriginator;        
-    if( aReplyToAll )
-        {
-        partList |= KMsvMessagePartRecipient;
-        }
-    
-    // Ask Symbian messaging fw to create reply message "skeleton"
-    CIpsPlgOperationWait* wait = CIpsPlgOperationWait::NewLC( );
-    CImEmailOperation* replMailOp = CImEmailOperation::CreateReplyL(
-            wait->iStatus, 
-            iSession,
-            orgMsg.Id(),
-            KMsvDraftEntryId, 
-            partList, 
-            0, 
-            KUidMsgTypeSMTP );
-    CleanupStack::PushL( replMailOp );
-    wait->Start();
-    TMsvId msgId = GetIdFromProgressL( replMailOp->FinalProgress() );
-    CleanupStack::PopAndDestroy( 2, wait );
-    
-    // If original message's serviceId was changed prior to forward/reply msg
-    // creation op, changing it back to the original
-    if ( orgServiceId )
-        {
-        ChangeServiceIdL( orgMsg, orgServiceId );
-        }
-
-    // Start finalising new FS style message
-    CFSMailMessage* fsMsg = CreateFSMessageAndSetFlagsL( 
-            msgId, orgMsg.Id(), aMailBoxId.Id() );
-    CleanupStack::PushL( fsMsg ); // ***
-
-    // dig out new reply message's header
-    CMsvEntry* cEntry = iSession.GetEntryL( msgId );
-    CleanupStack::PushL( cEntry ); // ***
-    CMsvStore* store = cEntry->ReadStoreL();
-    CleanupStack::PushL( store ); // ***
-    if( store->IsPresentL( KUidMsgFileIMailHeader ) == EFalse )
-         {
-         User::Leave(KErrCorrupt);
-         }
-    CImHeader* header = CImHeader::NewLC(); // ***
-    header->RestoreL( *store );
-
-    // Start handling recipients
-    HBufC* emailAddr( NULL );
-    CFSMailAddress* fsAddr( NULL );
-    // copy to recipients
-    for( TInt i = 0; i < header->ToRecipients().Count(); i++ )
-        {
-        emailAddr = header->ToRecipients()[i].AllocLC(); // ***
-        fsAddr = CFSMailAddress::NewLC(); // ***
-        fsAddr->SetEmailAddress( *emailAddr ); // Copy created
-        fsMsg->AppendToRecipient( fsAddr ); // No copy
-        CleanupStack::Pop( fsAddr ); // fsAddr belong now to fsMsg
-        CleanupStack::PopAndDestroy( emailAddr ); // emailAddr not used
-        }
-    // copy cc recipients
-    // <cmail>
-    TFSMailMsgId folderId;
-    TFSMailDetails details( EFSMsgDataEnvelope );
-    CFSMailMessage* originalMessage = iPlugin.GetMessageByUidL( aMailBoxId, 
-                                       folderId, aOriginalMessageId, details );
-    CleanupStack::PushL( originalMessage );
-// <qmail> return by value, because Qt types are used for internal CFSMailAddress data storage
-    const RPointerArray<CFSMailAddress>& originalToRecipients = 
-                                            originalMessage->GetToRecipients();
+// <qmail> removing unused functions
+// CreateNewSmtpMessageL
+// CreateForwardSmtpMessageL
+// CreateReplySmtpMessageL
 // </qmail>
-    TInt originalToRecipientsCount = originalToRecipients.Count(); 
-    TBool present = EFalse;
-    // </cmail>
-    for( TInt i = 0; i < header->CcRecipients().Count(); i++ )
-        {
-        emailAddr = header->CcRecipients()[i].AllocLC(); // ***
-        fsAddr = CFSMailAddress::NewLC(); // ***
-        fsAddr->SetEmailAddress( *emailAddr ); // Copy created
-        // <cmail>
-        if( aReplyToAll )
-            {
-            // check if CC recipient read from header was present in To field
-            // of original message. If so, copy it into To recipietns
-            present = EFalse;
-            for( TInt j = 0; j < originalToRecipientsCount; j++ )
-                {
-                if( emailAddr->Find( originalToRecipients[j]->GetEmailAddress())
-                                                              != KErrNotFound )
-                    {
-                    present = ETrue;
-                    break;
-                    }
-                }
-            if( present )
-                {
-                fsMsg->AppendToRecipient( fsAddr ); // No copy
-                }
-            else
-                {
-                fsMsg->AppendCCRecipient( fsAddr ); // No copy
-                }
-            }
-        else
-        {
-            fsMsg->AppendCCRecipient( fsAddr ); // No copy
-        }
-        // </cmail>
-        CleanupStack::Pop( fsAddr ); // fsAddr belong now to fsMsg
-        CleanupStack::PopAndDestroy( emailAddr ); // emailAddr not used
-        }
-    // <cmail>
-    CleanupStack::PopAndDestroy( originalMessage );
-    // </cmail>
-    // copy bcc recipients
-    for( TInt i = 0; i < header->BccRecipients().Count(); i++ )
-        {
-        emailAddr = header->BccRecipients()[i].AllocLC(); // ***
-        fsAddr = CFSMailAddress::NewLC(); // ***
-        fsAddr->SetEmailAddress( *emailAddr ); // Copy created
-        fsMsg->AppendBCCRecipient( fsAddr ); // No copy
-        CleanupStack::Pop( fsAddr ); // fsAddr belong now to fsMsg
-        CleanupStack::PopAndDestroy( emailAddr ); // emailAddr not used
-        }
-
-    CleanupStack::PopAndDestroy( 3, cEntry ); // header, store, cEntry
-    CleanupStack::Pop( fsMsg ); // fsMsg is given to client
-    return fsMsg;
-    }
 
 // ---------------------------------------------------------------------------
 // CIpsPlgSmtpService::ChangeServiceIdL
--- a/ipsservices/ipssosplugin/src/ipsplgsosbaseplugin.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgsosbaseplugin.cpp	Fri May 28 13:56:43 2010 +0300
@@ -33,13 +33,7 @@
 
 const TInt KOpGranularity = 2;
 
-_LIT( KMimeTextCalRequest,  "text/calendar; method=REQUEST;" );
-_LIT( KMimeTextCalResponse, "text/calendar; method=RESPONSE;" );
-_LIT( KMimeTextCalCancel,   "text/calendar; method=CANCEL;" );
-_LIT8( KMethod, "method" );
-_LIT8( KRequest, "REQUEST" );
-_LIT8( KResponse, "RESPONSE" );
-_LIT8( KCancel, "CANCEL" );
+// <qmail> remove unused literals
 
 #ifdef __WINS__
 _LIT( KEmulatorIMEI, "123456789012345" );
@@ -497,16 +491,13 @@
         }
     if( sel->Count() )
         {
-        CIpsPlgOperationWait* wait = CIpsPlgOperationWait::NewLC();
+        // <qmail> remove activeschedulerwait
+        TMsvLocalOperationProgress progress;
         if( !aSourceFolderId.IsNullId() )
             {
             CMsvEntry* cEntry = iSession->GetEntryL( aSourceFolderId.Id() );
             CleanupStack::PushL( cEntry );
-            cEntry->MoveL(
-                *sel,
-                           aDestinationFolderId.Id(),//KMsvDraftEntryIdValue
-                           wait->iStatus );
-
+            cEntry->MoveL( *sel, aDestinationFolderId.Id(), progress );
             CleanupStack::PopAndDestroy( cEntry );
             }
         else
@@ -515,13 +506,10 @@
             // because it's equal to destination.
             TMsvId parent = msgEntry->Entry().Parent();
             msgEntry->SetEntryL( parent );
-            msgEntry->CopyL(
-                *sel,
-                             aDestinationFolderId.Id(),//KMsvDraftEntryIdValue
-                             wait->iStatus );
+            msgEntry->CopyL( *sel, aDestinationFolderId.Id(), progress );
             }
-        wait->Start();
-        CleanupStack::PopAndDestroy( wait ); // wait
+        User::LeaveIfError( progress.iError );
+        // </qmail>
         }
     CleanupStack::PopAndDestroy( 2, sel ); // msgEntry, sel
     }
@@ -810,11 +798,11 @@
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
  CFSMailMessage* CIpsPlgSosBasePlugin::CreateMessageToSendL(
-    const TFSMailMsgId& aMailBoxId )
+    const TFSMailMsgId& /*aMailBoxId*/ )
 	{
-    FUNC_LOG;
-    CFSMailMessage* msg = iSmtpService->CreateNewSmtpMessageL( aMailBoxId );
-	return msg;
+    // <qmail> not used any more
+    User::Leave(KErrFSMailPluginNotSupported);
+    return NULL; // prevents compiler warning
 	}
 
 // <qmail>
@@ -851,26 +839,13 @@
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 CFSMailMessage* CIpsPlgSosBasePlugin::CreateForwardMessageL(
-    const TFSMailMsgId& aMailBoxId,
-    const TFSMailMsgId& aOriginalMessageId,
-    const TDesC& aHeaderDescriptor )
+    const TFSMailMsgId& /*aMailBoxId*/,
+    const TFSMailMsgId& /*aOriginalMessageId*/,
+    const TDesC& /*aHeaderDescriptor*/ )
     {
-    FUNC_LOG;
-    CFSMailMessage* msg = iSmtpService->CreateForwardSmtpMessageL(
-        aMailBoxId, aOriginalMessageId );
-    
-    if ( aHeaderDescriptor != KNullDesC )
-        {
-        // Ignoring trap as it is better to provide something in case of the
-        // below fix method fails than nothing.
-        TRAP_IGNORE( FixReplyForwardHeaderL( 
-                        msg, 
-                        aMailBoxId, 
-                        aOriginalMessageId, 
-                        aHeaderDescriptor ) );
-        }
-  
-    return msg;
+    // <qmail> not used any more
+    User::Leave(KErrFSMailPluginNotSupported);
+    return NULL; // prevents compiler warning
     }
 
 // <qmail>
@@ -929,27 +904,14 @@
 // ----------------------------------------------------------------------------
 // ---------------------------------------------------------------------------- 	
 CFSMailMessage* CIpsPlgSosBasePlugin::CreateReplyMessageL( 
-    const TFSMailMsgId& aMailBoxId,
-    const TFSMailMsgId& aOriginalMessageId,
-    const TBool aReplyToAll,
-    const TDesC& aHeaderDescriptor )
+    const TFSMailMsgId& /*aMailBoxId*/,
+    const TFSMailMsgId& /*aOriginalMessageId*/,
+    const TBool /*aReplyToAll*/,
+    const TDesC& /*aHeaderDescriptor*/ )
     {
-    FUNC_LOG;
-    CFSMailMessage* msg = iSmtpService->CreateReplySmtpMessageL(
-        aMailBoxId, aOriginalMessageId, aReplyToAll );
-
-    if ( aHeaderDescriptor != KNullDesC )
-        {
-        // Ignoring trap as it is better to provide something in case of the
-        // below fix method fails than nothing.
-        TRAP_IGNORE( FixReplyForwardHeaderL( 
-                                msg, 
-                                aMailBoxId, 
-                                aOriginalMessageId, 
-                                aHeaderDescriptor ) );
-        }
-
-    return msg;
+    // <qmail> not used any more
+    User::Leave(KErrFSMailPluginNotSupported);
+    return NULL; // prevents compiler warning
     }
 
 // <qmail>
@@ -1151,147 +1113,20 @@
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 CFSMailMessagePart* CIpsPlgSosBasePlugin::NewChildPartFromFileL(
-    const TFSMailMsgId& aMailBoxId,
-    const TFSMailMsgId& /* aParentFolderId */,
-    const TFSMailMsgId& aMessageId,
-    const TFSMailMsgId& /* aParentPartId */,
-    const TDesC& aContentType,
-    const TDesC& aFilePath )
+    const TFSMailMsgId& /*aMailBoxId*/,
+    const TFSMailMsgId& /*aParentFolderId*/,
+    const TFSMailMsgId& /*aMessageId*/,
+    const TFSMailMsgId& /*aParentPartId*/,
+    const TDesC& /*aContentType*/,
+    const TDesC& /*aFilePath*/ )
     {
-    FUNC_LOG;
-    CFSMailMessagePart* result ( NULL );
-    CMsvEntry* cEntry( NULL );
-    CImEmailMessage* message( NULL );
-    RFile file;
-    TInt fileSize( 0 );
-    TBool parentToMultipartAlternative( EFalse );
-
-    // Read attachment size
-    User::LeaveIfError( file.Open( iSession->FileSession(), aFilePath, EFileShareReadersOnly ) );
-
-    //in rare case that file has disappeared while sending
-    //we just won't get the size for it
-    file.Size( fileSize );
-    file.Close();
-
-  // Take ownership of message entry objects since thanks to
-    // "clever" use of active scheduler waits we can re-enter 
-    // this function leading to crashes if somebody clears the cache
-    // while this iteration still needs them
-    TakeMessageEntryLC( aMessageId.Id(), cEntry, message );
-	
-    // Operation waiter needed to implement synchronous operation
-    // on the top of async API
-    CIpsPlgOperationWait* waiter = CIpsPlgOperationWait::NewL();
-    CleanupStack::PushL( waiter );
-
-    // Initialize CMsvAttachment instance for the attachment creation
-    CMsvAttachment* info = CMsvAttachment::NewL( CMsvAttachment::EMsvFile );
-    CleanupStack::PushL( info );
-    info->SetAttachmentNameL( aFilePath );
-    info->SetSize( fileSize );
-
-    // Start attachment creation
-    message->AttachmentManager().AddAttachmentL(
-        aFilePath, info, waiter->iStatus );
-    CleanupStack::Pop( info ); // attachment manager takes ownership
-
-    waiter->Start();
-    CleanupStack::PopAndDestroy( waiter );
-    	
-    // Return message entry objects back to cache
-    CleanupStack::Pop( 2 ); // cEntry, message
-    ReturnMessageEntry( cEntry, message );
-
-    // Dig out the entry ID of the new attachment (unbelievable that
-    // there seems to be no better way to do this)
-    message->GetAttachmentsListL( cEntry->Entry().Id( ),
-        CImEmailMessage::EAllAttachments, CImEmailMessage::EThisMessageOnly );
-    TKeyArrayFix key( 0, ECmpTInt32 );
-    CMsvEntrySelection* attachmentIds = message->Selection().CopyLC();
-    attachmentIds->Sort( key );
-    if ( !attachmentIds->Count() )
-        {
-        User::Leave( KErrGeneral );
-        }
-    TMsvId newAttachmentId = (*attachmentIds)[ attachmentIds->Count()-1 ];
-    CleanupStack::PopAndDestroy( attachmentIds );
-
-    CMsvEntry* cAtta = iSession->GetEntryL( newAttachmentId );
-    CleanupStack::PushL( cAtta );
-
-    // Set filename to iDetails
-    TMsvEntry tEntry = cAtta->Entry();
-    tEntry.iDetails.Set( aFilePath );
-    cAtta->ChangeL( tEntry );
-
-    if( cAtta->HasStoreL() )
-        {
-        CMsvStore* store = cAtta->EditStoreL();
-        CleanupStack::PushL( store );
-        CImMimeHeader* mimeHeader = CImMimeHeader::NewLC();
-
-        if( store->IsPresentL( KUidMsgFileMimeHeader ) )
-            {
-            mimeHeader->RestoreL( *store );
-            CDesC8Array& array = mimeHeader->ContentTypeParams();
-            array.AppendL( KMethod );
-            parentToMultipartAlternative = ETrue;
-
-            if( aContentType.Find( KMimeTextCalRequest ) != KErrNotFound )
-                {
-                array.AppendL( KRequest );
-                }
-            else if( aContentType.Find( KMimeTextCalResponse ) != KErrNotFound )
-                {
-                array.AppendL( KResponse );
-                }
-            else if( aContentType.Find( KMimeTextCalCancel ) != KErrNotFound )
-                {
-                array.AppendL( KCancel );
-                }
-            else
-                {
-                parentToMultipartAlternative = EFalse;
-                }
-            mimeHeader->StoreWithoutCommitL( *store );
-            store->CommitL();
-            }
-
-        CleanupStack::PopAndDestroy( 2, store );
-        }
-
-    if( parentToMultipartAlternative &&
-        aFilePath.Find( _L(".ics")) != KErrNotFound )
-        {
-        TMsvEntry tAttaEntry = cAtta->Entry();
-        TMsvId id = tAttaEntry.Parent();
-        CMsvEntry* cParent = iSession->GetEntryL( id );
-        CleanupStack::PushL( cParent );
-
-        TMsvEmailEntry tEntry = cParent->Entry();
-        tEntry.SetMessageFolderType( EFolderTypeAlternative );
-        cParent->ChangeL( tEntry );
-
-        CleanupStack::PopAndDestroy( cParent );
-        }
-    CleanupStack::PopAndDestroy( cAtta );
-
-    // Delete the message entries to get all the changes to disk and
-    // possible store locks released
-    CleanCachedMessageEntries();
-
-    // Create the FS message part object
-    result = iMsgMapper->GetMessagePartL( newAttachmentId, aMailBoxId,
-        aMessageId );
-
-    return result;
+    // <qmail> not used any more
+    User::Leave(KErrFSMailPluginNotSupported);
+    return NULL; // prevents compiler warning
     }
 
 // <qmail>
 // ----------------------------------------------------------------------------
-// ----------------------------------------------------------------------------
-// ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------  
 void CIpsPlgSosBasePlugin::NewChildPartFromFileL(
     const TFSMailMsgId& aMailBoxId,
@@ -1321,141 +1156,21 @@
     iOperations.AppendL( watcher ); 
     CleanupStack::Pop( watcher );
     }
-
 // </qmail> 
 
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------  
 CFSMailMessagePart* CIpsPlgSosBasePlugin::NewChildPartFromFileL(
-    const TFSMailMsgId& aMailBoxId,
-    const TFSMailMsgId& /* aParentFolderId */,
-    const TFSMailMsgId& aMessageId,
-    const TFSMailMsgId& /* aParentPartId */,
-    const TDesC& aContentType,
-    RFile& aFile )
+    const TFSMailMsgId& /*aMailBoxId*/,
+    const TFSMailMsgId& /*aParentFolderId*/,
+    const TFSMailMsgId& /*aMessageId*/,
+    const TFSMailMsgId& /*aParentPartId*/,
+    const TDesC& /*aContentType*/,
+    RFile& /*aFile*/ )
     {
-    FUNC_LOG;
-
-    // Initialize helper variables
-    CFSMailMessagePart* result ( NULL );
-    CMsvEntry* cEntry( NULL );
-    CImEmailMessage* message( NULL );
-    TInt fileSize( 0 );
-    TBuf<KMaxFileName> fileName;
-
- // Take ownership of message entry objects since thanks to
-    // "clever" use of active scheduler waits we can re-enter 
-    // this function leading to crashes if somebody clears the cache
-    // while this iteration still needs them
-    TakeMessageEntryLC( aMessageId.Id(), cEntry, message );
-
-    // Operation waiter needed to implement synchronous operation
-    // on the top of async API
-    CIpsPlgOperationWait* waiter = CIpsPlgOperationWait::NewL();
-    CleanupStack::PushL( waiter );
-
-    // Initialize CMsvAttachment instance for the attachment creation
-    CMsvAttachment* info = CMsvAttachment::NewL( CMsvAttachment::EMsvFile );
-    CleanupStack::PushL( info );
-
-    // Read attachment size
-    User::LeaveIfError( aFile.Size( fileSize ) );
-    info->SetSize( fileSize );
-
-    // Read attachment filename
-    User::LeaveIfError( aFile.FullName( fileName ) );
-    info->SetAttachmentNameL( fileName );
-
-    message->AttachmentManager().AddAttachmentL( aFile, info, waiter->iStatus );
-    CleanupStack::Pop( info ); // attachment manager takes ownership
-    
-    waiter->Start();
-    CleanupStack::PopAndDestroy( waiter );
-
- 	// Return message entry objects back to cache
- 	CleanupStack::Pop( 2 ); // cEntry, message
- 	ReturnMessageEntry( cEntry, message );
-
-    // Dig out the entry ID of the new attachment
-    message->GetAttachmentsListL( cEntry->Entry().Id( ),
-        CImEmailMessage::EAllAttachments, CImEmailMessage::EThisMessageOnly );
-    TKeyArrayFix key( 0, ECmpTInt32 );
-    CMsvEntrySelection* attachmentIds = message->Selection().CopyLC();
-    attachmentIds->Sort( key );
-    if ( !attachmentIds->Count() )
-        {
-        User::Leave( KErrGeneral );
-        }
-    TMsvId newAttachmentId = (*attachmentIds)[ attachmentIds->Count()-1 ];
-    CleanupStack::PopAndDestroy( attachmentIds );
-
-    // Meeting request related handling
-    TBool parentToMultipartAlternative( EFalse );
-    CMsvEntry* cAtta = iSession->GetEntryL( newAttachmentId );
-    CleanupStack::PushL( cAtta );
-
-    // Set filename to iDetails
-    TMsvEntry tEntry = cAtta->Entry();
-    tEntry.iDetails.Set( fileName );
-    cAtta->ChangeL( tEntry );
-
-    if( cAtta->HasStoreL() )
-        {
-        CMsvStore* store = cAtta->EditStoreL();
-        CleanupStack::PushL( store );
-        CImMimeHeader* mimeHeader = CImMimeHeader::NewLC();
-
-        if( store->IsPresentL( KUidMsgFileMimeHeader ) )
-            {
-            mimeHeader->RestoreL( *store );
-            CDesC8Array& array = mimeHeader->ContentTypeParams();
-            array.AppendL( KMethod );
-            parentToMultipartAlternative = ETrue;
-
-            if( aContentType.Find( KMimeTextCalRequest ) != KErrNotFound )
-                {
-                array.AppendL( KRequest );
-                }
-            else if( aContentType.Find( KMimeTextCalResponse ) != KErrNotFound )
-                {
-                array.AppendL( KResponse );
-                }
-            else if( aContentType.Find( KMimeTextCalCancel ) != KErrNotFound )
-                {
-                array.AppendL( KCancel );
-                }
-            else
-                {
-                parentToMultipartAlternative = EFalse;
-                }
-            mimeHeader->StoreWithoutCommitL( *store );
-            store->CommitL();
-            }
-        CleanupStack::PopAndDestroy( 2, store );
-        }
-    if( parentToMultipartAlternative && fileName.Find( _L(".ics")) != KErrNotFound )
-        {
-        TMsvEntry tAttaEntry = cAtta->Entry();
-        TMsvId id = tAttaEntry.Parent();
-        CMsvEntry* cParent = iSession->GetEntryL( id );
-        CleanupStack::PushL( cParent );
-
-        TMsvEmailEntry tEntry = cParent->Entry();
-        tEntry.SetMessageFolderType( EFolderTypeAlternative );
-        cParent->ChangeL( tEntry );
-
-        CleanupStack::PopAndDestroy( cParent );
-        }
-    CleanupStack::PopAndDestroy( cAtta );
-
-    // Delete the message entries to get all the changes to disk and
-    // possible store locks released
-    CleanCachedMessageEntries();
-
-    // Create the FS message part object and return it
-    result = iMsgMapper->GetMessagePartL( newAttachmentId, aMailBoxId,
-        aMessageId );
-    return result;
+    // <qmail> not used any more
+    User::Leave(KErrFSMailPluginNotSupported);
+    return NULL; // prevents compiler warning
     }
 
 // ----------------------------------------------------------------------------
@@ -1477,55 +1192,14 @@
 // ----------------------------------------------------------------------------
 //
 void CIpsPlgSosBasePlugin::RemoveChildPartL(
-    const TFSMailMsgId& /* aMailBoxId */,
-    const TFSMailMsgId& /* aParentFolderId */,
-    const TFSMailMsgId& aMessageId,
-    const TFSMailMsgId& /* aParentPartId */,
-    const TFSMailMsgId& aPartId)
+    const TFSMailMsgId& /*aMailBoxId*/,
+    const TFSMailMsgId& /*aParentFolderId*/,
+    const TFSMailMsgId& /*aMessageId*/,
+    const TFSMailMsgId& /*aParentPartId*/,
+    const TFSMailMsgId& /*aPartId*/)
 	{
-    FUNC_LOG;
-    TInt status( KErrNone );
-    CMsvEntry* cEntry( NULL );
-    TMsvEntry tEntry;
-    TMsvId serviceId;
-    status = iSession->GetEntry( aPartId.Id(), serviceId, tEntry );
-
-    if ( ( status == KErrNone ) &&
-         ( tEntry.iType == KUidMsvAttachmentEntry ) )
-        {
-        CImEmailMessage* message( NULL );
-  
-        // We trust that the message ID really refers to a message
-        
-        // Take ownership of message entry objects since thanks to
-        // "clever" use of active scheduler waits we can re-enter 
-        // this function leading to crashes if somebody clears the cache
-        // while this iteration still needs them
-        TakeMessageEntryLC( aMessageId.Id(), cEntry, message );
-
-        MMsvAttachmentManager& attachmentMgr( message->AttachmentManager() );
-
-        CIpsPlgOperationWait* waiter = CIpsPlgOperationWait::NewL();
-        CleanupStack::PushL( waiter );
-
-        attachmentMgr.RemoveAttachmentL(
-            (TMsvAttachmentId) aPartId.Id(), waiter->iStatus );
-
-        waiter->Start();
-        CleanupStack::PopAndDestroy( waiter );
-        	
-        // Return message entry objects to cache
-        CleanupStack::Pop( 2 ); // cEntry, message
-        ReturnMessageEntry( cEntry, message );
-        }
-    else if ( ( status == KErrNone ) &&
-              ( tEntry.iType == KUidMsvFolderEntry ) )
-        {
-        cEntry = iSession->GetEntryL( tEntry.Parent() );
-        CleanupStack::PushL( cEntry );
-        cEntry->DeleteL( tEntry.Id() );
-        CleanupStack::PopAndDestroy( cEntry );
-        }
+    // <qmail> not used any more
+    User::Leave(KErrFSMailPluginNotSupported);
 	}
 
 // <qmail>
@@ -1773,58 +1447,14 @@
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 void CIpsPlgSosBasePlugin::RemovePartContentL(
-    const TFSMailMsgId& /* aMailBoxId */,
-    const TFSMailMsgId& /* aParentFolderId */,
-    const TFSMailMsgId& /* aMessageId */,
-    const RArray<TFSMailMsgId>& aPartIds )
+    const TFSMailMsgId& /*aMailBoxId*/,
+    const TFSMailMsgId& /*aParentFolderId*/,
+    const TFSMailMsgId& /*aMessageId*/,
+    const RArray<TFSMailMsgId>& /*aPartIds*/ )
     {
-    TInt count( aPartIds.Count() );
-
-    for( TInt i(0); i < count; i++ )
-        {
-        CMsvEntry* cEntry = iSession->GetEntryL( aPartIds[i].Id() );
-        CleanupStack::PushL( cEntry );
-        CMsvStore* store = NULL;
-        TBool hasStore = cEntry->HasStoreL();
-        if ( hasStore )
-            {
-            store = cEntry->EditStoreL();
-            }
-
-        if ( !store || !hasStore )
-            {
-            User::Leave( KErrNotFound );
-            }
-        CleanupStack::PushL( store );
-        MMsvAttachmentManager& attachmentMgr = store->AttachmentManagerL();
-
-        // It is assumed that the attachment file is always in the index 0
-        if ( attachmentMgr.AttachmentCount() )
-            {
-            // delete attachment file
-            CIpsPlgOperationWait* waiter = CIpsPlgOperationWait::NewLC();
-            attachmentMgr.RemoveAttachmentL( 0, waiter->iStatus );
-            waiter->Start();
-            CleanupStack::PopAndDestroy( waiter );
-            store->CommitL();
-
-            // clear complete flag
-            TMsvEntry tEntry( cEntry->Entry() );
-            tEntry.SetComplete( EFalse );
-
-            waiter = CIpsPlgOperationWait::NewLC();
-            CMsvOperation* ops = cEntry->ChangeL( tEntry, waiter->iStatus );
-            CleanupStack::PushL( ops );
-            waiter->Start();
-            CleanupStack::PopAndDestroy( 2, waiter );
-            }
-        else
-            {
-            User::Leave( KErrNotFound );
-            }
-        CleanupStack::PopAndDestroy( store );
-        CleanupStack::PopAndDestroy( cEntry );
-        }
+    // <qmail>
+    User::Leave( KErrFSMailPluginNotSupported );
+    // </qmail>
     }
 
 // ----------------------------------------------------------------------------
@@ -2072,6 +1702,45 @@
     //</qmail>
     }
 
+// <qmail>
+// ----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
+void CIpsPlgSosBasePlugin::DeleteMessagesByUidL(
+    const TFSMailMsgId& /*aMailBoxId*/,
+    const TFSMailMsgId& /*aFolderId*/,
+	const RArray<TFSMailMsgId>& aMessages,
+    MFSMailRequestObserver& aOperationObserver,
+    const TInt aRequestId)
+    {
+    FUNC_LOG;
+    CMsvEntrySelection* sel=new(ELeave) CMsvEntrySelection;
+    CleanupStack::PushL(sel);
+
+    TInt count = aMessages.Count();
+    TMsvEntry tEntry;
+    TMsvId service;
+    
+    for(TInt i=0; i<count; i++)
+        {
+        iSession->GetEntry( aMessages[i].Id(), service, tEntry );
+        //make sure that only messages get deleted.
+        if( tEntry.iType == KUidMsvMessageEntry )
+            {            
+            sel->AppendL( tEntry.Id() );
+            }
+        }
+        
+    CIpsPlgSingleOpWatcher* watcher = CIpsPlgSingleOpWatcher::NewL( *this );
+    CleanupStack::PushL( watcher );
+    CMsvOperation* op = CIpsPlgDeleteOperation::NewL( *iSession,
+        watcher->iStatus, sel, aOperationObserver, aRequestId );
+    watcher->SetOperation( op );
+    iOperations.AppendL( watcher );
+    CleanupStack::Pop( watcher );
+    CleanupStack::Pop( sel );
+    }
+// </qmail>
+
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
 void CIpsPlgSosBasePlugin::SubscribeMailboxEventsL(
--- a/ipsservices/nmipssettings/inc/nmipsimap4settingsmanager.h	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/nmipssettings/inc/nmipsimap4settingsmanager.h	Fri May 28 13:56:43 2010 +0300
@@ -32,24 +32,23 @@
 
 public:
         
-    NmIpsImap4SettingsManager(const NmId &mailboxId, CEmailAccounts *account, TImapAccount imapAccount);
-
+    NmIpsImap4SettingsManager(const NmId &mailboxId,
+                              CEmailAccounts *account,
+                              TImapAccount imapAccount);
     virtual ~NmIpsImap4SettingsManager();
-    
     bool readSetting(IpsServices::SettingItem settingItem, QVariant &settingValue);
     bool writeSetting(IpsServices::SettingItem settingItem, const QVariant &settingValue);
-    
     int deleteMailbox();    
     int determineDefaultIncomingPort();
 
 private:    
 
     bool saveSettings();
+    bool saveIAPSettings(uint snapId);
     
 private: // data
 
     CImImap4Settings *mImap4Settings;   // Owned.
-
     TImapAccount mImap4Account;
 };
 
--- a/ipsservices/nmipssettings/inc/nmipspop3settingsmanager.h	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/nmipssettings/inc/nmipspop3settingsmanager.h	Fri May 28 13:56:43 2010 +0300
@@ -31,24 +31,23 @@
 {
 public:
         
-    NmIpsPop3SettingsManager(const NmId &mailboxId, CEmailAccounts *account, TPopAccount popAccount);
-
+    NmIpsPop3SettingsManager(const NmId &mailboxId,
+                             CEmailAccounts *account,
+                             TPopAccount popAccount);
     virtual ~NmIpsPop3SettingsManager();
-    
-    bool readSetting(IpsServices::SettingItem settingItem, QVariant &value);
+    bool readSetting(IpsServices::SettingItem settingItem, QVariant &settingValue);
     bool writeSetting(IpsServices::SettingItem settingItem, const QVariant &settingValue);
-    
     int deleteMailbox();
     int determineDefaultIncomingPort();
 
 private:
 
     bool saveSettings();
+    bool saveIAPSettings(uint snapId);
     
-private:
+private: // data
 
     CImPop3Settings *mPop3Settings;   // Owned.
-
     TPopAccount mPop3Account;
 };
 
--- a/ipsservices/nmipssettings/inc/nmipssettingitems.h	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/nmipssettings/inc/nmipssettingitems.h	Fri May 28 13:56:43 2010 +0300
@@ -47,7 +47,7 @@
         OutgoingMailServer,                     // String
         IncomingPort,                           // Integer
         OutgoingPort,                           // Integer
-        FolderPath,                              // String: Empty string means 'Default'
+        FolderPath,                             // String: Empty string means 'Default'
         AlwaysOnlineState,                      // Integer: 0=always,1=homeonly,2=off
         EmailNotificationState,                 // Integer: 0=automatic,1=homeonly,2=off
         FirstEmnReceived,                       // Integer: 0=false,1=true
@@ -62,7 +62,8 @@
         OutgoingPassword,                       // String
         SMTPAuthentication,                     // Boolean
         OutgoingSecureSockets,                  // Boolean
-        OutgoingSSLWrapper                      // Boolean
+        OutgoingSSLWrapper,                     // Boolean
+        Connection                              // Unsigned integer, Network Destination ID (SNAP)
     }; 
     
     /**
--- a/ipsservices/nmipssettings/inc/nmipssettingshelper.h	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/nmipssettings/inc/nmipssettingshelper.h	Fri May 28 13:56:43 2010 +0300
@@ -22,6 +22,7 @@
 #include <QMap>
 #include <QVariant>
 #include <QDateTime>
+#include <QPersistentModelIndex>
 
 #include "nmsettingscommon.h"
 #include "nmipssettingitems.h"
@@ -37,6 +38,7 @@
 class CpSettingFormItemData;
 class NmIpsSettingsManagerBase;
 class NmId;
+class CmApplSettingsUi;
 
 
 // Constant for User Defined sync profile (EmailProfileOffsetUD)
@@ -70,6 +72,7 @@
     int getCorrectOutgoingAuthenticationRadioButtonIndex();
     void handleReceivingScheduleSettingChange(IpsServices::SettingItem settingItem,
         const QVariant &settingValue);
+    QString destinationNameFromIdentifier(uint identifier);
     
 signals:
 
@@ -112,18 +115,20 @@
     void outgoingSecureConnectionPress(const QModelIndex &index);
     void outgoingAuthenticationChange(int index);
     void outgoingAuthenticationPress(const QModelIndex &index);
+    void connectionButtonPress();
 
 private slots:
 
     void receivingWeekdaysModified();
     void startTimeModified(QTime time);
     void endTimeModified(QTime time);
-    void refreshPeriodModified(int index);
+    void refreshPeriodModified(QPersistentModelIndex, QVariant);
     void handleMailboxDelete(HbAction *action);
     void handleMailboxDeleteUpdate(HbAction *action);
     void handleUserDefinedIncomingPortInput(HbAction *action);
     void handleUserDefinedFolderPathInput(HbAction *action);
     void handleUserDefinedOutgoingPortInput(HbAction *action);
+    void handleConnectionSelected(uint status);
     
 private:
 
@@ -147,13 +152,14 @@
     HbDataFormModelItem *mServerInfoGroupItem;	// Not owned.
 	HbDataForm &mDataForm;
 	HbDataFormModel &mDataFormModel;
-	HbMessageBox *mDeleteConfirmationDialog; // Owned;
-	HbMessageBox *mDeleteInformationDialog; // Owned;
-	HbInputDialog *mIncomingPortInputDialog; // Owned;
-	HbValidator *mIncomingPortInputValidator; // Owned;
-    HbInputDialog *mFolderPathInputDialog; // Owned;
-    HbInputDialog *mOutgoingPortInputDialog; // Owned;
-    HbValidator *mOutgoingPortInputValidator; // Owned;    
+	HbMessageBox *mDeleteConfirmationDialog; // Owned.
+	HbMessageBox *mDeleteInformationDialog; // Owned.
+	HbInputDialog *mIncomingPortInputDialog; // Owned.
+	HbValidator *mIncomingPortInputValidator; // Owned.
+    HbInputDialog *mFolderPathInputDialog; // Owned.
+    HbInputDialog *mOutgoingPortInputDialog; // Owned.
+    HbValidator *mOutgoingPortInputValidator; // Owned.
+    CmApplSettingsUi *mDestinationDialog; // Owned.
     bool mServerInfoDynamicItemsVisible;
     int mRadioButtonPreviousIndex;
 };
--- a/ipsservices/nmipssettings/inc/nmipssettingsmanagerbase.h	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/nmipssettings/inc/nmipssettingsmanagerbase.h	Fri May 28 13:56:43 2010 +0300
@@ -24,9 +24,7 @@
 #include "nmipssettingitems.h"
 
 class QVariant;
-class CEmailAccounts;
 class CImSmtpSettings;
-class TSmtpAccount;
 class NmIpsExtendedSettingsManager;
 class NmId;
 
@@ -34,7 +32,9 @@
 {
 public:
 
-    NmIpsSettingsManagerBase(const NmId &mailboxId, CEmailAccounts *account, IpsServices::TIpsSetAccountTypes);
+    NmIpsSettingsManagerBase(const NmId &mailboxId,
+                             CEmailAccounts *account,
+                             IpsServices::TIpsSetAccountTypes);
     virtual ~NmIpsSettingsManagerBase();
     virtual bool readSetting(IpsServices::SettingItem settingItem, QVariant &settingValue);
     virtual bool writeSetting(IpsServices::SettingItem settingItem, const QVariant &settingValue);
@@ -48,8 +48,9 @@
 private:
 
     bool saveSettings();
+    bool saveIAPSettings(uint snapId);
     
-protected: // data.
+protected: // data
 
     CEmailAccounts *mAccount;   // Owned.
     CImSmtpSettings *mSmtpSettings; // Owned.
--- a/ipsservices/nmipssettings/inc/nmipssettingsplugin.h	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/nmipssettings/inc/nmipssettingsplugin.h	Fri May 28 13:56:43 2010 +0300
@@ -20,18 +20,20 @@
 
 #include <QObject>
 #include <QVariant>
+#include <QPersistentModelIndex>
+#include <AlwaysOnlineManagerClient.h>
 
 #include "nmsettingsplugininterface.h"
 #include "nmsettingscommon.h"
 
+class QTranslator;
+class QModelIndex;
 class HbDataForm;
 class HbDataFormModel;
 class HbDataFormModelItem;
 class NmId;
 class NmIpsSettingsHelper;
 class NmIpsSettingsManagerBase;
-class QTranslator;
-class QModelIndex;
 
 class NmIpsSettingsPlugin : public QObject, public NmSettingsPluginInterface
 {
@@ -59,7 +61,7 @@
 private slots:
 
     void createUserDefinedMode();
-    void showMailInInboxModified(int index);
+    void showMailInInboxModified(QPersistentModelIndex, QVariant value);
 
 private:
 
@@ -68,19 +70,16 @@
     void initReceivingScheduleItems(HbDataFormModelItem &item);
     void initUserInfoItems(HbDataFormModelItem &item) const;
     void initServerInfoItems(HbDataFormModelItem &item) const;
+    void setAlwaysOnlineState(TAlwaysOnlineServerAPICommands command, NmId mailboxId) const;
 
     Q_DISABLE_COPY(NmIpsSettingsPlugin)
 
-private:
+private: // data.
 
-    // Owned.
-    NmIpsSettingsHelper *mSettingsHelper;
-    // Owned.
-    NmIpsSettingsManagerBase *mSettingsManager;
-    // Not owned.
-    HbDataFormModel *mModel;
-    // Not owned.
-    HbDataForm *mForm;
+    NmIpsSettingsHelper *mSettingsHelper;  // Owned.
+    NmIpsSettingsManagerBase *mSettingsManager; // Owned.
+    HbDataFormModel *mModel; // Not owned.
+    HbDataForm *mForm; // Not owned.
 };
 
 #endif // NMIPSSETTINGS_H
--- a/ipsservices/nmipssettings/nmipssettings.pro	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/nmipssettings/nmipssettings.pro	Fri May 28 13:56:43 2010 +0300
@@ -74,6 +74,9 @@
     LIBS += -lxqsettingsmanager
     LIBS += -leuser
     LIBS += -llibc
+    LIBS += -lcmapplsettingsui
+    LIBS += -lqtbearer
+    LIBS += -lAlwaysOnlineManagerClient
 }
 
 symbian: plugin { # copy qtstub and manifest
--- a/ipsservices/nmipssettings/src/nmipsimap4settingsmanager.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/nmipssettings/src/nmipsimap4settingsmanager.cpp	Fri May 28 13:56:43 2010 +0300
@@ -17,6 +17,7 @@
 
 #include <QVariant>
 #include <imapset.h>
+#include <iapprefs.h>
 #include <cemailaccounts.h>
 #include <xqconversions.h>
 
@@ -32,7 +33,7 @@
 // ======== MEMBER FUNCTIONS ========
 
 /*!
-    Constructor
+    Constructor.
     Creates the CImImap4Settings instance for loading and saving the IMAP4 settings.
     Finds and loads the SMTP account and settings linked to the IMAP4 account.
     \param mailboxId Mailbox identifier.
@@ -53,7 +54,7 @@
 }
 
 /*!
-    Destructor
+    Destructor.
 */
 NmIpsImap4SettingsManager::~NmIpsImap4SettingsManager()
 {
@@ -66,7 +67,8 @@
     \param QVariant SettingValue of the found setting value.
     \return <true> when the setting item was found otherwise <false>.
 */
-bool NmIpsImap4SettingsManager::readSetting(IpsServices::SettingItem settingItem, QVariant &settingValue)
+bool NmIpsImap4SettingsManager::readSetting(IpsServices::SettingItem settingItem,
+                                            QVariant &settingValue)
 {
     bool found(false);
     switch (settingItem) {
@@ -101,7 +103,7 @@
         case IpsServices::IncomingSSLWrapper:
         	settingValue = mImap4Settings->SSLWrapper();
             found = true;
-            break;  
+            break;
         default:
             found = NmIpsSettingsManagerBase::readSetting(settingItem, settingValue);
             break;
@@ -115,7 +117,8 @@
     \param settingValue QVariant of the new setting value.
     \return bool <true> when the setting item was succesfully written, otherwise <false>.
 */
-bool NmIpsImap4SettingsManager::writeSetting(IpsServices::SettingItem settingItem, const QVariant &settingValue)
+bool NmIpsImap4SettingsManager::writeSetting(IpsServices::SettingItem settingItem,
+                                             const QVariant &settingValue)
 {
     HBufC *tmp = 0;
     HBufC8 *tmp8 = 0;
@@ -174,6 +177,9 @@
             mImap4Settings->SetSSLWrapper(settingValue.toBool());
             ret = saveSettings();
             break;  
+        case IpsServices::Connection:
+            ret = saveIAPSettings(settingValue.toUInt());
+            // Fallthrough so SMTP IAP settings are also updated accordingly.
         default:
             ret = NmIpsSettingsManagerBase::writeSetting(settingItem, settingValue);
             break;
@@ -183,7 +189,6 @@
 
 /*!
     Deletes the IMAP4 mailbox.
-
     \return Error code <code>0</code> if mailbox deletion was successful, otherwise error
             code is returned.
 */
@@ -198,6 +203,20 @@
     return error;
 }
 
+
+/*!
+     Determines the default port for the incoming mail server based on the security settings.
+     \return The port number to use.
+ */
+int NmIpsImap4SettingsManager::determineDefaultIncomingPort()
+{
+    int port(IpsServices::standardImap4Port);
+    if (mImap4Settings->SSLWrapper()) {
+        port = IpsServices::imap4OverSslPort;
+    }        
+    return port;
+}
+
 /*!
     Stores the IMAP4 specific settings.
     \return bool <true> when the IMAP4 settings were succesfully written, otherwise <false>.
@@ -210,18 +229,17 @@
 }
 
 /*!
-     Determine the default port for the incoming mail server based on the security settings
-     
-     \return int the port number to use
- */
-int NmIpsImap4SettingsManager::determineDefaultIncomingPort()
+    Stores the IMAP4 specific IAP settings.
+    \return bool <true> when the IMAP4 IAP settings were succesfully written, otherwise <false>.
+*/
+bool NmIpsImap4SettingsManager::saveIAPSettings(uint snapId)
 {
-    int port = 0;    
-    bool sslTls = mImap4Settings->SSLWrapper();    
-    if (sslTls) {
-        port = IpsServices::imap4OverSslPort;
-    } else {
-        port = IpsServices::standardImap4Port;
-    }        
-    return port;
+    TRAPD(err,
+        CImIAPPreferences *prefs = CImIAPPreferences::NewLC();
+        mAccount->LoadImapIapSettingsL(mImap4Account, *prefs);
+        prefs->SetSNAPL(snapId);
+        mAccount->SaveImapIapSettingsL(mImap4Account, *prefs);
+        CleanupStack::PopAndDestroy(prefs);
+    );
+    return (err==KErrNone);
 }
--- a/ipsservices/nmipssettings/src/nmipspop3settingsmanager.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/nmipssettings/src/nmipspop3settingsmanager.cpp	Fri May 28 13:56:43 2010 +0300
@@ -17,6 +17,7 @@
 
 #include <QVariant>
 #include <pop3set.h>
+#include <iapprefs.h>
 #include <cemailaccounts.h>
 #include <xqconversions.h>
 
@@ -32,7 +33,7 @@
 // ======== MEMBER FUNCTIONS ========
 
 /*!
-    Constructor
+    Constructor.
     Creates the CImPop4Settings instance for loading and saving the POP3 settings.
     Finds and loads the SMTP account and settings linked to the POP3 account.
     \param mailboxId Mailbox identifier.
@@ -52,7 +53,7 @@
 }
 
 /*!
-    Destructor
+    Destructor.
 */
 NmIpsPop3SettingsManager::~NmIpsPop3SettingsManager()
 {
@@ -65,40 +66,41 @@
     \param QVariant SettingValue of the found setting value.
     \return <true> when the setting item was found otherwise <false>.
 */
-bool NmIpsPop3SettingsManager::readSetting(IpsServices::SettingItem settingItem, QVariant &value)
+bool NmIpsPop3SettingsManager::readSetting(IpsServices::SettingItem settingItem,
+                                           QVariant &settingValue)
 {
 	bool found(false);
 	switch (settingItem) {
         case IpsServices::IncomingLoginName:
-            value = XQConversions::s60Desc8ToQString(mPop3Settings->LoginName());
+            settingValue = XQConversions::s60Desc8ToQString(mPop3Settings->LoginName());
             found = true;
             break;
         case IpsServices::IncomingPassword:
-            value = XQConversions::s60Desc8ToQString(mPop3Settings->Password());
+            settingValue = XQConversions::s60Desc8ToQString(mPop3Settings->Password());
             found = true;
             break;
         case IpsServices::MailboxName:
-            value = XQConversions::s60DescToQString(mPop3Account.iPopAccountName);
+            settingValue = XQConversions::s60DescToQString(mPop3Account.iPopAccountName);
             found = true;
             break;
         case IpsServices::IncomingMailServer:
-            value = XQConversions::s60DescToQString(mPop3Settings->ServerAddress());
+            settingValue = XQConversions::s60DescToQString(mPop3Settings->ServerAddress());
             found = true;
             break;   
         case IpsServices::IncomingPort:
-            value = mPop3Settings->Port();
+            settingValue = mPop3Settings->Port();
             found = true;
             break;  
         case IpsServices::IncomingSecureSockets:
-            value = mPop3Settings->SecureSockets();
+            settingValue = mPop3Settings->SecureSockets();
             found = true;
             break;  
         case IpsServices::IncomingSSLWrapper:
-            value = mPop3Settings->SSLWrapper();
+            settingValue = mPop3Settings->SSLWrapper();
             found = true;
-            break;  
+            break;
         default:
-            found = NmIpsSettingsManagerBase::readSetting(settingItem, value);
+            found = NmIpsSettingsManagerBase::readSetting(settingItem, settingValue);
             break;
     }
 	return found;
@@ -109,7 +111,8 @@
     \param settingItem SettingItem enum of the setting to replace.
     \param settingValue QVariant of the new setting value.
 */
-bool NmIpsPop3SettingsManager::writeSetting(IpsServices::SettingItem settingItem, const QVariant &settingValue)
+bool NmIpsPop3SettingsManager::writeSetting(IpsServices::SettingItem settingItem,
+                                            const QVariant &settingValue)
 {
     HBufC *tmp = 0;
     HBufC8 *tmp8 = 0;
@@ -159,7 +162,10 @@
         case IpsServices::IncomingSSLWrapper:
             mPop3Settings->SetSSLWrapper(settingValue.toBool());
             ret = saveSettings();
-            break;  
+            break;
+        case IpsServices::Connection:
+            ret = saveIAPSettings(settingValue.toUInt());
+            // Fallthrough so SMTP IAP settings are also updated accordingly.
         default:
             ret = NmIpsSettingsManagerBase::writeSetting(settingItem, settingValue);
             break;
@@ -169,7 +175,6 @@
 
 /*!
     Deletes the POP3 mailbox.
-
     \return Error code <code>0</code> if mailbox deletion was successful, otherwise error
             code is returned.
 */
@@ -185,6 +190,19 @@
 }
 
 /*!
+     Determines the default port for the incoming mail server based on the security settings.
+     \return The port number to use.
+ */
+int NmIpsPop3SettingsManager::determineDefaultIncomingPort()
+{
+    int port(IpsServices::standardPop3Port);
+    if (mPop3Settings->SSLWrapper()) {
+        port = IpsServices::securePop3Port;
+    }        
+    return port;
+}
+
+/*!
     Stores the POP3 specific settings.
     \return bool <true> when the POP3 settings were succesfully written, otherwise <false>.
 */
@@ -196,18 +214,17 @@
 }
 
 /*!
-     Determine the default port for the incoming mail server based on the security settings
-     
-     \return int the port number to use
- */
-int NmIpsPop3SettingsManager::determineDefaultIncomingPort()
+    Stores the POP3 specific IAP settings.
+    \return bool <true> when the POP3 IAP settings were succesfully written, otherwise <false>.
+*/
+bool NmIpsPop3SettingsManager::saveIAPSettings(uint snapId)
 {
-    int port = 0;    
-    bool sslTls = mPop3Settings->SSLWrapper();    
-    if (sslTls) {
-        port = IpsServices::securePop3Port;
-    } else {
-        port = IpsServices::standardPop3Port;
-    }        
-    return port;
+    TRAPD(err,
+        CImIAPPreferences *prefs = CImIAPPreferences::NewLC();
+        mAccount->LoadPopIapSettingsL(mPop3Account, *prefs);
+        prefs->SetSNAPL(snapId);
+        mAccount->SavePopIapSettingsL(mPop3Account, *prefs);
+        CleanupStack::PopAndDestroy(prefs);
+    );
+    return (err==KErrNone);
 }
--- a/ipsservices/nmipssettings/src/nmipssettingshelper.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/nmipssettings/src/nmipssettingshelper.cpp	Fri May 28 13:56:43 2010 +0300
@@ -16,21 +16,29 @@
 */
 
 #include <QVariant>
+#include <QIntValidator>
+#include <QStringList>
+
 #include <HbAction>
 #include <HbGlobal>
 #include <HbMessageBox>
 #include <HbProgressDialog>
 #include <HbInputDialog>
-#include <cpsettingformitemdata.h>
-#include <hbdataformmodel.h>
-#include <qstringlist.h>
-#include <hbextendedlocale.h>
-#include <hblineedit.h>
+#include <HbDataFormModel>
+#include <HbExtendedLocale>
+#include <HbLineEdit>
 #include <HbValidator>
-#include <QIntValidator>
 #include <HbStringUtil>
 #include <HbDataForm>
 
+#include <cpsettingformitemdata.h>
+
+#include <cmapplsettingsui.h>
+#include <cmmanagerdefines_shim.h>
+#include <qnetworkconfigmanager.h>
+#include <qnetworkconfiguration.h>
+
+
 #include "nmipssettingshelper.h"
 #include "nmipssettingsmanagerbase.h"
 #include "nmipssettingscustomitem.h"
@@ -38,7 +46,7 @@
 
 // CONSTANTS
 
-// Dynamic receiving schedule group items
+// Dynamic receiving schedule group items.
 const IpsServices::SettingItem NmIpsSettingsReceivingSchedule[] = {
         IpsServices::ReceptionInboxSyncWindow,
         IpsServices::ReceptionWeekDays,
@@ -46,6 +54,9 @@
         IpsServices::ReceptionDayEndTime,
         IpsServices::ReceptionRefreshPeriodDayTime};
 
+QTM_USE_NAMESPACE
+
+
 /*!
     \class NmIpsSettingsHelper
     \brief Helper class to save data into database when user has made changes.
@@ -72,8 +83,10 @@
   mFolderPathInputDialog(0),
   mOutgoingPortInputDialog(0),
   mOutgoingPortInputValidator(0),
+  mDestinationDialog(0),
   mServerInfoDynamicItemsVisible(false),
   mRadioButtonPreviousIndex(0)
+
 {
 }
 
@@ -273,23 +286,18 @@
 
                     mReceivingScheduleGroupItem->appendChild(formItemData);
                     insertContentItem(IpsServices::ReceptionRefreshPeriodDayTime, formItemData);
+
+                    // If changes are made to refreshMailItems, conversion table in
+                    // refreshPeriodModified method needs to be updated also.
                     QStringList refreshMailItems;
                     refreshMailItems << hbTrId("txt_mailips_setlabel_val_keep_uptodate")
                                      << hbTrId("txt_mailips_setlabel_val_every_15_minutes")
                                      << hbTrId("txt_mailips_setlabel_val_every_1_hour")
                                      << hbTrId("txt_mailips_setlabel_val_every_4_hours");
                     formItemData->setContentWidgetData(QString("items"), refreshMailItems);
-
-                    QList<QVariant> refreshMailItemValues;
-                    refreshMailItemValues << 5
-                                          << 15
-                                          << 60
-                                          << 240;
-                    QVariant value(refreshMailItemValues);
-                    formItemData->setData(HbDataFormModelItem::DescriptionRole + 1, value);
-
-                    mDataForm.addConnection(formItemData, SIGNAL(itemSelected(int)),
-                        this, SLOT(refreshPeriodModified(int)));
+                    mDataForm.addConnection(
+                        formItemData, SIGNAL(valueChanged(QPersistentModelIndex, QVariant)),
+                        this, SLOT(refreshPeriodModified(QPersistentModelIndex, QVariant)));
                 }
 
                 // Update data
@@ -364,7 +372,6 @@
 
 /*!
     Sets the edit changed flag to indicate that user has edited the field
-
     \param text Reference to the text value in the line edit box.
 */
 void NmIpsSettingsHelper::myNameTextChange(const QString &text)
@@ -403,14 +410,12 @@
                 item->setContentWidgetData(QString("text"), data);
             }
         }
-
     }
     mCurrentLineEditChanged = false;
 }
 
 /*!
     Sets the edit changed flag to indicate that user has edited the field
-
     \param text Reference to the text value in the line edit box.
 */
 void NmIpsSettingsHelper::mailboxNameTextChange(const QString &text)
@@ -430,6 +435,8 @@
 		HbDataFormModelItem *item = mContentItems.value(IpsServices::EmailAddress);
         QVariant data = item->contentWidgetData(QString("text"));
         mSettingsManager.writeSetting(IpsServices::EmailAddress, data);
+        QVariant property(NmSettings::MailboxName);
+        emit mailboxPropertyChanged(mSettingsManager.mailboxId(), property, data);
     }
     mCurrentLineEditChanged = false;
 }
@@ -548,7 +555,6 @@
 
 /*!
     Sets the edit changed flag to indicate that user has edited the field
-
     \param text Reference to the text value in the line edit box.
 */
 void NmIpsSettingsHelper::replyToTextChange(const QString &text)
@@ -577,8 +583,7 @@
 */
 void NmIpsSettingsHelper::handleMailboxDelete(HbAction *action)
 {
-    if (action == mDeleteConfirmationDialog->primaryAction()) {
-        
+    if (action == mDeleteConfirmationDialog->actions().at(0)) {        
         emit goOffline(mSettingsManager.mailboxId());
         mEmitOnline = false;
     
@@ -589,8 +594,7 @@
         // button.
         HbProgressDialog progressNote(HbProgressDialog::WaitDialog);
         progressNote.setText(hbTrId("txt_common_info_deleting"));
-        action = progressNote.primaryAction();
-        progressNote.removeAction(action);
+        progressNote.removeAction(progressNote.actions().at(0));
         progressNote.delayedShow();
     
         if (!mSettingsManager.deleteMailbox()) {
@@ -615,7 +619,7 @@
 }
 
 /*!
-    Handels the event after the mailbox delete information dialog has been dismissed.
+    Handles the event after the mailbox delete information dialog has been dismissed.
 */
 void NmIpsSettingsHelper::handleMailboxDeleteUpdate(HbAction *action)
 {
@@ -750,7 +754,6 @@
 
 /*!
     Sets the edit changed flag to indicate that user has edited the field
-
     \param text Reference to the text value in the line edit box.
 */
 void NmIpsSettingsHelper::incomingMailServerTextChange(const QString &text)
@@ -775,7 +778,6 @@
 
 /*!
     Sets the edit changed flag to indicate that user has edited the field
-
     \param text Reference to the text value in the line edit box.
 */
 void NmIpsSettingsHelper::outgoingMailServerTextChange(const QString &text)
@@ -787,7 +789,6 @@
 /*!
     Saves the incoming port value into database if user has changed the value. If the user wish to
     define the port, a input dialog is shown.
-    
     \param index Used to determine if the default value or a user defined value should be written
 */
 void NmIpsSettingsHelper::incomingPortChange(int index)
@@ -803,7 +804,7 @@
 }
 
 /*!
-    Show a input dialog for allowing the user to specify a incoming port.
+    Shows an input dialog for allowing the user to specify a incoming port.
 */
 void NmIpsSettingsHelper::showIncomingPortInputDialog()
 {    
@@ -828,11 +829,11 @@
 }
 
 /*!
-   Handels the saving of the port new value.
+   Handles the saving of the port new value.
 */
 void NmIpsSettingsHelper::handleUserDefinedIncomingPortInput(HbAction *action)
 {
-    if (action == mIncomingPortInputDialog->primaryAction()) {
+    if (action == mIncomingPortInputDialog->actions().at(0)) {
         QVariant newPort = mIncomingPortInputDialog->value();
         emit goOffline(mSettingsManager.mailboxId());
         mEmitOnline = true;
@@ -846,7 +847,6 @@
 
 /*!
     Used for getting the index to display in the port radio button list 
-    
     \return index Used to set the selected value
 */
 int NmIpsSettingsHelper::getCorrectPortRadioButtonIndex(int currentPort)
@@ -863,7 +863,6 @@
 
 /*!
     Sets the previous index value to indicate that user has edited the field
-
     \param text Reference to the item in the radio button list.
 */
 void NmIpsSettingsHelper::incomingPortPress(const QModelIndex &index)
@@ -913,8 +912,7 @@
 }
 
 /*!
-    Sets the previous index value to indicate that user has edited the field
-
+    Sets the previous index value to indicate that user has edited the field.
     \param text Reference to the item in the radio button list.
 */
 void NmIpsSettingsHelper::incomingSecureConnectionPress(const QModelIndex &index)
@@ -926,8 +924,7 @@
 }
 
 /*!
-    Used for getting the index to display in the secure connection radio button list 
-    
+    Used for getting the index to display in the secure connection radio button list.
     \return index Used to set the selected value
 */
 int NmIpsSettingsHelper::getCorrectSecureRadioButtonIndex(QVariant secureSockets, 
@@ -989,7 +986,7 @@
 {
     HbDataFormModelItem *item = mContentItems.value(IpsServices::FolderPath);
     
-    if (action == mFolderPathInputDialog->primaryAction()) { 
+    if (action == mFolderPathInputDialog->actions().at(0)) { 
         QVariant newFolderPath = mFolderPathInputDialog->value();
         mSettingsManager.writeSetting(IpsServices::FolderPath, newFolderPath);
         //set selected index to default if user inputed empty string.
@@ -1031,8 +1028,13 @@
         days |= itemValues.at(selectedIndex.toInt()).toInt();
     }
 
-    handleReceivingScheduleSettingChange(IpsServices::ReceptionWeekDays, days);
+    QVariant previouslySelectedValue;
+    mSettingsManager.readSetting(IpsServices::ReceptionWeekDays, previouslySelectedValue);
+    if (days != previouslySelectedValue.toInt()) {
+        handleReceivingScheduleSettingChange(IpsServices::ReceptionWeekDays, days);
+    }
 
+    // Although the mode might not be changed we need to still update the button text.
     // Every weekday selected.
     if (days == 0x7f) {
         item->setContentWidgetData(QString("text"),
@@ -1042,42 +1044,56 @@
 
 /*!
     Handles start time modifications.
-	
     \param time Modified start time.
 */
 void NmIpsSettingsHelper::startTimeModified(QTime time)
 {
     int startTime(time.hour()*60 + time.minute());
-    handleReceivingScheduleSettingChange(IpsServices::ReceptionDayStartTime, startTime);
+    QVariant previouslySelectedStartTime;
+    mSettingsManager.readSetting(IpsServices::ReceptionDayStartTime, previouslySelectedStartTime);
+    if (startTime != previouslySelectedStartTime.toInt()) {
+        handleReceivingScheduleSettingChange(IpsServices::ReceptionDayStartTime, startTime);
+    }
 }
 
 /*!
     Handles refresh period modifications.
-
-    \param index selected item index.
+    \param value Selected value as a text.
 */
-void NmIpsSettingsHelper::refreshPeriodModified(int index)
+void NmIpsSettingsHelper::refreshPeriodModified(QPersistentModelIndex, QVariant value)
 {
-    HbDataFormModelItem* item = mContentItems.value(IpsServices::ReceptionRefreshPeriodDayTime);
-    QVariant itemData = item->data(HbDataFormModelItem::DescriptionRole + 1);
-    int selectedValue = itemData.value< QList< QVariant > >().at(index).toInt();
-    handleReceivingScheduleSettingChange(IpsServices::ReceptionRefreshPeriodDayTime, selectedValue);
+    QMap<QString, int> conversionTable;
+    conversionTable[hbTrId("txt_mailips_setlabel_val_keep_uptodate")] = 5;
+    conversionTable[hbTrId("txt_mailips_setlabel_val_every_15_minutes")] = 15;
+    conversionTable[hbTrId("txt_mailips_setlabel_val_every_1_hour")] = 60;
+    conversionTable[hbTrId("txt_mailips_setlabel_val_every_4_hours")] = 240;
+
+    int selectedValue(conversionTable.value(value.toString()));
+    QVariant previouslySelectedValue;
+    mSettingsManager.readSetting(IpsServices::ReceptionRefreshPeriodDayTime,
+        previouslySelectedValue);
+    if (selectedValue != previouslySelectedValue.toInt()) {
+        handleReceivingScheduleSettingChange(IpsServices::ReceptionRefreshPeriodDayTime,
+            selectedValue);
+    }
 }
 
 /*!
     Handles end time modifications.
-
     \param time Modified start time.
 */
 void NmIpsSettingsHelper::endTimeModified(QTime time)
 {
     int endTime(time.hour()*60 + time.minute());
-    handleReceivingScheduleSettingChange(IpsServices::ReceptionDayEndTime, endTime);
+    QVariant previouslySelectedEndTime;
+    mSettingsManager.readSetting(IpsServices::ReceptionDayEndTime, previouslySelectedEndTime);
+    if (endTime != previouslySelectedEndTime) {
+        handleReceivingScheduleSettingChange(IpsServices::ReceptionDayEndTime, endTime);
+    }
 }
 
 /*!
     Used for getting the index to display in the inbox path radio button list 
-    
     \return index Used to set the selected value
 */
 int NmIpsSettingsHelper::getCorrectInboxPathRadioButtonIndex(QVariant folderPath)
@@ -1095,7 +1111,6 @@
     Handles receiving schedule item value modifications.
     Takes care of creating 'user defined' mode, coping values from active profile to
     user defined mode, storing changed value and selecting 'user defined' mode.
-
     \param settingItem Changed setting item.
     \param settingValue Setting item's value.
 */
@@ -1128,8 +1143,22 @@
 }
 
 /*!
+     Return the localized name for network destination with id of \a identifier.
+     \param identifier Network destination identifier.
+     \return Name of the network destination.
+ */
+QString NmIpsSettingsHelper::destinationNameFromIdentifier(uint identifier)
+{
+    const QString snapPrefix("S_");
+
+    QNetworkConfigurationManager netMan;
+    QNetworkConfiguration conf = netMan.configurationFromIdentifier( snapPrefix +
+                                                                     QString::number(identifier));
+    return conf.name();
+}
+
+/*!
     Copies receiving schedule settings from currently active profile to given profile.
-
     \param profileMode Mode where receiving schedule settings from active profile are copied to.
 */
 void NmIpsSettingsHelper::copyReceivingScheduleSettingsFromActiveProfile(int profileMode)
@@ -1155,7 +1184,6 @@
 /*!
     Saves the outgoing port value into database if user has changed the value. If the user wish to
     define the port, a input dialog is shown.
-
     \param index Used to determine if the default value or a user defined value should be written
 */
 void NmIpsSettingsHelper::outgoingPortChange(int index)
@@ -1171,8 +1199,7 @@
 }
 
 /*!
-    Show a input dialog for allowing the user to specify a outgoing port.
-
+    Shows an input dialog for allowing the user to specify a outgoing port.
 */
 void NmIpsSettingsHelper::showOutgoingPortInputDialog()
 {
@@ -1197,11 +1224,12 @@
 }
 
 /*!
-    Handels the saving of the port new value.
+    Handles the saving of the port new value.
+    \action Selected action.
 */
 void NmIpsSettingsHelper::handleUserDefinedOutgoingPortInput(HbAction *action)
 {
-    if (action == mOutgoingPortInputDialog->primaryAction()) {
+    if (action == mOutgoingPortInputDialog->actions().at(0)) {
         QVariant newPort = mOutgoingPortInputDialog->value();
         emit goOffline(mSettingsManager.mailboxId());
         mEmitOnline = true;
@@ -1214,8 +1242,24 @@
 }
 
 /*!
-    Sets the previous index value to indicate that user has edited the field
+    Handles the saving of the selected network connection.
+    \param status Dialog exit status \sa CmApplSettingsUi::ApplSettingsError.
+*/
+void NmIpsSettingsHelper::handleConnectionSelected(uint status)
+{
+    if (status == CmApplSettingsUi::ApplSettingsErrorNone) {
+        CmApplSettingsUi::SettingSelection selection = mDestinationDialog->selection();
+        uint destId(selection.id);
+        if (mSettingsManager.writeSetting(IpsServices::Connection, QVariant(destId))) {
+            QString destName(destinationNameFromIdentifier(destId));
+            HbDataFormModelItem *item = mContentItems.value(IpsServices::Connection);
+            item->setContentWidgetData(QString("text"), destName);
+        }
+    }
+}
 
+/*!
+    Sets the previous index value to indicate that user has edited the field.
     \param index Reference to the item in the radio button list.
 */
 void NmIpsSettingsHelper::outgoingPortPress(const QModelIndex &index)
@@ -1227,9 +1271,8 @@
 }
 
 /*!
-    Used for getting the index to display in the outgoing port radio button list
-
-    \return index Used to set the selected value
+    Used for getting the index to display in the outgoing port radio button list.
+    \return index Used to set the selected value.
 */
 int NmIpsSettingsHelper::getCorrectOutgoingPortRadioButtonIndex(int currentPort)
 {
@@ -1244,9 +1287,8 @@
 }
 
 /*!
-    Used for getting the index to display in the outgoing authentication radio button list 
-    
-    \return index Used to set the selected value
+    Used for getting the index to display in the outgoing authentication radio button list.
+    \return index Used to set the selected value.
 */
 int NmIpsSettingsHelper::getCorrectOutgoingAuthenticationRadioButtonIndex()
 {
@@ -1280,6 +1322,7 @@
 
 /*!
     Saves the outgoing secure connection value into database if user has changed the value.
+    \param index Selected radio button index.
 */
 void NmIpsSettingsHelper::outgoingSecureConnectionItemChange(int index)
 {
@@ -1317,9 +1360,8 @@
 }
 
 /*!
-    Sets the previous index value to indicate that user has edited the field
-
-    \param text Reference to the item in the radio button list.
+    Sets the previous index value to indicate that user has edited the field.
+    \param index Reference to the item in the radio button list.
 */
 void NmIpsSettingsHelper::outgoingSecureConnectionPress(const QModelIndex &index)
 {
@@ -1332,6 +1374,7 @@
 /*!
     Saves the outgoing authetication value into database if user has changed the value and
     updates dynamic group items.
+    \param index Selected radio button index.
 */
 void NmIpsSettingsHelper::outgoingAuthenticationChange(int index)
 {
@@ -1369,9 +1412,8 @@
 }
 
 /*!
-    Sets the previous index value to indicate that user has edited the field
-
-    \param text Reference to the item in the radio button list.
+    Sets the previous index value to indicate that user has edited the field.
+    \param index Reference to the item in the radio button list.
 */
 void NmIpsSettingsHelper::outgoingAuthenticationPress(const QModelIndex &index)
 {
@@ -1381,3 +1423,31 @@
     mRadioButtonPreviousIndex = data.toInt();
 }
 
+/*!
+    Launches the connection selection dialog.
+*/
+void NmIpsSettingsHelper::connectionButtonPress()
+{
+    if (!mDestinationDialog) {
+        // Create the dialog and configure it.
+        mDestinationDialog = new CmApplSettingsUi(this);
+
+        mDestinationDialog->setOptions(
+            QFlags<CmApplSettingsUi::SelectionDialogItems>(CmApplSettingsUi::ShowDestinations),
+            QSet<CmApplSettingsUi::BearerTypeFilter>());
+        connect(mDestinationDialog, SIGNAL(finished(uint)),
+                this, SLOT(handleConnectionSelected(uint)));
+    }
+
+    // Set currently active destination as selected.
+    QVariant destId;
+    if (mSettingsManager.readSetting(IpsServices::Connection, destId)) {
+        CmApplSettingsUi::SettingSelection selection;
+        selection.result = CmApplSettingsUi::SelectionTypeDestination;
+        selection.id = destId.toUInt();
+        mDestinationDialog->setSelection(selection);
+    }
+
+    // Open the dialog.
+    mDestinationDialog->open();
+}
--- a/ipsservices/nmipssettings/src/nmipssettingsmanagerbase.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/nmipssettings/src/nmipssettingsmanagerbase.cpp	Fri May 28 13:56:43 2010 +0300
@@ -44,10 +44,11 @@
 */
 NmIpsSettingsManagerBase::NmIpsSettingsManagerBase(const NmId &mailboxId, CEmailAccounts *account, 
     IpsServices::TIpsSetAccountTypes accountType)
-: mAccountType(accountType),
-  mMailboxId(mailboxId.id())
+    : mAccountType(accountType),
+      mMailboxId(mailboxId.id())
 {
-    QScopedPointer<NmIpsExtendedSettingsManager> extendedSettings(new NmIpsExtendedSettingsManager(mailboxId));
+    QScopedPointer<NmIpsExtendedSettingsManager> extendedSettings(
+        new NmIpsExtendedSettingsManager(mailboxId));
 
     QT_TRAP_THROWING(mSmtpSettings = new(ELeave) CImSmtpSettings());
 
@@ -57,7 +58,7 @@
 }
 
 /*!
-    Destructor
+    Destructor.
 */
 NmIpsSettingsManagerBase::~NmIpsSettingsManagerBase()
 {
@@ -73,7 +74,8 @@
     \param QVariant SettingValue of the found setting value.
     \return bool <true> when the setting item was found otherwise <false>.
 */
-bool NmIpsSettingsManagerBase::readSetting(IpsServices::SettingItem settingItem, QVariant &settingValue)
+bool NmIpsSettingsManagerBase::readSetting(IpsServices::SettingItem settingItem,
+                                           QVariant &settingValue)
 {
     bool found(false);
     
@@ -117,7 +119,17 @@
         case IpsServices::OutgoingSSLWrapper:
         	settingValue = mSmtpSettings->SSLWrapper();
             found = true;
-            break;  
+            break;
+        case IpsServices::Connection:
+            settingValue = 0;
+            TRAP_IGNORE(
+                CImIAPPreferences *prefs = CImIAPPreferences::NewLC();
+                mAccount->LoadSmtpIapSettingsL(mSmtpAccount, *prefs);
+                settingValue = (uint)prefs->SNAPPreference();
+                CleanupStack::PopAndDestroy(prefs);
+                found = true;
+            );
+            break;
         default:
             found = mExtendedSettingsManager->readSetting(settingItem, settingValue);
             break;
@@ -131,7 +143,8 @@
     \param settingValue QVariant of the new setting value.
     \return bool <true> when the setting item was succesfully written, otherwise <false>.
 */
-bool NmIpsSettingsManagerBase::writeSetting(IpsServices::SettingItem settingItem, const QVariant &settingValue)
+bool NmIpsSettingsManagerBase::writeSetting(IpsServices::SettingItem settingItem,
+                                            const QVariant &settingValue)
 {
     HBufC *tmp = 0;
     HBufC8 *tmp8 = 0;
@@ -203,7 +216,10 @@
         case IpsServices::OutgoingSSLWrapper:
             mSmtpSettings->SetSSLWrapper(settingValue.toBool());
             ret = saveSettings();
-            break;  
+            break;
+        case IpsServices::Connection:
+            ret = saveIAPSettings(settingValue.toUInt());
+            break;
         default:
             ret = mExtendedSettingsManager->writeSetting(settingItem, settingValue);
             break;    
@@ -212,8 +228,7 @@
 }
 
 /*!     
-    Delete mailbox.
-
+    Deletes the mailbox.
     \return Error code <code>0</code> if mailbox deletion was successful, otherwise error
             code is returned.
 */
@@ -227,6 +242,46 @@
 }
 
 /*!     
+    Returns the NmId of the mailbox.
+    \return Mailbox id.
+*/
+NmId NmIpsSettingsManagerBase::mailboxId() const
+{
+    return mMailboxId;
+}
+
+/*!     
+    Returns the mailbox account type.
+    \return Account type.
+*/
+IpsServices::TIpsSetAccountTypes NmIpsSettingsManagerBase::accountType() const
+{
+    return mAccountType;
+}
+
+/*!
+     Determines the default port for the outgoing mail server based on the security settings.
+     \return The port number to use.
+ */
+int NmIpsSettingsManagerBase::determineDefaultOutgoingPort()
+{
+    int port(IpsServices::standardSmtpPort);
+    if (mSmtpSettings->SSLWrapper()) {
+        port = IpsServices::secureSmtpPort;
+    }        
+    return port;
+}
+
+/*!
+    Returns reference to the Extended Settings Manager.
+    \return Extended Settings Manager reference.
+*/
+NmIpsExtendedSettingsManager &NmIpsSettingsManagerBase::extendedSettingsManager() const
+{
+    return *mExtendedSettingsManager;
+}
+
+/*!
     Stores the SMTP specific settings.
     \return bool <true> when the SMTP settings were succesfully written, otherwise <false>.
 */
@@ -236,44 +291,18 @@
     return (err == KErrNone);
 }
 
-/*!     
-    NmId for the mailbox. 
+/*!
+    Stores the SMTP specific IAP settings.
+    \return bool <true> when the SMTP IAP settings were succesfully written, otherwise <false>.
 */
-NmId NmIpsSettingsManagerBase::mailboxId() const
+bool NmIpsSettingsManagerBase::saveIAPSettings(uint snapId)
 {
-    return mMailboxId;
-}
-
-/*!     
-    Mailbox account type. 
-*/
-IpsServices::TIpsSetAccountTypes NmIpsSettingsManagerBase::accountType() const
-{
-    return mAccountType;
+    TRAPD(err,
+        CImIAPPreferences *prefs = CImIAPPreferences::NewLC();
+        mAccount->LoadSmtpIapSettingsL(mSmtpAccount, *prefs);
+        prefs->SetSNAPL(snapId);
+        mAccount->SaveSmtpIapSettingsL(mSmtpAccount, *prefs);
+        CleanupStack::PopAndDestroy(prefs);
+    );
+    return (err == KErrNone);
 }
-
-/*!
-     Determine the default port for the outgoing mail server based on the security settings
-     
-     \return int the port number to use
- */
-int NmIpsSettingsManagerBase::determineDefaultOutgoingPort()
-{
-    int port = 0;    
-    bool sslTls = mSmtpSettings->SSLWrapper();    
-    if (sslTls) {
-        port = IpsServices::secureSmtpPort;
-    } else {
-        port = IpsServices::standardSmtpPort;
-    }        
-    return port;
-}
-
-/*!
-
-*/
-NmIpsExtendedSettingsManager &NmIpsSettingsManagerBase::extendedSettingsManager() const
-{
-    return *mExtendedSettingsManager;
-}
-
--- a/ipsservices/nmipssettings/src/nmipssettingsmultiselectionitem.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/nmipssettings/src/nmipssettingsmultiselectionitem.cpp	Fri May 28 13:56:43 2010 +0300
@@ -21,6 +21,7 @@
 #include <HbSelectionDialog>
 #include <HbLabel>
 #include <HbExtendedLocale>
+#include <HbAction>
 
 #include "nmipssettingsmultiselectionitem.h"
 
@@ -175,7 +176,12 @@
 */
 void NmIpsSettingsMultiSelectionItem::selectionDialogClosed(HbAction *action)
 {
-    if (action == mSelectionDialog->primaryAction()) {
+    // TODO: Needs to be properly fixed when ever orbit supports
+    // e.g. <code>void finished(int result)</code> type of signaling.
+    // This is kind of hack but we do not want to compare button text to some string to
+    // be certain which button was pressed (NOTE: Buttons are created and placed
+    // by HbSelectionDialog).
+    if (action == mSelectionDialog->actions().at(0)) {
         // Get selected items.
         mSelectedItems = mSelectionDialog->selectedItems();
 
--- a/ipsservices/nmipssettings/src/nmipssettingsplugin.cpp	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/nmipssettings/src/nmipssettingsplugin.cpp	Fri May 28 13:56:43 2010 +0300
@@ -15,17 +15,19 @@
 *
 */
 
-#include <hbdataform.h>
-#include <hbdataformmodel.h>
-#include <hbdataformmodelitem.h>
-#include <hblineedit.h>
-#include <cpsettingformitemdata.h>
 #include <qplugin.h>
 #include <QCoreApplication>
 #include <QTranslator>
 #include <QScopedPointer>
 #include <QLocale>
+
 #include <HbStringUtil>
+#include <HbDataForm>
+#include <HbDataFormModel>
+#include <HbDataFormModelItem>
+#include <HbLineEdit>
+
+#include <cpsettingformitemdata.h>
 
 #include "nmipssettingsplugin.h"
 #include "nmipssettingshelper.h"
@@ -41,6 +43,7 @@
 const QString NmIpsSettingsComboItems("comboItems");
 const QString NmIpsSettingsLabelTexts("labelTexts");
 const QString NmIpsSettingsItems("items");
+const int NmIpsSettingsReceptionUserDefinedProfileEnabled(1);
 
 /*!
     \class NmIpsSettingsPlugin
@@ -63,7 +66,6 @@
     QString appName = "mailips_";
     QString commonName = "common_";
     
-
     // Load common strings
 	QScopedPointer<QTranslator> commonTranslator(new QTranslator(this));
     commonTranslator->load(commonName + lang, path);
@@ -96,6 +98,9 @@
 bool NmIpsSettingsPlugin::populateModel(HbDataFormModel &model,
     HbDataForm &form, const NmId &mailboxId)
 {
+    // Turns AlwaysOnline OFF
+    setAlwaysOnlineState(EServerAPIEmailTurnOff, mailboxId);
+    
     // Store model and form pointers.
     mModel = &model;
     mForm = &form;
@@ -133,7 +138,6 @@
         initGroupItems();
         result = true;
     }
-    
     return result;
 }
 
@@ -143,10 +147,15 @@
 void NmIpsSettingsPlugin::aboutToClose()
 {
     QVariant profileIndex;
+    const NmId mailboxId = mSettingsManager->mailboxId();
+    
 	mSettingsManager->readSetting(IpsServices::ReceptionActiveProfile, profileIndex);
 	if ((mSettingsHelper->isOffline()) && (profileIndex.toInt() != IpsServices::EmailSyncProfileManualFetch)) {
-		emit goOnline(mSettingsManager->mailboxId());
+		emit goOnline(mailboxId);
 	}
+	
+	// Turns AlwaysOnline ON
+	setAlwaysOnlineState(EServerAPIEmailTurnOn, mailboxId);
 }
 
 /*!
@@ -203,7 +212,24 @@
 */
 void NmIpsSettingsPlugin::initPreferenceItems(HbDataFormModelItem &item) const
 {
-    // 1. My Name
+
+    // 1. Connection
+    QVariant destId;
+
+    mSettingsManager->readSetting(IpsServices::Connection, destId);
+    QString destName(mSettingsHelper->destinationNameFromIdentifier(destId.toUInt()));
+    HbDataFormModelItem::DataItemType buttonItem =
+        static_cast<HbDataFormModelItem::DataItemType>(
+            HbDataFormModelItem::CustomItemBase + 2);
+    CpSettingFormItemData *connectionButtonItem = new CpSettingFormItemData(buttonItem,
+        hbTrId("txt_mailips_setlabel_connection"));
+    connectionButtonItem->setContentWidgetData(QString("text"), destName);
+    mSettingsHelper->insertContentItem(IpsServices::Connection, connectionButtonItem);
+    mForm->addConnection(connectionButtonItem, SIGNAL(clicked()),
+                         mSettingsHelper, SLOT(connectionButtonPress()));
+    item.appendChild(connectionButtonItem);
+
+    // 2. My Name
     QVariant myName;
     mSettingsManager->readSetting(IpsServices::EmailAlias, myName);
     CpSettingFormItemData *myNameItem = new CpSettingFormItemData(
@@ -216,7 +242,7 @@
                          mSettingsHelper, SLOT(myNameTextChange(QString)));
     item.appendChild(myNameItem);
 
-    // 2. Mailbox Name
+    // 3. Mailbox Name
     QVariant mailboxName;
     mSettingsManager->readSetting(IpsServices::MailboxName, mailboxName);
     CpSettingFormItemData *mailboxNameItem = new CpSettingFormItemData(
@@ -292,21 +318,14 @@
 
     mSettingsHelper->insertContentItem(IpsServices::ReceptionInboxSyncWindow, showMailInInboxItem);
 
+    // If changes are made to showMailItems, conversion table in
+    // showMailInInboxModified method needs to be updated also.
     QStringList showMailItems;
     showMailItems << HbStringUtil::convertDigits("50")
                   << HbStringUtil::convertDigits("100")
                   << HbStringUtil::convertDigits("500")
                   << hbTrId("txt_mailips_setlabel_val_all");
     
-
-    QList<QVariant> showMailItemValues;
-    showMailItemValues << 50
-                       << 100
-                       << 500
-                       << 0;
-    
-    QVariant value(showMailItemValues);
-    showMailInInboxItem->setData(HbDataFormModelItem::DescriptionRole + 1, value);
     showMailInInboxItem->setContentWidgetData(NmIpsSettingsItems, showMailItems);
     showMailInInboxItem->setEnabled(true);
     item.appendChild(showMailInInboxItem);
@@ -315,8 +334,8 @@
     mForm->addConnection(infoItem, SIGNAL(currentIndexChanged(int)),
         mSettingsHelper, SLOT(receivingScheduleChange(int)));
 
-    mForm->addConnection(showMailInInboxItem, SIGNAL(itemSelected(int)),
-        this, SLOT(showMailInInboxModified(int)));
+    mForm->addConnection(showMailInInboxItem, SIGNAL(valueChanged(QPersistentModelIndex, QVariant)),
+        this, SLOT(showMailInInboxModified(QPersistentModelIndex, QVariant)));
 
     // Must be called manually here, because the signal->slot connection set above using
     // HbDataForm::addConnection() is actually established AFTER the properties have first been
@@ -554,6 +573,26 @@
 }
 
 /*!
+    Sets the state of the AlwaysOnline.
+    \param command Command for the state of the AlwaysOnline.
+    \param mailboxId Mailbox id.
+*/
+void NmIpsSettingsPlugin::setAlwaysOnlineState(TAlwaysOnlineServerAPICommands command,
+                                               NmId mailboxId) const
+{
+    RAlwaysOnlineClientSession aosession;
+    TInt err(aosession.Connect());
+    
+    if (err == KErrNone) {
+        TPckgBuf<TMsvId> mboxBuf(mailboxId.id32());
+        
+        TRAP_IGNORE(aosession.RelayCommandL(command, mboxBuf));
+    }
+    
+    aosession.Close();
+}
+
+/*!
     Creates user defined mode if not already exist.
 */
 void NmIpsSettingsPlugin::createUserDefinedMode()
@@ -588,8 +627,8 @@
         mForm->addConnection(syncProfile, SIGNAL(currentIndexChanged(int)),
             mSettingsHelper, SLOT(receivingScheduleChange(int)));
 
-        // Mark that user defined mode exists.
-        userDefineMode.setValue(1);
+        // Set reception user defined profile enabled.
+        userDefineMode.setValue(NmIpsSettingsReceptionUserDefinedProfileEnabled);
         mSettingsManager->writeSetting(IpsServices::ReceptionUserDefinedProfile, userDefineMode);
     }
 }
@@ -597,15 +636,23 @@
 /*!
     Handles mail in inbox modifications.
 
-    \param index Selected value index.
+    \param value Selected value as a text.
 */
-void NmIpsSettingsPlugin::showMailInInboxModified(int index)
+void NmIpsSettingsPlugin::showMailInInboxModified(QPersistentModelIndex, QVariant value)
 {
-    HbDataFormModelItem* item = mSettingsHelper->contentItem(IpsServices::ReceptionInboxSyncWindow);
-    QVariant itemData = item->data(HbDataFormModelItem::HbDataFormModelItem::DescriptionRole + 1);
-    int selectedValue = itemData.value< QList< QVariant > >().at(index).toInt();
-    mSettingsHelper->handleReceivingScheduleSettingChange(
-        IpsServices::ReceptionInboxSyncWindow, selectedValue);
+    QMap<QString, int> conversionTable;
+    conversionTable[HbStringUtil::convertDigits("50")] = 50;
+    conversionTable[HbStringUtil::convertDigits("100")] = 100;
+    conversionTable[HbStringUtil::convertDigits("500")] = 500;
+    conversionTable[hbTrId("txt_mailips_setlabel_val_all")] = 0;
+
+    int selectedValue(conversionTable.value(value.toString()));
+    QVariant previouslySelectedValue;
+    mSettingsManager->readSetting(IpsServices::ReceptionInboxSyncWindow, previouslySelectedValue);
+    if (previouslySelectedValue.toInt() != selectedValue) {
+        mSettingsHelper->handleReceivingScheduleSettingChange(
+            IpsServices::ReceptionInboxSyncWindow, selectedValue);
+    }
 }
 
 Q_EXPORT_PLUGIN2(nmipssettings, NmIpsSettingsPlugin);
--- a/ipsservices/rom/FreestyleIpsServices.iby	Mon May 24 21:02:02 2010 +0300
+++ b/ipsservices/rom/FreestyleIpsServices.iby	Fri May 28 13:56:43 2010 +0300
@@ -23,7 +23,7 @@
 #ifdef FF_EMAIL_FRAMEWORK
 
 ECOM_PLUGIN( ipssosplugin.dll, ipssosplugin.rsc )
-//ECOM_PLUGIN( IPSSosAOPlugin.dll, IPSSosAOPlugin.rsc )
+ECOM_PLUGIN( IPSSosAOPlugin.dll, IPSSosAOPlugin.rsc )
 
 file=ABI_DIR\BUILD_DIR\nmipsmtms.dll		SHARED_LIB_DIR\nmipsmtms.dll        PAGED
 data=DATAZ_\MTM_INFO_FILE_DIR\smtp.rsc           MTM_INFO_FILE_DIR\smtp.rsc