201041
authorhgs
Thu, 14 Oct 2010 17:33:43 +0300
changeset 76 38bf5461e270
parent 74 6c59112cfd31
child 79 2508e95245f2
201041
email_plat/contact_history_model_api/inc/nmcontacthistorymodel.h
email_plat/nmail_client_api/inc/nmapiemailaddress.h
email_plat/nmail_client_api/inc/nmapiemailservice.h
email_plat/nmail_client_api/inc/nmapienvelopelisting.h
email_plat/nmail_client_api/inc/nmapieventnotifier.h
email_plat/nmail_client_api/inc/nmapifolder.h
email_plat/nmail_client_api/inc/nmapifolderlisting.h
email_plat/nmail_client_api/inc/nmapimailbox.h
email_plat/nmail_client_api/inc/nmapimailboxlisting.h
email_plat/nmail_client_api/inc/nmapimessage.h
email_plat/nmail_client_api/inc/nmapimessagesearch.h
emailservices/emailclientapi/inc/emailclientapiimpl.h
emailservices/emailclientapi/src/emailclientapiimpl.cpp
emailservices/emailclientapi/src/emailcontent.cpp
emailservices/emailclientapi/src/emailfolder.cpp
emailservices/emailclientapi/src/emailmessage.cpp
emailservices/emailclientapi/src/messageiterator.cpp
emailservices/emailcommon/bwins/fsfwcommonlibu.def
emailservices/emailcommon/eabi/fsfwcommonlibu.def
emailservices/emailcommon/inc/CFSMailBox.h
emailservices/emailcommon/src/CFSMailBox.cpp
emailservices/emailcommon/src/CFSMailRequestHandler.cpp
emailservices/emailstore/base_plugin/bwins/basepluginu.def
emailservices/emailstore/base_plugin/eabi/basepluginu.def
emailservices/emailstore/base_plugin/inc/BasePlugin.h
emailservices/emailstore/base_plugin/src/BaseMrInfoObject.cpp
emailservices/emailstore/base_plugin/src/basepluginmisc.cpp
emailservices/emailstore/message_store/client/src/RMessageStoreSession.cpp
emailservices/emailstore/message_store/common/src/AccountsSerializer.cpp
emailservices/emailstore/message_store/debuglog/src/DebugLog.cpp
emailservices/emailstore/message_store/server/src/ContainerStoreAccountTable.cpp
emailservices/emailstore/message_store/server/src/ContainerStoreContainersTable.cpp
emailservices/emailstore/message_store/server/src/ContainerStoreContentManager.cpp
emailservices/emailstore/message_store/server/src/ContainerStoreGeneralTable.cpp
emailservices/emailstore/message_store/server/src/ContainerStoreMRUAddressTable.cpp
emailservices/emailstore/message_store/server/src/ContainerStoreSearchHandler.cpp
emailservices/emailstore/message_store/server/src/ContainerStoreUtils.cpp
emailservices/emailstore/message_store/server/src/MessageStoreSession.cpp
emailservices/emailstore/message_store/server/src/MsgStoreInMemorySortRowSet.cpp
emailservices/emailstore/message_store/server/src/MsgStoreSortResultRowSet.cpp
emailservices/emailstore/message_store/server/src/MsgStoreStringSortResultRowSet.cpp
emailservices/emailstore/message_store/server/src/bufferedmessagecreator.cpp
emailservices/nmailagent/src/nmmailagent.cpp
emailservices/nmailbase/src/nmmessageenvelope.cpp
emailservices/nmclientapi/inc/nmapidatapluginfactory.h
emailservices/nmclientapi/inc/nmapiengine.h
emailservices/nmclientapi/inc/nmapienvelopelisting_p.h
emailservices/nmclientapi/inc/nmapieventnotifier_p.h
emailservices/nmclientapi/inc/nmapifolder_p.h
emailservices/nmclientapi/inc/nmapifolderlisting_p.h
emailservices/nmclientapi/inc/nmapimailboxlisting_p.h
emailservices/nmclientapi/inc/nmapimailboxsettings_p.h
emailservices/nmclientapi/inc/nmapimessageenvelope_p.h
emailservices/nmclientapi/inc/nmapimessagemanager_p.h
emailservices/nmclientapi/inc/nmapimessagesearch_p.h
emailservices/nmclientapi/inc/nmapioperationcreatedraftmessage.h
emailservices/nmclientapi/inc/nmapioperationsendmessage.h
emailservices/nmclientapi/inc/nmapipopimapsettingsmanager.h
emailservices/nmclientapi/inc/nmapiprivateclasses.h
emailservices/nmclientapi/inc/nmapitypesconverter.h
emailservices/nmclientapi/nmclientapi.pro
emailservices/nmclientapi/src/nmapiattachment.cpp
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_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/nmapimessage.cpp
emailservices/nmclientapi/src/nmapimessagebody.cpp
emailservices/nmclientapi/src/nmapimessageenvelope.cpp
emailservices/nmclientapi/src/nmapimessagemanager_p.cpp
emailservices/nmclientapi/src/nmapimessagesearch.cpp
emailservices/nmclientapi/src/nmapimessagesearch_p.cpp
emailservices/nmclientapi/src/nmapioperationcreatedraftmessage.cpp
emailservices/nmclientapi/src/nmapipopimapsettingsmanager.cpp
emailservices/nmclientapi/src/nmapisettingsmanager_p.cpp
emailservices/nmclientapi/src/nmapitypesconverter.cpp
emailservices/nmutilities/bwins/nmutilitiesu.def
emailservices/nmutilities/eabi/nmutilitiesu.def
emailservices/nmutilities/inc/emailmru.h
emailservices/nmutilities/inc/nmcontacthistorymodel_p.h
emailservices/nmutilities/src/emailmailboxinfo_p.cpp
emailservices/nmutilities/src/emailmru.cpp
emailservices/nmutilities/src/nmcontacthistorymodel.cpp
emailservices/nmutilities/src/nmcontacthistorymodel_p.cpp
emailservices/nmutilities/src/nmcontacthistorymodelitem.cpp
emailuis/nmailui/inc/nmapplication.h
emailuis/nmailui/inc/nmeditorview.h
emailuis/nmailui/inc/nmuiextensioninterface.h
emailuis/nmailui/inc/nmuiextensionmanager.h
emailuis/nmailui/service_conf.xml
emailuis/nmailui/src/nmapplication.cpp
emailuis/nmailui/src/nmeditorview.cpp
emailuis/nmailui/src/nmmessagelistview.cpp
emailuis/nmailui/src/nmuiextensionmanager.cpp
emailuis/nmailui/src/nmviewerheader.cpp
emailuis/nmailuiengine/bwins/nmailuiengineu.def
emailuis/nmailuiengine/eabi/nmailuiengineu.def
emailuis/nmailuiengine/inc/nmdataplugininterface.h
emailuis/nmailuiengine/inc/nmuiengine.h
emailuis/nmailuiengine/src/nmmailboxlistmodel.cpp
emailuis/nmailuiengine/src/nmmessagelistmodel.cpp
emailuis/nmailuiengine/src/nmuiengine.cpp
emailuis/nmailuiwidgets/bwins/nmailuiwidgetsu.def
emailuis/nmailuiwidgets/eabi/nmailuiwidgetsu.def
emailuis/nmailuiwidgets/inc/nmautofilllistviewitem.h
emailuis/nmailuiwidgets/inc/nmhtmllineedit.h
emailuis/nmailuiwidgets/inc/nmrecipientlineedit.h
emailuis/nmailuiwidgets/src/nmautofilllistviewitem.cpp
emailuis/nmailuiwidgets/src/nmhtmllineedit.cpp
emailuis/nmailuiwidgets/src/nmrecipientlineedit.cpp
emailuis/nmframeworkadapter/inc/nmframeworkadapter.h
emailuis/nmframeworkadapter/inc/nmframeworkadapterheaders.h
emailuis/nmframeworkadapter/src/nmframeworkadapter.cpp
emailuis/nmframeworkadapter/src/nmfwaaddattachmentsoperation.cpp
emailuis/nmframeworkadapter/src/nmfwaremoveattachmentoperation.cpp
emailuis/nmhswidget/conf/nmhswidget.docml
emailuis/nmhswidget/conf/nmhswidgetlistviewitem.css
emailuis/nmhswidget/conf/nmhswidgetlistviewitem.widgetml
emailuis/nmhswidget/inc/nmhswidget.h
emailuis/nmhswidget/inc/nmhswidgetconsts.h
emailuis/nmhswidget/inc/nmhswidgetemailengine.h
emailuis/nmhswidget/inc/nmhswidgetlistmodel.h
emailuis/nmhswidget/inc/nmhswidgetlistviewitem.h
emailuis/nmhswidget/inc/nmhswidgettitlerow.h
emailuis/nmhswidget/resources/nmhswidget.manifest
emailuis/nmhswidget/sis/nmhswidget.pkg
emailuis/nmhswidget/sis/nmhswidget_udeb.pkg
emailuis/nmhswidget/src/nmhswidget.cpp
emailuis/nmhswidget/src/nmhswidgetemailengine.cpp
emailuis/nmhswidget/src/nmhswidgetlistmodel.cpp
emailuis/nmhswidget/src/nmhswidgetlistviewitem.cpp
emailuis/nmhswidget/src/nmhswidgettitlerow.cpp
ipsservices/ipssosaoplugin/inc/IpsSosAOImapPopLogic.h
ipsservices/ipssosaoplugin/inc/ipssosaopluginheaders.h
ipsservices/ipssosaoplugin/src/IpsSosAOBaseAgent.cpp
ipsservices/ipssosaoplugin/src/IpsSosAOImapPopLogic.cpp
ipsservices/ipssosaoplugin/src/IpsSosAOMboxLogic.cpp
ipsservices/ipssosaoplugin/src/IpsSosAOSettingsHandler.cpp
ipsservices/ipssosplugin/inc/ipsplgheaders.h
ipsservices/ipssosplugin/inc/ipsplgimap4connectop.h
ipsservices/ipssosplugin/inc/ipsplgmsgmapper.inl
ipsservices/ipssosplugin/inc/ipsplgonlineoperation.h
ipsservices/ipssosplugin/inc/ipsplgpop3connectop.h
ipsservices/ipssosplugin/ipssosplugin.pro
ipsservices/ipssosplugin/src/ipsplgconnectandrefreshfolderlist.cpp
ipsservices/ipssosplugin/src/ipsplgcreatereplymessageoperation.cpp
ipsservices/ipssosplugin/src/ipsplgeventhandler.cpp
ipsservices/ipssosplugin/src/ipsplgimap4connectop.cpp
ipsservices/ipssosplugin/src/ipsplgimap4fetchattachmentop.cpp
ipsservices/ipssosplugin/src/ipsplgimap4plugin.cpp
ipsservices/ipssosplugin/src/ipsplgmsgiterator.cpp
ipsservices/ipssosplugin/src/ipsplgmsgmapper.cpp
ipsservices/ipssosplugin/src/ipsplgonlineoperation.cpp
ipsservices/ipssosplugin/src/ipsplgpop3connectop.cpp
ipsservices/ipssosplugin/src/ipsplgpop3plugin.cpp
ipsservices/ipssosplugin/src/ipsplgsearch.cpp
ipsservices/ipssosplugin/src/ipsplgsmtpoperation.cpp
ipsservices/ipssosplugin/src/ipsplgsosbaseplugin.cpp
ipsservices/nmimapclientplugin/inc/nmimapclientplugin.h
ipsservices/nmimapclientplugin/src/nmimapclientplugin.cpp
ipsservices/nmipsmtms/src/nmipsmtmui.cpp
ipsservices/nmipssettings/inc/nmipssettingsdeletemailboxop.h
ipsservices/nmipssettings/inc/nmipssettingshelper.h
ipsservices/nmipssettings/nmipssettings.pro
ipsservices/nmipssettings/src/nmipssettingsdeletemailboxop.cpp
ipsservices/nmipssettings/src/nmipssettingshelper.cpp
ipsservices/nmipssettings/src/nmipssettingsplugin.cpp
ipsservices/nmpopclientplugin/inc/nmpopclientplugin.h
ipsservices/nmpopclientplugin/src/nmpopclientplugin.cpp
package_definition.xml
--- a/email_plat/contact_history_model_api/inc/nmcontacthistorymodel.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/email_plat/contact_history_model_api/inc/nmcontacthistorymodel.h	Thu Oct 14 17:33:43 2010 +0300
@@ -70,7 +70,7 @@
 
 private:
      //
-    QSharedDataPointer<NmContactHistoryModelItemData> d;
+    QSharedDataPointer<NmContactHistoryModelItemData> mItemData;
 };
 Q_DECLARE_METATYPE(NmContactHistoryModelItem)
 
@@ -120,7 +120,6 @@
 
 public slots:
 
-    // TODO: query could keep previous query in order to check if results will only get narrowed (a char is appended)
     void query(const QString &query);
 
 private slots:
--- a/email_plat/nmail_client_api/inc/nmapiemailaddress.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/email_plat/nmail_client_api/inc/nmapiemailaddress.h	Thu Oct 14 17:33:43 2010 +0300
@@ -35,45 +35,15 @@
 class NMAPI_EXPORT NmApiEmailAddress
 {
 public:
-    /*!
-       Constructor for NmApiEmailAddress class
-     */
+
     NmApiEmailAddress();
     virtual ~NmApiEmailAddress();
-
-    /*!
-       copying constructor for NmApiEmailAddress
-     */
     NmApiEmailAddress(const NmApiEmailAddress &addr);
-
-    /*!
-       Assignment operator
-     */
     NmApiEmailAddress &operator=(const NmApiEmailAddress &addr);
-
-    /*!
-       Compares data from \a addr
-     */
     bool operator==(const NmApiEmailAddress &addr);
-
-    /*
-       getter for displayname
-     */
     QString displayName() const;
-
-    /*!
-       getter for address
-     */
     QString address() const;
-
-    /*!
-       setter for displayname 
-     */
     void setDisplayName(const QString &displayName);
-
-    /*!
-       setter for address
-     */
     void setAddress(const QString &address);
 private:
     QExplicitlySharedDataPointer<NmApiEmailAddressPrivate> d;
--- a/email_plat/nmail_client_api/inc/nmapiemailservice.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/email_plat/nmail_client_api/inc/nmapiemailservice.h	Thu Oct 14 17:33:43 2010 +0300
@@ -21,7 +21,6 @@
 #include <nmapidef.h>
 #include <QObject>
 
-class NmApiEngine;
 
 /*!
    Client that wants to access mailboxes, messages and receive related events
@@ -30,7 +29,7 @@
 
 namespace EmailClientApi
 {
-
+class NmApiEngine;
 class NmApiFolder;
 class NmApiMessageEnvelope;
 class NmApiMailbox;
--- a/email_plat/nmail_client_api/inc/nmapienvelopelisting.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/email_plat/nmail_client_api/inc/nmapienvelopelisting.h	Thu Oct 14 17:33:43 2010 +0300
@@ -25,11 +25,11 @@
 
 class QObject;
 
-class NmApiEngine;
 
 // list messages in particular folder.
 namespace EmailClientApi
 {
+class NmApiEngine;
 class NmApiEnvelopeListingPrivate;
 class NmApiMessageEnvelope;
 
--- a/email_plat/nmail_client_api/inc/nmapieventnotifier.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/email_plat/nmail_client_api/inc/nmapieventnotifier.h	Thu Oct 14 17:33:43 2010 +0300
@@ -22,8 +22,6 @@
 #include <nmapidef.h>
 #include <nmapicommon.h>
 
-struct NmApiEvent;
-
 namespace EmailClientApi
 {
 class NmApiEventNotifierPrivate;
@@ -35,8 +33,8 @@
    \code
    NmApiEventNotifier *notifier = new NmApiEventNotifier(this);
    notifier->start();
-   connect(notifier,SIGNAL(messageEvent(MessageEvent,quint64,quint64,QList<quint64>)),this,
-                    SLOT(processMessage(MessageEvent,quint64,quint64,QList<quint64>)),Qt::QueuedConnection);
+   connect(notifier,SIGNAL(messageEvent(EmailClientApi::MessageEvent,quint64,quint64,QList<quint64>)),this,
+                    SLOT(processMessage(EmailClientApi::MessageEvent,quint64,quint64,QList<quint64>)),Qt::QueuedConnection);
    \endcode
    And then when want to end need to do:
    \code
@@ -48,70 +46,20 @@
 {
     Q_OBJECT
 public:
-    /*!
-       Constructor
-     */
+
     NmApiEventNotifier(QObject *parent);
-
-    /*!
-       Destructor
-     */
     virtual ~NmApiEventNotifier();
-
-    /*!
-       Start monitoring email events
-       
-       Return value informs if monitoring system is up
-     */
     virtual bool start();
-
-    /*!
-       Cancels monitoring.
-       
-       In user responsibility is to cancel monitoring.
-       On end it clear buffer events and emits \sa NmApiMessageTask::canceled() signal.
-     */
     virtual void cancel();
-
-    /*!
-       Checks if event notifier is running.
-     */
     bool isRunning() const;
 
-    signals:
-    /*!
-       This signal is emited when buffer of mailbox events is ready to send. Buffer is list of mailbox events with id.
-       
-       
-       It emits signals grouped by events. So there will be as much signals as much there are events.
-       For safety when connect it need to use \sa Qt::QueuedConnection.
-       After that use \sa EmailClientApi::NmEmailService::getMailbox to get object.
-       \param event Event of mailbox
-       \param id List of mailbox ids where event occur.
-     */
+signals:
+    
     void mailboxEvent(EmailClientApi::NmApiMailboxEvent event, QList<quint64> id);
-
-    /*!
-       This signal is emited when buffer of messages events is ready to send. Buffer is list of messages events with id.
-     *
-       It emits signals grouped by events, mailbox and folder. So there will be as much signals as much there are events.
-       For safety when connect it need to use \sa Qt::QueuedConnection.
-       After that use \sa EmailClientApi::NmApiEmailService::getEnvelope to get object.
-       
-       \param event Event of messages
-       \param mailboxId Message mailbox
-       \param folderId Message folder
-       \param envelopeIdList List of messages ids where event occur
-     */
     void messageEvent(EmailClientApi::NmApiMessageEvent event, quint64 mailboxId, quint64 folderId, QList<quint64> envelopeIdList);
 
 public slots:
-    /*!
-       It check each object in buffer and emit signal with it.
-       
-       After end of work of this function buffer is empty.
-       It is called by timeout signal from timer.
-     */
+
     void sendEventsFromBuffer();
 
 private:
--- a/email_plat/nmail_client_api/inc/nmapifolder.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/email_plat/nmail_client_api/inc/nmapifolder.h	Thu Oct 14 17:33:43 2010 +0300
@@ -23,9 +23,6 @@
 #include <nmapidef.h>
 #include <nmapicommon.h>
 
-/*!
-   Mailbox metadata class
- */
 namespace EmailClientApi
 {
 
@@ -34,81 +31,21 @@
 class NMAPI_EXPORT NmApiFolder
 {
 public:
-    /*!
-       constructor for NmApiFolder class
-     */
+
     NmApiFolder();
-    
-    /*!
-        Copy constructor for NmApiFolder 
-     */
     NmApiFolder(const NmApiFolder &nmApiFolder);
-    
-    /*!
-       destructor for NmApiFolder class
-     */
     virtual ~NmApiFolder();
-
-    /*!
-       Assigns data from \a folder
-     */
     NmApiFolder &operator=(const NmApiFolder &folder);
-    
-    /*!
-       Compares data from \a folder
-     */
     bool operator==(const NmApiFolder &folder);
-    
-    /*!
-       getter for id
-     */
     quint64 id() const;
-
-    /*!
-       getter for name 
-     */
     QString name() const;
-
-    /*!
-       getter for foldertype
-     */
     EmailClientApi::NmApiEmailFolderType folderType() const;
-
-    /*!
-       setter for id
-     */
     void setId(quint64 id);
-
-    /*!
-       setter for name
-     */
     void setName(const QString &name);
-
-    /*!
-       setter for foldertype
-     */
     void setFolderType(EmailClientApi::NmApiEmailFolderType folderType);
-
-    /*!
-       setter for childfolder ids
-     */
     void setChildFolderIds(QList<quint64> &childFolderIds);
-
-    /*!
-       setter for childfolder ids
-     */
     void setParentFolderId(quint64 parentId);
-
-    /*!
-       returns child folder ids.
-       to be implemented later when nmail functionality is available
-     */
     void getChildFolderIds(QList<quint64> &childFolderIds);
-
-    /*!
-       returns parent folder id.
-       
-     */
     quint64 parentFolderId() const;
 
 private:
--- a/email_plat/nmail_client_api/inc/nmapifolderlisting.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/email_plat/nmail_client_api/inc/nmapifolderlisting.h	Thu Oct 14 17:33:43 2010 +0300
@@ -21,77 +21,34 @@
 #include <nmapimessagetask.h>
 #include <nmapidef.h>
 
-class NmApiEngine;
 
 namespace EmailClientApi
 {
-
+class NmApiEngine;
 class NmApiFolderListingPrivate;
 class NmApiMailbox;
 class NmApiFolder;
-/*!
-   \class Class for creating list of all folders
- */
+
 class NMAPI_EXPORT NmApiFolderListing : public NmApiMessageTask
 {
     Q_OBJECT
 public:
-    /*!
-       Constructor of class. 
-     */
+
     NmApiFolderListing(QObject *parent, const quint64 &mailboxId);
-    /*!
-       Destructor of class. 
-     */
-    ~NmApiFolderListing();
+    virtual ~NmApiFolderListing();
 
     enum {FolderListingFailed = -1};
 
-    /*! 
-       \brief Returns results after foldersListed signal is received.
-       
-        Before calling this method, cancel and start should be called, 
-        because after second call it returns empty list..
-        It also at start clear inputlist of NmFolder.
-     */
     bool getFolders(QList<EmailClientApi::NmApiFolder> &folders);
-
-    /*!
-       \brief Returns info if listing is running
-     */
     bool isRunning() const;
 
-    signals:
-    /*!
-       emitted when listing is available, count is number of folders found
-       or FolderListingFailed if listing failed
-     */
+signals:
+
     void foldersListed(qint32 count);
 
 public slots:
-    /*!
-       \brief Starts gathering folders list.
-       
-       In first turn it will get whole folderlist. 
-       \todo After that it will wait for folder events.
-       If start works, it do nothing.
-       
-       To asynchronous operation ce be used \sa QTimer::singleShot on this method.
-       Example:
-       <code> 
-       QTimer::singleShot(0,nmFolderListing,SLOT(start());
-       </code>
-       
-     */
+
     bool start();
-
-    /*!
-       \brief Stops gathering folder list.
-       
-       In first it change state of listing.
-       Then it release engine.
-       On end it clears list of folders and emits \sa NmApiMessageTask::canceled() signal.
-     */
     void cancel();
 
 private:
--- a/email_plat/nmail_client_api/inc/nmapimailbox.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/email_plat/nmail_client_api/inc/nmapimailbox.h	Thu Oct 14 17:33:43 2010 +0300
@@ -43,7 +43,7 @@
     /*!
         Copy constructor for NmApiMailbox 
      */
-   NmApiMailbox(const NmApiMailbox &nmApiMailbox);
+    NmApiMailbox(const NmApiMailbox &nmApiMailbox);
     
     /*!
        destructor for NmApiMailbox
--- a/email_plat/nmail_client_api/inc/nmapimailboxlisting.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/email_plat/nmail_client_api/inc/nmapimailboxlisting.h	Thu Oct 14 17:33:43 2010 +0300
@@ -36,72 +36,21 @@
 {
     Q_OBJECT
 public:
-    /*!
-       Constructor of class. It set start values.
-     */
+
     NmApiMailboxListing(QObject *parent);
-    /*!
-       Destructor of class. It release engine to be safe if manual releasing won't work.
-     */
-    ~NmApiMailboxListing();
+    virtual ~NmApiMailboxListing();
 
+    bool getMailboxes(QList<EmailClientApi::NmApiMailbox> &mailboxes);
+    bool isRunning() const;
+    
     enum {MailboxListingFailed = -1};
 
-    /*! 
-       \brief Returns results after mailboxesListed signal is received.
-       
-        Caller gets ownership of mailboxes. Returns true if results were available.
-        Before calling this method, cancel and start should be called, 
-        because after second call it returns empty list.
-        At start it clear inputlist of mailboxes.
-        
-        \return Return true if results were avaible
-        \param mailboxes List of mailboxes to filled. On start is cleared. 
-     */
-    bool getMailboxes(QList<EmailClientApi::NmApiMailbox> &mailboxes);
+signals:
 
-    /*!
-       \brief Return info if listing is running
-       
-       \return Return true if listing is running
-     */
-    bool isRunning() const;
-
-    signals:
-    /*!
-       
-       emitted when listing is available, count is number of mailboxes found
-       or MailboxListingFailed if listing failed
-       
-       \param count Count of mailboxes inside class.
-     */
     void mailboxesListed(qint32 count);
 
 public slots:
-    /*!
-       \brief Starts gathering mailbox list.
-       
-       In first turn it will get whole mailboxlist. 
-       Then it initialize core arguments and emits signal when ready.
-       
-       To asynchronous operation can be used \sa QTimer::singleShot on this method.
-       Example:
-       <code> 
-       QTimer::singleShot(0,nmMailboxListing,SLOT(start());
-       </code>
-       
-       \return Return true if everything go good and core of listing works good.
-       
-     */
     bool start();
-
-    /*!
-       \brief Stop gathering mailbox list.
-       
-       In first it change state of listing.
-       Then it release engine.
-       On end it clears list of mailboxes and emits \sa NmApiMessageTask::canceled() signal.
-     */
     void cancel();
 
 private:
--- a/email_plat/nmail_client_api/inc/nmapimessage.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/email_plat/nmail_client_api/inc/nmapimessage.h	Thu Oct 14 17:33:43 2010 +0300
@@ -58,4 +58,5 @@
 
 Q_DECLARE_METATYPE(EmailClientApi::NmApiMessage)
 
+
 #endif /* NMAPIMESSAGE_H_ */
--- a/email_plat/nmail_client_api/inc/nmapimessagesearch.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/email_plat/nmail_client_api/inc/nmapimessagesearch.h	Thu Oct 14 17:33:43 2010 +0300
@@ -23,10 +23,10 @@
 #include <nmapicommon.h>
 #include <nmapimessage.h>
 
-class NmApiMessageSearchPrivate;
 
 namespace EmailClientApi 
 {
+class NmApiMessageSearchPrivate;
 
 class NMAPI_EXPORT NmApiMessageSearch : public NmApiMessageTask
 {
@@ -38,7 +38,7 @@
     
     bool isRunning() const;
 
-    bool initialise(const QList<QString> &searchStrings, EmailClientApi::NmApiMailSortCriteria sortCriteria);
+    bool initialise(const QList<QString> &searchStrings, NmApiMailSortCriteria sortCriteria);
 
 public slots: 
 
--- a/emailservices/emailclientapi/inc/emailclientapiimpl.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailclientapi/inc/emailclientapiimpl.h	Thu Oct 14 17:33:43 2010 +0300
@@ -197,8 +197,6 @@
     // Mailbox ids are cached when first time listed. Related plugin uid
     // is include in the cache.
     CEmailMailboxCache* iMailboxCache;
-
-    CFSMailClient* iMailClient;
     
 };
 
--- a/emailservices/emailclientapi/src/emailclientapiimpl.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailclientapi/src/emailclientapiimpl.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -242,7 +242,6 @@
             count = 0;
             }
         }
-    iMailClient =  CFSMailClient::NewL();
     CleanupStack::PopAndDestroy( &implInfoArray );
     User::LeaveIfError( err );    
     }
--- a/emailservices/emailclientapi/src/emailcontent.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailclientapi/src/emailcontent.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -79,6 +79,7 @@
     iPluginData.ReleaseInstance();
     delete iPart;
     delete iBuf;
+    delete iFetchObserver;
     }
 
 // ---------------------------------------------------------------------------
--- a/emailservices/emailclientapi/src/emailfolder.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailclientapi/src/emailfolder.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -184,7 +184,9 @@
         const TEntryId id = fsfolder->GetFolderId().Id();
         const TFolderId folderId( id, iFolderId.iMailboxId.iId );
         MEmailFolder* folder = CEmailFolder::NewL( iPluginData, folderId, folders[i] );
+        CleanupStack::PushL(folder);
         aSubfolders.AppendL( folder );
+        CleanupStack::Pop(folder);
         }
     CleanupStack::Pop( &folders );
     folders.Close();
--- a/emailservices/emailclientapi/src/emailmessage.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailclientapi/src/emailmessage.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -668,8 +668,9 @@
 
         CEmailAttachment* att = CEmailAttachment::NewL( 
             iPluginData, msgContentId, attachments[i], EClientOwns );
-
+        CleanupStack::PushL(att);
         aAttachments.AppendL( att );
+        CleanupStack::Pop(att);
         }
     CleanupStack::Pop( &attachments );
     return count;
--- a/emailservices/emailclientapi/src/messageiterator.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailclientapi/src/messageiterator.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -259,7 +259,9 @@
 void CMessageIterator::AddToCacheL( CFSMailMessage* aFsMsg )
     {
     CEmailMessage* message = CEmailMessage::NewL( iPluginData, aFsMsg, EAPIOwns );
+    CleanupStack::PushL(message);
     iMessageArray.AppendL( message );
+    CleanupStack::Pop(message);
     }
 
 // -----------------------------------------------------------------------------
--- a/emailservices/emailcommon/bwins/fsfwcommonlibu.def	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailcommon/bwins/fsfwcommonlibu.def	Thu Oct 14 17:33:43 2010 +0300
@@ -109,7 +109,7 @@
 	?ChildPartL@CFSMailMessagePart@@QAEPAV1@VTFSMailMsgId@@@Z @ 108 NONAME ; class CFSMailMessagePart * CFSMailMessagePart::ChildPartL(class TFSMailMsgId)
 	?GetId@CFSMailBoxBase@@QBE?AVTFSMailMsgId@@XZ @ 109 NONAME ; class TFSMailMsgId CFSMailBoxBase::GetId(void) const
 	?PreviousL@CFSMailIterator@@UAEHVTFSMailMsgId@@IAAV?$RPointerArray@VCFSMailMessage@@@@@Z @ 110 NONAME ; int CFSMailIterator::PreviousL(class TFSMailMsgId, unsigned int, class RPointerArray<class CFSMailMessage> &)
-	?RefreshNowL@CFSMailBox@@QAEHXZ @ 111 NONAME ; int CFSMailBox::RefreshNowL(void)
+	?RefreshNowL@CFSMailBox@@QAEHH@Z @ 111 NONAME ; int CFSMailBox::RefreshNowL(int)
 	?ContentDispositionParameters@CFSMailMessagePart@@QAEAAVCDesC16Array@@XZ @ 112 NONAME ; class CDesC16Array & CFSMailMessagePart::ContentDispositionParameters(void)
 	?ListFolders@CFSMailBox@@QAEAAV?$RPointerArray@VCFSMailFolder@@@@XZ @ 113 NONAME ; class RPointerArray<class CFSMailFolder> & CFSMailBox::ListFolders(void)
 	??1CFSMailMessage@@UAE@XZ @ 114 NONAME ; CFSMailMessage::~CFSMailMessage(void)
@@ -209,7 +209,7 @@
 	?GetMessageId@CFSMailMessageBase@@QBE?AVTFSMailMsgId@@XZ @ 208 NONAME ; class TFSMailMsgId CFSMailMessageBase::GetMessageId(void) const
 	?GetSubject@CFSMailMessageBase@@QBEAAVTDesC16@@XZ @ 209 NONAME ; class TDesC16 & CFSMailMessageBase::GetSubject(void) const
 	?NewL@CFSMailIterator@@SAPAV1@AAVMFSMailIterator@@PAVCFSMailRequestHandler@@@Z @ 210 NONAME ; class CFSMailIterator * CFSMailIterator::NewL(class MFSMailIterator &, class CFSMailRequestHandler *)
-	?RefreshNowL@CFSMailBox@@QAEHAAVMFSMailRequestObserver@@@Z @ 211 NONAME ; int CFSMailBox::RefreshNowL(class MFSMailRequestObserver &)
+	?RefreshNowL@CFSMailBox@@QAEHAAVMFSMailRequestObserver@@H@Z @ 211 NONAME ; int CFSMailBox::RefreshNowL(class MFSMailRequestObserver &, int)
 	?Extension@TEmailExtensions@@QBEPAVCEmailExtension@@H@Z @ 212 NONAME ; class CEmailExtension * TEmailExtensions::Extension(int) const
 	??1CFSMailRequestHandler@@UAE@XZ @ 213 NONAME ; CFSMailRequestHandler::~CFSMailRequestHandler(void)
 	?DecRef@CEmailExtension@@QAEIXZ @ 214 NONAME ; unsigned int CEmailExtension::DecRef(void)
--- a/emailservices/emailcommon/eabi/fsfwcommonlibu.def	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailcommon/eabi/fsfwcommonlibu.def	Thu Oct 14 17:33:43 2010 +0300
@@ -3,8 +3,8 @@
 	_ZN10CFSMailBox10GoOfflineLEv @ 2 NONAME
 	_ZN10CFSMailBox11ListFoldersE12TFSMailMsgIdR13RPointerArrayI13CFSMailFolderE @ 3 NONAME
 	_ZN10CFSMailBox11ListFoldersEv @ 4 NONAME
-	_ZN10CFSMailBox11RefreshNowLER22MFSMailRequestObserver @ 5 NONAME
-	_ZN10CFSMailBox11RefreshNowLEv @ 6 NONAME
+	_ZN10CFSMailBox11RefreshNowLER22MFSMailRequestObserveri @ 5 NONAME
+	_ZN10CFSMailBox11RefreshNowLEi @ 6 NONAME
 	_ZN10CFSMailBox12CancelSearchEv @ 7 NONAME
 	_ZN10CFSMailBox12SendMessageLER14CFSMailMessage @ 8 NONAME
 	_ZN10CFSMailBox12SendMessageLER14CFSMailMessageR22MFSMailRequestObserver @ 9 NONAME
--- a/emailservices/emailcommon/inc/CFSMailBox.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailcommon/inc/CFSMailBox.h	Thu Oct 14 17:33:43 2010 +0300
@@ -125,9 +125,11 @@
      *
      * @return asynchronous request id
 	 */
-     IMPORT_C TInt RefreshNowL( MFSMailRequestObserver& aOperationObserver );
+     IMPORT_C TInt RefreshNowL( 
+         MFSMailRequestObserver& aOperationObserver,
+         TBool aSilentConnection = EFalse );
 
-     IMPORT_C TInt RefreshNowL( );
+     IMPORT_C TInt RefreshNowL( TBool aSilentConnection = EFalse );
 
     /**
      * creates into this mailbox new draft email
--- a/emailservices/emailcommon/src/CFSMailBox.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailcommon/src/CFSMailBox.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -127,7 +127,8 @@
 // CFSMailBox::RefreshNowL
 // -----------------------------------------------------------------------------
 EXPORT_C TInt CFSMailBox::RefreshNowL(
-    MFSMailRequestObserver& aOperationObserver )
+    MFSMailRequestObserver& aOperationObserver,
+    TBool aSilentConnection /*=EFalse*/ )
     {
     NM_FUNCTION;
 
@@ -139,7 +140,8 @@
         request = iRequestHandler->InitAsyncRequestL( GetId().PluginId(),
                                                         aOperationObserver );
         MFSMailRequestObserver* observer = request.iObserver;
-        TRAPD(err,plugin->RefreshNowL( GetId(), *observer, request.iRequestId));
+        TRAPD(err,plugin->RefreshNowL( 
+            GetId(), *observer, request.iRequestId, aSilentConnection ));
         if(err != KErrNone)
             {
             iRequestHandler->CompleteRequest(request.iRequestId);
@@ -152,7 +154,7 @@
 // -----------------------------------------------------------------------------
 // CFSMailBox::RefreshNowL
 // -----------------------------------------------------------------------------
-EXPORT_C TInt CFSMailBox::RefreshNowL( )
+EXPORT_C TInt CFSMailBox::RefreshNowL( TBool aSilentConnection /*=EFalse*/)
     {
     NM_FUNCTION;
 
@@ -165,7 +167,8 @@
         request = iRequestHandler->InitAsyncRequestL( GetId().PluginId(), *observer );
 
         observer = request.iObserver;
-        TRAPD(err,plugin->RefreshNowL( GetId(), *observer, request.iRequestId));
+        TRAPD(err,plugin->RefreshNowL( 
+            GetId(), *observer, request.iRequestId, aSilentConnection ));
         if(err != KErrNone)
             {
             iRequestHandler->CompleteRequest(request.iRequestId);
--- a/emailservices/emailcommon/src/CFSMailRequestHandler.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailcommon/src/CFSMailRequestHandler.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -231,9 +231,11 @@
     NM_FUNCTION;
 
     CFSMailPluginData* pluginData = new (ELeave) CFSMailPluginData;
+    CleanupStack::PushL(pluginData);
     pluginData->iPluginId = aPluginId;
     pluginData->iPlugin = aPlugin;
     iPluginList.AppendL(pluginData);
+    CleanupStack::Pop(pluginData);
     }
 
 // -----------------------------------------------------------------------------
--- a/emailservices/emailstore/base_plugin/bwins/basepluginu.def	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/base_plugin/bwins/basepluginu.def	Thu Oct 14 17:33:43 2010 +0300
@@ -107,7 +107,7 @@
 	?SetEndTimeInUtcL@CBaseMrInfoObject@@UAEXVTTime@@@Z @ 106 NONAME ; void CBaseMrInfoObject::SetEndTimeInUtcL(class TTime)
 	?SetRecurrenceTypeL@CBaseMrRecurrenceRule@@UAEXW4TMRRecurrenceType@MRRecurrenceRule@@@Z @ 107 NONAME ; void CBaseMrRecurrenceRule::SetRecurrenceTypeL(enum MRRecurrenceRule::TMRRecurrenceType)
 	?TranslateEmailFwMessageL@CBasePlugin@@MAEXAAVCFSMailMessagePart@@AAVCMsgStoreMessagePart@@H@Z @ 108 NONAME ; void CBasePlugin::TranslateEmailFwMessageL(class CFSMailMessagePart &, class CMsgStoreMessagePart &, int)
-  ?GetPluginId@CBasePlugin@@MBEIXZ @ 109 NONAME ; unsigned int CBasePlugin::GetPluginId(void) const
+	?GetPluginId@CBasePlugin@@MBEIXZ @ 109 NONAME ; unsigned int CBasePlugin::GetPluginId(void) const
 	?CreateForwardReplyMessageL@CBasePlugin@@IAEPAVCFSMailMessage@@ABVTFSMailMsgId@@0HABVTDesC16@@HH@Z @ 110 NONAME ; class CFSMailMessage * CBasePlugin::CreateForwardReplyMessageL(class TFSMailMsgId const &, class TFSMailMsgId const &, int, class TDesC16 const &, int, int)
 	?SetCommonNameL@CBaseMrAttendee@@UAEXABVTDesC16@@@Z @ 111 NONAME ; void CBaseMrAttendee::SetCommonNameL(class TDesC16 const &)
 	?CreateMessageToSendL@CBasePlugin@@UAEPAVCFSMailMessage@@ABVTFSMailMsgId@@@Z @ 112 NONAME ; class CFSMailMessage * CBasePlugin::CreateMessageToSendL(class TFSMailMsgId const &)
@@ -222,5 +222,6 @@
 	?ExtensionL@CBaseMrInfoObject@@UAEPAXVTUid@@@Z @ 221 NONAME ; void * CBaseMrInfoObject::ExtensionL(class TUid)
 	?TranslateMsgStorePropsL@CBasePlugin@@MAEXABVTFSMailMsgId@@AAVCMsgStorePropertyContainer@@AAVCFSMailMessagePart@@W4TFSMailDetails@@@Z @ 222 NONAME ; void CBasePlugin::TranslateMsgStorePropsL(class TFSMailMsgId const &, class CMsgStorePropertyContainer &, class CFSMailMessagePart &, enum TFSMailDetails)
 	?GetMailboxDisplayNameL@CBasePlugin@@IAEXIAAVRBuf16@@@Z @ 223 NONAME ; void CBasePlugin::GetMailboxDisplayNameL(unsigned int, class RBuf16 &)
-        ?Id@CBasePlugin@@UBE?AVTUid@@XZ @ 224 NONAME ; class TUid CBasePlugin::Id(void) const
+	?Id@CBasePlugin@@UBE?AVTUid@@XZ @ 224 NONAME ; class TUid CBasePlugin::Id(void) const
+	?CancelL@CBasePlugin@@UAEXHH@Z @ 225 NONAME ; void CBasePlugin::CancelL(int, int)
 
--- a/emailservices/emailstore/base_plugin/eabi/basepluginu.def	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/base_plugin/eabi/basepluginu.def	Thu Oct 14 17:33:43 2010 +0300
@@ -309,5 +309,6 @@
 	_ZThn4_NK21CBaseMrRecurrenceRule19RecurrenceStartTimeEv @ 308 NONAME
 	_ZThn4_NK21CBaseMrRecurrenceRule20RecurrentDaysofMonthEv @ 309 NONAME
 	_ZThn4_NK21CBaseMrRecurrenceRule4TypeEv @ 310 NONAME
-        _ZNK11CBasePlugin2IdEv @ 311 NONAME
+	_ZNK11CBasePlugin2IdEv @ 311 NONAME
+	_ZN11CBasePlugin7CancelLEii @ 312 NONAME
 
--- a/emailservices/emailstore/base_plugin/inc/BasePlugin.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/base_plugin/inc/BasePlugin.h	Thu Oct 14 17:33:43 2010 +0300
@@ -390,8 +390,10 @@
          virtual TFSProgress StatusL(
             TInt aRequestId );
 
-         virtual void CancelL(
-            TInt aRequestId );
+         virtual void CancelL( const TInt aRequestId );
+         
+         virtual void CancelL( const TInt aRequestId,
+                               const TInt aError );
 
          virtual void SubscribeMailboxEventsL(
             const TFSMailMsgId& aMailboxId,
--- a/emailservices/emailstore/base_plugin/src/BaseMrInfoObject.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/base_plugin/src/BaseMrInfoObject.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -1128,7 +1128,7 @@
         	{
         	mrInfo->SetMethod( MMRInfoObject::EMRMethodResponse );
         	}
-    
+        //ownership of mrInfo given to reply
         reply->SetMRInfo( mrInfo );
         iPlugin.SendMessageL( *reply );
     
--- a/emailservices/emailstore/base_plugin/src/basepluginmisc.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/base_plugin/src/basepluginmisc.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -289,24 +289,39 @@
 
 
 /**
- * Concrete plugins need to call the base plugin's implementation.
+ * Cancels pending requests. Concrete plugins need to call the base plugin's
+ * implementation.
+ * From CFSMailPlugin.
+ * 
  * @param aRequestId
  */
-void CBasePlugin::CancelL( TInt aRequestId )
+void CBasePlugin::CancelL( const TInt aRequestId )
+{
+    CancelL( aRequestId, KErrNone );
+}
+
+
+/**
+ * Cancels pending requests.
+ * 
+ * @param aRequestId
+ * @param aError An error code defining the reason why operation was cancelled.
+ */
+void CBasePlugin::CancelL( const TInt aRequestId, const TInt aError )
+
     {
     //find the fetch request and notify the observer.
     TInt count = iReqs.Count();
+
     for ( TInt i = 0; i < count; i++ )
     	{
     	if ( iReqs[i]->iRequestId == aRequestId )
     		{
     		CFetchRequester* request = iReqs[i];
-//<qmail>
     		TFSProgress progress = TFSProgress();
-//</qmail>
     		progress.iProgressStatus = TFSProgress::EFSStatus_RequestCancelled;
     		progress.iCounter = progress.iMaxCount = 1;
-    		progress.iError = KErrNone;
+    		progress.iError = aError;
     		request->iObserver.RequestResponseL( progress, aRequestId );
 
     		iReqs.Remove( i );
@@ -314,8 +329,9 @@
     		break;
     		}
     	}
-//<qmail>
+
     count = iDelayedOpReqs.Count();
+
     for ( TInt i = 0; i < count; i++ )
         {
         if ( iDelayedOpReqs[i]->iRequestId == aRequestId )
@@ -332,7 +348,6 @@
             break;
             }
         }
-//</qmail>
     }
 
 
--- a/emailservices/emailstore/message_store/client/src/RMessageStoreSession.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/message_store/client/src/RMessageStoreSession.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -450,7 +450,9 @@
 	for ( int i = 0 ; i < count ; i++ )
 		{
 		CMsgStoreAccount* account = CMsgStoreAccount::NewL( ownerIds[i], *(names[i]) );
+		CleanupStack::PushL( account );
 		aAccounts.AppendL( account );
+		CleanupStack::Pop( account );
 		}
 	CleanupStack::PopAndDestroy( serializer );
 	CleanupStack::PopAndDestroy( &resultBuf );
@@ -1718,7 +1720,9 @@
     
         //create the address object and add it to the output array
         CMsgStoreAddress *address = CMsgStoreAddress::NewL( addrDes16, nameDes16 );
-        aAddressArray.AppendL( address );            
+        CleanupStack::PushL( address );
+        aAddressArray.AppendL( address );
+        CleanupStack::Pop( address );
         } // end while          
     
     CleanupStack::PopAndDestroy( &serializedBuf );
--- a/emailservices/emailstore/message_store/common/src/AccountsSerializer.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/message_store/common/src/AccountsSerializer.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -46,7 +46,9 @@
 void CAccountsSerializer::AddAccountL( TInt32 aOwnerId, const TDesC& aName )
 	{
 	HBufC* nameCopy = aName.AllocL();
+	CleanupStack::PushL( nameCopy );
 	iNameBufArray.AppendL( nameCopy );
+	CleanupStack::Pop( nameCopy );
 	iOwnerIdArray.AppendL( aOwnerId );
 	iCount++;
 	}
--- a/emailservices/emailstore/message_store/debuglog/src/DebugLog.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/message_store/debuglog/src/DebugLog.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -402,7 +402,7 @@
                                       TRefByValue< const TDesC16 > aFmt, 
                                       ... ) const
     {
-    // coverity[UNINIT]
+    //coverity[var_decl]
 	VA_LIST list; 
 	VA_START(list,aFmt);
 
@@ -446,7 +446,7 @@
                                       TRefByValue< const TDesC8 > aFmt, 
                                       ... ) const
     {
-    // coverity[UNINIT]
+    //coverity[var_decl]
 	VA_LIST list; 
 	VA_START(list,aFmt);
 
--- a/emailservices/emailstore/message_store/server/src/ContainerStoreAccountTable.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/message_store/server/src/ContainerStoreAccountTable.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -208,6 +208,8 @@
 	
 	TContainerId mbId = KMsgStoreInvalidId;
 	
+	//this is checked right below using AtEnd()
+    //coverity[check_return]
 	iTable.FirstL();
 	
 	while( !iTable.AtEnd() )
@@ -225,6 +227,8 @@
 				}
 			}
 		
+		//this is checked right using AtEnd() in loop condition
+        //coverity[check_return]
 		iTable.NextL();
 		}
 	
@@ -300,6 +304,8 @@
 	CAccountsSerializer* serializer = new (ELeave) CAccountsSerializer();
 	CleanupStack::PushL( serializer );
 
+	//this is checked right below using AtEnd()
+	//coverity[check_return]
 	iTable.FirstL();
 	
 	while( !iTable.AtEnd() )
@@ -319,6 +325,8 @@
 		
 		serializer->AddAccountL( ownerId, name16 );
 		
+		//this is checked using AtEnd() in the loop condition
+        //coverity[check_return]
 		iTable.NextL();
 		}
 	
--- a/emailservices/emailstore/message_store/server/src/ContainerStoreContainersTable.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/message_store/server/src/ContainerStoreContainersTable.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -227,20 +227,20 @@
 	__LOG_ENTER_SUPPRESS( "FindL" )
 	__LOG_WRITE_FORMAT1_DEBUG3( "query=%S", &aSqlQuery )
 	
-	TContainerId returnValue;
-	
-	iTable.FirstL();
+	TContainerId returnValue = KContainerInvalidId;
 	
-	if( iTable.FindL( RDbRowSet::EForwards, aSqlQuery ) == KErrNotFound )
-	    {
-	    __LOG_WRITE_INFO( "No match found" )
-	    returnValue = KContainerInvalidId;
-	    }
-	else 
-	    {
-	    iTable.GetL();
-	    returnValue = iTable.ColUint32( iIdColNum );
-	    } // end if
+	if(iTable.FirstL()){
+        if( iTable.FindL( RDbRowSet::EForwards, aSqlQuery ) == KErrNotFound )
+            {
+            __LOG_WRITE_INFO( "No match found" )
+            returnValue = KContainerInvalidId;
+            }
+        else 
+            {
+            iTable.GetL();
+            returnValue = iTable.ColUint32( iIdColNum );
+            } // end if
+	}
 	
 	return returnValue;	
 	
--- a/emailservices/emailstore/message_store/server/src/ContainerStoreContentManager.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/message_store/server/src/ContainerStoreContentManager.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -325,9 +325,10 @@
 	
 	if( result == KErrNone )
 	    {
-    	TInt fileSize;
+    	CleanupClosePushL( file );
+        TInt fileSize;
     	User::LeaveIfError( file.Size( fileSize ) );
-    	file.Close();
+    	CleanupStack::PopAndDestroy( &file );
     	
     	iUtils.LeaveIfLowDiskSpaceL( fileSize );
     	
--- a/emailservices/emailstore/message_store/server/src/ContainerStoreGeneralTable.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/message_store/server/src/ContainerStoreGeneralTable.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -204,16 +204,19 @@
 	{
 	// Read and increment the next folder ID from the general table.
 	
-  	iTable.FirstL();
-	PrepareRowForUpdateLC();
-	
-	TContainerId id = iTable.ColUint32( iNextIdColNum );
-
-	iTable.SetColL( iNextIdColNum, id+1 );
-
-	PutRowUpdatesL();
-	
-	//iTable.FirstL();
+  	TContainerId id=0;
+  	
+  	if(iTable.FirstL()){
+        PrepareRowForUpdateLC();
+        
+        id = iTable.ColUint32( iNextIdColNum );
+    
+        iTable.SetColL( iNextIdColNum, id+1 );
+    
+        PutRowUpdatesL();
+        
+        //iTable.FirstL();
+  	}
 	
 	return id;
 	} // end AssignNextIdL
@@ -223,10 +226,13 @@
 // ==========================================================================
 TBool CContainerStoreGeneralTable::IsEncryptionOnL()
 {
-	iTable.FirstL();
-  	iTable.GetL();
-
-  	return iTable.ColUint8( iEncryptionFlagColNum );
+    TBool ret = EFalse;
+    
+	if(iTable.FirstL()){
+	    iTable.GetL();
+	    ret = iTable.ColUint8( iEncryptionFlagColNum );
+	}
+  	return ret;
 }
 
 // ==========================================================================
@@ -237,12 +243,13 @@
 	TBool curFlag = IsEncryptionOnL();
 	if ( curFlag != aNewFlag )
 	{
-		iTable.FirstL();
-		PrepareRowForUpdateLC();
+		if(iTable.FirstL()){
+		    PrepareRowForUpdateLC();
 	
-		iTable.SetColL( iEncryptionFlagColNum, aNewFlag );
+		    iTable.SetColL( iEncryptionFlagColNum, aNewFlag );
 	
-		PutRowUpdatesL();
+		    PutRowUpdatesL();
+		}
 		
 		//iTable.FirstL();
 	}
@@ -253,9 +260,12 @@
 // ==========================================================================
 TBool CContainerStoreGeneralTable::AuthenticationDataPresentL()
 {
-  	iTable.FirstL();
-  	iTable.GetL();
-  	TInt authenticationDataLength = iTable.ColLength( iAuthenticationDataColNum );
+    TInt authenticationDataLength = 0;
+    
+  	if(iTable.FirstL()){
+  	    iTable.GetL();
+  	    authenticationDataLength = iTable.ColLength( iAuthenticationDataColNum );
+  	}
 
     return ( authenticationDataLength > 0 );    
 } // end AuthenticationDataPresentL
@@ -265,12 +275,13 @@
 // ==========================================================================
 void CContainerStoreGeneralTable::SetAuthenticationDataL( const TDesC8& aBuffer )
 {
-  	iTable.FirstL();  	
-	PrepareRowForUpdateLC();
+  	if(iTable.FirstL()){  	
+  	    PrepareRowForUpdateLC();
     
-	iTable.SetColL( iAuthenticationDataColNum, aBuffer );
+  	    iTable.SetColL( iAuthenticationDataColNum, aBuffer );
 
-	PutRowUpdatesL();
+  	    PutRowUpdatesL();
+  	}
 	
 	//iTable.FirstL();
 } // end SetAuthenticationDataL
@@ -280,10 +291,10 @@
 // ==========================================================================
 void CContainerStoreGeneralTable::GetAuthenticationDataL( RBuf8& aBuffer )
 {
-  	iTable.FirstL();
-  	iTable.GetL();
-    
-    aBuffer.CreateL( iTable.ColDes8( iAuthenticationDataColNum ) );
+  	if(iTable.FirstL()){
+        iTable.GetL();        
+        aBuffer.CreateL( iTable.ColDes8( iAuthenticationDataColNum ) );
+  	}
 } // end GetAuthenticationDataL
 		
 // ==========================================================================
@@ -291,10 +302,12 @@
 // ==========================================================================
 TEncryptionState CContainerStoreGeneralTable::EncryptionStateL()
 {
-	iTable.FirstL();
-	iTable.GetL();
+    TEncryptionState encryptionState = EMsgStoreESIdle;
 
-    TEncryptionState encryptionState = static_cast<TEncryptionState>(iTable.ColUint8( iEncryptionStateColNum ));
+	if(iTable.FirstL()){
+	    iTable.GetL();
+	    encryptionState = static_cast<TEncryptionState>(iTable.ColUint8( iEncryptionStateColNum ));
+	}
     return encryptionState;
     
 } // end EncryptionStateL
@@ -304,12 +317,13 @@
 // ==========================================================================
 void CContainerStoreGeneralTable::SetEncryptionStateL( TEncryptionState aEncryptionState )
 {
-	iTable.FirstL();  	
-	PrepareRowForUpdateLC();
+	if(iTable.FirstL()){
+	    PrepareRowForUpdateLC();
     
-	iTable.SetColL( iEncryptionStateColNum, static_cast<TUint8>(aEncryptionState) );
+	    iTable.SetColL( iEncryptionStateColNum, static_cast<TUint8>(aEncryptionState) );
 
-	PutRowUpdatesL();
+	    PutRowUpdatesL();
+	}
 	
 	//iTable.FirstL();
 } // end SetEncryptionStateL
@@ -319,10 +333,12 @@
 // ==========================================================================
 TBool CContainerStoreGeneralTable::IsAuthenticateRequiredL()
 {
-    iTable.FirstL();
-    iTable.GetL();
-
-    return iTable.ColUint8( iAuthenticationRequiredColNum );
+    TBool ret = EFalse;
+    if(iTable.FirstL()){
+        iTable.GetL();
+        ret = iTable.ColUint8( iAuthenticationRequiredColNum );
+    }
+    return ret;
 }
 
 // ==========================================================================
@@ -330,12 +346,13 @@
 // ==========================================================================
 void CContainerStoreGeneralTable::SetAuthenticationRequiredL( TBool aFlag )
     {
-    iTable.FirstL();    
-    PrepareRowForUpdateLC();
+    if(iTable.FirstL()){
+        PrepareRowForUpdateLC();
     
-    iTable.SetColL( iAuthenticationRequiredColNum, static_cast<TUint8>(aFlag) );
+        iTable.SetColL( iAuthenticationRequiredColNum, static_cast<TUint8>(aFlag) );
 
-    PutRowUpdatesL();
+        PutRowUpdatesL();
+    }
     
     //iTable.FirstL();
     }
@@ -345,10 +362,14 @@
 // ==========================================================================
 TUint CContainerStoreGeneralTable::MaxMruCountL()
     {
-    iTable.FirstL();
-    iTable.GetL();
-
-    return iTable.ColUint( iMaxMruCountColNum );
+    TUint ret = 0;
+    
+    if(iTable.FirstL()){
+        iTable.GetL();
+        ret = iTable.ColUint( iMaxMruCountColNum );
+    }
+    
+    return ret; 
     }
 
 // ==========================================================================
@@ -356,32 +377,37 @@
 // ==========================================================================
 void CContainerStoreGeneralTable::SetMaxMruCountL( TUint aCount )
     {
-    iTable.FirstL();    
-    PrepareRowForUpdateLC();
+    if(iTable.FirstL()){    
+        PrepareRowForUpdateLC();
     
-    iTable.SetColL( iMaxMruCountColNum, aCount );
+        iTable.SetColL( iMaxMruCountColNum, aCount );
 
-    PutRowUpdatesL();
+        PutRowUpdatesL();
     
-    //iTable.FirstL();
+        //iTable.FirstL();
+        }
     }
 
 TUint CContainerStoreGeneralTable::CurMruNumberL()
     {
-    iTable.FirstL();
-    iTable.GetL();
+    int ret = 0;
+    if(iTable.FirstL()){
+        iTable.GetL();
+        ret = iTable.ColUint( iCurMruNumberColNum );
+    }
 
-    return iTable.ColUint( iCurMruNumberColNum );
+    return ret;
     }
 
 void CContainerStoreGeneralTable::SetCurMruNumberL( TUint aNum )
     {
-    iTable.FirstL();    
-    PrepareRowForUpdateLC();
+    if(iTable.FirstL()){
+        PrepareRowForUpdateLC();
     
-    iTable.SetColL( iCurMruNumberColNum, aNum );
+        iTable.SetColL( iCurMruNumberColNum, aNum );
 
-    PutRowUpdatesL();
+        PutRowUpdatesL();
+    }
     
     //iTable.FirstL();
     }
--- a/emailservices/emailstore/message_store/server/src/ContainerStoreMRUAddressTable.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/message_store/server/src/ContainerStoreMRUAddressTable.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -461,7 +461,9 @@
         }
     
     CMruAddressList* list = new(ELeave) CMruAddressList( aMailboxId );
+    CleanupStack::PushL( list );
     iAddressLists.AppendL( list );
+    CleanupStack::Pop( list );
     
     __LOG_EXIT
     }
@@ -619,7 +621,9 @@
         {
         TContainerId mailboxId = aMailboxIds[i];
         CMruAddressList* list = new(ELeave) CMruAddressList( mailboxId );
+        CleanupStack::PushL( list );
         iAddressLists.AppendL( list );
+        CleanupStack::Pop( list );
         
         const TUint bufSize = 100;
         TBuf<bufSize> sqlString;
--- a/emailservices/emailstore/message_store/server/src/ContainerStoreSearchHandler.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/message_store/server/src/ContainerStoreSearchHandler.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -466,7 +466,9 @@
         __LOG_WRITE_FORMAT1_INFO( "search string =%S", &searchStringPtr );
         
         HBufC* pattern = HBufC::NewL( searchString->Length() + 2 );
+        CleanupStack::PushL( pattern );
         aSearchPatterns.AppendL( pattern );
+        CleanupStack::Pop( pattern );
         TPtr seartStringPrt( pattern->Des() );
         
         //we are using MatchC(), so we need to add * to the start and end of the search pattern
--- a/emailservices/emailstore/message_store/server/src/ContainerStoreUtils.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/message_store/server/src/ContainerStoreUtils.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -339,9 +339,10 @@
 // ==========================================================================
 void CContainerStoreUtils::OpenTableL( RDbTable& aTable, const TDesC& aTableName )
     {
+    iTables.ReserveL( iTables.Count() + 1 ); // pre-allocate space
     User::LeaveIfError( aTable.Open( iDatabase, aTableName ) );
     
-    iTables.AppendL( &aTable );
+    iTables.Append( &aTable ); // cannot fail because space is pre-allocated
     
     } // end OpenTableL
 
--- a/emailservices/emailstore/message_store/server/src/MessageStoreSession.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/message_store/server/src/MessageStoreSession.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -1081,7 +1081,9 @@
 void CMessageStoreSession::DoMatchFoundL( TContainerId aMessageId, TContainerId aFolderId, const TDesC8& aPropertyBuf )
     {
     CSearchResult* result = CSearchResult::NewL( aMessageId, aFolderId, aPropertyBuf );
+    CleanupStack::PushL( result );
     iMatchMessages.AppendL( result );
+    CleanupStack::Pop( result );
 
     SendMatchesToClient();
     } // end MatchFound
--- a/emailservices/emailstore/message_store/server/src/MsgStoreInMemorySortRowSet.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/message_store/server/src/MsgStoreInMemorySortRowSet.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -669,7 +669,9 @@
 void CMsgStoreInMemorySortRowSet::AddRowL( TContainerId aMessageId, TInt64 aDate, TInt32 aValue )
     {
     CIntegerRow* row = new(ELeave) CIntegerRow( aMessageId, aDate, aValue );    
+    CleanupStack::PushL( row );
     InsertInOrderL( row );
+    CleanupStack::Pop( row );
     
     TInt64 groupValue = GetGroupValue( *row );
     UpdateGroupListL( groupValue );
--- a/emailservices/emailstore/message_store/server/src/MsgStoreSortResultRowSet.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/message_store/server/src/MsgStoreSortResultRowSet.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -128,6 +128,9 @@
 	        hasMorePrevious = EFalse;
 	        }
 	    //move it back
+	    
+	    //no need to check here
+	    //coverity[check_return]
 	    iDbView.NextL();
 	    }    
 	return hasMorePrevious;
@@ -157,6 +160,8 @@
 // ==========================================================================
 TMsgStoreId CMsgStoreSortResultRowSet::NextL()
 	{
+    //checked using AtEnd() below
+    //coverity[check_return]
 	iDbView.NextL();
     if ( iDbView.AtEnd() )
         {
@@ -204,13 +209,17 @@
         query.Append( KEqual );
         query.AppendNum( aMessageId );
         
-        iDbView.FirstL();
+        if(iDbView.FirstL()){
         
-        TInt rc = iDbView.FindL( RDbRowSet::EForwards, query );
-        if ( rc < 0 )
-            {
-            User::Leave( rc );
+            TInt rc = iDbView.FindL( RDbRowSet::EForwards, query );
+            if ( rc < 0 )
+                {
+                User::Leave( rc );
+                }
             }
+		else{
+			User::Leave(KErrNotFound);		
+			}
         }
 	}
 
@@ -423,6 +432,8 @@
 	iDbView.BeginningL();
 	for ( TInt i = 0 ; i < count ; i++  )
 		{
+	    //no need to check return here
+	    //coverity[check_return]
 		iDbView.NextL();
 		aIdArray.AppendL( GetRowL() );
 		}
@@ -433,6 +444,7 @@
 // ==========================================================================
 TInt CMsgStoreSortResultRowSet::IndexOfL( TContainerId aMessageId )
     {
+    TInt ret = -1;
     //have to search it from the begining
     const TUint bufSize = 200;
     TBuf<bufSize> query;
@@ -440,9 +452,10 @@
     query.Append( KEqual );
     query.AppendNum( aMessageId );
     
-    iDbView.FirstL();
-    
-    return iDbView.FindL( RDbRowSet::EForwards, query );
+    if(iDbView.FirstL()){
+        ret = iDbView.FindL( RDbRowSet::EForwards, query );
+    }
+    return ret;
     }
 
 // ==========================================================================
--- a/emailservices/emailstore/message_store/server/src/MsgStoreStringSortResultRowSet.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/message_store/server/src/MsgStoreStringSortResultRowSet.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -889,9 +889,10 @@
 void CMsgStoreStringSortResultRowSet::AddRowL( TContainerId aMessageId, const TDesC& aString, TInt64 aDate )
     {
     CStringRow* row = CStringRow::NewL( aMessageId, aDate, aString );
+    CleanupStack::PushL( row );
     row->SetGroupId( iCurGroupId++ );
     InsertInOrderL( row );
-    
+    CleanupStack::Pop( row );
     //we need to find out where is the newly added row, if it is the first or 
     //the last element in the sorted array, than it's position MAY NOT be accurate, 
     //because we DON'T have the entire table in memory, in this case, we have to either
--- a/emailservices/emailstore/message_store/server/src/bufferedmessagecreator.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/emailstore/message_store/server/src/bufferedmessagecreator.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -96,7 +96,9 @@
 
     ContainerDescriptor* part = new (ELeave) ContainerDescriptor(
         aParams, aProperties );
+    CleanupStack::PushL( part );
     iContainers.AppendL( part );
+    CleanupStack::Pop( part );
     }
     
 /**
--- a/emailservices/nmailagent/src/nmmailagent.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmailagent/src/nmmailagent.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -310,8 +310,10 @@
 
         // get list of messages in inbox
         QList<NmMessageEnvelope*> messageList;
-        plugin->listMessages(mailboxId, inboxId, messageList);
-
+        int err = plugin->listMessages(mailboxId, inboxId, messageList);
+        if (err != KErrNone) {
+            return false;
+        }
         QList<NmId> newMessageIdList;
 
         int unreadCount(0);
@@ -425,7 +427,7 @@
     NmMailboxInfo *mailboxInfo = getMailboxInfo(mailboxId);
     bool shown = false;
     
-    if( mailboxInfo->mActive && 
+    if( mailboxInfo && mailboxInfo->mActive && 
         (mailboxInfo->mNewUnreadMailIdList.count() > 0 ||
          mailboxInfo->mOutboxMails>0)) {
         shown = true;
@@ -450,8 +452,8 @@
 
     NmMailboxInfo *mailboxInfo = getMailboxInfo(mailboxId);
     bool changed = false;
-    if (mailboxInfo->mActive != active ||
-        refreshAlways) {
+    if (mailboxInfo && (mailboxInfo->mActive != active ||
+        refreshAlways) ) {
 
         // store the new state to permanent storage
         storeMailboxActive(mailboxId, active);
@@ -588,62 +590,64 @@
     // Check the new messages to make the indicator appear earlier
     NmMailboxInfo *mailboxInfo = getMailboxInfo(mailboxId);
 
-    // Inbox folder ID may be still unknown
-    if (mailboxInfo->mInboxFolderId.id() == 0) {
-        NmDataPluginInterface *plugin =
-            mPluginFactory->interfaceInstance(mailboxId);
-
-        if (plugin) {
-            mailboxInfo->mInboxFolderId =
-                plugin->getStandardFolderId(mailboxId, NmFolderInbox);
+    if(mailboxInfo){
+        // Inbox folder ID may be still unknown
+        if (mailboxInfo->mInboxFolderId.id() == 0) {
+            NmDataPluginInterface *plugin =
+                mPluginFactory->interfaceInstance(mailboxId);
+    
+            if (plugin) {
+                mailboxInfo->mInboxFolderId =
+                    plugin->getStandardFolderId(mailboxId, NmFolderInbox);
+            }
         }
-    }
-
-    if (folderId == mailboxInfo->mInboxFolderId) {
-        mailboxInfo->mInboxCreatedMessages += messageIds.count();
-
-        foreach (NmId messageId, messageIds) {
-            bool messageUnread = false;
-            mailboxInfo->mMailIdList.append(messageId);
-
-            // double check that the message ID is really new
-            bool newMessage = true;
-            if (mailboxInfo->mNewUnreadMailIdList.indexOf(messageId)>=0) {
-                newMessage = false;
-            }
-
-            // If it is a new message, update the mailbox status
-            if (newMessage) {
-                if (getMessageUnreadInfo(folderId, messageId, mailboxId, messageUnread)) {
-                    if (messageUnread) {
-                        mailboxInfo->mNewUnreadMailIdList.append(messageId);
-                        NM_COMMENT(QString(" new unread messages: count=%1").
-                            arg(mailboxInfo->mNewUnreadMailIdList.count()));
-
-                        if (!mUnreadIndicatorActive) {
-                            // make the "@" appear immediatelly
-                            updateUnreadIndicator(true);
+    
+        if (folderId == mailboxInfo->mInboxFolderId) {
+            mailboxInfo->mInboxCreatedMessages += messageIds.count();
+    
+            foreach (NmId messageId, messageIds) {
+                bool messageUnread = false;
+                mailboxInfo->mMailIdList.append(messageId);
+    
+                // double check that the message ID is really new
+                bool newMessage = true;
+                if (mailboxInfo->mNewUnreadMailIdList.indexOf(messageId)>=0) {
+                    newMessage = false;
+                }
+    
+                // If it is a new message, update the mailbox status
+                if (newMessage) {
+                    if (getMessageUnreadInfo(folderId, messageId, mailboxId, messageUnread)) {
+                        if (messageUnread) {
+                            mailboxInfo->mNewUnreadMailIdList.append(messageId);
+                            NM_COMMENT(QString(" new unread messages: count=%1").
+                                arg(mailboxInfo->mNewUnreadMailIdList.count()));
+    
+                            if (!mUnreadIndicatorActive) {
+                                // make the "@" appear immediatelly
+                                updateUnreadIndicator(true);
+                            }
+                            updateMailboxState(mailboxId, true, false);
+    
+                            // Play the tone as well
+                            playAlertTone();
                         }
-                        updateMailboxState(mailboxId, true, false);
-
-                        // Play the tone as well
-                        playAlertTone();
                     }
                 }
             }
         }
-    }
-
-    // When created a new mail in the outbox, we are in sending state
-    if (mailboxInfo->mOutboxFolderId == folderId) {
-        // The first mail created in the outbox
-        if (mailboxInfo->mOutboxMails <= 0) {
-            NM_COMMENT("NmMailAgent: first mail in outbox");
+    
+        // When created a new mail in the outbox, we are in sending state
+        if (mailboxInfo->mOutboxFolderId == folderId) {
+            // The first mail created in the outbox
+            if (mailboxInfo->mOutboxMails <= 0) {
+                NM_COMMENT("NmMailAgent: first mail in outbox");
+            }
+            mailboxInfo->mOutboxMails += messageIds.count();
+    
+            updateMailboxState(mailboxId,true,true);
+            updateSendIndicator();
         }
-        mailboxInfo->mOutboxMails += messageIds.count();
-
-        updateMailboxState(mailboxId,true,true);
-        updateSendIndicator();
     }
 }
 
--- a/emailservices/nmailbase/src/nmmessageenvelope.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmailbase/src/nmmessageenvelope.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -153,7 +153,10 @@
         && sentTime() == envelope.sentTime()
         && flags() == envelope.flags()
         && mailboxId() == envelope.mailboxId()
-        && folderId() == envelope.folderId()) {
+        && folderId() == envelope.folderId()
+        && toRecipients() == envelope.toRecipients()
+        && ccRecipients() == envelope.ccRecipients()
+        && bccRecipients() == envelope.bccRecipients()) {
         ret = true;
     }
     return ret;
--- a/emailservices/nmclientapi/inc/nmapidatapluginfactory.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/inc/nmapidatapluginfactory.h	Thu Oct 14 17:33:43 2010 +0300
@@ -20,13 +20,15 @@
 
 #include <QList>
 
-class NmDataPluginInterface;
+class NmId;
 class QDir;
 class QPluginLoader;
 class QObject;
+class NmDataPluginInterface;
 
 
-class NmId;
+namespace EmailClientApi
+{
 
 /*!
  \class NmApiDataPluginFactory
@@ -52,5 +54,6 @@
     static QObject *mPlugin;
     static QPluginLoader *mPluginLoader;
 };
+}
 
 #endif /* NMAPIDATAPLUGINFACTORY_H */
--- a/emailservices/nmclientapi/inc/nmapiengine.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/inc/nmapiengine.h	Thu Oct 14 17:33:43 2010 +0300
@@ -24,16 +24,14 @@
 #include "nmcommon.h"
 #include "nmapiprivateclasses.h"
 
-class NmApiDataPluginFactory;
 
 namespace EmailClientApi
 {
-
+class NmApiDataPluginFactory;
 class NmApiFolder;
 class NmApiMailbox;
 class NmApiMessageEnvelope;
 class NmApiMessage;
-}
 
 class NmApiEngine : public QObject
 {
@@ -42,30 +40,30 @@
     static NmApiEngine* instance();
     static void releaseInstance(NmApiEngine *&engine);
 
-    void listMailboxes(QList<EmailClientApi::NmApiMailbox> &mailboxList);
+    void listMailboxes(QList<NmApiMailbox> &mailboxList);
 
-    void listFolders(const quint64 mailboxId, QList<EmailClientApi::NmApiFolder> &folderList);
+    void listFolders(const quint64 mailboxId, QList<NmApiFolder> &folderList);
     void listEnvelopes(const quint64 mailboxId, const quint64 folderId, 
-	                   QList<EmailClientApi::NmApiMessageEnvelope> &messageEnvelopeList);
+	                   QList<NmApiMessageEnvelope> &messageEnvelopeList);
 
     bool getEnvelopeById(
         const quint64 mailboxId,
         const quint64 folderId,
         const quint64 envelopeId,
-        EmailClientApi::NmApiMessageEnvelope &envelope);
+        NmApiMessageEnvelope &envelope);
 
     bool getFolderById(
         const quint64 mailboxId,
         const quint64 folderId,
-        EmailClientApi::NmApiFolder &mailboxFolder);
+        NmApiFolder &mailboxFolder);
 		
-    bool getMailboxById(const quint64 mailboxId, EmailClientApi::NmApiMailbox &mailbox);
+    bool getMailboxById(const quint64 mailboxId, NmApiMailbox &mailbox);
 
     bool getMessageById(
         const quint64 mailboxId,
         const quint64 folderId,
         const quint64 messageId,
-        EmailClientApi::NmApiMessage &message);
+        NmApiMessage &message);
     
     void startCollectingEvents();
 
@@ -77,7 +75,7 @@
        
        \arg Contains info about event and related object (message or mailbox list)
      */
-    void emailStoreEvent(NmApiEvent event);
+    void emailStoreEvent(EmailClientApi::NmApiEvent event);
 
 private slots:
     void mailboxChangedArrived(NmMailboxEvent, const QList<NmId> &mailboxIds);
@@ -100,5 +98,7 @@
     NmApiDataPluginFactory *mFactory;//!<Plugin factory. Is needed to get plugins for emails
     RPointerArray<CFSMailPlugin> mMailPlugins;
 };
+}
+
 
 #endif /* NMAPIENGINE_H */
--- a/emailservices/nmclientapi/inc/nmapienvelopelisting_p.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/inc/nmapienvelopelisting_p.h	Thu Oct 14 17:33:43 2010 +0300
@@ -20,11 +20,9 @@
 
 #include <QObject>
 
-class NmApiEngine;
-
-
 namespace EmailClientApi
 {
+class NmApiEngine;
 class NmApiMessageEnvelope;
 
 class NmApiEnvelopeListingPrivate : public QObject
@@ -32,9 +30,9 @@
     Q_OBJECT
     
 public:
-    NmApiEnvelopeListingPrivate(const quint64 folderId, const quint64 mailboxId, QObject *parent = 0);
+    NmApiEnvelopeListingPrivate(const quint64 folderId, const quint64 mailboxId, QObject *parent = NULL);
     virtual ~NmApiEnvelopeListingPrivate();
-    bool envelopes(QList<EmailClientApi::NmApiMessageEnvelope> &envelopes);
+    bool envelopes(QList<NmApiMessageEnvelope> &envelopes);
     qint32 listEnvelopes();
     bool isRunning() const;
     void cancel();
@@ -44,7 +42,7 @@
     quint64 mMailboxId;
     bool mIsRunning;
     NmApiEngine *mEngine;
-    QList<EmailClientApi::NmApiMessageEnvelope> mEnvelopes;
+    QList<NmApiMessageEnvelope> mEnvelopes;
 };
 }
 #endif /* NMAPIENVELOPELISTINGPRIVATE_H */
--- a/emailservices/nmclientapi/inc/nmapieventnotifier_p.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/inc/nmapieventnotifier_p.h	Thu Oct 14 17:33:43 2010 +0300
@@ -24,15 +24,15 @@
 
 class QTimer;
 
-class NmApiEngine;
-
 namespace EmailClientApi
 {
+class NmApiEngine;
+	
 class NmApiEventNotifierPrivate : public QObject
 {
     Q_OBJECT
 public:
-    NmApiEventNotifierPrivate(QObject *parent = 0);
+    NmApiEventNotifierPrivate(QObject *parent = NULL);
     virtual ~NmApiEventNotifierPrivate();
 
     void cancel();
@@ -41,7 +41,7 @@
     void stop();
     void events(QList<NmApiEvent> &events);
 public slots:
-    void emailStoreEvent(const NmApiEvent &events);
+    void emailStoreEvent(const EmailClientApi::NmApiEvent event);
 
 signals:
     void timedOut();
--- a/emailservices/nmclientapi/inc/nmapifolder_p.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/inc/nmapifolder_p.h	Thu Oct 14 17:33:43 2010 +0300
@@ -38,7 +38,7 @@
 
     quint64 id;
     QString name;
-    EmailClientApi::NmApiEmailFolderType folderType;
+    NmApiEmailFolderType folderType;
     quint64 parentId;
     QList<quint64> childFolderIds;
 };
--- a/emailservices/nmclientapi/inc/nmapifolderlisting_p.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/inc/nmapifolderlisting_p.h	Thu Oct 14 17:33:43 2010 +0300
@@ -19,11 +19,10 @@
 
 #include <QObject>
 
-class NmApiEngine;
 
 namespace EmailClientApi
 {
-
+class NmApiEngine;
 class NmApiFolder;
 
 class NmApiFolderListingPrivate : public QObject
@@ -32,17 +31,17 @@
     
 public:
 
-    NmApiFolderListingPrivate(quint64 mailboxId, QObject *parent = 0);
+    NmApiFolderListingPrivate(quint64 mailboxId, QObject *parent = NULL);
     virtual ~NmApiFolderListingPrivate();
     qint32 listFolders();
-    bool folders(QList<EmailClientApi::NmApiFolder> &folders);
+    bool folders(QList<NmApiFolder> &folders);
     void cancel();
     bool isRunning() const;
 private:
 	  quint64 mMailboxId;
     NmApiEngine *mEngine;
     bool mIsRunning;
-    QList<EmailClientApi::NmApiFolder> mFolders;
+    QList<NmApiFolder> mFolders;
 };
 }
 #endif /* NMAPIFOLDERLISTINGPRIVATE_H */
--- a/emailservices/nmclientapi/inc/nmapimailboxlisting_p.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/inc/nmapimailboxlisting_p.h	Thu Oct 14 17:33:43 2010 +0300
@@ -17,29 +17,26 @@
 #ifndef NMAPIMAILBOXLISTINGPRIVATE_H
 #define NMAPIMAILBOXLISTINGPRIVATE_H
 
-class NmApiEngine;
 
 namespace EmailClientApi
 {
-
+class NmApiEngine;
 class NmApiMailbox;
 
 class NmApiMailboxListingPrivate : public QObject
 {
 public:
 
-    NmApiMailboxListingPrivate(QObject *parent = 0);
+    NmApiMailboxListingPrivate(QObject *parent = NULL);
     virtual ~NmApiMailboxListingPrivate();
-
-    bool initializeEngine();
-
-    void releaseEngine();
-
-    qint32 grabMailboxes();
-
-    QList<EmailClientApi::NmApiMailbox> mMailboxes;//!<List of mailboxes \sa getMailboxInfo \sa QSharedData \sa EmailClientApi::NmApiMailbox
-    NmApiEngine *mNmApiEngine;//!<Pointer to engine instance \sa NmUiEngine
-    bool mIsRunning;//!<Keep info if mailbox listing is running \sa isRunning
+    qint32 listMailboxes();
+    bool mailboxes(QList<NmApiMailbox> &mailboxes);
+    bool isRunning() const;
+    void cancel();
+private:
+    QList<NmApiMailbox> mMailboxes;
+    NmApiEngine *mEngine;
+    bool mIsRunning;
 };
 
 }
--- a/emailservices/nmclientapi/inc/nmapimailboxsettings_p.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/inc/nmapimailboxsettings_p.h	Thu Oct 14 17:33:43 2010 +0300
@@ -23,19 +23,19 @@
 #include <nmapimailboxsettings.h>
 #include <nmoperation.h>
 
-class NmApiDataPluginFactory;
 class NmOperation;
 
 namespace EmailClientApi
 {
+class NmApiDataPluginFactory;
 class NmApiMailboxSettingsData;
 
 class NmApiMailboxSettingsPrivate : public QObject
 {
     Q_OBJECT
 public:
-    NmApiMailboxSettingsPrivate(QObject *parent = 0);
-    ~NmApiMailboxSettingsPrivate();
+    NmApiMailboxSettingsPrivate(QObject *parent = NULL);
+    virtual ~NmApiMailboxSettingsPrivate();
 
     bool listMailboxIds(QList<quint64> &idList);
     QString getMailboxType(quint64 mailboxId);
--- a/emailservices/nmclientapi/inc/nmapimessageenvelope_p.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/inc/nmapimessageenvelope_p.h	Thu Oct 14 17:33:43 2010 +0300
@@ -43,9 +43,9 @@
     bool forwarded;
     bool replied;
 
-    QList<EmailClientApi::NmApiEmailAddress> toRecipients;
-    QList<EmailClientApi::NmApiEmailAddress> ccRecipients;
-    QList<EmailClientApi::NmApiEmailAddress> bccRecipients;
+    QList<NmApiEmailAddress> toRecipients;
+    QList<NmApiEmailAddress> ccRecipients;
+    QList<NmApiEmailAddress> bccRecipients;
 
     quint64 id;
     quint64 parentFolder;
--- a/emailservices/nmclientapi/inc/nmapimessagemanager_p.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/inc/nmapimessagemanager_p.h	Thu Oct 14 17:33:43 2010 +0300
@@ -24,12 +24,12 @@
 #include <CFSMailCommon.h>
 #include <nmapimessagemanager.h>
 
-class NmApiEngine;
 class CFSMailBox;
 class CFSMailPlugin;
 
 namespace EmailClientApi
 {
+class NmApiEngine;
 
 class NmApiMessageManagerPrivate : public QObject
 {
--- a/emailservices/nmclientapi/inc/nmapimessagesearch_p.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/inc/nmapimessagesearch_p.h	Thu Oct 14 17:33:43 2010 +0300
@@ -19,25 +19,27 @@
 #define NMAPIMESSAGESEARCHPRIVATE_H_
 
 #include <MFSMailBoxSearchObserver.h>
-#include <CFSMailBox.h>
 #include <nmapicommon.h>
 #include <nmapimessage.h>
 
+
+class CFSMailBox;
+namespace EmailClientApi
+{
 class NmApiEngine;
-class CFSMailBox;
 
 class NmApiMessageSearchPrivate : public QObject,
-                                    public MFSMailBoxSearchObserver
+                                  public MFSMailBoxSearchObserver
 {
     Q_OBJECT
 
 public:
     
-    NmApiMessageSearchPrivate(const quint64 mailboxId, QObject *parent = 0);
+    NmApiMessageSearchPrivate(const quint64 mailboxId, QObject *parent = NULL);
 
-    ~NmApiMessageSearchPrivate();
+    virtual ~NmApiMessageSearchPrivate();
 
-    bool initialise(const QList<QString> &searchStrings, EmailClientApi::NmApiMailSortCriteria sortCriteria);
+    bool initialise(const QList<QString> &searchStrings, NmApiMailSortCriteria sortCriteria);
     
     bool isRunning() const;
     
@@ -75,5 +77,6 @@
     NmApiEngine *mEngine;
     
 };
+}
 
 #endif /* NMAPIMESSAGESEARCHPRIVATE_H_ */
--- a/emailservices/nmclientapi/inc/nmapioperationcreatedraftmessage.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/inc/nmapioperationcreatedraftmessage.h	Thu Oct 14 17:33:43 2010 +0300
@@ -25,7 +25,8 @@
 
 class CFSMailBox;
 
-using namespace EmailClientApi;
+namespace EmailClientApi
+{
 
 class NmApiOperationCreateDraftMessage : public NmApiOperation, 
                                          public MFSMailRequestObserver
@@ -34,7 +35,7 @@
 public:
     NmApiOperationCreateDraftMessage(const QVariant *initData,
                                      CFSMailBox &mailBox,
-                                     QObject *parent = 0);
+                                     QObject *parent = NULL);
     virtual ~NmApiOperationCreateDraftMessage();
 
     // from MFSMailRequestObserver
@@ -52,6 +53,6 @@
     TInt mRequestId;
 
 };
-
+}
 
 #endif /* NMAPIOPERATIONCREATEDRAFTMESSAGE_H_ */
--- a/emailservices/nmclientapi/inc/nmapioperationsendmessage.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/inc/nmapioperationsendmessage.h	Thu Oct 14 17:33:43 2010 +0300
@@ -33,10 +33,10 @@
 {
     Q_OBJECT
 public:
-    NmApiOperationSendMessage(const NmApiMessage &message, CFSMailBox &mailBox, QObject *parent = 0);
+    NmApiOperationSendMessage(const NmApiMessage &message, CFSMailBox &mailBox, QObject *parent = NULL);
     virtual ~NmApiOperationSendMessage();
     
-    void RequestResponseL( TFSProgress aEvent, TInt aRequestId );
+    void RequestResponseL(TFSProgress aEvent, TInt aRequestId);
 
 private slots:
     void start();
--- a/emailservices/nmclientapi/inc/nmapipopimapsettingsmanager.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/inc/nmapipopimapsettingsmanager.h	Thu Oct 14 17:33:43 2010 +0300
@@ -19,13 +19,14 @@
 #define NMAPIPOPIMAPSETTINGSMANAGER_H
 
 
-namespace EmailClientApi {
+namespace EmailClientApi 
+{
 class NmApiMailboxSettingsData;
 class NmApiPopImapSettingsManager 
 {
 public:
     NmApiPopImapSettingsManager();
-    ~NmApiPopImapSettingsManager();
+    virtual ~NmApiPopImapSettingsManager();
     bool populateDefaults(const QString &mailboxType, NmApiMailboxSettingsData &data);
 
 private:
--- a/emailservices/nmclientapi/inc/nmapiprivateclasses.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/inc/nmapiprivateclasses.h	Thu Oct 14 17:33:43 2010 +0300
@@ -18,10 +18,11 @@
 #ifndef NMAPIPRIVATECLASSES_H
 #define NMAPIPRIVATECLASSES_H
 
-#include <nmapidef.h>
 #include <QList>
 #include <QMetaType>
 
+namespace EmailClientApi
+{
 /*!
    Enum for internal info about changes in emial store
  */
@@ -55,6 +56,6 @@
     quint64 folderId;
 
 };
-Q_DECLARE_METATYPE(NmApiEvent)
-
+} // namespace
+Q_DECLARE_METATYPE(EmailClientApi::NmApiEvent)
 #endif /* NMAPIPRIVATECLASSES_H */
--- a/emailservices/nmclientapi/inc/nmapitypesconverter.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/inc/nmapitypesconverter.h	Thu Oct 14 17:33:43 2010 +0300
@@ -26,9 +26,8 @@
 class NmAddress;
 class NmMessage;
 class NmMessagePart;
-/*!
-   
- */
+
+
 namespace EmailClientApi
 {
 class NmApiMailbox;
@@ -37,20 +36,18 @@
 class NmApiEmailAddress;
 class NmApiMessage;
 class NmApiAttachment;
-}
-
 
 class NmToApiConverter
 {
 public:
-    static EmailClientApi::NmApiMailbox NmMailbox2NmApiMailbox(const NmMailbox &mailbox);
-    static EmailClientApi::NmApiFolder NmFolder2NmApiFolder(const NmFolder &folder);
-    static EmailClientApi::NmApiMessageEnvelope NmMessageEnvelope2NmApiMessageEnvelope(
+    static NmApiMailbox NmMailbox2NmApiMailbox(const NmMailbox &mailbox);
+    static NmApiFolder NmFolder2NmApiFolder(const NmFolder &folder);
+    static NmApiMessageEnvelope NmMessageEnvelope2NmApiMessageEnvelope(
         const NmMessageEnvelope &envelope);
-    static QList<EmailClientApi::NmApiEmailAddress> NmAddress2QString(
+    static QList<NmApiEmailAddress> NmAddress2QString(
         const QList<NmAddress> &addresses);
-    static EmailClientApi::NmApiMessage NmMessage2NmApiMessage(NmMessage &message);
+    static NmApiMessage NmMessage2NmApiMessage(NmMessage &message);
 
 };
-
+}
 #endif /* NMTOAPICONVERTER_H_ */
--- a/emailservices/nmclientapi/nmclientapi.pro	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/nmclientapi.pro	Thu Oct 14 17:33:43 2010 +0300
@@ -26,11 +26,11 @@
 INCLUDEPATH +=  inc \
                 ../../email_plat/nmail_client_api/inc \
                 ../../email_plat/nmail_settings_api/inc \
-                ../../inc
+                ../../inc \
+                $$APP_LAYER_SYSTEMINCLUDE 
 
 DEPENDPATH +=   ../../email_plat/nmail_client_api/inc \
-                ../../email_plat/nmail_settings_api/inc \
-                $$APP_LAYER_SYSTEMINCLUDE 
+                ../../email_plat/nmail_settings_api/inc 
 
 MOC_DIR = tmp
 
@@ -127,9 +127,6 @@
            src/nmapioperationcreatedraftmessage.cpp \
            src/nmapioperationsendmessage.cpp
 
-
-
-
 symbian*: { 
     TARGET.EPOCALLOWDLLDATA = 1
     TARGET.CAPABILITY = ALL \
@@ -138,9 +135,6 @@
 
     TARGET.UID2 = 0x1000008D
     TARGET.UID3 = 0x2002C366
-
-    INCLUDEPATH += $$APP_LAYER_SYSTEMINCLUDE
-
     MMP_RULES += "SYSTEMINCLUDE /epoc32/include/ecom" 
 
      LIBS += -lnmailbase \
--- a/emailservices/nmclientapi/src/nmapiattachment.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapiattachment.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -19,7 +19,6 @@
 
 namespace EmailClientApi
 {
-
 /*!
     Class constructor.
 */
@@ -82,5 +81,7 @@
     NM_FUNCTION;
     d->setFileName(fileName);
 }
+}
 
-}
+
+
--- a/emailservices/nmclientapi/src/nmapidatapluginfactory.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapidatapluginfactory.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -17,8 +17,8 @@
 
 #include "nmapiheaders.h"
 
-
-
+namespace EmailClientApi
+{
 /*!
  \class NmApiDataPluginFactory
  \brief The NmApiDataPluginFactory class creates NmDataPlugin instance.
@@ -138,3 +138,5 @@
     }
     return mPlugin;
 }
+}
+
--- a/emailservices/nmclientapi/src/nmapiemailaddress.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapiemailaddress.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -67,7 +67,7 @@
 {
     NM_FUNCTION;
     
-    bool retVal = false;
+    bool retVal(false);
     if (this->d == addr.d) {
         retVal = true;
     }
--- a/emailservices/nmclientapi/src/nmapiemailservice.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapiemailservice.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -49,7 +49,7 @@
     const quint64 mailboxId,
     const quint64 folderId,
     const quint64 envelopeId,
-    EmailClientApi::NmApiMessageEnvelope &envelope)
+    NmApiMessageEnvelope &envelope)
 {
     NM_FUNCTION;
     
@@ -65,7 +65,7 @@
 bool NmApiEmailService::getFolder(
     const quint64 mailboxId,
     const quint64 folderId,
-    EmailClientApi::NmApiFolder &mailboxFolder)
+    NmApiFolder &mailboxFolder)
 {
     NM_FUNCTION;
 
@@ -81,7 +81,7 @@
 /*!
     gets mailbox info by id (see also NmEventNotifier)
  */
-bool NmApiEmailService::getMailbox(const quint64 mailboxId, EmailClientApi::NmApiMailbox &mailboxInfo)
+bool NmApiEmailService::getMailbox(const quint64 mailboxId, NmApiMailbox &mailboxInfo)
 {
     NM_FUNCTION;
     
@@ -98,7 +98,7 @@
     const quint64 mailboxId,
     const quint64 folderId,
     const quint64 messageId,
-    EmailClientApi::NmApiMessage &message)
+    NmApiMessage &message)
 {
     NM_FUNCTION;
     
--- a/emailservices/nmclientapi/src/nmapiengine.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapiengine.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -17,6 +17,9 @@
 
 #include "nmapiheaders.h"
 
+
+namespace EmailClientApi
+{
 NmApiEngine *NmApiEngine::mInstance = NULL;
 quint32 NmApiEngine::mReferenceCount = 0;
 
@@ -216,10 +219,10 @@
 /*!
       It get all mailboxes from email store
       
-      \sa EmailClientApi::NmMailbox
+      \sa NmMailbox
       \param mailboxList List of mailboxes to be filled.
  */
-void NmApiEngine::listMailboxes(QList<EmailClientApi::NmApiMailbox> &mailboxList)
+void NmApiEngine::listMailboxes(QList<NmApiMailbox> &mailboxList)
 {
     NM_FUNCTION;
     
@@ -246,11 +249,11 @@
 /*!
       It get all folders from email store for given mailbox
       
-      \sa EmailClientApi::NmApiFolder
+      \sa NmApiFolder
       \param mailboxId Mailbox id from where folders should be returned
       \param folderList  of folders to be filled.
  */
-void NmApiEngine::listFolders(const quint64 mailboxId, QList<EmailClientApi::NmApiFolder> &folderList)
+void NmApiEngine::listFolders(const quint64 mailboxId, QList<NmApiFolder> &folderList)
 {
     NM_FUNCTION;
     
@@ -270,13 +273,13 @@
 /*!
       It get all envelopes from email store for given mailbox and folder
       
-      \sa EmailClientApi::NmApiMessageEnvelope
+      \sa NmApiMessageEnvelope
       \param mailboxId Mailbox id from where envelope should be returned
       \param folderId Folder id from where envelope should be returned
       \param messageEnvelopeList List of envelopes to be filled.
  */
 void NmApiEngine::listEnvelopes(const quint64 mailboxId, const quint64 folderId, 
-                    QList<EmailClientApi::NmApiMessageEnvelope> &messageEnvelopeList)
+                    QList<NmApiMessageEnvelope> &messageEnvelopeList)
 {
     NM_FUNCTION;
     
@@ -289,7 +292,7 @@
     while (!messages.isEmpty()) {
         NmMessage* message = messages.takeFirst();
             
-        EmailClientApi::NmApiMessageEnvelope nmEnvelope =
+        NmApiMessageEnvelope nmEnvelope =
             NmToApiConverter::NmMessageEnvelope2NmApiMessageEnvelope(message->envelope());
         
         NmMessagePart *plainTextPart = message->plainTextBodyPart();
@@ -322,7 +325,7 @@
     const quint64 mailboxId,
     const quint64 folderId,
     const quint64 envelopeId,
-    EmailClientApi::NmApiMessageEnvelope &envelope)
+    NmApiMessageEnvelope &envelope)
 {
     NM_FUNCTION;
     
@@ -367,7 +370,7 @@
 bool NmApiEngine::getFolderById(
     const quint64 mailboxId,
     const quint64 folderId,
-    EmailClientApi::NmApiFolder &mailboxFolder)
+    NmApiFolder &mailboxFolder)
 {
     NM_FUNCTION;
 
@@ -389,7 +392,7 @@
     }
     if (fsFolder) {
         NmFolder *nmFolder = fsFolder->GetNmFolder();
-        EmailClientApi::NmApiFolder apiFolder = NmToApiConverter::NmFolder2NmApiFolder(*nmFolder);
+        NmApiFolder apiFolder = NmToApiConverter::NmFolder2NmApiFolder(*nmFolder);
         mailboxFolder = apiFolder;
         found = true;
         delete nmFolder;
@@ -412,7 +415,7 @@
     const quint64 mailboxId,
     const quint64 folderId,
     const quint64 messageId,
-    EmailClientApi::NmApiMessage &message)
+    NmApiMessage &message)
 {
     NM_FUNCTION;
     
@@ -438,7 +441,7 @@
     }
     if (fsMessage) {
         NmMessage *nmMessage = fsMessage->GetNmMessage();
-        EmailClientApi::NmApiMessage apiMessage = NmToApiConverter::NmMessage2NmApiMessage(*nmMessage);
+        NmApiMessage apiMessage = NmToApiConverter::NmMessage2NmApiMessage(*nmMessage);
         message = apiMessage;
         found = true;
         delete nmMessage;
@@ -456,7 +459,7 @@
    
    \return Return true if it will find any envelope
  */
-bool NmApiEngine::getMailboxById(const quint64 mailboxId, EmailClientApi::NmApiMailbox &mailbox)
+bool NmApiEngine::getMailboxById(const quint64 mailboxId, NmApiMailbox &mailbox)
 {
     NM_FUNCTION;
     
@@ -538,4 +541,5 @@
     }
     CleanupStack::Pop(&implInfo);
 }
+}
 
--- a/emailservices/nmclientapi/src/nmapienvelopelisting.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapienvelopelisting.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -81,7 +81,7 @@
     Before calling start should be called, otherwise will return empty list.
     It also clears inputlist of NmMessageEnvelope.
  */
-bool NmApiEnvelopeListing::getEnvelopes(QList<EmailClientApi::NmApiMessageEnvelope> &envelopes)
+bool NmApiEnvelopeListing::getEnvelopes(QList<NmApiMessageEnvelope> &envelopes)
 {
     NM_FUNCTION;
     return mListingPrivate->envelopes(envelopes);
--- a/emailservices/nmclientapi/src/nmapienvelopelisting_p.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapienvelopelisting_p.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -44,7 +44,7 @@
    
     Caller gets ownership of envelopes. Returns true if results were available.
  */
-bool NmApiEnvelopeListingPrivate::envelopes(QList<EmailClientApi::NmApiMessageEnvelope> &envelopes)
+bool NmApiEnvelopeListingPrivate::envelopes(QList<NmApiMessageEnvelope> &envelopes)
 {
     NM_FUNCTION;
     bool ret(mIsRunning);
--- a/emailservices/nmclientapi/src/nmapieventnotifier_p.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapieventnotifier_p.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -30,6 +30,7 @@
     NM_FUNCTION;
     mEmitSignals = new QTimer(this);
     mEmitSignals->setInterval(IntervalEmitingSignals);
+    mEmitSignals->setSingleShot(true);
     connect(mEmitSignals, SIGNAL(timeout()), this, SIGNAL(
         timedOut()));
     mEngine = NmApiEngine::instance();
@@ -69,14 +70,13 @@
     }
     else {
         qRegisterMetaType<QList<quint64> > ("QList<quint64>");
-        qRegisterMetaType<NmApiEvent> ("NmApiEvent");
+        qRegisterMetaType<EmailClientApi::NmApiEvent> ("EmailClientApi::NmApiEvent");
 
-        connect(mEngine, SIGNAL(emailStoreEvent(NmApiEvent)), this,
-                SLOT(emailStoreEvent(NmApiEvent)));
+        connect(mEngine, SIGNAL(emailStoreEvent(EmailClientApi::NmApiEvent)), this,
+                SLOT(emailStoreEvent(EmailClientApi::NmApiEvent)));
             
         mEngine->startCollectingEvents();
             
-        mEmitSignals->start();
         mIsRunning = true;
         result = true;
     }
@@ -89,8 +89,8 @@
 {
     mIsRunning = false;
     mEmitSignals->stop();
-    disconnect(mEngine, SIGNAL(emailStoreEvent(NmApiEvent)), this,
-            SLOT(emailStoreEvent(NmApiEvent)));
+    disconnect(mEngine, SIGNAL(emailStoreEvent(EmailClientApi::NmApiEvent)), this,
+            SLOT(emailStoreEvent(EmailClientApi::NmApiEvent)));
 }
 
 /*!
@@ -110,10 +110,13 @@
    \sa NmApiEvent
    \param events It contains full info about object and it event.
  */
-void NmApiEventNotifierPrivate::emailStoreEvent(const NmApiEvent &events)
+void NmApiEventNotifierPrivate::emailStoreEvent(const EmailClientApi::NmApiEvent event)
 {
     NM_FUNCTION;
-    mBufferOfEvents << events;
+    mBufferOfEvents << event;
+    if (!mEmitSignals->isActive()) {
+        mEmitSignals->start();
+    }
 }
 
 void NmApiEventNotifierPrivate::cancel()
@@ -127,8 +130,8 @@
     mIsRunning = false;
     mEmitSignals->stop();
 
-    disconnect(mEngine, SIGNAL(emailStoreEvent(NmApiEvent)), this,
-            SLOT(emailStoreEvent(NmApiEvent)));
+    disconnect(mEngine, SIGNAL(emailStoreEvent(EmailClientApi::NmApiEvent)), this,
+            SLOT(emailStoreEvent(EmailClientApi::NmApiEvent)));
 
     mBufferOfEvents.clear();
 }
--- a/emailservices/nmclientapi/src/nmapifolder.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapifolder.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -68,7 +68,7 @@
 {
     NM_FUNCTION;
     
-    bool returnValue = false;
+    bool returnValue(false);
     if (d == folder.d) {
         returnValue = true;
     }
@@ -98,7 +98,7 @@
 /*!
    getter for foldertype
  */
-EmailClientApi::NmApiEmailFolderType NmApiFolder::folderType() const
+NmApiEmailFolderType NmApiFolder::folderType() const
 {
     NM_FUNCTION;
     
@@ -128,7 +128,7 @@
 /*!
    setter for foldertype
  */
-void NmApiFolder::setFolderType(EmailClientApi::NmApiEmailFolderType folderType)
+void NmApiFolder::setFolderType(NmApiEmailFolderType folderType)
 {
     NM_FUNCTION;
     
--- a/emailservices/nmclientapi/src/nmapifolderlisting.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapifolderlisting.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -50,7 +50,7 @@
     It clears list of folders after be called.
     It also at start clear inputlist of NmFolder.
  */
-bool NmApiFolderListing::getFolders(QList<EmailClientApi::NmApiFolder> &folders)
+bool NmApiFolderListing::getFolders(QList<NmApiFolder> &folders)
 {
     NM_FUNCTION;
     return mFolderListing->folders(folders);
--- a/emailservices/nmclientapi/src/nmapifolderlisting_p.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapifolderlisting_p.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -65,9 +65,9 @@
    
     Caller gets ownership of messages. Returns true if results were available.
     It clears list of folders after be called.
-    It also at start clear inputlist of NmFolder.
+    It also at start clear inputlist of NmApiFolder.
  */
-bool NmApiFolderListingPrivate::folders(QList<EmailClientApi::NmApiFolder> &folders)
+bool NmApiFolderListingPrivate::folders(QList<NmApiFolder> &folders)
 {
     NM_FUNCTION;
     bool ret(mIsRunning);
--- a/emailservices/nmclientapi/src/nmapimailbox.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapimailbox.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -67,7 +67,7 @@
 {
     NM_FUNCTION;
     
-    bool returnValue = false;
+    bool returnValue(false);
     if (d == mailbox.d) {
         returnValue = true;
     }
--- a/emailservices/nmclientapi/src/nmapimailboxlisting.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapimailboxlisting.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -19,7 +19,6 @@
 
 namespace EmailClientApi
 {
-
 /*!
    \class Class for creating list of all mailboxes
  */
@@ -33,7 +32,6 @@
     NM_FUNCTION;
     
     mNmApiMailboxListingPrivate = new NmApiMailboxListingPrivate(this);
-    mNmApiMailboxListingPrivate->mIsRunning = false;
 }
 
 /*!
@@ -42,10 +40,6 @@
 NmApiMailboxListing::~NmApiMailboxListing()
 {
     NM_FUNCTION;
-    
-    if (mNmApiMailboxListingPrivate->mIsRunning) {
-        mNmApiMailboxListingPrivate->releaseEngine();
-    }
 }
 
 /*! 
@@ -58,29 +52,10 @@
     \return Return true if results were avaible
     \param mailboxes List of mailboxes to filled. On start is cleared. 
  */
-bool NmApiMailboxListing::getMailboxes(QList<EmailClientApi::NmApiMailbox> &mailboxes)
+bool NmApiMailboxListing::getMailboxes(QList<NmApiMailbox> &mailboxes)
 {
     NM_FUNCTION;
-    
-    mailboxes.clear();
-
-    bool result = false;
-
-    if (!mNmApiMailboxListingPrivate->mIsRunning) {
-        result = false;
-    }
-    else
-        if (mNmApiMailboxListingPrivate->mMailboxes.isEmpty()) {
-            result = false;
-        }
-        else {
-            mailboxes = mNmApiMailboxListingPrivate->mMailboxes;
-
-            mNmApiMailboxListingPrivate->mMailboxes.clear();
-
-            result = true;
-        }
-    return result;
+    return mNmApiMailboxListingPrivate->mailboxes(mailboxes);
 }
 
 /*!
@@ -101,28 +76,11 @@
 bool NmApiMailboxListing::start()
 {
     NM_FUNCTION;
-    
-    bool result = false;
-    if (mNmApiMailboxListingPrivate->mIsRunning) {
-        result = true;
-    }
-    else
-        if (!mNmApiMailboxListingPrivate->initializeEngine()) {
-            QMetaObject::invokeMethod(this, "mailboxesListed", Qt::QueuedConnection, Q_ARG(qint32,
-                (qint32) MailboxListingFailed));
-            result = false;
-        }
-        else {
-            qint32 mailboxCount = mNmApiMailboxListingPrivate->grabMailboxes();
+    qint32 mailboxCount = mNmApiMailboxListingPrivate->listMailboxes();
+    QMetaObject::invokeMethod(this, "mailboxesListed", Qt::QueuedConnection,
+        Q_ARG(qint32, mailboxCount));
 
-            mNmApiMailboxListingPrivate->mIsRunning = true;
-
-            QMetaObject::invokeMethod(this, "mailboxesListed", Qt::QueuedConnection, Q_ARG(qint32,
-                mailboxCount));
-
-            result = true;
-        }
-    return result;
+    return true;
 }
 
 /*!
@@ -136,14 +94,8 @@
 {
     NM_FUNCTION;
     
-    if (mNmApiMailboxListingPrivate->mIsRunning) {
-
-        mNmApiMailboxListingPrivate->mIsRunning = false;
-        mNmApiMailboxListingPrivate->releaseEngine();
-        mNmApiMailboxListingPrivate->mMailboxes.clear();
-
-        QMetaObject::invokeMethod(this, "canceled", Qt::QueuedConnection);
-    }
+    mNmApiMailboxListingPrivate->cancel();
+    emit canceled();
 }
 
 /*!
@@ -154,9 +106,8 @@
 bool NmApiMailboxListing::isRunning() const
 {
     NM_FUNCTION;
-    
-    return mNmApiMailboxListingPrivate->mIsRunning;
+    return mNmApiMailboxListingPrivate->isRunning();
+}
 }
 
-}
 
--- a/emailservices/nmclientapi/src/nmapimailboxlisting_p.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapimailboxlisting_p.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -17,70 +17,74 @@
 
 #include "nmapiheaders.h"
 
-
 namespace EmailClientApi
 {
-NmApiMailboxListingPrivate::NmApiMailboxListingPrivate(QObject *parent) :
-    QObject(parent), mNmApiEngine(NULL)
+NmApiMailboxListingPrivate::NmApiMailboxListingPrivate(QObject *parent) 
+:QObject(parent), 
+mEngine(NULL), 
+mIsRunning(false)
 {
     NM_FUNCTION;
+    mEngine = NmApiEngine::instance();
 }
 
 NmApiMailboxListingPrivate::~NmApiMailboxListingPrivate()
 {
     NM_FUNCTION;
-}
-
-/*!
-   \brief It initialize engine for email operations. 
-   
-   When use initializeEngine need to remember release it.
-   It return value if initialization go good.
-   \sa releaseEngine 
-   \return Return true if engine is good initilialized.
- */
-bool NmApiMailboxListingPrivate::initializeEngine()
-{
-    NM_FUNCTION;
-    
-    if (!mNmApiEngine) {
-        mNmApiEngine = NmApiEngine::instance();
-    }
-
-    return mNmApiEngine ? true : false;
+    NmApiEngine::releaseInstance(mEngine);
 }
 
 /*!
-   \brief It release engine for email operations.
-   
-   \sa initializeEngine
+   \brief Get mailboxes from engine.    
+   \return Count of mailboxes 
  */
-void NmApiMailboxListingPrivate::releaseEngine()
+qint32 NmApiMailboxListingPrivate::listMailboxes()
 {
     NM_FUNCTION;
+    mIsRunning = true;
+    mMailboxes.clear();
+    mEngine->listMailboxes(mMailboxes);
+    return mMailboxes.count();
+}
+
+/*! 
+   \brief Returns results after mailboxesListed signal is received.
+   
+    Caller gets ownership of mailboxes. Returns true if results were available.
+    It clears list of mailboxes (in private members) after be called.
+    It also at start clear inputlist of NmApiMailbox.
     
-    NmApiEngine::releaseInstance(mNmApiEngine);
+    \return Return true if results were avaible
+    \param mailboxes List of mailboxes to filled. On start is cleared. 
+ */
+bool NmApiMailboxListingPrivate::mailboxes(QList<NmApiMailbox> &mailboxes)
+{
+    mailboxes.clear();
+
+
+    bool ret(mIsRunning);
+    mailboxes.clear();
+    while (!mMailboxes.isEmpty()) {
+        mailboxes << mMailboxes.takeFirst();
+    }
+    mIsRunning = false;
+    return ret;
+}
+/*!
+   \brief Return info if listing is running
+ */
+bool NmApiMailboxListingPrivate::isRunning() const
+{
+    NM_FUNCTION;
+    return mIsRunning;
 }
 
 /*!
-   \brief It grab mailboxes from engine. 
-   
-   When it start grabing, it release all old.
-   Because it uses NmApiMailbox with sharedData we don't need care about release memory.
-   
-   \return Count of mailboxes or "-1" if there is no engine
+   \brief Clears list of mailboxes.
  */
-qint32 NmApiMailboxListingPrivate::grabMailboxes()
+void NmApiMailboxListingPrivate::cancel() 
 {
-    NM_FUNCTION;
-    
-    if (!mNmApiEngine) {
-        return -1;
-    }
-    
+    mIsRunning = false;
     mMailboxes.clear();
-
-    mNmApiEngine->listMailboxes(mMailboxes);
-    return mMailboxes.count();
 }
 }
--- a/emailservices/nmclientapi/src/nmapimessage.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapimessage.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -48,9 +48,9 @@
 
 NmApiMessage& NmApiMessage::operator=(const NmApiMessage &other)
 {
-    if (this == &other)
+    if (this == &other) {
         return *this;
-    
+    }
     d = other.d;
 
     return *this;
--- a/emailservices/nmclientapi/src/nmapimessagebody.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapimessagebody.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -46,8 +46,7 @@
 {
     NM_FUNCTION;
     
-	if (this != &apiMessageBody) 
-	{
+	if (this != &apiMessageBody) {
 		d = apiMessageBody.d;
 	}
 	return *this;
@@ -61,8 +60,7 @@
     NM_FUNCTION;
     
     bool retVal = false;
-    if (this->d == apiMessageBody.d)
-    {
+    if (this->d == apiMessageBody.d) {
         retVal = true;
     }
     return retVal;
--- a/emailservices/nmclientapi/src/nmapimessageenvelope.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapimessageenvelope.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -17,8 +17,6 @@
 
 #include "nmapiheaders.h"
 
-
-
 namespace EmailClientApi
 {
 
@@ -177,7 +175,7 @@
 /*!
    getter for to recipients
  */
-void NmApiMessageEnvelope::getToRecipients(QList<EmailClientApi::NmApiEmailAddress> &toRecipients)
+void NmApiMessageEnvelope::getToRecipients(QList<NmApiEmailAddress> &toRecipients)
 {
     NM_FUNCTION;
     
@@ -187,7 +185,7 @@
 /*!
    getter for cc recipients
  */
-void NmApiMessageEnvelope::getCcRecipients(QList<EmailClientApi::NmApiEmailAddress> &ccRecipients)
+void NmApiMessageEnvelope::getCcRecipients(QList<NmApiEmailAddress> &ccRecipients)
 {
     NM_FUNCTION;
     
@@ -197,7 +195,7 @@
 /*!
    getter for bcc recipients
  */
-void NmApiMessageEnvelope::getBccRecipients(QList<EmailClientApi::NmApiEmailAddress> &bccRecipients)
+void NmApiMessageEnvelope::getBccRecipients(QList<NmApiEmailAddress> &bccRecipients)
 {
     NM_FUNCTION;
     
@@ -267,7 +265,7 @@
 /*!
    getter for plaintext body
  */
-void NmApiMessageEnvelope::getPlainTextBody(EmailClientApi::NmApiMessageBody &body)
+void NmApiMessageEnvelope::getPlainTextBody(NmApiMessageBody &body)
 {
     NM_FUNCTION;
     
@@ -330,7 +328,7 @@
    setter for to recipients 
  */
 void NmApiMessageEnvelope::setToRecipients(
-    const QList<EmailClientApi::NmApiEmailAddress> &toRecipients)
+    const QList<NmApiEmailAddress> &toRecipients)
 {
     NM_FUNCTION;
     
@@ -341,7 +339,7 @@
    setter for cc recipients 
  */
 void NmApiMessageEnvelope::setCcRecipients(
-    const QList<EmailClientApi::NmApiEmailAddress> &ccRecipients)
+    const QList<NmApiEmailAddress> &ccRecipients)
 {
     NM_FUNCTION;
     
@@ -352,7 +350,7 @@
    setter for bcc recipients 
  */
 void NmApiMessageEnvelope::setBccRecipients(
-    const QList<EmailClientApi::NmApiEmailAddress> &bccRecipients)
+    const QList<NmApiEmailAddress> &bccRecipients)
 {
     NM_FUNCTION;
     
--- a/emailservices/nmclientapi/src/nmapimessagemanager_p.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapimessagemanager_p.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -96,6 +96,7 @@
  */
 QPointer<NmApiOperation> NmApiMessageManagerPrivate::saveMessage(const NmApiMessage &message)
 {
+    Q_UNUSED(message);
     return NULL;
 }
 
--- a/emailservices/nmclientapi/src/nmapimessagesearch.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapimessagesearch.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -25,7 +25,7 @@
 {
     NM_FUNCTION;
     d = new NmApiMessageSearchPrivate(mailboxId, this);
-    qRegisterMetaType<NmApiMessage> ("EmailClientApi::NmApiMessage");
+    qRegisterMetaType<EmailClientApi::NmApiMessage>("EmailClientApi::NmApiMessage");
     connect(d, SIGNAL(messageFound(EmailClientApi::NmApiMessage&)), this, SIGNAL(messageFound(EmailClientApi::NmApiMessage&)));
     connect(d, SIGNAL(searchComplete(int)), this, SIGNAL(searchComplete(int)));
     connect(d, SIGNAL(canceled()), this, SIGNAL(canceled()));
--- a/emailservices/nmclientapi/src/nmapimessagesearch_p.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapimessagesearch_p.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -17,6 +17,9 @@
 
 #include "nmapiheaders.h"
 
+namespace EmailClientApi
+{
+
 /*!
     \class NmApiMessageSearchPrivate
     \brief A Qt wrapper class for MFSMailBoxSearchObserver.
@@ -115,7 +118,7 @@
     
     if (aMatchMessage) {
         NmMessage *nmmessage = aMatchMessage->GetNmMessage();
-        EmailClientApi::NmApiMessage message = NmToApiConverter::NmMessage2NmApiMessage(*nmmessage);
+        NmApiMessage message = NmToApiConverter::NmMessage2NmApiMessage(*nmmessage);
         emit messageFound(message);
         
         delete nmmessage;
@@ -135,7 +138,7 @@
 {
     NM_FUNCTION;
     mIsRunning = false;
-    emit searchComplete(EmailClientApi::NmApiNoError); 
+    emit searchComplete(NmApiNoError); 
 }
 
 
@@ -180,7 +183,7 @@
  
  Initialize search criterias.  
  */
-bool NmApiMessageSearchPrivate::initialise(const QList<QString> &searchStrings, EmailClientApi::NmApiMailSortCriteria sortCriteria)
+bool NmApiMessageSearchPrivate::initialise(const QList<QString> &searchStrings, NmApiMailSortCriteria sortCriteria)
 {
     NM_FUNCTION;
     bool ret = false;
@@ -231,4 +234,5 @@
         }
     }
 }
+}
 // End of file.
--- a/emailservices/nmclientapi/src/nmapioperationcreatedraftmessage.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapioperationcreatedraftmessage.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -16,8 +16,8 @@
  */
 
 #include "nmapiheaders.h"
-
-
+namespace EmailClientApi
+{
 /*!
     Class constructor.
 */
@@ -87,7 +87,7 @@
         if (status == TFSProgress::EFSStatus_RequestComplete && aEvent.iParam) {
             CFSMailMessage *fsMessage = static_cast<CFSMailMessage*>(aEvent.iParam);
             NmMessage *nmmessage = fsMessage->GetNmMessage();
-            EmailClientApi::NmApiMessage apimessage = NmToApiConverter::NmMessage2NmApiMessage(*nmmessage);
+            NmApiMessage apimessage = NmToApiConverter::NmMessage2NmApiMessage(*nmmessage);
             QVariant qmessage;
             qmessage.setValue(apimessage);
             mStatus = Succeeded;
@@ -109,4 +109,5 @@
         }
     }
 }
+}
 
--- a/emailservices/nmclientapi/src/nmapipopimapsettingsmanager.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapipopimapsettingsmanager.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -25,8 +25,8 @@
 static const unsigned int DefaultImapPortSsl = 993;
 static const unsigned int DefaultSmtpPortSsl = 465;
 
-using namespace EmailClientApi;
-
+namespace EmailClientApi
+{
 NmApiPopImapSettingsManager::NmApiPopImapSettingsManager()
 {
     NM_FUNCTION;
@@ -283,7 +283,7 @@
     NM_FUNCTION;
     data.setValue(DownloadPictures, int(0));
     data.setValue(MessageDivider, int(0));
-    data.setValue(ReceptionActiveProfile, EmailClientApi::EmailProfileOffsetSE);
+    data.setValue(ReceptionActiveProfile, EmailProfileOffsetSE);
     data.setValue(ReceptionUserDefinedProfile, int(0));	// 0, because default profile is save energy
     data.setValue(ReceptionInboxSyncWindow, IpsServices::DefaultValueSaveEnergyInboxSyncWindow);
     data.setValue(ReceptionGenericSyncWindowInMessages, int(0)); // all messages
@@ -294,3 +294,5 @@
     data.setValue(ReceptionRefreshPeriodDayTime, IpsServices::DefaultValueSaveEnergyReceptionRefreshPeriodDayTime);
     data.setValue(UserNameHidden, int(0));
 }
+}
+
--- a/emailservices/nmclientapi/src/nmapisettingsmanager_p.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapisettingsmanager_p.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -187,19 +187,19 @@
     if (!activeProfileSetting.isNull()) {
         switch (activeProfileSetting.toInt()) {
             case IpsServices::EmailSyncProfileKeepUpToDate:
-                data.setValue(ReceptionActiveProfile, EmailClientApi::EmailProfileOffsetKUTD);
+                data.setValue(ReceptionActiveProfile, EmailProfileOffsetKUTD);
                 break;
             case IpsServices::EmailSyncProfileSaveEnergy:
-                data.setValue(ReceptionActiveProfile, EmailClientApi::EmailProfileOffsetSE);
+                data.setValue(ReceptionActiveProfile, EmailProfileOffsetSE);
                 break;
             case IpsServices::EmailSyncProfileManualFetch:
-                data.setValue(ReceptionActiveProfile, EmailClientApi::EmailProfileOffsetMF);
+                data.setValue(ReceptionActiveProfile, EmailProfileOffsetMF);
                 break;
             case IpsServices::EmailSyncProfileUserDefined:
-                data.setValue(ReceptionActiveProfile, EmailClientApi::EmailProfileOffsetUD);
+                data.setValue(ReceptionActiveProfile, EmailProfileOffsetUD);
                 break;
             default:
-                data.setValue(ReceptionActiveProfile, EmailClientApi::EmailProfileOffsetKUTD);
+                data.setValue(ReceptionActiveProfile, EmailProfileOffsetKUTD);
                 break;
         }
     }
@@ -341,6 +341,7 @@
 void NmApiSettingsManagerPrivate::fillSmtpSettingDataL(const NmApiMailboxSettingsData &data, 
         const QVariant settingValue, const int key)
 {    
+    Q_UNUSED(data);
     switch (key) {
        case EmailAddress:
            mSmtpSettings->SetEmailAddressL(StringToS60TPtrC(settingValue.toString()));
@@ -421,13 +422,13 @@
     
     if (data.getValue(ReceptionActiveProfile, settingValue) && !settingValue.isNull()) {
         QVariant profileOffset = 0;
-        if(settingValue.toString() == EmailClientApi::EmailProfileOffsetKUTD) {
+        if(settingValue.toString() == EmailProfileOffsetKUTD) {
             profileOffset = 0;
-        } else if(settingValue.toString() == EmailClientApi::EmailProfileOffsetSE){
+        } else if(settingValue.toString() == EmailProfileOffsetSE){
             profileOffset = 1;
-        } else if (settingValue.toString() == EmailClientApi::EmailProfileOffsetMF){
+        } else if (settingValue.toString() == EmailProfileOffsetMF){
             profileOffset = 2;
-        } else if (settingValue.toString() == EmailClientApi::EmailProfileOffsetUD) {
+        } else if (settingValue.toString() == EmailProfileOffsetUD) {
             profileOffset = 3;
         }
         ret = writeToCenRep(IpsServices::EmailKeyReceptionActiveProfile, profileOffset);
--- a/emailservices/nmclientapi/src/nmapitypesconverter.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapitypesconverter.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -17,86 +17,110 @@
 
 #include "nmapiheaders.h"
 
+namespace EmailClientApi
+{
 /*!
    converts nmmailbox to client api NmApiMailbox
  */
-EmailClientApi::NmApiMailbox NmToApiConverter::NmMailbox2NmApiMailbox(const NmMailbox &mailbox)
+NmApiMailbox NmToApiConverter::NmMailbox2NmApiMailbox(const NmMailbox &mailbox)
 {
     NM_FUNCTION;
     
-    EmailClientApi::NmApiMailbox api_mailbox;
-    api_mailbox.setId(mailbox.id().id());
-    api_mailbox.setName(mailbox.name());
+    NmApiMailbox apiMailbox;
+    apiMailbox.setId(mailbox.id().id());
+    apiMailbox.setName(mailbox.name());
     NmMailbox tmp(mailbox);
-    api_mailbox.setAddress(tmp.address().address());
-    return api_mailbox;
+    apiMailbox.setAddress(tmp.address().address());
+    return apiMailbox;
 }
 
 /*!
    converts NmFolder to client api NmFolder
  */
-EmailClientApi::NmApiFolder NmToApiConverter::NmFolder2NmApiFolder(const NmFolder &folder)
+NmApiFolder NmToApiConverter::NmFolder2NmApiFolder(const NmFolder &folder)
 {
     NM_FUNCTION;
     
-    EmailClientApi::NmApiFolder api_folder;
+    NmApiFolder apiFolder;
+
+    apiFolder.setParentFolderId(folder.parentId().id());
+    apiFolder.setId(folder.folderId().id());
+    apiFolder.setName(folder.name());
 
-    api_folder.setParentFolderId(folder.parentId().id());
-    api_folder.setId(folder.folderId().id());
-    api_folder.setName(folder.name());
-    api_folder.setFolderType((EmailClientApi::NmApiEmailFolderType) folder.folderType());
-    return api_folder;
+    switch ( folder.folderType() )
+        {
+        case NmFolderInbox:
+        	apiFolder.setFolderType(EmailClientApi::Inbox);
+            break;
+        case NmFolderOutbox:
+        	apiFolder.setFolderType(EmailClientApi::Outbox);
+            break;
+        case NmFolderDrafts:
+        	apiFolder.setFolderType(EmailClientApi::Drafts);
+            break;
+        case NmFolderSent:
+        	apiFolder.setFolderType(EmailClientApi::Sent);
+            break;
+        case NmFolderDeleted:
+        	apiFolder.setFolderType(EmailClientApi::Deleted);
+            break;
+        case NmFolderOther:
+        default:
+        	apiFolder.setFolderType(EmailClientApi::EOther);
+            break;
+        }
+    return apiFolder;
 }
 
 /*!
    converts NmMessageEnvelope to client api NmApiMessageEnvelope
  */
-EmailClientApi::NmApiMessageEnvelope NmToApiConverter::NmMessageEnvelope2NmApiMessageEnvelope(
+NmApiMessageEnvelope NmToApiConverter::NmMessageEnvelope2NmApiMessageEnvelope(
     const NmMessageEnvelope &envelope)
 {
     NM_FUNCTION;
     
-    EmailClientApi::NmApiMessageEnvelope api_env;
+    NmApiMessageEnvelope apiEnv;
     
     QList<NmAddress> to = envelope.toRecipients();
     QList<NmAddress> cc = envelope.ccRecipients();
     QList<NmAddress> bcc = envelope.bccRecipients();
-    QList<EmailClientApi::NmApiEmailAddress> to_api = NmAddress2QString(to);
-    QList<EmailClientApi::NmApiEmailAddress> cc_api = NmAddress2QString(cc);
-    QList<EmailClientApi::NmApiEmailAddress> bcc_api = NmAddress2QString(bcc);
+    QList<NmApiEmailAddress> to_api = NmAddress2QString(to);
+    QList<NmApiEmailAddress> cc_api = NmAddress2QString(cc);
+    QList<NmApiEmailAddress> bcc_api = NmAddress2QString(bcc);
 
-    api_env.setToRecipients(to_api);
-    api_env.setCcRecipients(cc_api);
-    api_env.setBccRecipients(bcc_api);
+    apiEnv.setToRecipients(to_api);
+    apiEnv.setCcRecipients(cc_api);
+    apiEnv.setBccRecipients(bcc_api);
 
-    api_env.setHasAttachments(envelope.hasAttachments());
-    api_env.setId(envelope.messageId().id());
-    api_env.setIsForwarded(envelope.isForwarded());
-    api_env.setIsRead(envelope.isRead());
-    api_env.setIsReplied(envelope.isReplied());
-    api_env.setParentFolder(envelope.folderId().id());
+    apiEnv.setHasAttachments(envelope.hasAttachments());
+    apiEnv.setId(envelope.messageId().id());
+    apiEnv.setIsForwarded(envelope.isForwarded());
+    apiEnv.setIsRead(envelope.isRead());
+    apiEnv.setIsReplied(envelope.isReplied());
+    apiEnv.setParentFolder(envelope.folderId().id());
 
-    api_env.setSender(envelope.sender().address());
-    api_env.setSentTime(envelope.sentTime());
-    api_env.setSubject(envelope.subject());
+    apiEnv.setSender(envelope.sender().address());
+    apiEnv.setSentTime(envelope.sentTime());
+    apiEnv.setSubject(envelope.subject());
     NmId mailboxId(envelope.mailboxId());
-    api_env.setMailboxId(mailboxId.id());
-    api_env.setFlags(static_cast<EmailClientApi::NmApiMessageFlags>(static_cast<int>(envelope.flags())), true);
+    apiEnv.setMailboxId(mailboxId.id());
+    apiEnv.setFlags(static_cast<NmApiMessageFlags>(static_cast<int>(envelope.flags())), true);
 
-    return api_env;
+    return apiEnv;
 }
 
 /*!
    converts QList of NmAddresses to Qlist of email client apis NmApiEmailAddresses
  */
-QList<EmailClientApi::NmApiEmailAddress> NmToApiConverter::NmAddress2QString(
+QList<NmApiEmailAddress> NmToApiConverter::NmAddress2QString(
     const QList<NmAddress> &addresses)
 {
     NM_FUNCTION;
     
-    QList<EmailClientApi::NmApiEmailAddress> nmAddresses;
+    QList<NmApiEmailAddress> nmAddresses;
     for (int i = 0; i < addresses.count(); i++) {
-        EmailClientApi::NmApiEmailAddress addr;
+        NmApiEmailAddress addr;
         addr.setAddress(addresses[i].address());
         addr.setDisplayName(addresses[i].displayName());
 
@@ -109,52 +133,56 @@
 /*!
    converts nmmessage to client api NmApiMessage
  */
-EmailClientApi::NmApiMessage NmToApiConverter::NmMessage2NmApiMessage(NmMessage &message)
+NmApiMessage NmToApiConverter::NmMessage2NmApiMessage(NmMessage &message)
 {
     NM_FUNCTION;
     
-    EmailClientApi::NmApiMessage api_message;
+    NmApiMessage apiMessage;
     QList<NmMessagePart*> attachments;
     message.attachmentList(attachments);
 
     if (attachments.size() > 0){
-        QList<EmailClientApi::NmApiAttachment> api_attachments; 
+        QList<NmApiAttachment> apiAttachments; 
         for (int i = 0; i < attachments.size(); i++){
             NmMessagePart *part = attachments.at(i);
-            if (part->contentType().compare(EmailClientApi::NmApiContentTypeTextPlain) != 0 && 
-                part->contentType().compare(EmailClientApi::NmApiContentTypeTextHtml) != 0) {
-                EmailClientApi::NmApiAttachment api_attachment;
-                api_attachment.setFileName(part->attachmentName());
-                api_attachment.setId(part->partId().id());
-                api_attachment.setContentType(part->contentType());
-                api_attachment.setSize(part->size());
-                api_attachments.append(api_attachment);
+            if (part->contentType().compare(NmApiContentTypeTextPlain) != 0 && 
+                part->contentType().compare(NmApiContentTypeTextHtml) != 0) {
+                NmApiAttachment apiAttachment;
+                apiAttachment.setFileName(part->attachmentName());
+                apiAttachment.setId(part->partId().id());
+                apiAttachment.setContentType(part->contentType());
+                apiAttachment.setSize(part->size());
+                apiAttachments.append(apiAttachment);
             }
         }
-        api_message.setAttachments(api_attachments);
+        apiMessage.setAttachments(apiAttachments);
     }
     
-    EmailClientApi::NmApiMessageEnvelope api_envelope = NmMessageEnvelope2NmApiMessageEnvelope(message.envelope());
-    api_message.setEnvelope(api_envelope);
+    NmApiMessageEnvelope apiEnvelope = NmMessageEnvelope2NmApiMessageEnvelope(message.envelope());
+    apiMessage.setEnvelope(apiEnvelope);
     const NmMessagePart *plaintext = message.plainTextBodyPart();
     if (plaintext) {
-        EmailClientApi::NmApiTextContent api_plaintext;
-        api_plaintext.setContent(plaintext->textContent());
-        api_plaintext.setId(plaintext->partId().id());
-        api_plaintext.setContentType(plaintext->contentType());
-        api_plaintext.setSize(plaintext->size());
-        api_message.setPlainTextContent(api_plaintext);
+        NmApiTextContent apiPlainText;
+        apiPlainText.setContent(plaintext->textContent());
+        apiPlainText.setId(plaintext->partId().id());
+        apiPlainText.setContentType(plaintext->contentType());
+        apiPlainText.setSize(plaintext->size());
+        apiMessage.setPlainTextContent(apiPlainText);
     }
     
     const NmMessagePart *htmlcontent = message.htmlBodyPart();
     if (htmlcontent) {
-        EmailClientApi::NmApiTextContent api_htmlcontent;
-        api_htmlcontent.setContent(htmlcontent->textContent());
-        api_htmlcontent.setId(htmlcontent->partId().id());
-        api_htmlcontent.setContentType(htmlcontent->contentType());
-        api_htmlcontent.setSize(htmlcontent->size());
-        api_message.setHtmlContent(api_htmlcontent);
+        NmApiTextContent apiHtmlContent;
+        apiHtmlContent.setContent(htmlcontent->textContent());
+        apiHtmlContent.setId(htmlcontent->partId().id());
+        apiHtmlContent.setContentType(htmlcontent->contentType());
+        apiHtmlContent.setSize(htmlcontent->size());
+        apiMessage.setHtmlContent(apiHtmlContent);
     }
     
-    return api_message;
+    return apiMessage;
+}
 }
+
+
+
--- a/emailservices/nmutilities/bwins/nmutilitiesu.def	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmutilities/bwins/nmutilitiesu.def	Thu Oct 14 17:33:43 2010 +0300
@@ -1,78 +1,78 @@
 EXPORTS
-	?entryIndex@EmailMRU@@CAHH@Z @ 1 NONAME ; int EmailMRU::entryIndex(int)
-	??0NmContactHistoryModel@@QAE@W4NmContactHistoryModelType@@@Z @ 2 NONAME ; NmContactHistoryModel::NmContactHistoryModel(enum NmContactHistoryModelType)
-	?tr@NmUiEventsNotifier@@SA?AVQString@@PBD0@Z @ 3 NONAME ; class QString NmUiEventsNotifier::tr(char const *, char const *)
-	??0NmUriParser@@QAE@XZ @ 4 NONAME ; NmUriParser::NmUriParser(void)
-	?writeCenRep@EmailMRU@@AAE_NHVQString@@@Z @ 5 NONAME ; bool EmailMRU::writeCenRep(int, class QString)
-	?contactId@NmContactHistoryModelItem@@QBEIXZ @ 6 NONAME ; unsigned int NmContactHistoryModelItem::contactId(void) const
-	?qt_metacall@NmUiEventsNotifier@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 7 NONAME ; int NmUiEventsNotifier::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?appendSubItem@NmContactHistoryModelItem@@QAEXVNmContactHistoryModelSubItem@@@Z @ 8 NONAME ; void NmContactHistoryModelItem::appendSubItem(class NmContactHistoryModelSubItem)
-	?staticMetaObject@NmContactHistoryModel@@2UQMetaObject@@B @ 9 NONAME ; struct QMetaObject const NmContactHistoryModel::staticMetaObject
-	?toAddresses@NmUriParser@@QBE?AVQStringList@@XZ @ 10 NONAME ; class QStringList NmUriParser::toAddresses(void) const
-	?bodyText@NmUriParser@@QBE?AVQString@@XZ @ 11 NONAME ; class QString NmUriParser::bodyText(void) const
-	?entryCount@EmailMRU@@QBEIXZ @ 12 NONAME ; unsigned int EmailMRU::entryCount(void) const
-	?qt_metacall@NmContactHistoryModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 13 NONAME ; int NmContactHistoryModel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	??0NmContactHistoryModelItem@@QAE@XZ @ 14 NONAME ; NmContactHistoryModelItem::NmContactHistoryModelItem(void)
-	?keysEqual@NmUiEventsNotifier@@ABE_NABVXQSettingsKey@@ABVXQPublishAndSubscribeSettingsKey@@@Z @ 15 NONAME ; bool NmUiEventsNotifier::keysEqual(class XQSettingsKey const &, class XQPublishAndSubscribeSettingsKey const &) const
-	?getNextEntryIndex@EmailMRU@@AAEIXZ @ 16 NONAME ; unsigned int EmailMRU::getNextEntryIndex(void)
-	??_ENmContactHistoryModelItem@@UAE@I@Z @ 17 NONAME ; NmContactHistoryModelItem::~NmContactHistoryModelItem(unsigned int)
-	??1EmailMRU@@UAE@XZ @ 18 NONAME ; EmailMRU::~EmailMRU(void)
-	?writeEntry@EmailMRU@@AAE_NHVQString@@0@Z @ 19 NONAME ; bool EmailMRU::writeEntry(int, class QString, class QString)
-	?viewStateChanged@NmUiEventsNotifier@@IAEXW4NmUiEventType@1@W4NmUiViewId@@VNmId@@@Z @ 20 NONAME ; void NmUiEventsNotifier::viewStateChanged(enum NmUiEventsNotifier::NmUiEventType, enum NmUiViewId, class NmId)
-	?trUtf8@NmUiEventsNotifier@@SA?AVQString@@PBD0@Z @ 21 NONAME ; class QString NmUiEventsNotifier::trUtf8(char const *, char const *)
-	?reset@EmailMRU@@QAEXXZ @ 22 NONAME ; void EmailMRU::reset(void)
-	?qt_metacast@NmContactHistoryModel@@UAEPAXPBD@Z @ 23 NONAME ; void * NmContactHistoryModel::qt_metacast(char const *)
-	?parseKeyValue@NmUiEventsNotifier@@ABE_NABVQByteArray@@AAW4NmUiEventType@1@AAW4NmUiViewId@@AAVNmId@@@Z @ 24 NONAME ; bool NmUiEventsNotifier::parseKeyValue(class QByteArray const &, enum NmUiEventsNotifier::NmUiEventType &, enum NmUiViewId &, class NmId &) const
-	??_EEmailMRU@@UAE@I@Z @ 25 NONAME ; EmailMRU::~EmailMRU(unsigned int)
-	?addressKeyByEntryIndex@EmailMRU@@CAHH@Z @ 26 NONAME ; int EmailMRU::addressKeyByEntryIndex(int)
-	?metaObject@NmContactHistoryModel@@UBEPBUQMetaObject@@XZ @ 27 NONAME ; struct QMetaObject const * NmContactHistoryModel::metaObject(void) const
-	??0NmUiEventsNotifier@@QAE@PAVQObject@@@Z @ 28 NONAME ; NmUiEventsNotifier::NmUiEventsNotifier(class QObject *)
+	?extractData@NmUriParser@@QAE_NABVQString@@@Z @ 1 NONAME ; bool NmUriParser::extractData(class QString const &)
+	??0NmUiEventsNotifier@@QAE@PAVQObject@@@Z @ 2 NONAME ; NmUiEventsNotifier::NmUiEventsNotifier(class QObject *)
+	?handleQueryCompleted@NmContactHistoryModel@@AAEXH@Z @ 3 NONAME ; void NmContactHistoryModel::handleQueryCompleted(int)
+	?tr@NmContactHistoryModel@@SA?AVQString@@PBD0H@Z @ 4 NONAME ; class QString NmContactHistoryModel::tr(char const *, char const *, int)
+	?trUtf8@NmUiEventsNotifier@@SA?AVQString@@PBD0@Z @ 5 NONAME ; class QString NmUiEventsNotifier::trUtf8(char const *, char const *)
+	??0EmailMRU@@QAE@XZ @ 6 NONAME ; EmailMRU::EmailMRU(void)
+	?subItemAt@NmContactHistoryModelItem@@QBE?AVNmContactHistoryModelSubItem@@H@Z @ 7 NONAME ; class NmContactHistoryModelSubItem NmContactHistoryModelItem::subItemAt(int) const
+	??1NmContactHistoryModelItem@@UAE@XZ @ 8 NONAME ; NmContactHistoryModelItem::~NmContactHistoryModelItem(void)
+	?addAddressesToList@NmUriParser@@AAEXAAVQString@@AAVQStringList@@@Z @ 9 NONAME ; void NmUriParser::addAddressesToList(class QString &, class QStringList &)
+	??1EmailMailboxInfo@@QAE@XZ @ 10 NONAME ; EmailMailboxInfo::~EmailMailboxInfo(void)
+	?staticMetaObject@NmContactHistoryModel@@2UQMetaObject@@B @ 11 NONAME ; struct QMetaObject const NmContactHistoryModel::staticMetaObject
+	?qt_metacall@NmUiEventsNotifier@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 12 NONAME ; int NmUiEventsNotifier::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?notifyViewStateChanged@NmUiEventsNotifier@@SA_NW4NmUiEventType@1@W4NmUiViewId@@ABVNmId@@@Z @ 13 NONAME ; bool NmUiEventsNotifier::notifyViewStateChanged(enum NmUiEventsNotifier::NmUiEventType, enum NmUiViewId, class NmId const &)
+	??1EmailMRU@@UAE@XZ @ 14 NONAME ; EmailMRU::~EmailMRU(void)
+	?addressKeyByEntryIndex@EmailMRU@@CAHH@Z @ 15 NONAME ; int EmailMRU::addressKeyByEntryIndex(int)
+	??1NmUriParser@@QAE@XZ @ 16 NONAME ; NmUriParser::~NmUriParser(void)
+	?trUtf8@NmContactHistoryModel@@SA?AVQString@@PBD0H@Z @ 17 NONAME ; class QString NmContactHistoryModel::trUtf8(char const *, char const *, int)
+	?reset@EmailMRU@@QAEXXZ @ 18 NONAME ; void EmailMRU::reset(void)
+	?valueChanged@NmUiEventsNotifier@@AAEXABVXQSettingsKey@@ABVQVariant@@@Z @ 19 NONAME ; void NmUiEventsNotifier::valueChanged(class XQSettingsKey const &, class QVariant const &)
+	?appendSubItem@NmContactHistoryModelItem@@QAEXVNmContactHistoryModelSubItem@@@Z @ 20 NONAME ; void NmContactHistoryModelItem::appendSubItem(class NmContactHistoryModelSubItem)
+	?getEntry@EmailMRU@@QAE_NHAAVQString@@0@Z @ 21 NONAME ; bool EmailMRU::getEntry(int, class QString &, class QString &)
+	?getStaticMetaObject@NmUiEventsNotifier@@SAABUQMetaObject@@XZ @ 22 NONAME ; struct QMetaObject const & NmUiEventsNotifier::getStaticMetaObject(void)
+	?writeEntry@EmailMRU@@AAE_NHABVQString@@0@Z @ 23 NONAME ; bool EmailMRU::writeEntry(int, class QString const &, class QString const &)
+	??_ENmUiEventsNotifier@@UAE@I@Z @ 24 NONAME ; NmUiEventsNotifier::~NmUiEventsNotifier(unsigned int)
+	?readCenRep@EmailMRU@@AAE?AVQString@@H@Z @ 25 NONAME ; class QString EmailMRU::readCenRep(int)
+	?subEntries@NmContactHistoryModelItem@@QBE?AV?$QList@VNmContactHistoryModelSubItem@@@@XZ @ 26 NONAME ; class QList<class NmContactHistoryModelSubItem> NmContactHistoryModelItem::subEntries(void) const
+	??1NmContactHistoryModel@@UAE@XZ @ 27 NONAME ; NmContactHistoryModel::~NmContactHistoryModel(void)
+	??0NmContactHistoryModelItem@@QAE@ABV0@@Z @ 28 NONAME ; NmContactHistoryModelItem::NmContactHistoryModelItem(class NmContactHistoryModelItem const &)
 	?bccAddresses@NmUriParser@@QBE?AVQStringList@@XZ @ 29 NONAME ; class QStringList NmUriParser::bccAddresses(void) const
-	?trUtf8@NmUiEventsNotifier@@SA?AVQString@@PBD0H@Z @ 30 NONAME ; class QString NmUiEventsNotifier::trUtf8(char const *, char const *, int)
-	?nameOrder@EmailMRU@@SAHXZ @ 31 NONAME ; int EmailMRU::nameOrder(void)
-	??1NmContactHistoryModel@@UAE@XZ @ 32 NONAME ; NmContactHistoryModel::~NmContactHistoryModel(void)
-	?rowCount@NmContactHistoryModel@@UBEHABVQModelIndex@@@Z @ 33 NONAME ; int NmContactHistoryModel::rowCount(class QModelIndex const &) const
-	?mailboxIcon@EmailMailboxInfo@@QBE?AVQString@@ABV2@@Z @ 34 NONAME ; class QString EmailMailboxInfo::mailboxIcon(class QString const &) const
-	?data@NmContactHistoryModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 35 NONAME ; class QVariant NmContactHistoryModel::data(class QModelIndex const &, int) const
-	?getStaticMetaObject@NmContactHistoryModel@@SAABUQMetaObject@@XZ @ 36 NONAME ; struct QMetaObject const & NmContactHistoryModel::getStaticMetaObject(void)
-	??1NmUiEventsNotifier@@UAE@XZ @ 37 NONAME ; NmUiEventsNotifier::~NmUiEventsNotifier(void)
-	?getEntry@EmailMRU@@QAE_NHAAVQString@@0@Z @ 38 NONAME ; bool EmailMRU::getEntry(int, class QString &, class QString &)
-	?getStaticMetaObject@NmUiEventsNotifier@@SAABUQMetaObject@@XZ @ 39 NONAME ; struct QMetaObject const & NmUiEventsNotifier::getStaticMetaObject(void)
-	?resetData@NmUriParser@@QAEXXZ @ 40 NONAME ; void NmUriParser::resetData(void)
-	?metaObject@NmUiEventsNotifier@@UBEPBUQMetaObject@@XZ @ 41 NONAME ; struct QMetaObject const * NmUiEventsNotifier::metaObject(void) const
-	?searchForAddress@EmailMRU@@AAEHVQString@@@Z @ 42 NONAME ; int EmailMRU::searchForAddress(class QString)
-	?subItemCount@NmContactHistoryModelItem@@QBEHXZ @ 43 NONAME ; int NmContactHistoryModelItem::subItemCount(void) const
-	?setContactId@NmContactHistoryModelItem@@QAEXI@Z @ 44 NONAME ; void NmContactHistoryModelItem::setContactId(unsigned int)
-	?tr@NmUiEventsNotifier@@SA?AVQString@@PBD0H@Z @ 45 NONAME ; class QString NmUiEventsNotifier::tr(char const *, char const *, int)
-	?mailboxName@EmailMailboxInfo@@QBE?AVQString@@ABV2@@Z @ 46 NONAME ; class QString EmailMailboxInfo::mailboxName(class QString const &) const
-	?addAddressesToList@NmUriParser@@AAEXAAVQString@@AAVQStringList@@@Z @ 47 NONAME ; void NmUriParser::addAddressesToList(class QString &, class QStringList &)
-	??_ENmContactHistoryModel@@UAE@I@Z @ 48 NONAME ; NmContactHistoryModel::~NmContactHistoryModel(unsigned int)
-	?tr@NmContactHistoryModel@@SA?AVQString@@PBD0@Z @ 49 NONAME ; class QString NmContactHistoryModel::tr(char const *, char const *)
-	??1NmUriParser@@QAE@XZ @ 50 NONAME ; NmUriParser::~NmUriParser(void)
-	?valueChanged@NmUiEventsNotifier@@AAEXABVXQSettingsKey@@ABVQVariant@@@Z @ 51 NONAME ; void NmUiEventsNotifier::valueChanged(class XQSettingsKey const &, class QVariant const &)
-	?handleQueryCompleted@NmContactHistoryModel@@AAEXH@Z @ 52 NONAME ; void NmContactHistoryModel::handleQueryCompleted(int)
-	?subItemAt@NmContactHistoryModelItem@@QBE?AVNmContactHistoryModelSubItem@@H@Z @ 53 NONAME ; class NmContactHistoryModelSubItem NmContactHistoryModelItem::subItemAt(int) const
-	?subject@NmUriParser@@QBE?AVQString@@XZ @ 54 NONAME ; class QString NmUriParser::subject(void) const
-	?trUtf8@NmContactHistoryModel@@SA?AVQString@@PBD0@Z @ 55 NONAME ; class QString NmContactHistoryModel::trUtf8(char const *, char const *)
-	??0NmContactHistoryModelItem@@QAE@ABV0@@Z @ 56 NONAME ; NmContactHistoryModelItem::NmContactHistoryModelItem(class NmContactHistoryModelItem const &)
-	?moveEntry@EmailMRU@@AAEXHH@Z @ 57 NONAME ; void EmailMRU::moveEntry(int, int)
-	?readCenRep@EmailMRU@@AAE?AVQString@@H@Z @ 58 NONAME ; class QString EmailMRU::readCenRep(int)
-	?staticMetaObject@NmUiEventsNotifier@@2UQMetaObject@@B @ 59 NONAME ; struct QMetaObject const NmUiEventsNotifier::staticMetaObject
-	?trUtf8@NmContactHistoryModel@@SA?AVQString@@PBD0H@Z @ 60 NONAME ; class QString NmContactHistoryModel::trUtf8(char const *, char const *, int)
-	??1NmContactHistoryModelItem@@UAE@XZ @ 61 NONAME ; NmContactHistoryModelItem::~NmContactHistoryModelItem(void)
-	??0EmailMailboxInfo@@QAE@XZ @ 62 NONAME ; EmailMailboxInfo::EmailMailboxInfo(void)
-	??0EmailMRU@@QAE@XZ @ 63 NONAME ; EmailMRU::EmailMRU(void)
-	?query@NmContactHistoryModel@@QAEXABVQString@@@Z @ 64 NONAME ; void NmContactHistoryModel::query(class QString const &)
-	?nameKeyByEntryIndex@EmailMRU@@CAHH@Z @ 65 NONAME ; int EmailMRU::nameKeyByEntryIndex(int)
-	?updateEntry@EmailMRU@@AAE_NHVQString@@@Z @ 66 NONAME ; bool EmailMRU::updateEntry(int, class QString)
-	?qt_metacast@NmUiEventsNotifier@@UAEPAXPBD@Z @ 67 NONAME ; void * NmUiEventsNotifier::qt_metacast(char const *)
-	?modelCompleted@NmContactHistoryModel@@IAEXH@Z @ 68 NONAME ; void NmContactHistoryModel::modelCompleted(int)
-	?updateMRU@EmailMRU@@QAE_NVQString@@0@Z @ 69 NONAME ; bool EmailMRU::updateMRU(class QString, class QString)
-	?notifyViewStateChanged@NmUiEventsNotifier@@SA_NW4NmUiEventType@1@W4NmUiViewId@@ABVNmId@@@Z @ 70 NONAME ; bool NmUiEventsNotifier::notifyViewStateChanged(enum NmUiEventsNotifier::NmUiEventType, enum NmUiViewId, class NmId const &)
-	?tr@NmContactHistoryModel@@SA?AVQString@@PBD0H@Z @ 71 NONAME ; class QString NmContactHistoryModel::tr(char const *, char const *, int)
-	?extractData@NmUriParser@@QAE_NABVQString@@@Z @ 72 NONAME ; bool NmUriParser::extractData(class QString const &)
-	??_ENmUiEventsNotifier@@UAE@I@Z @ 73 NONAME ; NmUiEventsNotifier::~NmUiEventsNotifier(unsigned int)
-	?ccAddresses@NmUriParser@@QBE?AVQStringList@@XZ @ 74 NONAME ; class QStringList NmUriParser::ccAddresses(void) const
-	?subEntries@NmContactHistoryModelItem@@QBE?AV?$QList@VNmContactHistoryModelSubItem@@@@XZ @ 75 NONAME ; class QList<class NmContactHistoryModelSubItem> NmContactHistoryModelItem::subEntries(void) const
-	??1EmailMailboxInfo@@QAE@XZ @ 76 NONAME ; EmailMailboxInfo::~EmailMailboxInfo(void)
+	?nameKeyByEntryIndex@EmailMRU@@CAHH@Z @ 30 NONAME ; int EmailMRU::nameKeyByEntryIndex(int)
+	?tr@NmUiEventsNotifier@@SA?AVQString@@PBD0@Z @ 31 NONAME ; class QString NmUiEventsNotifier::tr(char const *, char const *)
+	?setContactId@NmContactHistoryModelItem@@QAEXI@Z @ 32 NONAME ; void NmContactHistoryModelItem::setContactId(unsigned int)
+	?data@NmContactHistoryModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 33 NONAME ; class QVariant NmContactHistoryModel::data(class QModelIndex const &, int) const
+	??_EEmailMRU@@UAE@I@Z @ 34 NONAME ; EmailMRU::~EmailMRU(unsigned int)
+	?subItemCount@NmContactHistoryModelItem@@QBEHXZ @ 35 NONAME ; int NmContactHistoryModelItem::subItemCount(void) const
+	??0NmContactHistoryModel@@QAE@W4NmContactHistoryModelType@@@Z @ 36 NONAME ; NmContactHistoryModel::NmContactHistoryModel(enum NmContactHistoryModelType)
+	?ccAddresses@NmUriParser@@QBE?AVQStringList@@XZ @ 37 NONAME ; class QStringList NmUriParser::ccAddresses(void) const
+	?tr@NmContactHistoryModel@@SA?AVQString@@PBD0@Z @ 38 NONAME ; class QString NmContactHistoryModel::tr(char const *, char const *)
+	?viewStateChanged@NmUiEventsNotifier@@IAEXW4NmUiEventType@1@W4NmUiViewId@@VNmId@@@Z @ 39 NONAME ; void NmUiEventsNotifier::viewStateChanged(enum NmUiEventsNotifier::NmUiEventType, enum NmUiViewId, class NmId)
+	?qt_metacall@NmContactHistoryModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 40 NONAME ; int NmContactHistoryModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?qt_metacast@NmUiEventsNotifier@@UAEPAXPBD@Z @ 41 NONAME ; void * NmUiEventsNotifier::qt_metacast(char const *)
+	?resetData@NmUriParser@@QAEXXZ @ 42 NONAME ; void NmUriParser::resetData(void)
+	?getStaticMetaObject@NmContactHistoryModel@@SAABUQMetaObject@@XZ @ 43 NONAME ; struct QMetaObject const & NmContactHistoryModel::getStaticMetaObject(void)
+	?bodyText@NmUriParser@@QBE?AVQString@@XZ @ 44 NONAME ; class QString NmUriParser::bodyText(void) const
+	??0EmailMailboxInfo@@QAE@XZ @ 45 NONAME ; EmailMailboxInfo::EmailMailboxInfo(void)
+	?staticMetaObject@NmUiEventsNotifier@@2UQMetaObject@@B @ 46 NONAME ; struct QMetaObject const NmUiEventsNotifier::staticMetaObject
+	?contactId@NmContactHistoryModelItem@@QBEIXZ @ 47 NONAME ; unsigned int NmContactHistoryModelItem::contactId(void) const
+	?metaObject@NmUiEventsNotifier@@UBEPBUQMetaObject@@XZ @ 48 NONAME ; struct QMetaObject const * NmUiEventsNotifier::metaObject(void) const
+	?moveEntry@EmailMRU@@AAEXHH@Z @ 49 NONAME ; void EmailMRU::moveEntry(int, int)
+	?query@NmContactHistoryModel@@QAEXABVQString@@@Z @ 50 NONAME ; void NmContactHistoryModel::query(class QString const &)
+	?keysEqual@NmUiEventsNotifier@@ABE_NABVXQSettingsKey@@ABVXQPublishAndSubscribeSettingsKey@@@Z @ 51 NONAME ; bool NmUiEventsNotifier::keysEqual(class XQSettingsKey const &, class XQPublishAndSubscribeSettingsKey const &) const
+	?searchForAddress@EmailMRU@@AAEHABVQString@@@Z @ 52 NONAME ; int EmailMRU::searchForAddress(class QString const &)
+	?updateEntry@EmailMRU@@AAE_NHABVQString@@@Z @ 53 NONAME ; bool EmailMRU::updateEntry(int, class QString const &)
+	?metaObject@NmContactHistoryModel@@UBEPBUQMetaObject@@XZ @ 54 NONAME ; struct QMetaObject const * NmContactHistoryModel::metaObject(void) const
+	??_ENmContactHistoryModel@@UAE@I@Z @ 55 NONAME ; NmContactHistoryModel::~NmContactHistoryModel(unsigned int)
+	?mailboxIcon@EmailMailboxInfo@@QBE?AVQString@@ABV2@@Z @ 56 NONAME ; class QString EmailMailboxInfo::mailboxIcon(class QString const &) const
+	??0NmUriParser@@QAE@XZ @ 57 NONAME ; NmUriParser::NmUriParser(void)
+	?tr@NmUiEventsNotifier@@SA?AVQString@@PBD0H@Z @ 58 NONAME ; class QString NmUiEventsNotifier::tr(char const *, char const *, int)
+	?writeCenRep@EmailMRU@@AAE_NHABVQString@@@Z @ 59 NONAME ; bool EmailMRU::writeCenRep(int, class QString const &)
+	??1NmUiEventsNotifier@@UAE@XZ @ 60 NONAME ; NmUiEventsNotifier::~NmUiEventsNotifier(void)
+	?trUtf8@NmUiEventsNotifier@@SA?AVQString@@PBD0H@Z @ 61 NONAME ; class QString NmUiEventsNotifier::trUtf8(char const *, char const *, int)
+	?getNextEntryIndex@EmailMRU@@AAEIXZ @ 62 NONAME ; unsigned int EmailMRU::getNextEntryIndex(void)
+	??_ENmContactHistoryModelItem@@UAE@I@Z @ 63 NONAME ; NmContactHistoryModelItem::~NmContactHistoryModelItem(unsigned int)
+	?trUtf8@NmContactHistoryModel@@SA?AVQString@@PBD0@Z @ 64 NONAME ; class QString NmContactHistoryModel::trUtf8(char const *, char const *)
+	?entryCount@EmailMRU@@QBEIXZ @ 65 NONAME ; unsigned int EmailMRU::entryCount(void) const
+	??0NmContactHistoryModelItem@@QAE@XZ @ 66 NONAME ; NmContactHistoryModelItem::NmContactHistoryModelItem(void)
+	?entryIndex@EmailMRU@@CAHH@Z @ 67 NONAME ; int EmailMRU::entryIndex(int)
+	?rowCount@NmContactHistoryModel@@UBEHABVQModelIndex@@@Z @ 68 NONAME ; int NmContactHistoryModel::rowCount(class QModelIndex const &) const
+	?qt_metacast@NmContactHistoryModel@@UAEPAXPBD@Z @ 69 NONAME ; void * NmContactHistoryModel::qt_metacast(char const *)
+	?parseKeyValue@NmUiEventsNotifier@@ABE_NABVQByteArray@@AAW4NmUiEventType@1@AAW4NmUiViewId@@AAVNmId@@@Z @ 70 NONAME ; bool NmUiEventsNotifier::parseKeyValue(class QByteArray const &, enum NmUiEventsNotifier::NmUiEventType &, enum NmUiViewId &, class NmId &) const
+	?toAddresses@NmUriParser@@QBE?AVQStringList@@XZ @ 71 NONAME ; class QStringList NmUriParser::toAddresses(void) const
+	?subject@NmUriParser@@QBE?AVQString@@XZ @ 72 NONAME ; class QString NmUriParser::subject(void) const
+	?mailboxName@EmailMailboxInfo@@QBE?AVQString@@ABV2@@Z @ 73 NONAME ; class QString EmailMailboxInfo::mailboxName(class QString const &) const
+	?modelCompleted@NmContactHistoryModel@@IAEXH@Z @ 74 NONAME ; void NmContactHistoryModel::modelCompleted(int)
+	?nameOrder@EmailMRU@@SAHXZ @ 75 NONAME ; int EmailMRU::nameOrder(void)
+	?updateMRU@EmailMRU@@QAE_NABVQString@@0@Z @ 76 NONAME ; bool EmailMRU::updateMRU(class QString const &, class QString const &)
 
--- a/emailservices/nmutilities/eabi/nmutilitiesu.def	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmutilities/eabi/nmutilitiesu.def	Thu Oct 14 17:33:43 2010 +0300
@@ -45,10 +45,10 @@
 	_ZN25NmContactHistoryModelItemD2Ev @ 44 NONAME
 	_ZN8EmailMRU10entryIndexEi @ 45 NONAME
 	_ZN8EmailMRU10readCenRepEi @ 46 NONAME
-	_ZN8EmailMRU10writeEntryEi7QStringS0_ @ 47 NONAME
-	_ZN8EmailMRU11updateEntryEi7QString @ 48 NONAME
-	_ZN8EmailMRU11writeCenRepEi7QString @ 49 NONAME
-	_ZN8EmailMRU16searchForAddressE7QString @ 50 NONAME
+	_ZN8EmailMRU10writeEntryEiRK7QStringS2_ @ 47 NONAME
+	_ZN8EmailMRU11updateEntryEiRK7QString @ 48 NONAME
+	_ZN8EmailMRU11writeCenRepEiRK7QString @ 49 NONAME
+	_ZN8EmailMRU16searchForAddressERK7QString @ 50 NONAME
 	_ZN8EmailMRU17getNextEntryIndexEv @ 51 NONAME
 	_ZN8EmailMRU19nameKeyByEntryIndexEi @ 52 NONAME
 	_ZN8EmailMRU22addressKeyByEntryIndexEi @ 53 NONAME
@@ -56,7 +56,7 @@
 	_ZN8EmailMRU8getEntryEiR7QStringS1_ @ 55 NONAME
 	_ZN8EmailMRU9moveEntryEii @ 56 NONAME
 	_ZN8EmailMRU9nameOrderEv @ 57 NONAME
-	_ZN8EmailMRU9updateMRUE7QStringS0_ @ 58 NONAME
+	_ZN8EmailMRU9updateMRUERK7QStringS2_ @ 58 NONAME
 	_ZN8EmailMRUC1Ev @ 59 NONAME
 	_ZN8EmailMRUC2Ev @ 60 NONAME
 	_ZN8EmailMRUD0Ev @ 61 NONAME
--- a/emailservices/nmutilities/inc/emailmru.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmutilities/inc/emailmru.h	Thu Oct 14 17:33:43 2010 +0300
@@ -63,7 +63,7 @@
 
     virtual ~EmailMRU();
 
-    bool updateMRU(QString displayName, QString emailAddress);
+    bool updateMRU(const QString &displayName, const QString &emailAddress);
 
     quint32 entryCount() const;
 
@@ -77,11 +77,11 @@
 
     quint32 getNextEntryIndex();
 
-    bool writeCenRep(qint32 index, QString value);
+    bool writeCenRep(qint32 index, const QString &value);
 
     QString readCenRep(qint32 index);
 
-    qint32 searchForAddress(QString address);
+    qint32 searchForAddress(const QString &address);
 
     static qint32 entryIndex(qint32 crKey);
 
@@ -91,9 +91,9 @@
 
     void moveEntry(qint32 oldEntryIndex, qint32 newEntryIndex);
 
-    bool writeEntry(qint32 entryIndex, QString displayName, QString emailAddress);
+    bool writeEntry(qint32 entryIndex, const QString &displayName, const QString &emailAddress);
 
-    bool updateEntry(qint32 entryIndex, QString newDisplayName);
+    bool updateEntry(qint32 entryIndex, const QString &newDisplayName);
 
 private:
 
--- a/emailservices/nmutilities/inc/nmcontacthistorymodel_p.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmutilities/inc/nmcontacthistorymodel_p.h	Thu Oct 14 17:33:43 2010 +0300
@@ -31,7 +31,7 @@
 public:
 
 NmContactHistoryModelItemData() :
-    mContactId(0xDEAD)
+    mContactId(0)
 {
 
 }
@@ -94,6 +94,8 @@
     NmContactHistoryModelType mType;
     QList<NmContactHistoryModelItem> mModelItemList;
     QList< QSharedPointer<NmContactHistoryModelItemData> > mPrivateItemList;
+    
+    
     QContactManager *mContactManager;
     QHash<QString, QString> mMruList;
     QMap<QString, QString> mMruMatches;
--- a/emailservices/nmutilities/src/emailmailboxinfo_p.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmutilities/src/emailmailboxinfo_p.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -128,8 +128,14 @@
     
     QString returnValue = "";
 
-    if (identifier.length() > 0) {
-        processCenRepRecords(identifier);
+    QString domainName = identifier;
+    int delimIndex = domainName.lastIndexOf('@');
+    if(delimIndex >= 0) {
+        domainName = domainName.mid(delimIndex + 1);
+    }
+
+    if (domainName.length() > 0) {
+        processCenRepRecords(domainName);
         returnValue = mTempIcon;
     }
 
--- a/emailservices/nmutilities/src/emailmru.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmutilities/src/emailmru.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -65,7 +65,7 @@
     \param emailAddress
     \return success, was the update operation successful
  */
-bool EmailMRU::updateMRU(QString displayName, QString emailAddress)
+bool EmailMRU::updateMRU(const QString &displayName, const QString &emailAddress)
 {
     NM_FUNCTION;
 
@@ -141,7 +141,7 @@
     \param value what to write
     \return success, whether write operation succeeded
  */
-bool EmailMRU::writeCenRep(qint32 index, QString value)
+bool EmailMRU::writeCenRep(qint32 index, const QString &value)
 {
     NM_FUNCTION;
 
@@ -200,6 +200,7 @@
         entryIndex = crKey/2;
     }
     else {
+        // If not divisible with 2, minus 1 to get correct entry index. 
         entryIndex = (crKey-1)/2;
     }
 
@@ -231,7 +232,7 @@
     \param address to search
     \return entry index of found address, zero if not found
  */
-qint32 EmailMRU::searchForAddress(QString address)
+qint32 EmailMRU::searchForAddress(const QString &address)
 {
     NM_FUNCTION;
 
@@ -275,7 +276,7 @@
     \param newDisplayName
     \return success was update operation successfull
  */
-bool EmailMRU::updateEntry(qint32 entryIndex, QString newDisplayName)
+bool EmailMRU::updateEntry(qint32 entryIndex, const QString &newDisplayName)
 {
     NM_FUNCTION;
 
@@ -286,12 +287,17 @@
     // until we go past the newest entry
     for (qint32 i = entryIndex, j = 0; i != mLatestIndex;) {
         j = i+1;
-        if (j > emailAddressHistorySize) j = 1;
+        
+        if (j > emailAddressHistorySize) {
+            j = 1;
+        }
 
         moveEntry(j, i);
-
         i++;
-        if (i > emailAddressHistorySize) i = 1;
+        
+        if (i > emailAddressHistorySize) {
+            i = 1;
+        }
     }
 
     // Write the updated entry as the newest entry
@@ -305,7 +311,8 @@
     \param emailAddress
     \return success was update operation successfull
  */
-bool EmailMRU::writeEntry(qint32 entryIndex, QString displayName, QString emailAddress)
+bool EmailMRU::writeEntry(qint32 entryIndex, const QString &displayName, 
+                                             const QString &emailAddress)
 {
     NM_FUNCTION;
 
--- a/emailservices/nmutilities/src/nmcontacthistorymodel.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmutilities/src/nmcontacthistorymodel.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -34,7 +34,7 @@
 {
     NM_FUNCTION;
     d_ptr = new NmContactHistoryModelPrivate(modelType);
-
+    
     QObject::connect(d_ptr, SIGNAL(queryCompleted(int)), this,
         SLOT(handleQueryCompleted(int)));
 }
@@ -71,8 +71,7 @@
 
     int lastUpdateIndex = (d_ptr->privateDataCount())-1;
 
-    if (lastUpdateIndex != -1)
-    {
+    if (lastUpdateIndex != -1) {
         // Notify views that we are about to change model data.
         beginInsertRows(QModelIndex(),0,lastUpdateIndex);
         d_ptr->refreshDataModel();
@@ -81,10 +80,14 @@
         // Emit dataChanged();
         bool validIndex = hasIndex ( lastUpdateIndex, 0 );
 
-        if (validIndex)
-        {
+        if (validIndex) {
             emit dataChanged(index(0,0), index(lastUpdateIndex,0));
         }
+           
+    }
+    else if (lastUpdateIndex == -1) {
+        beginResetModel();       
+        endResetModel();
     }
 
     emit modelCompleted(err);
--- a/emailservices/nmutilities/src/nmcontacthistorymodel_p.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmutilities/src/nmcontacthistorymodel_p.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -54,7 +54,7 @@
 
 /*!
     Searches contact & MRU  databases according to query parameters.
-    Emits QueryCompleted() when ready.
+    Emits queryCompleted() when ready.
 
     \param query Text to be searched
     \return none
@@ -81,8 +81,7 @@
 
     int spcPosition = query.indexOf(" ");
 
-    if ( spcPosition != -1 )
-    {
+    if ( spcPosition != -1 ) {
         modifiedQuery = query.left(spcPosition);
     }
 
@@ -99,22 +98,6 @@
     populateListWithContactItems(cnt_ids, modifiedQuery);
 
 
-    #ifdef _DEBUG
-    
-        for (int i = 0; i < mPrivateItemList.size(); i++)
-        {
-            QSharedPointer<NmContactHistoryModelItemData> itemData = mPrivateItemList[i];
-
-            QString dbgString = itemData->mItems[0].mItemText;
-            dbgString.append(" ");
-            dbgString.append(itemData->mItems[1].mItemText);
-
-            qDebug(dbgString.toLatin1());
-        }
-        
-    #endif
-
-
     emit queryCompleted(0);
 }
 
@@ -163,35 +146,29 @@
     NM_FUNCTION;
     bool rVal = false;
     
-    if (mType == EmailAddressModel)
-    {
+    if (mType == EmailAddressModel) {
         bool mruListFilled = fillMruMatchList();
 
-        if (!mruListFilled)
-        {
+        if (!mruListFilled) {
             return rVal;
         }
 
         QHashIterator<QString, QString> i(mMruList);
 
-        while (i.hasNext())
-        {
+        while (i.hasNext()) {
             i.next();
 
             QString address = i.key();
             QString name = i.value();
 
-            if ((name.length() == 0) && (address.contains('@')))
-            {
+            if ((name.length() == 0) && (address.contains('@'))) {
                 name = address.left(address.indexOf("@"));
             }
 
-            if (address.contains(query, Qt::CaseInsensitive))
-            {
+            if (address.contains(query, Qt::CaseInsensitive)) {
                 mMruMatches.insert(name, address);
             }
-            else if (name.contains(query, Qt::CaseInsensitive))
-            {
+            else if (name.contains(query, Qt::CaseInsensitive)) {
                 mMruMatches.insert(name, address);
             }
         }      
@@ -217,8 +194,7 @@
 
     int cntCount = cnt_ids.count();
     // Populate mPrivateItemList with contact items.
-    for ( int cntIndex = 0; cntIndex < cntCount; cntIndex++)
-    {
+    for ( int cntIndex = 0; cntIndex < cntCount; cntIndex++) {
         QContactLocalId cid = cnt_ids.at( cntIndex );
         // Fetch extended contact information from DB by ID
         QContact contact = mContactManager->contact( cid );
@@ -227,9 +203,8 @@
         int numberOfEmails =  contact.details(
             QContactEmailAddress::DefinitionName).count();
 
-        if (numberOfEmails == 0)
-        {
-            continue; // Scotty, I need warp speed.
+        if (numberOfEmails == 0) {
+            continue; 
         }
 
         // Get contact name details
@@ -241,8 +216,7 @@
         QString lastName = contactName.value(
             QContactName::FieldLastName);
 
-        for (int emailIndex = 0; emailIndex < numberOfEmails; emailIndex++)
-        {
+        for (int emailIndex = 0; emailIndex < numberOfEmails; emailIndex++) {
             // For Display name (ex. John Doe)
             NmContactHistoryModelSubItem itemSubItem1;
             // For Email address (ex. john.doe@company.com)
@@ -253,14 +227,12 @@
             // Obey the contacts setting (first name last name order)
             itemSubItem1.mItemText = obeyContactOrder(firstName, lastName);
 
-            if( firstName.indexOf(modifiedQuery, 0, Qt::CaseInsensitive) == 0)
-            {
+            if( firstName.indexOf(modifiedQuery, 0, Qt::CaseInsensitive) == 0) {
                 itemSubItem1.mMatchingRanges.append(0);
                 itemSubItem1.mMatchingRanges.append(queryLength-1);
             }
 
-            if( lastName.indexOf(modifiedQuery, 0, Qt::CaseInsensitive) == 0)
-            {
+            if( lastName.indexOf(modifiedQuery, 0, Qt::CaseInsensitive) == 0) {
                 int indexLN = itemSubItem1.mItemText.indexOf(lastName,
                     firstName.length(),
                     Qt::CaseInsensitive );
@@ -274,15 +246,13 @@
                  QContactEmailAddress::FieldEmailAddress );
 
             if (itemSubItem2.mItemText.indexOf(modifiedQuery, 0,
-                Qt::CaseInsensitive) == 0 )
-            {
+                Qt::CaseInsensitive) == 0 ) {
                 itemSubItem2.mMatchingRanges.append(0);
                 itemSubItem2.mMatchingRanges.append(queryLength-1);
             }
 
             if ((itemSubItem1.mMatchingRanges.count() != 0) ||
-                (itemSubItem2.mMatchingRanges.count() != 0) )
-            {
+                (itemSubItem2.mMatchingRanges.count() != 0) ) {
                 QSharedPointer<NmContactHistoryModelItemData> itemData
                     (new NmContactHistoryModelItemData);
 
@@ -310,8 +280,7 @@
 
     QMapIterator<QString, QString> mruMatch(mMruMatches);
 
-    while (mruMatch.hasNext())
-    {
+    while (mruMatch.hasNext()) {
         mruMatch.next();
         // For Display name (ex. John Doe)
         NmContactHistoryModelSubItem itemSubItem1;
@@ -325,8 +294,7 @@
         itemSubItem2.mItemText = address;
 
         // markup for first item.
-        if( name.indexOf(query, 0, Qt::CaseInsensitive) == 0)
-        {
+        if( name.indexOf(query, 0, Qt::CaseInsensitive) == 0) {
             itemSubItem1.mMatchingRanges.append(0);
             itemSubItem1.mMatchingRanges.append(query.length()-1);
         }
@@ -334,21 +302,17 @@
         QRegExp rx("[,\\s]", Qt::CaseInsensitive);
         bool separatorExists = name.contains(rx);
 
-        if (separatorExists)
-        {
+        if (separatorExists) {
             int indexLN = name.indexOf(",", 0, Qt::CaseInsensitive);
 
-            if (indexLN == -1)
-            {
+            if (indexLN == -1) {
                 indexLN = name.indexOf(" ", 0, Qt::CaseInsensitive);
             }
 
-            if (indexLN > 0)
-            {
+            if (indexLN > 0) {
                 int matchPos = name.indexOf(query, indexLN, Qt::CaseInsensitive);
 
-                if (matchPos > 0)
-                {
+                if (matchPos > 0) {
                     itemSubItem1.mMatchingRanges.append(matchPos);
                     itemSubItem1.mMatchingRanges.append((matchPos+query.length())-1);
                 }
@@ -356,16 +320,14 @@
         }
 
         // markup for second item.
-        if (address.indexOf(query, 0, Qt::CaseInsensitive) == 0 )
-         {
+        if (address.indexOf(query, 0, Qt::CaseInsensitive) == 0 ) {
              itemSubItem2.mMatchingRanges.append(0);
              itemSubItem2.mMatchingRanges.append(query.length()-1);
-         }
+        }
 
         // If match, add to data list.
         if ((itemSubItem1.mMatchingRanges.count() != 0) ||
-            (itemSubItem2.mMatchingRanges.count() != 0) )
-        {
+            (itemSubItem2.mMatchingRanges.count() != 0) ) {
             QSharedPointer<NmContactHistoryModelItemData> itemData
                 (new NmContactHistoryModelItemData);
 
@@ -392,8 +354,7 @@
 
     for (int cntIndex = 0;
              cntIndex < mPrivateItemList.count();
-             cntIndex++)
-    {
+             cntIndex++) {
         // Construct modelItem to be added to list.
         NmContactHistoryModelItem modelItem;
 
@@ -405,8 +366,7 @@
 
         for (int itemIndex = 0;
                  itemIndex < itemData->mItems.count();
-                 itemIndex++)
-        {
+                 itemIndex++) {
             QString key = itemData->mItems[itemIndex].mItemText;
             modelItem.appendSubItem(itemData->mItems[itemIndex]);
         }
@@ -453,25 +413,21 @@
 QVariant NmContactHistoryModelPrivate::data(const QModelIndex &index, int role) const
 {
     NM_FUNCTION;
-
-    if ( mModelReady )
-    {
+    QVariant rVariant = QVariant(); 
+    
+    if ( mModelReady ) {
         if (!index.isValid() ||
             index.row() >= mModelItemList.count() ||
-            index.row() < 0)
-        {
-            return QVariant();
+            index.row() < 0) {
+            rVariant = QVariant();
         }
-        else if (role == Qt::DisplayRole)
-        {
-            QVariant v;
+        else if (role == Qt::DisplayRole) {
             NmContactHistoryModelItem i = mModelItemList.at(index.row());
-            v.setValue(i);
-            return v;
+            rVariant.setValue(i);
         }
     }
 
-    return QVariant();
+    return rVariant;
 }
 
 /*!
@@ -486,31 +442,27 @@
 
     EmailMRU *mru = new EmailMRU();
     bool rVal = false;
+    int updateCount = 0;
 
-    if (mru)
-    {
-        int addressCount = mru->entryCount();
+    int addressCount = mru->entryCount();
 
-        for (int i = addressCount; i > 0; i--)
-        {
-            QString key, value; // "Email or Number" & "Display Name"
-            bool success;
+    for (int i = addressCount; i > 0; i--) {
+        QString key, value; // "Email or Number" & "Display Name"
+        bool success;
 
-            success = mru->getEntry(i, value, key);
+        success = mru->getEntry(i, value, key);
 
-            if (success)
-            {
-                mMruList.insertMulti(key, value);
-            }
+        if (success) {
+            mMruList.insertMulti(key, value);
+            updateCount++;
         }
+    }
 
-        delete mru;
+    delete mru;
+    
+    if (updateCount == addressCount) {
         rVal = true;
-    }
-    else
-    {
-        rVal = false;
-    }
+    } 
 
     return rVal;
 }
@@ -533,22 +485,21 @@
 
     QString result;
 
-    switch (mNameOrder)
-    {
-        case LastNameFirstName:
-            result = lastName + " " + firstName;
+    switch (mNameOrder) {
+    case LastNameFirstName:
+        result = lastName + " " + firstName;
         break;
 
-        case LastNameCommaFirstName:
-            result = lastName + ", " + firstName;
+    case LastNameCommaFirstName:
+        result = lastName + ", " + firstName;
         break;
 
-        case FirstNameLastName:
-            result = firstName + " " + lastName;
+    case FirstNameLastName:
+        result = firstName + " " + lastName;
         break;
 
-        default:
-            result = firstName + " " + lastName;
+    default:
+        result = firstName + " " + lastName;
         break;
     }
 
--- a/emailservices/nmutilities/src/nmcontacthistorymodelitem.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmutilities/src/nmcontacthistorymodelitem.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -28,7 +28,7 @@
 */
 NmContactHistoryModelItem::NmContactHistoryModelItem()
 {
-    d = new NmContactHistoryModelItemData();
+    mItemData = new NmContactHistoryModelItemData();
 }
 
 /*!
@@ -37,7 +37,7 @@
 NmContactHistoryModelItem::NmContactHistoryModelItem(
     const NmContactHistoryModelItem &other)
 {
-    d = other.d;
+    mItemData = other.mItemData;
 }
 
 /*!
@@ -52,7 +52,7 @@
 */
 unsigned int NmContactHistoryModelItem::contactId() const
 {
-    return d->mContactId;
+    return mItemData->mContactId;
 }
 
 /*!
@@ -60,7 +60,7 @@
 */
 void NmContactHistoryModelItem::setContactId(unsigned int contactId)
 {
-    d->mContactId = contactId;
+    mItemData->mContactId = contactId;
 }
 
 /*!
@@ -68,7 +68,7 @@
 */
 int NmContactHistoryModelItem::subItemCount() const
 {
-    return d->mItems.count();
+    return mItemData->mItems.count();
 }
 
 /*!
@@ -77,9 +77,9 @@
 NmContactHistoryModelSubItem NmContactHistoryModelItem::subItemAt(
     int index) const
 {
-    if ( index <= d->mItems.count() )
+    if ( index <= mItemData->mItems.count() )
     {
-        return d->mItems[index];
+        return mItemData->mItems[index];
     }
     else
     {
@@ -99,11 +99,11 @@
 {
     QList<NmContactHistoryModelSubItem> subItemList;
 
-    if (!d->mItems.isEmpty())
+    if (!mItemData->mItems.isEmpty())
     {
-        for ( int subIndex = 0; subIndex < d->mItems.count(); subIndex++)
+        for ( int subIndex = 0; subIndex < mItemData->mItems.count(); subIndex++)
         {
-            subItemList.append(d->mItems[subIndex]);
+            subItemList.append(mItemData->mItems[subIndex]);
         }
     }
 
@@ -118,7 +118,7 @@
 void NmContactHistoryModelItem::appendSubItem(
     NmContactHistoryModelSubItem entry)
 {
-    d->mItems.append(entry);
+    mItemData->mItems.append(entry);
 }
 // --------------------------------------------------------------------------
 // End of implementation (NmContactHistoryModelItem)
--- a/emailuis/nmailui/inc/nmapplication.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailui/inc/nmapplication.h	Thu Oct 14 17:33:43 2010 +0300
@@ -101,7 +101,6 @@
     bool mForegroundService;
     NmUiEffects *mEffects;                  // Owned
     NmAttachmentManager *mAttaManager;      // Owned
-    NmSettingsViewLauncher* mSettingsViewLauncher; // Owned
     bool mViewReady;
     NmId mLastOperationMailbox;
     HbMessageBox *mQueryDialog;             // Owned
--- a/emailuis/nmailui/inc/nmeditorview.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailui/inc/nmeditorview.h	Thu Oct 14 17:33:43 2010 +0300
@@ -82,6 +82,8 @@
     void okToExitQuery(HbAction* action);
     void sendProgressDialogCancelled();
     void safeToDraft();
+    void deleteDraft();
+    void closeView();
     
 protected:
     void resizeEvent(QGraphicsSceneResizeEvent *event);
--- a/emailuis/nmailui/inc/nmuiextensioninterface.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailui/inc/nmuiextensioninterface.h	Thu Oct 14 17:33:43 2010 +0300
@@ -37,6 +37,7 @@
     virtual void getActions(
             const NmActionRequest &request,
             QList<NmAction*> &actionList) = 0;
+    virtual void launchSettings(const NmId &mailboxId) = 0;
 
 };
 
--- a/emailuis/nmailui/inc/nmuiextensionmanager.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailui/inc/nmuiextensionmanager.h	Thu Oct 14 17:33:43 2010 +0300
@@ -38,6 +38,7 @@
     void getActions(
         const NmActionRequest &menuRequest,
         QList<NmAction*> &actionList);
+    void launchSettings(const NmId &mailboxId);
 
 private:
     void loadExtensionPlugins();
--- a/emailuis/nmailui/service_conf.xml	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailui/service_conf.xml	Thu Oct 14 17:33:43 2010 +0300
@@ -9,7 +9,7 @@
     <description>Send interface</description>
     <customproperty key="txt_aiw_action_text">Attach to new email</customproperty>
     <customproperty key="aiw_action_text_file">mail</customproperty>
-    <customproperty key="aiw_action_text">txt_mail_shareui_send_as_mail</customproperty>
+    <customproperty key="aiw_action_text">txt_share_dblist_email</customproperty>
     <customproperty key="aiw_action_icon">qtg_large_email</customproperty>
   </interface>
   <interface>
--- a/emailuis/nmailui/src/nmapplication.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailui/src/nmapplication.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -21,6 +21,7 @@
 static const QString NmSendServiceName = "nmail.com.nokia.symbian.IFileShare";
 static const QString NmActivityName = "EmailInboxView";
 static const int NmErrorNoteDelay = 300000;
+static const qreal NmMinusNinetyDegrees = -90;
 
 /*!
     \class NmApplication
@@ -44,7 +45,6 @@
   mForegroundService(false),
   mEffects(NULL),
   mAttaManager(NULL),
-  mSettingsViewLauncher(NULL),
   mViewReady(false),
   mQueryDialog(NULL),
   mBackButtonPressed(false),
@@ -167,7 +167,6 @@
     delete mEffects;
     delete mMainWindow;
     delete mAttaManager;
-    delete mSettingsViewLauncher;
     delete mActivityStorage;
     delete mActivation;
 }
@@ -253,16 +252,16 @@
 void NmApplication::viewReady()
 {
     mViewReady = true;
-
+    
     if (mViewStack && !mViewStack->isEmpty()) {
     	NmBaseView *currentView = mViewStack->top();
 
         if (currentView) {
             currentView->viewReady();
-            emit applicationReady();
         }
     NM_TIMESTAMP("Application view ready.");
     }
+    emit applicationReady();
 }
 
 
@@ -564,7 +563,7 @@
         	(!startParam->service() || mActiveViewId!=NmUiViewMessageEditor)) {
             
             //startParam pointer is tested before usage below
-            //coverity[deref_arg]
+            //coverity[freed_arg]
             mViewStack->top()->reloadViewContents(startParam);
         }
         else {
@@ -809,16 +808,8 @@
 {
     // Check whether yes button was pressed.
     if (mQueryDialog&& action == mQueryDialog->actions().at(0)) {
-        // Create settingslauncher if doesn't exist.
-        if(!mSettingsViewLauncher) {
-            mSettingsViewLauncher = new NmSettingsViewLauncher();
-            }
-        // Mailboxname required.
-        NmMailboxMetaData *mailboxMetaData = mUiEngine->mailboxById(mLastOperationMailbox); // No ownership.
-        if( mailboxMetaData ) {
-            // Launch.
-            mSettingsViewLauncher->launchSettingsView(mLastOperationMailbox, mailboxMetaData->name());
-        }
+        // Launch.
+        mExtensionManager->launchSettings(mCurrentMailboxId);
     }
 }
 
@@ -861,7 +852,14 @@
             TsTaskSettings tasksettings;
             tasksettings.setVisibility(false);
             QVariantHash metadata;
-            metadata.insert(ActivityScreenshotKeyword, QPixmap::grabWidget(mainWindow(), mainWindow()->rect()));
+            QPixmap screenshot = QPixmap::grabWidget(mainWindow(), mainWindow()->rect());
+            // Landscape needs to be rotated 90 degrees counter-clockwise
+            if (mainWindow()->orientation() == Qt::Horizontal) {
+                QMatrix mat;
+                mat.rotate(NmMinusNinetyDegrees);
+                screenshot = screenshot.transformed(mat);
+            }
+            metadata.insert(ActivityScreenshotKeyword, screenshot);
             metadata.insert(ActivityApplicationName, meta->name());
             metadata.insert(ActivityVisibility, true);
             ok = mActivityStorage->saveActivity(NmActivityName, QVariant(), metadata);
--- a/emailuis/nmailui/src/nmeditorview.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailui/src/nmeditorview.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -91,7 +91,7 @@
 
     // Delete opened temporary files.
     NmUtilities::deleteTempFiles(mTempFiles);
-    
+
     if (mRemoveAttachmentOperation && mRemoveAttachmentOperation->isRunning()) {
         mRemoveAttachmentOperation->cancelOperation();
     }
@@ -140,7 +140,7 @@
 void NmEditorView::loadViewLayout()
 {
     NM_FUNCTION;
-    
+
     // Use the document loader to load the view.
     QObjectList objectList;
     objectList.append(this);
@@ -154,7 +154,7 @@
     mWidgetList = mDocumentLoader->load(NMUI_EDITOR_VIEW_XML, &ok);
 
    if (ok) {
-       mContent = new NmEditorContent(this, mDocumentLoader, 
+       mContent = new NmEditorContent(this, mDocumentLoader,
                                       mApplication.networkAccessManager(),
                                       mApplication);
 
@@ -166,7 +166,7 @@
            NmUiEditorStartMode mode = mStartParam->editorStartMode();
 
            if (mode == NmUiEditorReply ||
-               mode == NmUiEditorReplyAll || 
+               mode == NmUiEditorReplyAll ||
                mode == NmUiEditorForward) {
                mContent->editor()->setCustomTextColor(true, Qt::blue);
            }
@@ -328,13 +328,14 @@
     HbMessageBox *dlg = static_cast<HbMessageBox*>(sender());
     // The first action in dialogs action list is for the "Yes"-button.
     if (action == dlg->actions().at(0)) {
+        connect(&mUiEngine, SIGNAL(draftSaved()),this, SLOT(closeView()));
         safeToDraft();
+    } else {
+        // delete draft now because it is always created in the beginning
+        // of new email creation process
+        connect(&mUiEngine, SIGNAL(draftDeleted()),this, SLOT(closeView()));
+        deleteDraft();
     }
-
-    // Close the view
-    QMetaObject::invokeMethod(&mApplication,
-                              "popView",
-                              Qt::QueuedConnection);
 }
 
 /*!
@@ -345,6 +346,9 @@
     // Update draft message with content.
     updateMessageWithEditorContents();
 
+    // Draft messages are always read.
+    mMessage->envelope().setRead(true);
+
     // Save message to drafts
     QList<NmOperation *> preliminaryOperations;
     if (mAddAttachmentOperation && mAddAttachmentOperation->isRunning()) {
@@ -361,6 +365,25 @@
 }
 
 /*!
+    Public slot to handle draft deletion.
+*/
+void NmEditorView::deleteDraft()
+{
+    // ownership of mMessage is transferred
+    // NmOperations are automatically deleted after completion
+    mUiEngine.removeDraftMessage(mMessage);
+    mMessage = NULL;
+}
+
+void NmEditorView::closeView()
+{
+    // Close the view
+    QMetaObject::invokeMethod(&mApplication,
+                              "popView",
+                              Qt::QueuedConnection);
+}
+
+/*!
     About to exit view. Application calls this function when user has
     pressed back key and editor needs to delete the draft message. This is
     called when "auto-exiting" after a successful mail sending.
@@ -545,7 +568,7 @@
 {
     NM_FUNCTION;
     NM_TIMESTAMP("Start editor.");
-    
+
     NmUiEditorStartMode startMode = startParam.editorStartMode();
     NmId mailboxId = startParam.mailboxId();
     NmId folderId = startParam.folderId();
@@ -583,7 +606,7 @@
                 this,
                 SLOT(messageCreated(int)));
     }
-    
+
     // Set focus
     if (mContent && mContent->header() ) {
         if (startMode == NmUiEditorCreateNew || XQServiceUtil::isEmbedded()) {
@@ -733,7 +756,7 @@
 {
     NM_FUNCTION;
     NM_TIMESTAMP("Editor opened.");
-    
+
     delete mMessage;
     mMessage = NULL;
 
@@ -828,8 +851,8 @@
         toAddressesString = addressListToString(toAddressList);
         ccAddressesString = addressListToString(ccAddressList);
         bccAddressesString = addressListToString(bccAddressList);
-        // Also add recipients added for example from send service 
-        // interface to recipient line edits.        
+        // Also add recipients added for example from send service
+        // interface to recipient line edits.
         mContent->header()->toEdit()->addContacts(toAddressList);
         mContent->header()->ccEdit()->addContacts(ccAddressList);
         mContent->header()->bccEdit()->addContacts(bccAddressList);
@@ -957,7 +980,7 @@
 void NmEditorView::createToolBar()
 {
     NM_FUNCTION;
-    
+
     HbToolBar *tb = toolBar();
     NmUiExtensionManager &extMngr = mApplication.extManager();
 
@@ -972,7 +995,7 @@
                             NmActionContextViewEditor,
                             NmActionContextDataNone,
                             mStartParam->mailboxId(),
-                            mStartParam->folderId()); 
+                            mStartParam->folderId());
     QList<NmAction *> list;
     extMngr.getActions(request, list);
 
@@ -1002,22 +1025,22 @@
             HbListViewItem *listView = mTBExtnContentWidget->listItemPrototype();
             HbFrameBackground frame(NmPopupListFrame, HbFrameDrawer::NinePieces);
             listView->setDefaultFrame(frame);
-            
+
             extension->setContentWidget(mTBExtnContentWidget);
 
             connect(mTBExtnContentWidget, SIGNAL(activated(HbListWidgetItem*)),
                     extension, SLOT(close()));
 
             mAttachmentPicker = new NmAttachmentPicker(this);
-            
+
             connect(mAttachmentPicker, SIGNAL(attachmentsFetchOk(const QVariant &)),
                     this, SLOT(onAttachmentReqCompleted(const QVariant &)));
             connect(this, SIGNAL(titleChanged(QString)),
                     mAttachmentPicker, SLOT(setTitle(QString)));
-            connect(mTBExtnContentWidget, SIGNAL(activated(HbListWidgetItem*)), 
+            connect(mTBExtnContentWidget, SIGNAL(activated(HbListWidgetItem*)),
                     mAttachmentPicker, SLOT (selectFetcher(HbListWidgetItem*)));
         }
-    } // for ()        
+    } // for ()
 }
 
 
@@ -1327,7 +1350,7 @@
 {
     NM_FUNCTION;
     NM_TIMESTAMP("Add attachments.");
-    
+
     // Add attachment name into UI
     foreach (QString fileName, fileNames)  {
         // At this phase attachment size and nmid are not known
@@ -1448,7 +1471,7 @@
 {
     NM_FUNCTION;
     NM_TIMESTAMP("All attachments added.");
-    
+
     enableToolBarAttach(true);
     if (result != NmNoError) {
         NmUtilities::displayWarningNote(hbTrId("txt_mail_dialog_unable_to_add_attachment"));
@@ -1637,11 +1660,6 @@
             NmAction *action = static_cast<NmAction *>(toolbarList[i]);
             if (action->availabilityCondition() == NmAction::NmAttachable) {
                 action->setEnabled(enable);
-                if (enable) {
-                    // For some reason 'Add attachment' toolbar button stays dimmed sometimes,
-                    // showItems will fix the situation.
-                    showItems(Hb::ToolBarItem);
-                }
             }
         }
     }
--- a/emailuis/nmailui/src/nmmessagelistview.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailui/src/nmmessagelistview.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -337,6 +337,7 @@
                                                        mailboxId);
         }
     }
+    NM_TIMESTAMP("Message list view ready.");
 }
 
 
--- a/emailuis/nmailui/src/nmuiextensionmanager.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailui/src/nmuiextensionmanager.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -84,6 +84,20 @@
         interface->getActions(menuRequest, actionList);
     }
 }
+
+/*!
+    Calls all extensions
+ */
+void NmUiExtensionManager::launchSettings(const NmId &mailboxId)
+{
+    NM_FUNCTION;
+    
+    for (int i = 0; i < mExtensions.count(); i++) {
+        NmUiExtensionInterface *interface = mExtensions[i];
+        interface->launchSettings(mailboxId);
+    }
+}
+
 /*!
     Loads plug-ins which implements NmUiExtensionInterface and are registered
     to <code>/resource/qt/plugins/nmail/uiext</code> folder.
--- a/emailuis/nmailui/src/nmviewerheader.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailui/src/nmviewerheader.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -229,7 +229,7 @@
                 envelope.sentTime().addSecs(locale.universalTimeOffset());
             QTime time = localTime.time();
             QDate sentLocalDate = localTime.date();
-            QString shortDateSpec = r_qtn_date_without_year;
+            QString shortDateSpec = r_qtn_date_usual;
             QString shortTimeSpec = r_qtn_time_usual;
             QString text = locale.format(sentLocalDate, shortDateSpec);
             text += " ";
--- a/emailuis/nmailuiengine/bwins/nmailuiengineu.def	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailuiengine/bwins/nmailuiengineu.def	Thu Oct 14 17:33:43 2010 +0300
@@ -239,7 +239,7 @@
 	?tr@NmStoreEnvelopesOperation@@SA?AVQString@@PBD0H@Z @ 238 NONAME ; class QString NmStoreEnvelopesOperation::tr(char const *, char const *, int)
 	?listMailboxes@NmDataManager@@QAEXAAV?$QList@PAVNmMailbox@@@@@Z @ 239 NONAME ; void NmDataManager::listMailboxes(class QList<class NmMailbox *> &)
 	?message@NmUiEngine@@QAEPAVNmMessage@@ABVNmId@@00@Z @ 240 NONAME ; class NmMessage * NmUiEngine::message(class NmId const &, class NmId const &, class NmId const &)
-	?refreshMailbox@NmUiEngine@@QAEHABVNmId@@@Z @ 241 NONAME ; int NmUiEngine::refreshMailbox(class NmId const &)
+	?refreshMailbox@NmUiEngine@@QAEHABVNmId@@_N@Z @ 241 NONAME ; int NmUiEngine::refreshMailbox(class NmId const &, bool)
 	?trUtf8@NmUiEngine@@SA?AVQString@@PBD0@Z @ 242 NONAME ; class QString NmUiEngine::trUtf8(char const *, char const *)
 	?contentToMessagePart@NmUiEngine@@QAEHABVNmId@@00AAVNmMessagePart@@@Z @ 243 NONAME ; int NmUiEngine::contentToMessagePart(class NmId const &, class NmId const &, class NmId const &, class NmMessagePart &)
 	?removeItem@NmMessageListModel@@AAEXHAAVNmMessageListModelItem@@@Z @ 244 NONAME ; void NmMessageListModel::removeItem(int, class NmMessageListModelItem &)
@@ -318,4 +318,6 @@
 	?handleFolderDeletedEvent@NmMessageListModel@@QAEXABVNmId@@0@Z @ 317 NONAME ; void NmMessageListModel::handleFolderDeletedEvent(class NmId const &, class NmId const &)
 	?handleFolderDeletedEvent@NmUiEngine@@AAEXABV?$QList@VNmId@@@@ABVNmId@@@Z @ 318 NONAME ; void NmUiEngine::handleFolderDeletedEvent(class QList<class NmId> const &, class NmId const &)
 	?createMessageListModel@NmUiEngine@@AAEXPAPAVNmMessageListModel@@ABVNmId@@1@Z @ 319 NONAME ; void NmUiEngine::createMessageListModel(class NmMessageListModel * *, class NmId const &, class NmId const &)
+	?draftDeleted@NmUiEngine@@IAEXXZ @ 320 NONAME ; void NmUiEngine::draftDeleted(void)
+	?draftSaved@NmUiEngine@@IAEXXZ @ 321 NONAME ; void NmUiEngine::draftSaved(void)
 
--- a/emailuis/nmailuiengine/eabi/nmailuiengineu.def	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailuiengine/eabi/nmailuiengineu.def	Thu Oct 14 17:33:43 2010 +0300
@@ -14,7 +14,7 @@
 	_ZN10NmUiEngine14folderTypeByIdE4NmIdS0_ @ 13 NONAME
 	_ZN10NmUiEngine14mailboxDeletedERK4NmId @ 14 NONAME
 	_ZN10NmUiEngine14messageDeletedERK4NmIdS2_S2_ @ 15 NONAME
-	_ZN10NmUiEngine14refreshMailboxERK4NmId @ 16 NONAME
+	_ZN10NmUiEngine14refreshMailboxERK4NmIdb @ 16 NONAME
 	_ZN10NmUiEngine14searchCompleteEv @ 17 NONAME
 	_ZN10NmUiEngine14syncStateEventE11NmSyncStateRK4NmId @ 18 NONAME
 	_ZN10NmUiEngine15connectionEventE14NmConnectStateRK4NmId @ 19 NONAME
@@ -325,4 +325,6 @@
 	_ZN10NmUiEngine24handleFolderDeletedEventERK5QListI4NmIdERKS1_ @ 324 NONAME
 	_ZN18NmMessageListModel24handleFolderDeletedEventERK4NmIdS2_ @ 325 NONAME
 	_ZN10NmUiEngine22createMessageListModelEPP18NmMessageListModelRK4NmIdS5_ @ 326 NONAME
+	_ZN10NmUiEngine10draftSavedEv @ 327 NONAME
+	_ZN10NmUiEngine12draftDeletedEv @ 328 NONAME
 
--- a/emailuis/nmailuiengine/inc/nmdataplugininterface.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailuiengine/inc/nmdataplugininterface.h	Thu Oct 14 17:33:43 2010 +0300
@@ -120,7 +120,7 @@
         const NmId &mailbox,
         NmFolderType folderType ) = 0;
     
-    virtual int refreshMailbox(NmId mailboxId) = 0;
+    virtual int refreshMailbox(NmId mailboxId, bool silentConnection) = 0;
     
     virtual int goOnline(const NmId &mailboxId) = 0;
     
--- a/emailuis/nmailuiengine/inc/nmuiengine.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailuiengine/inc/nmuiengine.h	Thu Oct 14 17:33:43 2010 +0300
@@ -126,7 +126,7 @@
 
     int saveMessage(const NmMessage &message);
 
-    int refreshMailbox(const NmId &mailboxId);
+    int refreshMailbox(const NmId &mailboxId, bool silentConnection=false);
 
     int goOnline(const NmId &mailboxId);
 
@@ -218,6 +218,8 @@
     void mailboxDeleted(const NmId &mailboxId);
     void matchFound(const NmId &, const NmId &);
     void searchComplete();
+    void draftSaved();
+    void draftDeleted();
 
 
 private:
--- a/emailuis/nmailuiengine/src/nmmailboxlistmodel.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailuiengine/src/nmmailboxlistmodel.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -113,6 +113,9 @@
         metaData->setAddress(mailbox->address().address());
         entryItem->setItemMetaData(metaData);
     }
+    
+    delete mailbox;
+    mailbox = NULL;
 }
 
 /*!
--- a/emailuis/nmailuiengine/src/nmmessagelistmodel.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailuiengine/src/nmmessagelistmodel.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -659,11 +659,12 @@
         if (changed(*item->envelopePtr(), *newEnvelope)) {
             // function takes envelope ownership 
             item->setEnvelope(newEnvelope);
-        } else {
-            delete newEnvelope;
-            newEnvelope = NULL;
-        }
+            return;
+        }   
     }
+    
+    delete newEnvelope;
+    newEnvelope = NULL;
 }
 
 /*!
--- a/emailuis/nmailuiengine/src/nmuiengine.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailuiengine/src/nmuiengine.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -649,13 +649,13 @@
 /*!
     Refreshes mailbox.
 */
-int NmUiEngine::refreshMailbox(const NmId &mailboxId )
+int NmUiEngine::refreshMailbox(const NmId &mailboxId, bool silentConnection )
 {
     int ret(NmNotFoundError);
     NmDataPluginInterface *plugin =
         mPluginFactory->interfaceInstance(mailboxId);
     if (plugin) {
-        ret = plugin->refreshMailbox(mailboxId);
+        ret = plugin->refreshMailbox(mailboxId, silentConnection);
         if (NmNoError == ret) {
             enableSyncIndicator(true);
         }
@@ -1030,6 +1030,11 @@
 void NmUiEngine::handleCompletedRemoveDraftOperation()
 {
     // draft message deletion observing not yet implemented...
+    if(mDraftMessage) {
+        delete mDraftMessage;
+        mDraftMessage = NULL;
+    }
+    emit draftDeleted();
 }
 
 /*!
@@ -1042,6 +1047,7 @@
         delete mDraftMessage;
         mDraftMessage = NULL;
     }
+    emit draftSaved();
 }
 
 /*!
--- a/emailuis/nmailuiwidgets/bwins/nmailuiwidgetsu.def	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailuiwidgets/bwins/nmailuiwidgetsu.def	Thu Oct 14 17:33:43 2010 +0300
@@ -151,9 +151,10 @@
 	?paint@NmAttachmentListWidget@@UAEXPAVQPainter@@PBVQStyleOptionGraphicsItem@@PAVQWidget@@@Z @ 150 NONAME ; void NmAttachmentListWidget::paint(class QPainter *, class QStyleOptionGraphicsItem const *, class QWidget *)
 	?setHtml@NmHtmlLineEdit@@QAEXABVQString@@@Z @ 151 NONAME ; void NmHtmlLineEdit::setHtml(class QString const &)
 	?insertContactText@NmRecipientLineEdit@@AAEXABVQString@@@Z @ 152 NONAME ; void NmRecipientLineEdit::insertContactText(class QString const &)
-	?gestureEvent@NmRecipientLineEdit@@EAEXPAVQGestureEvent@@@Z @ 153 NONAME ; void NmRecipientLineEdit::gestureEvent(class QGestureEvent *)
+	?gestureEvent@NmRecipientLineEdit@@MAEXPAVQGestureEvent@@@Z @ 153 NONAME ; void NmRecipientLineEdit::gestureEvent(class QGestureEvent *)
 	?handleLongPressed@NmAttachmentListWidget@@AAEXVQPointF@@@Z @ 154 NONAME ; void NmAttachmentListWidget::handleLongPressed(class QPointF)
 	?changeEvent@NmAttachmentListWidget@@MAEXPAVQEvent@@@Z @ 155 NONAME ; void NmAttachmentListWidget::changeEvent(class QEvent *)
 	??1NmRecipientLineEdit@@UAE@XZ @ 156 NONAME ; NmRecipientLineEdit::~NmRecipientLineEdit(void)
 	?moveCursor@NmEditorTextEdit@@QAEXW4MoveOperation@QTextCursor@@W4MoveMode@3@@Z @ 157 NONAME ; void NmEditorTextEdit::moveCursor(enum QTextCursor::MoveOperation, enum QTextCursor::MoveMode)
+	?paste@NmHtmlLineEdit@@QAEXXZ @ 158 NONAME ; void NmHtmlLineEdit::paste(void)
 
--- a/emailuis/nmailuiwidgets/eabi/nmailuiwidgetsu.def	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailuiwidgets/eabi/nmailuiwidgetsu.def	Thu Oct 14 17:33:43 2010 +0300
@@ -186,4 +186,5 @@
 	_ZThn8_N22NmAttachmentListWidgetD0Ev @ 185 NONAME
 	_ZThn8_N22NmAttachmentListWidgetD1Ev @ 186 NONAME
 	_ZN16NmEditorTextEdit10moveCursorEN11QTextCursor13MoveOperationENS0_8MoveModeE @ 187 NONAME
+	_ZN14NmHtmlLineEdit5pasteEv @ 188 NONAME
 
--- a/emailuis/nmailuiwidgets/inc/nmautofilllistviewitem.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailuiwidgets/inc/nmautofilllistviewitem.h	Thu Oct 14 17:33:43 2010 +0300
@@ -35,7 +35,7 @@
 public: // from HbListViewItem
     HbListViewItem *createItem();
     void updateChildItems();
-    bool canSetModelIndex(const QModelIndex &index);
+    bool canSetModelIndex(const QModelIndex &index) const;
 
 private:
     QString setHtmlUnderLine(const NmContactHistoryModelSubItem &subItem);
--- a/emailuis/nmailuiwidgets/inc/nmhtmllineedit.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailuiwidgets/inc/nmhtmllineedit.h	Thu Oct 14 17:33:43 2010 +0300
@@ -46,7 +46,9 @@
 public slots:
     void setPlainText(const QString &text);
     void setHtml(const QString &text);
-
+    // From HbAbstractEdit
+    void paste();
+    
 private:
     qreal mIndent;
 };
--- a/emailuis/nmailuiwidgets/inc/nmrecipientlineedit.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailuiwidgets/inc/nmrecipientlineedit.h	Thu Oct 14 17:33:43 2010 +0300
@@ -48,6 +48,7 @@
 protected:	// from HbLineEdit
     void keyPressEvent(QKeyEvent *event);
     void inputMethodEvent(QInputMethodEvent *event);
+    void gestureEvent(QGestureEvent* event);
 
 private:
     void generateEmailAddressList();
@@ -58,7 +59,6 @@
     void currentTextPart(int& startIndex, int& length);
     void getChosenAddressFromModel(const QModelIndex &modelIndex, NmAddress &address);
     void setHighlight(int currentPos);
-    void gestureEvent(QGestureEvent* event);
     void handleTap();
     void insertContactText(const QString &text);
     void keyPressEventSemicolon(QKeyEvent *event);
--- a/emailuis/nmailuiwidgets/src/nmautofilllistviewitem.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailuiwidgets/src/nmautofilllistviewitem.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -122,7 +122,7 @@
     \param index The model index. 
     \return always true. 
 */
-bool NmAutoFillListViewItem::canSetModelIndex(const QModelIndex &index)
+bool NmAutoFillListViewItem::canSetModelIndex(const QModelIndex &index) const
 {
     NM_FUNCTION;
     
--- a/emailuis/nmailuiwidgets/src/nmhtmllineedit.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailuiwidgets/src/nmhtmllineedit.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -178,3 +178,12 @@
     cursor.mergeBlockFormat(format);
 }
 
+/*!
+    Indention for the first row of the edit field must be set again when
+    pasting text into field.
+ */
+void NmHtmlLineEdit::paste()
+{
+    HbAbstractEdit::paste();
+    setIndentForLabel(mIndent);
+}
--- a/emailuis/nmailuiwidgets/src/nmrecipientlineedit.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmailuiwidgets/src/nmrecipientlineedit.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -380,8 +380,6 @@
     HbLineEdit::gestureEvent(event);
 
     if (HbTapGesture *tap = qobject_cast<HbTapGesture*>(event->gesture(Qt::TapGesture))) {
-        //capturing gesture position, and map to local co-ordinates.
-        QPointF pos = mapFromScene(tap->scenePosition());
 
         switch (tap->state()) {
         case Qt::GestureFinished:
@@ -407,23 +405,21 @@
     int currentPos = cursorPosition();
     QString txt = text();
 
-    QString leftTxt = txt.left(currentPos+2);
+    QString leftTxt = txt.left(currentPos+2); //recipient items delimeter takes 2 characters
     int previousSemicolonIndex = leftTxt.lastIndexOf(NmRecipientLineEditSemicolon,currentPos);
     if ((currentPos>0) &&
        (currentPos==previousSemicolonIndex || currentPos==previousSemicolonIndex+1)) {
+        //do we really need this? currentPos==previousSemicolonIndex 
         //pressed just on seperator
         setCursorPosition(previousSemicolonIndex+2);
     }
-    else
-    {
+    else {
         // pressed in middle of an address
-        setCursorPosition(currentPos);
         if (textCursor().charFormat().fontUnderline()) {
             // This entry is a "contact"
-            setHighlight(currentPos);
+            setHighlight(currentPos); 
         }
     }
-    update();
 }
 
 /*!
@@ -508,15 +504,14 @@
     //if there is no text, hide popup already
     if (document()->isEmpty()) {
         hideAutofillPopup();
+        return; //no need to continue
     }
 
-    if (mContactHistoryModel) {
-        int startPos(-1), length(-1);
-        currentTextPart(startPos, length);
-        QString t = text.mid(startPos, length);
-        if (t.length()) {
-            mContactHistoryModel->query(t);
-        }
+    int startPos(-1), length(-1);
+    currentTextPart(startPos, length);
+    QString t = text.mid(startPos, length);
+    if (t.length()) {
+        mContactHistoryModel->query(t);
     }
 }
 
@@ -590,11 +585,11 @@
     if (item.subItemCount()) {
         QList<NmContactHistoryModelSubItem> itemlist = item.subEntries();
         if (itemlist.count() == 2) {
-            address.setDisplayName(itemlist[0].mItemText);
-            address.setAddress(itemlist[1].mItemText);
+            address.setDisplayName(itemlist[0].mItemText.trimmed());
+            address.setAddress(itemlist[1].mItemText.trimmed());
         } else if (itemlist.count() == 1) {
             // only emailaddress found (no display name)
-            address.setAddress(itemlist[0].mItemText);
+            address.setAddress(itemlist[0].mItemText.trimmed());
         }
     }
 }
@@ -753,8 +748,8 @@
     else {
         deselect();
     }
-
-    update();
+    
+    
 }
 
 /*!
--- a/emailuis/nmframeworkadapter/inc/nmframeworkadapter.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmframeworkadapter/inc/nmframeworkadapter.h	Thu Oct 14 17:33:43 2010 +0300
@@ -122,7 +122,7 @@
             const NmId& mailbox,
             NmFolderType folderType );
 
-    int refreshMailbox(NmId mailboxId);
+    int refreshMailbox(NmId mailboxId, bool silentConnection);
 
     int goOnline(const NmId& mailboxId);
     
@@ -283,7 +283,7 @@
 
     void resetCache(const NmId &mailboxId);
 
-    int RefreshMailboxL(NmId mailboxId);
+    int RefreshMailboxL(NmId mailboxId, bool silentConnection);
     
     int GoOnlineL(const NmId &mailboxId);
 
--- a/emailuis/nmframeworkadapter/inc/nmframeworkadapterheaders.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmframeworkadapter/inc/nmframeworkadapterheaders.h	Thu Oct 14 17:33:43 2010 +0300
@@ -77,6 +77,7 @@
 #include <CFSMailBox.h>
 #include <MFSMailBoxSearchObserver.h>
 #include <MFSMailIterator.h>
+#include <CFSMailIterator.h>
 
 
 
--- a/emailuis/nmframeworkadapter/src/nmframeworkadapter.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmframeworkadapter/src/nmframeworkadapter.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -342,8 +342,8 @@
     NM_TIMESTAMP("ListMessagesL in getMessagesFromFolderL start");   
 
     // Get the message list from the backend.
-    MFSMailIterator* iterator(NULL);
-    iterator = folder->ListMessagesL(details, sorting);
+    CFSMailIterator* iterator(NULL);
+    iterator = static_cast<CFSMailIterator*>(folder->ListMessagesL(details, sorting));
     
     NM_TIMESTAMP("ListMessagesL in getMessagesFromFolderL end");
 
@@ -541,7 +541,7 @@
         CleanupStack::PushL(folder);
         // First prepare all the parameters
         // select message details to be listed
-        TFSMailDetails details(EFSMsgDataEnvelope);
+        TFSMailDetails details(EFSMsgDataStructure);
 
         // set sorting criteria
         TFSMailSortCriteria criteria;
@@ -578,13 +578,16 @@
                 NmMessage* newMessage(NULL);
                 newMessage = messages[i]->GetNmMessage();
                 if (newMessage) {
-					//Add content of message
+                    CleanupStack::PushL(newMessage);                    
+                    //Add content of message
+                    childrenToNmMessagePartL(messages[i], newMessage);                
                     NmMessagePart *plainTextPart = newMessage->plainTextBodyPart();
                     if (plainTextPart) {
                         contentToMessagePart(mailboxId, folderId, newMessage->envelope().messageId(),
                                              *plainTextPart);
                     }
                     messageList.append(newMessage);
+                    CleanupStack::Pop(newMessage);
                 }
             }
 
@@ -960,13 +963,13 @@
     \param mailboxId Id of the mailbox.
     \return Async request id or error code.
  */
-int NmFrameworkAdapter::refreshMailbox(NmId mailboxId)
+int NmFrameworkAdapter::refreshMailbox(NmId mailboxId, bool silentConnection)
 {
     NM_FUNCTION;
 
     resetCache(mailboxId);
 
-    TRAPD(err, RefreshMailboxL(mailboxId)); // return value not used
+    TRAPD(err, RefreshMailboxL(mailboxId, silentConnection)); // return value not used
     return (err == KErrNone) ? NmNoError : NmGeneralError;
 }
 
@@ -1616,9 +1619,10 @@
     NM_FUNCTION;
 
     NmMessage* nmMessage = new(ELeave) NmMessage( envelope );
+    CleanupStack::PushL(nmMessage);
     CFSMailMessage* message = CFSMailMessage::NewL( *nmMessage );
-    delete nmMessage;
-    nmMessage = NULL;
+    CleanupStack::PopAndDestroy(nmMessage);
+    
     return message;
 }
 
@@ -1653,7 +1657,7 @@
 /*!
    Leaving Refresh function
  */
-int NmFrameworkAdapter::RefreshMailboxL(NmId mailboxId)
+int NmFrameworkAdapter::RefreshMailboxL(NmId mailboxId, bool silentConnection)
 {
     NM_FUNCTION;
 
@@ -1662,7 +1666,7 @@
     currentMailbox = mFSfw->GetMailBoxByUidL(mailboxId);
     if(currentMailbox) {
         CleanupStack::PushL(currentMailbox);
-        result = currentMailbox->RefreshNowL();
+        result = currentMailbox->RefreshNowL(silentConnection);
         CleanupStack::PopAndDestroy(currentMailbox);
     }
     return result;
--- a/emailuis/nmframeworkadapter/src/nmfwaaddattachmentsoperation.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmframeworkadapter/src/nmfwaaddattachmentsoperation.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -46,7 +46,7 @@
     for (int i=0; i<fileList.count(); ++i) {
         mFileList.append(fileList.at(i));
     }
-    mFSMessage = CFSMailMessage::NewL(message);
+    TRAP_IGNORE(mFSMessage = CFSMailMessage::NewL(message) );
     mRequestId = NmNotFoundError;
 }
 
--- a/emailuis/nmframeworkadapter/src/nmfwaremoveattachmentoperation.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmframeworkadapter/src/nmfwaremoveattachmentoperation.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -26,6 +26,19 @@
     \sa NmOperation
  */
 
+void ResetAndDestroyArray( TAny* aAny )
+    {
+    RPointerArray<CFSMailMessagePart>* ptrArray =
+            reinterpret_cast<RPointerArray<CFSMailMessagePart>*> (aAny);
+    ptrArray->ResetAndDestroy();
+    }
+
+void CleanupResetAndDestroyPushL( RPointerArray<CFSMailMessagePart>& aArray )
+    {
+    TCleanupItem item( &ResetAndDestroyArray, &aArray );
+    CleanupStack::PushL( item );
+    }
+
 /*!
     Constructor
     
@@ -81,12 +94,12 @@
     NM_FUNCTION;
     
     CFSMailMessage *msg = NULL;
-
     msg = CFSMailMessage::NewL(mMessage);
+    CleanupStack::PushL( msg );
     
     // Get attachment list from the message
     RPointerArray<CFSMailMessagePart> attachments;
-    attachments.Reset();
+    CleanupResetAndDestroyPushL( attachments );
     msg->AttachmentListL(attachments);
         
     // Search through all attachments from message and remove attachment
@@ -99,9 +112,8 @@
             break;
         }
     }
-    attachments.ResetAndDestroy();   
-    delete msg;
-    msg = NULL;
+    
+    CleanupStack::PopAndDestroy( 2, msg ); // attachments, msg
     // if attachment is not found, request to plugin is not made
     // and the operation should be completed here
     if (!found) {
--- a/emailuis/nmhswidget/conf/nmhswidget.docml	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmhswidget/conf/nmhswidget.docml	Thu Oct 14 17:33:43 2010 +0300
@@ -19,8 +19,6 @@
                     <sizepolicy horizontalPolicy="Expanding" horizontalStretch="0" verticalPolicy="Expanding" verticalStretch="0"/>
                     <sizehint height="expr(3*9.75un)" type="PREFERRED" width="46un"/>
                     <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
-                    <enums name="horizontalScrollBarPolicy" value="ScrollBarAlwaysOff"/>
-                    <enums name="verticalScrollBarPolicy" value="ScrollBarAlwaysOff"/>
                     <bool name="longPressEnabled" value="FALSE"/>
                     <enums name="clampingStyle" value="BounceBackClamping"/>
                     <real name="rotation" value="0"/>
--- a/emailuis/nmhswidget/conf/nmhswidgetlistviewitem.css	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmhswidget/conf/nmhswidgetlistviewitem.css	Thu Oct 14 17:33:43 2010 +0300
@@ -23,22 +23,24 @@
 }
 
 NmHsWidgetListViewItem::subject {
-  fixed-height: var(hb-param-text-height-secondary);
-  text-height: var(hb-param-text-height-secondary);
+  min-height:  var(hb-param-text-height-secondary);
+  text-height: var(hb-param-text-height-tiny);
   text-align: left;
-  text-wrap-mode: no-wrap;
+  text-line-count-min:1;
+  text-line-count-max:3;
+  text-wrap-mode:word-wrap;
 }
 
 NmHsWidgetListViewItem::icon1 {
   alignment: right;
-  fixed-height: var(hb-param-graphic-size-secondary);
-  fixed-width: var(hb-param-graphic-size-secondary);
+  max-height: var(hb-param-graphic-size-secondary);
+  max-width: var(hb-param-graphic-size-secondary);
 }
 
 NmHsWidgetListViewItem::icon2 {
   alignment: right;
-  fixed-height: var(hb-param-graphic-size-secondary);
-  fixed-width: var(hb-param-graphic-size-secondary);
+  max-height: var(hb-param-graphic-size-secondary);
+  max-width: var(hb-param-graphic-size-secondary);
 }
 
 NmHsWidgetListViewItem::separator {
--- a/emailuis/nmhswidget/conf/nmhswidgetlistviewitem.widgetml	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmhswidget/conf/nmhswidgetlistviewitem.widgetml	Thu Oct 14 17:33:43 2010 +0300
@@ -15,18 +15,18 @@
              
       <meshitem src="subject" srcEdge="LEFT" dst="" dstEdge="LEFT" spacing="-var(hb-param-margin-gene-left)"/>
       <meshitem src="subject" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" spacing="var(hb-param-margin-gene-middle-vertical)"/>
+      <meshitem src="subject" srcEdge="RIGHT" dst="icon2" dstEdge="LEFT" spacing="var(hb-param-margin-gene-middle-horizontal)"/>
       
       <meshitem src="icon1" srcEdge="CENTERV" dst="subject" dstEdge="CENTERV"/> 
       <meshitem src="icon1" srcEdge="RIGHT" dst="" dstEdge="RIGHT" spacing="var(hb-param-margin-gene-right)"/>    
    
       <meshitem src="icon2" srcEdge="CENTERV" dst="subject" dstEdge="CENTERV"/> 
       <meshitem src="icon2" srcEdge="RIGHT" dst="icon1" dstEdge="LEFT" spacing="var(hb-param-margin-gene-middle-horizontal)"/>
-      <meshitem src="icon2" srcEdge="LEFT" dst="subject" dstEdge="RIGHT" spacing="-var(hb-param-margin-gene-middle-horizontal)"/>       
       
-      <meshitem src="msgicon" srcEdge="TOP" dst="" dstEdge="TOP"/>
-      <meshitem src="msgicon" srcEdge="LEFT" dst="" dstEdge="LEFT"/>
-      <meshitem src="msgicon" srcEdge="RIGHT" dst="sender" dstEdge="LEFT" spacing="var(hb-param-margin-gene-middle-horizontal)"/>
-      <meshitem src="msgicon" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM"/>
+      <meshitem src="msgicon" srcEdge="TOP" dst="separator" dstEdge="BOTTOM" spacing="-0.5un"/>
+      <meshitem src="msgicon" srcEdge="LEFT" dst="" dstEdge="LEFT" spacing="-0.5un"/>
+      <meshitem src="msgicon" srcEdge="RIGHT" dst="sender" dstEdge="LEFT" spacing="0.5un"/>
+      <meshitem src="msgicon" srcEdge="BOTTOM" dst="" dstEdge="BOTTOM" spacing="0.5un"/>
   </layout>
   
 </hbwidget>
\ No newline at end of file
--- a/emailuis/nmhswidget/inc/nmhswidget.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmhswidget/inc/nmhswidget.h	Thu Oct 14 17:33:43 2010 +0300
@@ -19,6 +19,7 @@
 #define NMHSWIDGET_H
 
 #include <hbwidget.h>
+#include <hbeffect.h>
 #include "nmcommon.h"
 
 class NmHsWidgetEmailEngine;
@@ -32,6 +33,7 @@
 class HbListView;
 class NmHsWidgetListModel;
 class QModelIndex;
+class QTimer;
 
 
 class NmHsWidget : public HbWidget
@@ -55,7 +57,6 @@
     void onShow();
     void onHide();
     //engine
-    void updateMailData();
     void onEngineException(const int& exc);
     //properties
     void setAccountId(const QString &text);
@@ -67,8 +68,10 @@
     //user actions
     void handleExpandCollapseEvent();
     
+    void handleMessagesAddedToModel();
     void openMessage(const QModelIndex& index);
-
+    void scrollListToStart();
+    void updateLayout();
 signals: 
     void finished();
     void setPreferences(const QStringList &names);
@@ -81,10 +84,12 @@
     void removeNoMailsLabelFromLayout();
     void addEmailRowsToLayout();
     void removeEmailRowsFromLayout();
-    void updateLayout(const int visibleCount);
     void toggleExpansionState();  
     void createMailRowsList();
 protected:
+    bool event( QEvent *event );
+private slots:
+    void toggleExpansion(const HbEffect::EffectStatus &status);
     
 private:
     //UI components
@@ -105,7 +110,7 @@
     bool mIsExpanded;                       //true when widget expanded, false when collapsed  
     HbListView* mListView;                  //list view for messages 
     NmHsWidgetListModel* mListModel;        //list model for mListView
-    
+    QTimer *mListActivityTimer;             //Timer for delaying activities after list scrolling           
 public:    
     friend class TestNmHsWidget;     
 };
--- a/emailuis/nmhswidget/inc/nmhswidgetconsts.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmhswidget/inc/nmhswidgetconsts.h	Thu Oct 14 17:33:43 2010 +0300
@@ -26,6 +26,11 @@
 const int KMaxNumberOfEnvelopesProvided = 99;
 //Maximum value for unread count
 const int KMaxUnreadCount = 999; 
+//Delay before scrolling message list to first item after scrolling has ended
+const int KNmHsWidgetDelayAfterScrollingEnded = 10000;
+//Time parameter used for the automatic scrolling 
+//(how long the scrolling will last)
+const int KListScrollUpTime = 500;
 
 /**************************************************
  * nmhswidget
--- a/emailuis/nmhswidget/inc/nmhswidgetemailengine.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmhswidget/inc/nmhswidgetemailengine.h	Thu Oct 14 17:33:43 2010 +0300
@@ -27,9 +27,8 @@
 class QPluginLoader;
 class QTimer;
 class XQAiwRequest;
+class NmHsWidgetListModel;
 
-//Three seconds
-const int NmHsWidgetEmailEngineUpdateTimerValue = 3000;
 
 enum NmHsWidgetEmailEngineExceptionCode
     {
@@ -42,11 +41,10 @@
     Q_OBJECT
     
 public:
-    NmHsWidgetEmailEngine( const NmId& monitoredMailboxId );
+    NmHsWidgetEmailEngine( const NmId& monitoredMailboxId);
     bool initialize(); 
     ~NmHsWidgetEmailEngine();
 
-    int getEnvelopes(QList<NmMessageEnvelope*> &list, int maxEnvelopeAmount);
     int unreadCount();
     QString accountName();
     void deleteAiwRequest();
@@ -69,38 +67,49 @@
     //Activity control
     void suspend();
     void activate();
+    void forceUpdate();
+
     void launchMailAppInboxView();
     void launchMailAppMailViewer(const NmId &messageId);
-    void handleUpdateTimeout();
     
     void aiwRequestOk(const QVariant& result);
     void aiwRequestError(int errorCode, const QString& errorMessage);
     
 signals:
-    void mailDataChanged();    
+    //all mail data was refreshed (list contains all items)
+    void mailDataRefreshed(const QList<NmMessageEnvelope*>&);   
+    //all mail data was cleared
+    void mailDataCleared();
+    //new mails received (list contains the only items)
+    void mailsReceived(const QList<NmMessageEnvelope*>&);
+    //mail items updated (list contains changed items)
+    void mailsUpdated(const QList<NmMessageEnvelope*>&);
+    //mails deleted (list contains the id's of the deleted items)
+    void mailsDeleted(const QList<NmId>&);
+    
     void accountNameChanged(const QString& accountName);
     void unreadCountChanged(const int& unreadCount);
     void exceptionOccured(const int& err);
-    
+
 private:
     bool constructNmPlugin();
     bool updateData(); 
+    bool updateUnreadCount();
     bool updateAccount();
-    void resetEnvelopeList();
+    QList<NmMessageEnvelope*> getEnvelopesFromIds(const QList<NmId> messageIds);
+    NmMessageEnvelope* envelopeById(const NmId &messageId);
     
 private:
     NmId mMailboxId;
     NmId mFolderId;
     QString mAccountName;
     int mUnreadCount;
-    QList<NmMessageEnvelope*> mEnvelopeList;
     NmDataPluginInterface *mEmailInterface;
     NmDataPluginFactory* mFactory;
     //suspension variables
-    bool mAccountEventReceivedWhenSuspended;
-    bool mMessageEventReceivedWhenSuspended;
+    bool mAccountDataNeedsUpdate;
+    bool mMessageDataNeedsUpdate;
     bool mSuspended; 
-    QTimer* mUpdateTimer;
     XQAiwRequest* mAiwRequest;
     };
 
--- a/emailuis/nmhswidget/inc/nmhswidgetlistmodel.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmhswidget/inc/nmhswidgetlistmodel.h	Thu Oct 14 17:33:43 2010 +0300
@@ -22,6 +22,7 @@
 
 class NmMessageEnvelope;
 class NmHsWidgetListModelItem;
+class NmId;
 
 class NmHsWidgetListModel : public QStandardItemModel
 {
@@ -31,13 +32,22 @@
     NmHsWidgetListModel(QObject *parent = 0);
     virtual ~NmHsWidgetListModel();
     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
-    void refresh(QList<NmMessageEnvelope*> &mailboxList);
 
+    
 public slots:
+    void refresh(const QList<NmMessageEnvelope*> &messageEnvs);
+    void addMessages(const QList<NmMessageEnvelope*> &messageEnvs);
+    void updateMessages(const QList<NmMessageEnvelope*> &messageEnvs);
+    void removeMessages(const QList<NmId> &messageIds);
+    void removeAllMessages();
+
+signals:
+    void messagesAddedToModel(); //emitted only when single items are inserted to model
+    void modelIsEmpty(bool isEmpty);
 
 private:
     NmHsWidgetListModelItem *createMessageListModelItem(const NmMessageEnvelope* env);
-
+    int getInsertionIndex(const NmMessageEnvelope &envelope) const;
 };
 
 #endif /* NMHSWIDGETLISTMODEL_H_ */
--- a/emailuis/nmhswidget/inc/nmhswidgetlistviewitem.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmhswidget/inc/nmhswidgetlistviewitem.h	Thu Oct 14 17:33:43 2010 +0300
@@ -47,6 +47,7 @@
     void setContentsToMessageItem(const NmMessageEnvelope &envelope);
     void setFontsRead();
     void setFontsUnread();
+    bool event( QEvent *event );
  
 private:
     HbIconItem *mSeparator;   // Owned
--- a/emailuis/nmhswidget/inc/nmhswidgettitlerow.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmhswidget/inc/nmhswidgettitlerow.h	Thu Oct 14 17:33:43 2010 +0300
@@ -19,6 +19,7 @@
 #define NMHSWIDGETTITLEROW_H_
 
 #include <hbwidget.h>
+#include <hbeffect.h>
 
 //FORWARD DECLARATIONS:
 class HbLabel;
@@ -44,12 +45,14 @@
     bool loadDocML(HbDocumentLoader &loader);
     bool setupGraphics();
     void updateData();
-    void setHighlighedFontsColor( bool pressed );
-    void showHighlight( bool pressed );
+    void setFontsColor();
     
 public slots: 
     void updateAccountName(const QString& accountName );
     void updateUnreadCount(const int& unreadCount );
+    
+private slots:
+    void hideHighlight(const HbEffect::EffectStatus &status);
 
 signals:
     void expandCollapseButtonPressed();
--- a/emailuis/nmhswidget/resources/nmhswidget.manifest	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmhswidget/resources/nmhswidget.manifest	Thu Oct 14 17:33:43 2010 +0300
@@ -2,6 +2,6 @@
 <hswidgetmanifest>
     <uri>nmhswidget</uri>
     <title>nmhswidget</title>
-    <hidden>false</hidden>
+    <hidden>true</hidden>
     <servicexml>nmhswidget.xml</servicexml>
 </hswidgetmanifest>
--- a/emailuis/nmhswidget/sis/nmhswidget.pkg	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmhswidget/sis/nmhswidget.pkg	Thu Oct 14 17:33:43 2010 +0300
@@ -17,7 +17,7 @@
 &EN
 
 ; Package header
-#{"NmHsWidget Installation package"}, (0x2002DD15), 1, 0, 0
+#{"NmHsWidget Installation package"}, (0x2002DD15), 1, 1, 0, TYPE=SA, RU
 
 ;Localised Vendor name
 %{"Nokia"}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/nmhswidget/sis/nmhswidget_udeb.pkg	Thu Oct 14 17:33:43 2010 +0300
@@ -0,0 +1,145 @@
+;
+; 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: 
+;
+;Language - standard language definitions
+&EN
+
+; Package header
+#{"NmHsWidget Installation package"}, (0x2002DD15), 1, 1, 0, TYPE=SA, RU
+
+;Localised Vendor name
+%{"Nokia"}
+
+;Unique Vendor name
+:"Nokia"
+
+;notify HS about new provider - keep this always as a first item
+"..\resources\nmhswidget.manifest"               						- "!:\private\20022F35\import\widgetregistry\2002DD15\nmhswidget.manifest",FM,"application\hs-widget-uninstall+xml",RR,RW
+
+;nmhswidget
+"\epoc32\release\armv5\udeb\nmhswidget.dll"									- "!:\sys\bin\nmhswidget.dll"
+"\epoc32\data\z\resource\qt\plugins\nmhswidget.qtplugin"		- "!:\private\20022F35\import\widgetregistry\2002DD15\nmhswidget.qtplugin"
+"\epoc32\data\z\private\2002DD15\nmhswidget.xml"						- "!:\private\20022F35\import\widgetregistry\2002DD15\nmhswidget.xml"
+"..\resources\nmhswidget.manifest"               						- "!:\private\20022F35\import\widgetregistry\2002DD15\nmhswidget.manifest"
+"\epoc32\data\z\resource\qt\translations\mailwidget_ar.qm"	- "!:\resource\qt\translations\mailwidget_ar.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_bg.qm"	- "!:\resource\qt\translations\mailwidget_bg.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_ca.qm"	- "!:\resource\qt\translations\mailwidget_ca.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_cs.qm"	- "!:\resource\qt\translations\mailwidget_cs.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_da.qm"	- "!:\resource\qt\translations\mailwidget_da.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_de.qm"	- "!:\resource\qt\translations\mailwidget_de.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_el.qm"	- "!:\resource\qt\translations\mailwidget_el.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_en.qm"	- "!:\resource\qt\translations\mailwidget_en.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_en_US.qm"	- "!:\resource\qt\translations\mailwidget_en_US.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_es.qm"	- "!:\resource\qt\translations\mailwidget_es.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_es_419.qm"	- "!:\resource\qt\translations\mailwidget_es_419.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_et.qm"	- "!:\resource\qt\translations\mailwidget_et.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_eu.qm"	- "!:\resource\qt\translations\mailwidget_eu.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_fa.qm"	- "!:\resource\qt\translations\mailwidget_fa.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_fi.qm"	- "!:\resource\qt\translations\mailwidget_fi.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_fr.qm"	- "!:\resource\qt\translations\mailwidget_fr.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_fr_CA.qm"	- "!:\resource\qt\translations\mailwidget_fr_CA.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_gl.qm"	- "!:\resource\qt\translations\mailwidget_gl.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_he.qm"	- "!:\resource\qt\translations\mailwidget_he.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_hi.qm"	- "!:\resource\qt\translations\mailwidget_hi.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_hr.qm"	- "!:\resource\qt\translations\mailwidget_hr.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_hu.qm"	- "!:\resource\qt\translations\mailwidget_hu.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_id.qm"	- "!:\resource\qt\translations\mailwidget_id.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_is.qm"	- "!:\resource\qt\translations\mailwidget_is.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_it.qm"	- "!:\resource\qt\translations\mailwidget_it.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_ja.qm"	- "!:\resource\qt\translations\mailwidget_ja.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_ko.qm"	- "!:\resource\qt\translations\mailwidget_ko.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_lt.qm"	- "!:\resource\qt\translations\mailwidget_lt.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_lv.qm"	- "!:\resource\qt\translations\mailwidget_lv.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_ms.qm"	- "!:\resource\qt\translations\mailwidget_ms.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_nb.qm"	- "!:\resource\qt\translations\mailwidget_nb.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_nl.qm"	- "!:\resource\qt\translations\mailwidget_nl.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_pl.qm"	- "!:\resource\qt\translations\mailwidget_pl.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_pt.qm"	- "!:\resource\qt\translations\mailwidget_pt.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_pt_BR.qm"	- "!:\resource\qt\translations\mailwidget_pt_BR.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_ro.qm"	- "!:\resource\qt\translations\mailwidget_ro.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_ru.qm"	- "!:\resource\qt\translations\mailwidget_ru.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_sk.qm"	- "!:\resource\qt\translations\mailwidget_sk.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_sl.qm"	- "!:\resource\qt\translations\mailwidget_sl.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_sr.qm"	- "!:\resource\qt\translations\mailwidget_sr.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_sv.qm"	- "!:\resource\qt\translations\mailwidget_sv.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_th.qm"	- "!:\resource\qt\translations\mailwidget_th.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_tl.qm"	- "!:\resource\qt\translations\mailwidget_tl.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_tr.qm"	- "!:\resource\qt\translations\mailwidget_tr.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_uk.qm"	- "!:\resource\qt\translations\mailwidget_uk.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_ur.qm"	- "!:\resource\qt\translations\mailwidget_ur.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_vi.qm"	- "!:\resource\qt\translations\mailwidget_vi.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_zh.qm"	- "!:\resource\qt\translations\mailwidget_zh.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_zh_HK.qm"	- "!:\resource\qt\translations\mailwidget_zh_HK.qm"
+"\epoc32\data\z\resource\qt\translations\mailwidget_zh_TW.qm"	- "!:\resource\qt\translations\mailwidget_zh_TW.qm"
+
+
+;nmregister
+"\epoc32\release\armv5\udeb\nmregister.dll"									- "!:\sys\bin\nmregister.dll"
+"\epoc32\data\z\private\2002DD16\nmregister.xml"						- "!:\private\2002DD16\import\nmregister.xml"
+"\epoc32\data\z\resource\qt\plugins\nmregister.qtplugin"		- "!:\resource\qt\plugins\nmregister.qtplugin"
+"\epoc32\data\z\resource\qt\translations\nmregister_ar.qm"	- "!:\resource\qt\translations\nmregister_ar.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_bg.qm"	- "!:\resource\qt\translations\nmregister_bg.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_ca.qm"	- "!:\resource\qt\translations\nmregister_ca.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_cs.qm"	- "!:\resource\qt\translations\nmregister_cs.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_da.qm"	- "!:\resource\qt\translations\nmregister_da.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_de.qm"	- "!:\resource\qt\translations\nmregister_de.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_el.qm"	- "!:\resource\qt\translations\nmregister_el.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_en.qm"	- "!:\resource\qt\translations\nmregister_en.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_en_US.qm"	- "!:\resource\qt\translations\nmregister_en_US.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_es.qm"	- "!:\resource\qt\translations\nmregister_es.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_es_419.qm"	- "!:\resource\qt\translations\nmregister_es_419.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_et.qm"	- "!:\resource\qt\translations\nmregister_et.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_eu.qm"	- "!:\resource\qt\translations\nmregister_eu.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_fa.qm"	- "!:\resource\qt\translations\nmregister_fa.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_fi.qm"	- "!:\resource\qt\translations\nmregister_fi.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_fr.qm"	- "!:\resource\qt\translations\nmregister_fr.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_fr_CA.qm"	- "!:\resource\qt\translations\nmregister_fr_CA.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_gl.qm"	- "!:\resource\qt\translations\nmregister_gl.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_he.qm"	- "!:\resource\qt\translations\nmregister_he.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_hi.qm"	- "!:\resource\qt\translations\nmregister_hi.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_hr.qm"	- "!:\resource\qt\translations\nmregister_hr.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_hu.qm"	- "!:\resource\qt\translations\nmregister_hu.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_id.qm"	- "!:\resource\qt\translations\nmregister_id.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_is.qm"	- "!:\resource\qt\translations\nmregister_is.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_it.qm"	- "!:\resource\qt\translations\nmregister_it.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_ja.qm"	- "!:\resource\qt\translations\nmregister_ja.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_ko.qm"	- "!:\resource\qt\translations\nmregister_ko.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_lt.qm"	- "!:\resource\qt\translations\nmregister_lt.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_lv.qm"	- "!:\resource\qt\translations\nmregister_lv.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_ms.qm"	- "!:\resource\qt\translations\nmregister_ms.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_nb.qm"	- "!:\resource\qt\translations\nmregister_nb.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_nl.qm"	- "!:\resource\qt\translations\nmregister_nl.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_pl.qm"	- "!:\resource\qt\translations\nmregister_pl.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_pt.qm"	- "!:\resource\qt\translations\nmregister_pt.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_pt_BR.qm"	- "!:\resource\qt\translations\nmregister_pt_BR.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_ro.qm"	- "!:\resource\qt\translations\nmregister_ro.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_ru.qm"	- "!:\resource\qt\translations\nmregister_ru.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_sk.qm"	- "!:\resource\qt\translations\nmregister_sk.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_sl.qm"	- "!:\resource\qt\translations\nmregister_sl.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_sr.qm"	- "!:\resource\qt\translations\nmregister_sr.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_sv.qm"	- "!:\resource\qt\translations\nmregister_sv.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_th.qm"	- "!:\resource\qt\translations\nmregister_th.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_tl.qm"	- "!:\resource\qt\translations\nmregister_tl.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_tr.qm"	- "!:\resource\qt\translations\nmregister_tr.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_uk.qm"	- "!:\resource\qt\translations\nmregister_uk.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_ur.qm"	- "!:\resource\qt\translations\nmregister_ur.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_vi.qm"	- "!:\resource\qt\translations\nmregister_vi.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_zh.qm"	- "!:\resource\qt\translations\nmregister_zh.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_zh_HK.qm"	- "!:\resource\qt\translations\nmregister_zh_HK.qm"
+"\epoc32\data\z\resource\qt\translations\nmregister_zh_TW.qm"	- "!:\resource\qt\translations\nmregister_zh_TW.qm"
+
+
+;installer
+"\epoc32\release\armv5\udeb\nmregisterinstaller.exe"				- "!:\sys\bin\nmregisterinstaller.exe", FR, RB, RW
\ No newline at end of file
--- a/emailuis/nmhswidget/src/nmhswidget.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmhswidget/src/nmhswidget.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -17,6 +17,7 @@
 #include <QtGui>
 #include <QTranslator>
 #include <QGraphicsLinearLayout>
+#include <QTimer>
 #include <hbcolorscheme.h>
 #include <hbdocumentloader.h>
 #include <hbframedrawer.h>
@@ -25,6 +26,8 @@
 #include <hbstyleloader.h>
 #include <hblistview.h>
 #include <hbdeviceprofile.h>
+#include <hbevent.h>
+
 #include "nmcommon.h"
 #include "nmmessageenvelope.h"
 #include "nmhswidget.h"
@@ -54,7 +57,8 @@
       mDateObserver(0),
       mIsExpanded(false),
       mListView(0),
-	  mListModel(0)
+	  mListModel(0),
+	  mListActivityTimer(0)
 {
     NM_FUNCTION;
 }
@@ -77,6 +81,12 @@
 
     delete mDateObserver;
     mDateObserver = NULL;
+     
+    if (mListActivityTimer){
+        mListActivityTimer->stop();
+        delete mListActivityTimer;
+        mListActivityTimer = NULL;
+    }
 }
 
 /*!
@@ -223,7 +233,11 @@
     HbFrameItem* backgroundLayoutItem = new HbFrameItem(mBackgroundFrameDrawer);
     //set to NULL to indicate that ownership transferred
     mBackgroundFrameDrawer = NULL;
-    mWidgetContainer->setBackgroundItem(backgroundLayoutItem);
+    mContentContainer->setBackgroundItem(backgroundLayoutItem);
+	
+	HbEffect::add(mContentContainer, "combo_disappear_up", "collapse");
+    HbEffect::add(mContentContainer, "combo_appear_down", "expand");
+    
 }
 
 /*!
@@ -232,13 +246,27 @@
 void NmHsWidget::createMailRowsList()
 {
 	  NM_FUNCTION;
-    connect(mListView, SIGNAL(activated(const QModelIndex&)), this,
+
+    //construct list model
+    mListModel = new NmHsWidgetListModel(); 
+    
+	//Connect item activation (click) to message view launching
+	connect(mListView, SIGNAL(activated(const QModelIndex&)), this,
         SLOT(openMessage(const QModelIndex&)));
-
+        
+    //When new mails arrive, scroll list to the start
+    connect(mListModel, SIGNAL( messagesAddedToModel() ), 
+        this, SLOT( handleMessagesAddedToModel() ));
+    
+    //connect item removal signal to update layout, so that nomailslabel & listview visibility
+    //can be determined
+    connect(mListModel, SIGNAL( modelIsEmpty(bool) ), 
+            this, SLOT( updateLayout() ));
+    
     // Set the list widget properties.
+    mListView->setItemRecycling(false);  //This should be changed in future
     NmHsWidgetListViewItem *prototype = new NmHsWidgetListViewItem(mListView);
     mListView->setItemPrototype(prototype);
-    mListModel = new NmHsWidgetListModel();
     mListView->setModel(mListModel);  
 }
 
@@ -252,7 +280,6 @@
     NM_FUNCTION;
     
     QT_TRY {
-    
 	    HbStyleLoader::registerFilePath(":/layout/nmhswidgetlistviewitem.widgetml");
 	    HbStyleLoader::registerFilePath(":/layout/nmhswidgetlistviewitem.css");
 	    
@@ -279,8 +306,21 @@
 				
         setupUi();
 
+        //Crete list for mail items
+        createMailRowsList();        
+
         //Engine construction is 2 phased. 
         mEngine = new NmHsWidgetEmailEngine(mAccountId);
+        connect(mEngine,    SIGNAL( mailDataRefreshed(const QList<NmMessageEnvelope*>&) ), 
+                mListModel, SLOT  ( refresh          (const QList<NmMessageEnvelope*>&) ));
+        connect(mEngine,    SIGNAL( mailDataCleared() ), 
+                mListModel, SLOT  ( removeAllMessages() ));
+        connect(mEngine,    SIGNAL( mailsReceived (const QList<NmMessageEnvelope*>&) ), 
+                mListModel, SLOT  ( addMessages   (const QList<NmMessageEnvelope*>&) ));
+        connect(mEngine,    SIGNAL( mailsUpdated  (const QList<NmMessageEnvelope*>&) ), 
+                mListModel, SLOT  ( updateMessages(const QList<NmMessageEnvelope*>&) ));
+        connect(mEngine,    SIGNAL( mailsDeleted  (const QList<NmId>&)), 
+                mListModel, SLOT  ( removeMessages(const QList<NmId>&) ));
         //Client must connect to exception signals before calling the initialize function
         //because we don't want to miss any signals.
         connect(mEngine, SIGNAL( exceptionOccured(const int&) ), this,
@@ -298,17 +338,23 @@
         //create observer for date/time change events
         mDateObserver = new NmHsWidgetDateTimeObserver();
 
-      	//Crete list for mail items
-        createMailRowsList();
-
-        updateMailData();
+        //Create timer for delaying events after list scrolling is ended
+        mListActivityTimer = new QTimer(this);
+        mListActivityTimer->setInterval(KNmHsWidgetDelayAfterScrollingEnded);
+        connect(mListActivityTimer, SIGNAL(timeout()), this, SLOT(scrollListToStart()) );
+        //Connect scrolling ended to scrolling timer activation
+        //so that after timeout the list will be scrolled to first item
+        connect(mListView, SIGNAL( scrollingEnded() ), 
+                mListActivityTimer, SLOT( start() ));
+        
+        //if timer is running, stop it right away when new activity happens
+        connect(mListView, SIGNAL( scrollingStarted() ), 
+                mListActivityTimer, SLOT( stop() ));
+        
         mTitleRow->updateUnreadCount(mEngine->unreadCount());
         mTitleRow->setAccountIcon(mAccountIconName);
         mTitleRow->setExpandCollapseIcon(mIsExpanded);
-
-        //Get signals about changes in mail data
-        connect(mEngine, SIGNAL( mailDataChanged() ), this, SLOT( updateMailData() ));
-
+       
         //Get Signals about changes in unread count
         connect(mEngine, SIGNAL( unreadCountChanged(const int&) )
                 ,mTitleRow, SLOT( updateUnreadCount(const int&) ) );
@@ -327,7 +373,8 @@
 	    
 	    //Get date/time events from date observer
 	    connect(mDateObserver, SIGNAL(dateTimeChanged())
-	            , this, SLOT(updateMailData()));
+	            , mEngine, SLOT(forceUpdate()));
+	    
 	    setMinimumSize(mTitleRow->minimumWidth(), 
 	            mEmptySpaceContainer->minimumHeight() + mTitleRow->minimumHeight());
     }
@@ -349,25 +396,6 @@
     HbStyleLoader::unregisterFilePath(":/layout/nmhswidgetlistviewitem.css");
 }
 
-/*!
- updateMailData slot
- */
-void NmHsWidget::updateMailData()
-{
-    NM_FUNCTION;
-    QT_TRY {
-        QList<NmMessageEnvelope*> envelopes; 
-        int count = 0;
-        if (mIsExpanded) {
-            count = mEngine->getEnvelopes(envelopes, KMaxNumberOfMailsShown);
-        }
-        mListModel->refresh( envelopes );
-        updateLayout(count);
-    }QT_CATCH(...) {
-           NM_ERROR(1,"NmHsWidget::updateMailData fail @ catch");
-           emit error();
-    }
-}
 
 /*!
  Sets monitored account id from given string
@@ -423,7 +451,13 @@
 void NmHsWidget::handleExpandCollapseEvent()
 {
     NM_FUNCTION;
-    toggleExpansionState();
+    if(mIsExpanded){
+        HbEffect::start( mContentContainer, "collapse", this, "toggleExpansion");
+    }
+    else{
+        toggleExpansionState();
+        HbEffect::start( mContentContainer, "expand");
+    }
 }
 
 /*!
@@ -442,7 +476,7 @@
     emit setPreferences(propertiesList);
 
     //handle state change drawing
-    updateMailData();
+    updateLayout();
 
     mTitleRow->setExpandCollapseIcon(mIsExpanded);
 }
@@ -486,10 +520,10 @@
  than zero, layout will contain titlerow and KMaxNumberOfMailsShown times
  emailrow(s)
  */
-void NmHsWidget::updateLayout(const int mailCount)
+void NmHsWidget::updateLayout()
 {
     NM_FUNCTION;
-    
+    int mailCount = mListModel->rowCount();
 	//collapsed size
     qreal totalHeight = mEmptySpaceContainer->preferredHeight() + mTitleRow->containerHeight();
     
@@ -583,12 +617,48 @@
  */
 void NmHsWidget::openMessage(const QModelIndex& index)
 {
-     QVariant var = mListModel->data(index,Qt::DisplayRole);
-     if(!var.isNull()){
-         NmMessageEnvelope *envelope = var.value<NmMessageEnvelope*>();
-         mEngine->launchMailAppMailViewer(envelope->messageId());
-     }
+    NM_FUNCTION;
+    QVariant var = mListModel->data(index,Qt::DisplayRole);
+    if(!var.isNull()){
+        NmMessageEnvelope *envelope = var.value<NmMessageEnvelope*>();
+        mEngine->launchMailAppMailViewer(envelope->messageId());
+    }
+}
 
+/*!
+ handleMessagesAddedToModel slo
+ Slot is called when new messages is added to model. This function should scroll 
+ the list right away to the first item, unless there is user activity ongoing or
+ the scrolling timer is active
+ */
+void NmHsWidget::handleMessagesAddedToModel()
+{
+    NM_FUNCTION;
+    if(mListActivityTimer->isActive() || mListView->isScrolling()){
+        //No need to scroll right away as user is active and we don't want to interupt it
+        //or the scrolling event will occur within KNmHsWidgetDelayAfterScrollingEnded msecs.
+        return; 
+    }else{
+        //if the list is idle, scroll to the first item
+        scrollListToStart();
+    }
+}
+
+/*!
+ scrollListToStart slot - Scrolls the mListView to the beginning of the list with
+ KListScrollUpTime as a time to do it.
+ */
+void NmHsWidget::scrollListToStart()
+{
+    NM_FUNCTION;
+    QModelIndex index = (mListModel->item(0,0))->index();
+    //next line will fail if item recycling is enabled!!
+    QPointF pos = (mListView->itemByIndex(index))->pos();
+    if(mListView->contentWidget()->pos() != pos){
+        //dont move if already there. Otherwise new scrolling events are emitted
+        mListView->scrollContentsTo(pos, KListScrollUpTime);
+    }
+    mListActivityTimer->stop(); //stop the timer
 }
 
 /*!
@@ -610,3 +680,32 @@
             break;
     }
 }
+
+/*!
+    toggleExpansion
+*/
+void NmHsWidget::toggleExpansion(const HbEffect::EffectStatus &status)
+    {
+    NM_FUNCTION;
+
+    Q_UNUSED(status);
+    
+    toggleExpansionState();
+    }
+
+
+/*
+ * NmHsWidget::event()
+ */
+bool NmHsWidget::event( QEvent *event )
+{
+    NM_FUNCTION;
+    QEvent::Type eventType = event->type();
+    if( eventType == HbEvent::ThemeChanged ){
+        QColor newFontColor;
+        newFontColor = HbColorScheme::color("qtc_hs_list_item_content_normal");
+        mNoMailsLabel->setTextColor(newFontColor);
+        return true;
+    }
+    return HbWidget::event(event);
+}
--- a/emailuis/nmhswidget/src/nmhswidgetemailengine.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmhswidget/src/nmhswidgetemailengine.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -26,10 +26,12 @@
 #include "nmhswidgetemailengine.h"
 #include "nmdataplugininterface.h"
 #include "nmmailbox.h"
+#include "nmmessage.h"
 #include "nmfolder.h"
 #include "nmdatapluginfactory.h"
 #include "nmhswidgetconsts.h"
 #include "emailtrace.h"
+#include "nmhswidgetlistmodel.h"
 
 /*!
  Constructor
@@ -41,10 +43,9 @@
     mUnreadCount(-1),
     mEmailInterface(0),
     mFactory(0),
-    mAccountEventReceivedWhenSuspended(false),
-    mMessageEventReceivedWhenSuspended(false),
+    mAccountDataNeedsUpdate(false),
+    mMessageDataNeedsUpdate(false),
     mSuspended(false),
-    mUpdateTimer(0),
     mAiwRequest(0)
 {
     NM_FUNCTION;
@@ -65,12 +66,9 @@
         return false;
     }
     updateData();
+    updateUnreadCount();
     updateAccount();
 
-    mUpdateTimer = new QTimer(this);
-    mUpdateTimer->setInterval(NmHsWidgetEmailEngineUpdateTimerValue);
-    connect(mUpdateTimer, SIGNAL(timeout()), this, SLOT(handleUpdateTimeout()) );
-
     return true;
 }
 
@@ -140,18 +138,6 @@
     return true;
 }
 
-/*!
- Reset envelope list
- \post mEnvelopeList.isEmpty() == true && all contained objects are deleted
- */
-void NmHsWidgetEmailEngine::resetEnvelopeList()
-{
-    NM_FUNCTION;
-
-    while (!mEnvelopeList.isEmpty()) {
-        delete mEnvelopeList.takeFirst();
-    }
-}
 
 /*!
  Destructor
@@ -160,33 +146,12 @@
 {
     NM_FUNCTION;
 
-    resetEnvelopeList();
     if (mFactory) {
         NmDataPluginFactory::releaseInstance(mFactory);
     }
 
-    if (mUpdateTimer){
-        mUpdateTimer->stop();
-        delete mUpdateTimer;
-    }
 }
 
-/*!
- getEnvelopes() provides message envelopes as a list of stack objects
- Amount of message envelopes in the list parameter is the smallest of the following factors:
- 'KMaxNumberOfEnvelopesProvided', 'maxEnvelopeAmount', 'amount of available envelopes'.
-
- \param list list to be filled with message envelopes
- \param maxEnvelopeAmount Client side limit for amount of message envelope count.
- \return count of envelopes added to list
- */
-int NmHsWidgetEmailEngine::getEnvelopes(QList<NmMessageEnvelope*> &list, int maxEnvelopeAmount)
-{
-    NM_FUNCTION;
-    list.clear(); //Reset the parameter list to avoid side effects
-    list.append(mEnvelopeList.mid(0, maxEnvelopeAmount));
-    return list.count();
-}
 
 /*!
  UnreadCount
@@ -210,38 +175,9 @@
     return mAccountName;
 }
 
-/*!
- Refresh email data.
- \post mEnvelopeList is refreshed with valid content so that it has
-       valid data with maximum of KMaxNumberOfEnvelopesProvided envelopes.
 
- - emits exceptionOccured(NmEngineExcFailure) if fatal error occurs.
- - emits mailDataChanged() if new mail data is set into mEnvelopeList
- - emits unreadCountChanged(mUnreadCount), if mUnreadCount is updated
-
- \return true if everything succeeded, otherwise false
- */
-bool NmHsWidgetEmailEngine::updateData()
+bool NmHsWidgetEmailEngine::updateUnreadCount()
 {
-    NM_FUNCTION;
-    if (!mEmailInterface) {
-        NM_ERROR(1,"NmHsWidgetEmailEngine::updateData() -- Interface missing");
-        emit exceptionOccured(NmEngineExcFailure); //fatal error
-        return false; //if interface is missing there's nothing to do
-    }
-
-    //reset envelope list before retrieving new items
-    resetEnvelopeList();
-
-    //get messages from inbox
-    int msgErr = mEmailInterface->listMessages(mMailboxId, mFolderId, mEnvelopeList,
-        KMaxNumberOfEnvelopesProvided);
-    if (msgErr) {
-        //retrieval of messages failed.
-        return false;
-    }
-    //emit signal about new message data right away
-    emit mailDataChanged();
     //retrieve new unread count to mUnreadCount
     NmFolder* folder = NULL;
     int folderErr = mEmailInterface->getFolderById(mMailboxId, mFolderId, folder);
@@ -251,7 +187,7 @@
     }
     if (folder) {
         //If messageCount in the folder is zero we must indicate unread count to be -1
-        if (mEnvelopeList.count() == 0) {
+        if (folder->messageCount() == 0) {
             mUnreadCount = -1;
         }
         else {
@@ -271,6 +207,42 @@
     return true;
 }
 
+
+/*!
+ * TODO: UPDATE THIS
+ Refresh email data. 
+ \post mEnvelopeList is refreshed with valid content so that it has
+       valid data with maximum of KMaxNumberOfEnvelopesProvided envelopes.
+
+ - emits exceptionOccured(NmEngineExcFailure) if fatal error occurs.
+ - emits mailDataChanged() if new mail data is set into mEnvelopeList
+ - emits unreadCountChanged(mUnreadCount), if mUnreadCount is updated
+
+ \return true if everything succeeded, otherwise false
+ */
+bool NmHsWidgetEmailEngine::updateData()
+{
+    NM_FUNCTION;
+    if (!mEmailInterface) {
+        NM_ERROR(1,"NmHsWidgetEmailEngine::updateData() -- Interface missing");
+        emit exceptionOccured(NmEngineExcFailure); //fatal error
+        return false; //if interface is missing there's nothing to do
+    }
+
+    QList<NmMessageEnvelope*> envelopeList;
+    //get messages from inbox
+    int msgErr = mEmailInterface->listMessages(mMailboxId, mFolderId, envelopeList,
+        KMaxNumberOfEnvelopesProvided);
+    if (msgErr) {
+        //retrieval of messages failed.
+        return false;
+    }
+    //emit signal about new message data right away
+	emit mailDataRefreshed(envelopeList);
+
+    return true;
+}
+
 /*!
  handleMessageEvent slot.
  */
@@ -281,8 +253,6 @@
     const NmId& mailboxId)
 {
     NM_FUNCTION;
-    Q_UNUSED(event);
-    Q_UNUSED(messageIds);
 
     if (!mEmailInterface) {
         NM_ERROR(1,"NmHsWidgetEmailEngine::handleMessageEvent() -- Interface missing");
@@ -297,17 +267,71 @@
     }
     if ((folderId == mFolderId) && (mailboxId == mMailboxId)) {
         //Data is updated only if the engine is not suspended
+
         if (mSuspended) {
-            mMessageEventReceivedWhenSuspended = true;
+            mMessageDataNeedsUpdate = true;
+            return; //no further actions
         }
-        else {
-            //start or restart the timer. Update is started when timer expires
-            mUpdateTimer->start();
+        updateUnreadCount();        
+        switch(event){
+            case(NmMessageCreated):
+                    emit mailsReceived(getEnvelopesFromIds(messageIds));
+                    break;
+            case(NmMessageChanged):
+                    emit mailsUpdated(getEnvelopesFromIds(messageIds));
+                    break;
+            case(NmMessageDeleted):
+                    emit mailsDeleted(messageIds);
+                    break;
+        }
+
+    }
+}
+
+QList<NmMessageEnvelope*> NmHsWidgetEmailEngine::getEnvelopesFromIds(const QList<NmId> messageIds)
+{
+    NM_FUNCTION;
+    QList<NmMessageEnvelope*> ret;
+    foreach(NmId id, messageIds){
+        NmMessageEnvelope *msgEnvelope = NULL;
+        msgEnvelope = envelopeById(id);
+        if(msgEnvelope){
+            ret.append(msgEnvelope);
         }
     }
+    return ret;
 }
 
 /*!
+    Get new NmMessageEnvelope object by id \a messageId from any folder.
+    Ownership is transferred to the caller. NULL pointer is returned if
+    message id is not found.
+ */
+NmMessageEnvelope *NmHsWidgetEmailEngine::envelopeById(const NmId &messageId)
+{
+    NM_FUNCTION;
+    
+    NmMessageEnvelope *msgEnvelope(NULL);
+    NmMessage *newMessageObject(NULL);
+    int retVal(NmNotFoundError);
+    
+    retVal = mEmailInterface->getMessageById(mMailboxId, mFolderId, messageId, newMessageObject);
+    if (retVal < NmNoError || !newMessageObject) {
+        // Return null object if fetching failed
+        delete newMessageObject;
+        newMessageObject = NULL;
+        return NULL;
+    }
+
+    msgEnvelope = new NmMessageEnvelope(newMessageObject->envelope());
+
+    delete newMessageObject;
+    newMessageObject = NULL;
+    return msgEnvelope;
+}
+
+
+/*!
  handleFolderEvent slot.
  If the monitored folder is deleted, clear the envelope list and unread count.
  Also the mFolderId is set to 0 to indicate the current state so that in device boot up
@@ -321,10 +345,9 @@
     //react only if the monitored folder for monitored account is deleted
     if (event == NmFolderIsDeleted && mailboxId == mMailboxId && folderIds.contains(mFolderId) )
     {
-        resetEnvelopeList();    //cached envelopes to be cleared
+        emit mailDataCleared(); //emit mail data clearance
         mUnreadCount = 0;       //unread count to 0
         mFolderId = NmId(0);    //folder id to zero (indicates the situation where folder is not available)
-        emit mailDataChanged(); //emit data change for UI
         emit unreadCountChanged(mUnreadCount); // emit unread count change to UI
     }
 }
@@ -340,7 +363,7 @@
         switch (event) {
             case (NmMailboxChanged): {
                 if (mSuspended) {
-                    mAccountEventReceivedWhenSuspended = true;
+                    mAccountDataNeedsUpdate = true;
                 }
                 else {
                     updateAccount();
@@ -358,17 +381,6 @@
     }
 }
 
-/*!
- * handleUpdateTimeout slot
- */
-void NmHsWidgetEmailEngine::handleUpdateTimeout()
-{
-    NM_FUNCTION;
-    if (mUpdateTimer){
-        mUpdateTimer->stop();
-    }
-    updateData();
-}
 
 /*!
  Update Account data
@@ -396,6 +408,22 @@
     return true;
 }
 
+
+/*!
+ forceUpdate slot.
+ \post If engine is not suspended, this will force full update immediately.
+ */
+void NmHsWidgetEmailEngine::forceUpdate()
+{
+    NM_FUNCTION;
+    if(mSuspended){
+        mMessageDataNeedsUpdate = true; //this is enough to force update when activated
+    }else{
+        updateData();
+        updateUnreadCount();
+    }
+}
+
 /*!
  suspend slot.
  \post engine will not emit signals or refresh its data during suspension.
@@ -415,16 +443,18 @@
 {
     NM_FUNCTION;
     mSuspended = false;
-    if (mAccountEventReceivedWhenSuspended) {
-        mAccountEventReceivedWhenSuspended = false;
+    if (mAccountDataNeedsUpdate) {
+        mAccountDataNeedsUpdate = false;
         updateAccount();
     }
-    if (mMessageEventReceivedWhenSuspended) {
-        mMessageEventReceivedWhenSuspended = false;
+    if (mMessageDataNeedsUpdate) {
+        mMessageDataNeedsUpdate = false;
         updateData();
+        updateUnreadCount();
     }
 }
 
+
 /*!
  launchMailAppInboxView slot.
  \post Mail application is launched to inbox view corresponding widget's mailbox id
--- a/emailuis/nmhswidget/src/nmhswidgetlistmodel.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmhswidget/src/nmhswidgetlistmodel.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -66,22 +66,6 @@
     return qVariant;
 }
 
-/*!
-    This refreshes the data of the model.
-    NOTE: safe guard any call to this function with try-catch.
- */
-void NmHsWidgetListModel::refresh(
-        QList<NmMessageEnvelope*> &envelopeList)
-{
-    NM_FUNCTION;
-    
-    clear();
-    foreach(NmMessageEnvelope *env, envelopeList){
-       NmHsWidgetListModelItem *item = createMessageListModelItem(env);
-       appendRow(item);
-    }
-}
-
 
 /*!
     Create mailbox item
@@ -97,3 +81,136 @@
     item->setData(Hb::StandardItem, Hb::ItemTypeRole);
     return item;
 }
+
+
+/*!
+    Function determines model index in which the new message should be inserted.
+*/
+int NmHsWidgetListModel::getInsertionIndex(
+    const NmMessageEnvelope &envelope) const
+{
+    NM_FUNCTION;
+   
+   int ret(NmNotFoundError);
+   
+   // Date+descending sort mode based comparison.
+   // Go through model and compare sent times with QDateTime >= comparison operation.
+   QList<QStandardItem*> items = findItems("*", Qt::MatchWildcard | Qt::MatchRecursive);
+   int count(items.count());
+   bool found(false);
+   int i(0);
+   while (i < count && !found) {
+       QModelIndex index = items[i]->index();
+       NmHsWidgetListModelItem *item = static_cast<NmHsWidgetListModelItem*>(itemFromIndex(index));
+       found = envelope.sentTime() >= item->itemMetaData()->sentTime();
+       if (found) {
+           ret = i;
+       }
+       i++;
+    }
+   if (0 == count) {
+       ret = NmNoError;
+   }
+   items.clear();
+   return ret;
+}
+
+
+/*!
+    Inserts given messages into the model
+*/
+void NmHsWidgetListModel::addMessages(const QList<NmMessageEnvelope*> &messageEnvs)
+{
+    NM_FUNCTION;
+    int orig_count = rowCount();
+    foreach(NmMessageEnvelope* env, messageEnvs){
+        int insertionIndex = getInsertionIndex(*env);
+        NmHsWidgetListModelItem *newItem = createMessageListModelItem(env);
+        insertRow(insertionIndex, newItem);
+    }
+
+    if( !messageEnvs.isEmpty() ){
+        if (orig_count == 0){
+            emit modelIsEmpty(false);
+        }
+        emit messagesAddedToModel(); //emit messages added to model 
+    }
+}
+
+/*!
+    This refreshes the data of the model.
+    NOTE: safe guard any call to this function with try-catch.
+ */
+void NmHsWidgetListModel::refresh(const QList<NmMessageEnvelope*> &envelopeList)
+{
+    NM_FUNCTION;
+    
+    clear();
+    foreach(NmMessageEnvelope *env, envelopeList){
+       NmHsWidgetListModelItem *item = createMessageListModelItem(env);
+       appendRow(item);
+    }
+    
+    //As we refresh all data, emit signal in any case
+    if( rowCount() == 0 ){
+        emit modelIsEmpty(true);
+    }else{
+        emit modelIsEmpty(false);
+    }
+}
+
+/*!
+    Updates existing messages in model with given envelopes
+*/
+void NmHsWidgetListModel::updateMessages(const QList<NmMessageEnvelope*> &messageEnvs)
+{
+    NM_FUNCTION; 
+    QList<QStandardItem*> modelItemList = findItems("*", Qt::MatchWildcard | Qt::MatchRecursive);
+    foreach(NmMessageEnvelope *env, messageEnvs){
+        foreach (QStandardItem *it, modelItemList){
+            QModelIndex index = it->index();
+            NmHsWidgetListModelItem *item = static_cast<NmHsWidgetListModelItem*>(itemFromIndex(index));
+            if (env->messageId() == item->itemMetaData()->messageId()) {
+                item->setItemMetaData(env);
+                break;
+            }
+        }
+    }
+}
+
+
+/*!
+    Removes the given messages from the model
+*/
+void NmHsWidgetListModel::removeMessages(const QList<NmId> &messageIds)
+{
+    NM_FUNCTION; 
+    foreach(NmId msgId, messageIds){
+        //lets refresh the item list every time, so that it really is up to date after each iteration 
+        //(and the count stays valid!)
+        QList<QStandardItem*> modelItemList = findItems("*", Qt::MatchWildcard | Qt::MatchRecursive);
+        foreach(QStandardItem *it, modelItemList){
+            QModelIndex index = it->index();
+            NmHsWidgetListModelItem *item = static_cast<NmHsWidgetListModelItem*>(itemFromIndex(index));
+            if (msgId == item->itemMetaData()->messageId()) {
+                removeRow(index.row());
+                break;
+            }
+        }
+    }
+    
+    //if model is empty after removing messages, signal it.
+    if( rowCount() == 0 ){
+        emit modelIsEmpty(true);  
+    }
+    
+}
+
+/*!
+    Clears the model and emits modelIsEmpty signal
+*/
+void  NmHsWidgetListModel::removeAllMessages()
+{
+    clear();
+    emit modelIsEmpty(true);
+}
--- a/emailuis/nmhswidget/src/nmhswidgetlistviewitem.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmhswidget/src/nmhswidgetlistviewitem.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -22,6 +22,7 @@
 #include <hbframebackground.h>
 #include <hbextendedlocale.h>
 #include <hbcolorscheme.h>
+#include <hbevent.h>
 #include <nmmessageenvelope.h>
 #include <nmicons.h>
 #include <hbstringutil.h>
@@ -161,14 +162,21 @@
     QDateTime localTime = envelope.sentTime().addSecs(locale.universalTimeOffset());
     QDate sentLocalDate = localTime.date();
     QDate currentdate = QDate::currentDate();
+    QString timeString;
     if (sentLocalDate == currentdate) {
         QString shortTimeSpec = r_qtn_time_usual;
         QTime time = localTime.time();
-        mTime->setText(HbStringUtil::convertDigits(locale.format(time, shortTimeSpec)));
+        timeString = HbStringUtil::convertDigits(locale.format(time, shortTimeSpec));
     } else {
         QString shortDateSpec = r_qtn_date_without_year;
-        mTime->setText(HbStringUtil::convertDigits(locale.format(sentLocalDate, shortDateSpec)));
+        timeString = HbStringUtil::convertDigits(locale.format(sentLocalDate, shortDateSpec));
     }
+    //shrink/expand the date field, so that sender field is as large as possible
+    QFontMetrics fm(mTime->font());
+    qreal textWidth = fm.width(timeString);
+    mTime->setMaximumWidth(textWidth);
+    mTime->setText(timeString);
+    
     // Subject.
     QString subjectText = envelope.subject();
     if (subjectText.length()) {
@@ -184,6 +192,7 @@
     //make sure icons are not shown yet
     for (int i = 0; i < mStatusIcons.count(); i++) {
         mStatusIcons.at(i)->hide();
+        mStatusIcons.at(i)->setPreferredWidth(0); //Do not consume space!
     }
     
     // Priority icon is added to list first thus it is always shown most right.
@@ -209,6 +218,7 @@
     for (int count = 0; count < iconList.count(); count++) {
         mStatusIcons.at(count)->setIcon(iconList.at(count));
         mStatusIcons.at(count)->show();
+        mStatusIcons.at(count)->setMinimumWidth(mStatusIcons.at(count)->maximumWidth());
     }
     
     // Message read status.
@@ -254,7 +264,7 @@
 void  NmHsWidgetListViewItem::setFontsUnread()
 {
     NM_FUNCTION;
-    static QColor colorRole = HbColorScheme::color("qtc_list_item_title_normal");
+    QColor colorRole = HbColorScheme::color("qtc_hs_list_item_title_normal");
     HbFontSpec fontSpec(HbFontSpec::Primary);
     setFonts(colorRole, fontSpec);
 }
@@ -265,7 +275,7 @@
 void  NmHsWidgetListViewItem::setFontsRead()
 {
     NM_FUNCTION;
-    static QColor colorRole = HbColorScheme::color("qtc_list_item_content_normal");
+    QColor colorRole = HbColorScheme::color("qtc_hs_list_item_content_normal");
     HbFontSpec fontSpec(HbFontSpec::Secondary);
     setFonts(colorRole, fontSpec);
 }
@@ -302,12 +312,12 @@
         
         mSender->setFontSpec(fontSpec);
         mSender->setTextColor(colorRole);
+        
+        fontSpec.setTextHeight(mSecondarySize);
 
         mSubject->setFontSpec(fontSpec);
         mSubject->setTextColor(colorRole);
-
-        fontSpec.setTextHeight(mSecondarySize);
-
+        
         mTime->setFontSpec(fontSpec);        
         mTime->setTextColor(colorRole);
     }
@@ -331,3 +341,25 @@
 
     return displayName.mid(firstPos, lastPos - firstPos + 1);
 }
+
+
+/*!
+    Handle font color changes in the case of theme change
+ */ 
+bool NmHsWidgetListViewItem::event(QEvent *event)
+{    
+    NM_FUNCTION;
+
+    bool ret = HbListViewItem::event(event);    
+    if (event && event->type() == HbEvent::ThemeChanged) {
+        NmMessageEnvelope *envelope =
+               modelIndex().data(Qt::DisplayRole).value<NmMessageEnvelope*>();
+        if (envelope && !envelope->isRead()) {
+            setFontsUnread();
+        }
+        else if (envelope) {
+            setFontsRead();
+        }
+    }
+    return ret;
+}
--- a/emailuis/nmhswidget/src/nmhswidgettitlerow.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailuis/nmhswidget/src/nmhswidgettitlerow.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -103,6 +103,10 @@
     if(!loadDocML(loader) || !setupGraphics()){
         return false;
     }
+    
+    HbEffect::add(mBackgroundLayoutItem, "listviewitem_press", "pressed");
+    HbEffect::add(mBackgroundLayoutItem, "listviewitem_release", "released");
+    
     return true;
     }
 
@@ -154,14 +158,13 @@
     
     HbFrameDrawer* backgroundFrameDrawer = 0;
     QT_TRY{
-        //pressed background
-        backgroundFrameDrawer = new HbFrameDrawer("qtg_fr_hsitems_pressed", HbFrameDrawer::NinePieces);
+        //default background
+        backgroundFrameDrawer = new HbFrameDrawer(KNmHsWidgetBackgroundImage, HbFrameDrawer::NinePieces);
         mBackgroundLayoutItem = new HbFrameItem( backgroundFrameDrawer );
         mContainer->setBackgroundItem( mBackgroundLayoutItem );
-		mBackgroundLayoutItem->hide();
         
         //set fonts color
-		setHighlighedFontsColor(false);
+		setFontsColor();
 		
 		//to get gestures
 		setGeometry(mContainer->childrenBoundingRect());
@@ -242,44 +245,33 @@
         mUnreadCountLabel->setMaximumWidth(textWidth);
     }
     else {
+        //set empty string as nothing to show
+        mUnreadCountLabel->setPlainText(QString());
         mUnreadCountLabel->setMaximumWidth(0);
     }
 }
 
 /*!
     sets fonts color.
-    /param bool pressed indicates if row is pressed down or not
 */
-void NmHsWidgetTitleRow::setHighlighedFontsColor( bool pressed )
+void NmHsWidgetTitleRow::setFontsColor()
     {
     NM_FUNCTION;
-    QColor newFontColor;
-    
-    if(pressed){
-        newFontColor = HbColorScheme::color("qtc_hs_list_item_pressed");
-    }
-    else{
-        newFontColor = HbColorScheme::color("qtc_hs_list_item_title_normal");
-    }
+    QColor newFontColor = HbColorScheme::color("qtc_hs_list_item_title_normal");
  
     mMailboxInfo->setTextColor(newFontColor);
     mUnreadCountLabel->setTextColor(newFontColor);
     }
 
 /*!
-    change background pressed state
-    /param bool show if true then shown, false hide
+    hide background
 */
-void NmHsWidgetTitleRow::showHighlight( bool show )
+void NmHsWidgetTitleRow::hideHighlight(const HbEffect::EffectStatus &status)
     {
-    NM_FUNCTION;;
-    
-    if(show){
-        mBackgroundLayoutItem->show();
-    }
-    else{
-        mBackgroundLayoutItem->hide();
-    }
+    NM_FUNCTION;
+
+    Q_UNUSED(status);
+    mBackgroundLayoutItem->frameDrawer().setFrameGraphicsName(KNmHsWidgetBackgroundImage);
     }
 
 /*
@@ -313,16 +305,14 @@
     if (inArea) {    
         switch (gesture->state()) {
             case Qt::GestureStarted:
-                setHighlighedFontsColor(true);
-                showHighlight(true);
+                HbEffect::start( mBackgroundLayoutItem, "pressed");
+                mBackgroundLayoutItem->frameDrawer().setFrameGraphicsName("qtg_fr_hsitems_pressed");
             break;
             case Qt::GestureCanceled:
-                setHighlighedFontsColor(false);
-                showHighlight(false);
+                HbEffect::start( mBackgroundLayoutItem, "released", this, "hideHighlight");
             break;
             case Qt::GestureFinished:
-                setHighlighedFontsColor(false);
-                showHighlight(false);
+                HbEffect::start( mBackgroundLayoutItem, "released", this, "hideHighlight");
                 if (gesture->tapStyleHint() == HbTapGesture::Tap) {
                     HbInstantFeedback::play(HbFeedback::BasicItem);
                     emit mailboxLaunchTriggered();
@@ -342,7 +332,7 @@
     NM_FUNCTION;
     QEvent::Type eventType = event->type();
     if( eventType == HbEvent::ThemeChanged ){
-        setHighlighedFontsColor(false);
+        setFontsColor();
         return true;
     }
     return HbWidget::event(event);
--- a/ipsservices/ipssosaoplugin/inc/IpsSosAOImapPopLogic.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosaoplugin/inc/IpsSosAOImapPopLogic.h	Thu Oct 14 17:33:43 2010 +0300
@@ -143,7 +143,10 @@
      * Takes care of reacting to entries created type of events
      */
     void handleEntriesCreatedL(const TAny* aArg1);
-
+    /**
+     * Takes care of reacting to created type of events
+     */
+    void handleEntriesChangedL(const TAny* aArg1, TAny* aArg2);
     /**
      * Takes the first entryId from the given selection and 
      * instantiates a TMsvEntry for that entry.
--- a/ipsservices/ipssosaoplugin/inc/ipssosaopluginheaders.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosaoplugin/inc/ipssosaopluginheaders.h	Thu Oct 14 17:33:43 2010 +0300
@@ -30,7 +30,6 @@
 #include <miutset.h>
 #include <impcmtm.h>
 #include <msvapi.h>
-#include <SendUiConsts.h>
 #include <msvids.h>
 #include <msvuids.h>
 #include <cmmanager.h>
--- a/ipsservices/ipssosaoplugin/src/IpsSosAOBaseAgent.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosaoplugin/src/IpsSosAOBaseAgent.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -32,19 +32,19 @@
     aSession.GetEntry( aServiceId, service, tentry );
     
     CIpsSosAOBaseAgent* self = NULL;
-    if ( tentry.iMtm.iUid == KSenduiMtmImap4UidValue )
+    if ( tentry.iMtm == KUidMsgTypeIMAP4 )
         {
         CIpsSosAOImapAgent* imap = CIpsSosAOImapAgent::NewL( 
                 aSession,  aOpResponse, aServiceId );
         self = static_cast<CIpsSosAOBaseAgent*>(imap);
-        self->iMtmType = KSenduiMtmImap4Uid;
+        self->iMtmType = KUidMsgTypeIMAP4;
         }
-    else if ( tentry.iMtm.iUid == KSenduiMtmPop3UidValue )
+    else if ( tentry.iMtm == KUidMsgTypePOP3 )
         {
         CIpsSosAOPopAgent* pop = CIpsSosAOPopAgent::NewL( 
                 aSession,  aOpResponse, aServiceId );
         self = static_cast<CIpsSosAOBaseAgent*>(pop);
-        self->iMtmType = KSenduiMtmPop3Uid;
+        self->iMtmType = KUidMsgTypePOP3;
         }
     else
         {
@@ -136,7 +136,7 @@
 TBool CIpsSosAOBaseAgent::IsTypeImap4() const
     {
     FUNC_LOG;
-    if ( iMtmType.iUid == KSenduiMtmImap4UidValue )
+    if ( iMtmType == KUidMsgTypeIMAP4 )
         {
         return ETrue;
         }
@@ -149,11 +149,11 @@
     {
     FUNC_LOG;
     TInt pluginId = 0;
-    if ( iMtmType.iUid == KSenduiMtmImap4UidValue )
+    if ( iMtmType == KUidMsgTypeIMAP4 )
         {
         pluginId = IPSSOSIMAP4PLUGIN_IMPLEMENTATION_UID;
         }
-    else if ( iMtmType.iUid == KSenduiMtmPop3UidValue )
+    else if ( iMtmType == KUidMsgTypePOP3 )
         {
         pluginId = IPSSOSPOP3PLUGIN_IMPLEMENTATION_UID;
         }
--- a/ipsservices/ipssosaoplugin/src/IpsSosAOImapPopLogic.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosaoplugin/src/IpsSosAOImapPopLogic.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -219,38 +219,20 @@
             break;
         case MMsvSessionObserver::EMsvEntriesChanged:
             {
-            TMsvId parent = (*(TMsvId*) (aArg2));
-            //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 )
-                {
-                const CMsvEntrySelection* selection = 
-                    static_cast<CMsvEntrySelection*>( aArg1 );
-                
-                TMsvEntry tEntry;
-                TMsvId service;
-                if ( selection->Count() )
-                    {
-                    iSession.GetEntry( selection->At(0), service, tEntry );
-                    }
-                
-                if ( !tEntry.Connected() )
-                    {
-                    SendCommandToSpecificMailboxL( 
-                            tEntry.Id(), 
-                            CIpsSosAOMBoxLogic::ECommandClearDoNotDisconnect );
-                    }
-                }
+            handleEntriesChangedL(aArg1, aArg2);
             }
             break;
         case MMsvSessionObserver::EMsvEntriesDeleted:
             {
-            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 )
+            if (aArg2) 
                 {
-                RemoveOrphanLogicsL();
+                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;
@@ -356,12 +338,12 @@
     CMsvEntry* cEntry = iSession.GetEntryL( KMsvRootIndexEntryId );
     CleanupStack::PushL( cEntry );
     
-    CMsvEntrySelection* childEntries = cEntry->ChildrenWithMtmL( KSenduiMtmPop3Uid );
+    CMsvEntrySelection* childEntries = cEntry->ChildrenWithMtmL( KUidMsgTypePOP3 );
     CleanupStack::PushL( childEntries );
     UpdateLogicArrayL( *childEntries );
     CleanupStack::PopAndDestroy( childEntries );
     
-    childEntries = cEntry->ChildrenWithMtmL( KSenduiMtmImap4Uid );
+    childEntries = cEntry->ChildrenWithMtmL( KUidMsgTypeIMAP4 );
     CleanupStack::PushL( childEntries );
     UpdateLogicArrayL( *childEntries );
     CleanupStack::PopAndDestroy( childEntries );
@@ -491,10 +473,10 @@
     CMsvEntry* cEntry = iSession.GetEntryL( KMsvRootIndexEntryId );
     CleanupStack::PushL( cEntry );
     
-    CMsvEntrySelection* popEntries = cEntry->ChildrenWithMtmL( KSenduiMtmPop3Uid );
+    CMsvEntrySelection* popEntries = cEntry->ChildrenWithMtmL( KUidMsgTypePOP3 );
     CleanupStack::PushL( popEntries );
     
-    CMsvEntrySelection* imapEntries = cEntry->ChildrenWithMtmL( KSenduiMtmImap4Uid );
+    CMsvEntrySelection* imapEntries = cEntry->ChildrenWithMtmL( KUidMsgTypeIMAP4 );
     CleanupStack::PushL( imapEntries );
         
         
@@ -517,25 +499,51 @@
 void CIpsSosAOImapPopLogic::handleEntriesCreatedL(const TAny* aArg1)
     {
     FUNC_LOG;
-    TMsvEntry entry;
-    getFirstEntryFromSelectionL(static_cast<const CMsvEntrySelection*>(aArg1), entry);
-
-    if( entry.iMtm==KSenduiMtmImap4Uid || entry.iMtm==KSenduiMtmPop3Uid)
+    if (aArg1)
         {
-        // handling imap4 or pop3 entry
-        if(entry.iType.iUid==KUidMsvServiceEntryValue)
+        TMsvEntry entry;
+        getFirstEntryFromSelectionL(static_cast<const CMsvEntrySelection*>(aArg1), entry);
+    
+        if( entry.iMtm == KUidMsgTypeIMAP4 || entry.iMtm == KUidMsgTypePOP3 )
             {
-            // new mailbox has been created, starting sync for it
-            User::After(KMailboxCreatedTimeout); // sleep for 0.5 sec; guarantees that mailbox is fully set up, and message server ready to serve it
-            RefreshMailboxListL();
-            SendCommandToSpecificMailboxL( entry.Id(), CIpsSosAOMBoxLogic::ECommandStart );
-            SendCommandToSpecificMailboxL( entry.Id(), CIpsSosAOMBoxLogic::ECommandStartSync );
+            // handling imap4 or pop3 entry
+            if ( entry.iType.iUid == KUidMsvServiceEntryValue )
+                {
+                // new mailbox has been created, starting sync for it
+                User::After(KMailboxCreatedTimeout); // sleep for 0.5 sec; guarantees that mailbox is fully set up, and message server ready to serve it
+                RefreshMailboxListL();
+                SendCommandToSpecificMailboxL( entry.Id(), CIpsSosAOMBoxLogic::ECommandStart );
+                SendCommandToSpecificMailboxL( entry.Id(), CIpsSosAOMBoxLogic::ECommandStartSync );
+                }
             }
         }
     }
 
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
+void CIpsSosAOImapPopLogic::handleEntriesChangedL(const TAny* aArg1, TAny* aArg2)
+    {
+    if (aArg1 && aArg2) 
+        {
+        TMsvId parent = (*(TMsvId*) (aArg2));
+        //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 )
+            {
+            TMsvEntry entry;
+            getFirstEntryFromSelectionL(static_cast<const CMsvEntrySelection*>(aArg1), entry);
+            if ( !entry.Connected() )
+                {
+                SendCommandToSpecificMailboxL( 
+                        entry.Id(), 
+                        CIpsSosAOMBoxLogic::ECommandClearDoNotDisconnect );
+                }
+            } 
+        }
+    }
+
+// ----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
 void CIpsSosAOImapPopLogic::getFirstEntryFromSelectionL(const CMsvEntrySelection* aSelection, TMsvEntry& aEntry)
     {
     FUNC_LOG;
--- a/ipsservices/ipssosaoplugin/src/IpsSosAOMboxLogic.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosaoplugin/src/IpsSosAOMboxLogic.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -329,7 +329,11 @@
             case EEventStartSync:
                 NM_COMMENT("CIpsSosAOMBoxLogic: event: EEventStartSync");
                 if ( iState == EStateWaitSyncStart )
-                    {         
+                    {
+                    if (iTimer->IsActive()) 
+                        {
+                        iTimer->Cancel();
+                        }
                     iError = KErrNone;
                     iAgent->StartSyncL();
                     iState = EStateSyncOngoing;
--- a/ipsservices/ipssosaoplugin/src/IpsSosAOSettingsHandler.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosaoplugin/src/IpsSosAOSettingsHandler.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -63,11 +63,11 @@
 TInt CIpsSosAOSettingsHandler::GetFSPluginId() const
     {
     TInt pluginId = 0;
-    if ( iEntry.iMtm.iUid == KSenduiMtmImap4UidValue )
+    if ( iEntry.iMtm == KUidMsgTypeIMAP4 )
         {
         pluginId = IPSSOSIMAP4PLUGIN_IMPLEMENTATION_UID;
         }
-    else if ( iEntry.iMtm.iUid == KSenduiMtmPop3UidValue )
+    else if ( iEntry.iMtm == KUidMsgTypePOP3 )
         {
         pluginId = IPSSOSPOP3PLUGIN_IMPLEMENTATION_UID;
         }
--- a/ipsservices/ipssosplugin/inc/ipsplgheaders.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/inc/ipsplgheaders.h	Thu Oct 14 17:33:43 2010 +0300
@@ -26,8 +26,8 @@
 #include <e32def.h>
 #include <e32base.h>
 #include <e32property.h>
-
 #include <f32file.h>
+#include <sysutil.h>
 
 // <qmail> eikenv, eikrutil, coemain includes removed
 
@@ -73,9 +73,6 @@
 #include <CFSMailCommon.h>
 #include <CFSMailMessage.h>
 #include <CFSMailFolder.h>
-// sendui
-#include <SendUiConsts.h>
-#include <SenduiMtmUids.h>
 
 // <qmail> fsmailserverconst include removed
 // mfsmail
--- a/ipsservices/ipssosplugin/inc/ipsplgimap4connectop.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/inc/ipsplgimap4connectop.h	Thu Oct 14 17:33:43 2010 +0300
@@ -50,11 +50,13 @@
     * back aFSOperationObserver
     * @param aEventHandler used for signalling synchronisation statuses
     * @param aDoPlainConnect whether just connect to mailbox, or synch messages also
+    * @param aSilentConnection set if silent connection is used
     * @return CIpsPlgImap4ConnectionOp* self pointer
     */
     // <qmail> priority parameter has been removed
 	// <qmail> MFSMailRequestObserver& changed it to pointer
 	// <qmail> aSignallingAllowed parameter has been removed
+	// <qmail> silent connection parameter added
     static CIpsPlgImap4ConnectOp* NewL(
         CMsvSession& aMsvSession,
         TRequestStatus& aObserverRequestStatus,
@@ -64,7 +66,8 @@
         MFSMailRequestObserver* aFSOperationObserver,
         TInt aFSRequestId,
         CIpsPlgEventHandler* aEventHandler,
-        TBool aDoPlainConnect=EFalse );
+        TBool aDoPlainConnect=EFalse,
+        TBool aSilentConnection=EFalse);
         
     // <qmail> make destructor virtual
     virtual ~CIpsPlgImap4ConnectOp();
@@ -129,6 +132,7 @@
 	// <qmail> priority parameter has been removed
 	// <qmail> MFSMailRequestObserver& changed it to pointer
 	// <qmail> aSignallingAllowed parameter has been removed
+    // <qmail> aSilentConnection parameter added
     CIpsPlgImap4ConnectOp(
         CMsvSession& aMsvSession,
         TRequestStatus& aObserverRequestStatus,
@@ -138,7 +142,8 @@
         MFSMailRequestObserver* aFSOperationObserver,
         TInt aFSRequestId,
         TBool aDoPlainConnect,
-        CIpsPlgEventHandler* aEventHandler );
+        CIpsPlgEventHandler* aEventHandler,
+        TBool aSilentConnection );
 
     void ConstructL();
     
@@ -196,6 +201,10 @@
     CIpsPlgEventHandler*                iEventHandler; // not owned
     // prevents signalling sync started for more than once
     TBool                               iIsSyncStartedSignaled;
+    // <qmail>
+	// whether silent connection is requested or not
+    TBool                               iSilentConnection;
+    // </qmail>
 	
 	// <qmail> iAlreadyConnected removed
     };
--- a/ipsservices/ipssosplugin/inc/ipsplgmsgmapper.inl	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/inc/ipsplgmsgmapper.inl	Thu Oct 14 17:33:43 2010 +0300
@@ -15,8 +15,8 @@
 *
 */
 
-
-#include "ipsplgmsgmapper.h"    // for Lint
+//we won't care about pc-lint error here. 
+//including msgmapper header (lint would require this) here would create include recursion
 
 // -----------------------------------------------------------------------------
 // -----------------------------------------------------------------------------
--- a/ipsservices/ipssosplugin/inc/ipsplgonlineoperation.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/inc/ipsplgonlineoperation.h	Thu Oct 14 17:33:43 2010 +0300
@@ -139,7 +139,18 @@
     * @param aStatus completion status of the operation
     */
     void SignalFSObserver( TInt aStatus );
-        
+
+    /**
+     * Checks whether the currently used drive has enough space for a file with
+     * the given size.
+     * 
+     * @param fileSize The file size in bytes.
+     * @return ETrue if a file with the given file size fits on the currently
+     *         used drive, EFalse otherwise.
+     */
+    TBool EnoughDiskSpaceOnCurrentDrive( const TInt aFileSize ) const;
+
+
 protected:
         // mailbox specific activity timer
         CIpsPlgTimerOperation*  iActivityTimer;
--- a/ipsservices/ipssosplugin/inc/ipsplgpop3connectop.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/inc/ipsplgpop3connectop.h	Thu Oct 14 17:33:43 2010 +0300
@@ -46,11 +46,13 @@
 	    * @param aEventHandler event handler for sending sync events
 	    * @param aSignallingAllowed for asynchronous request response message
 	    * @param aFetchWillFollow used when connection must be kept open
+	    * @param aSilentConnection set if silent connection is used
 	    * @return new instance of the class
 	    */
 		// <qmail> MFSMailRequestObserver& changed to pointer
 		// <qmail> aSignallingAllowed parameter added
         // <qmail> aFetchWillFollow parameter added
+        // <qmail> aSilentConnection parameter added
         static CIpsPlgPop3ConnectOp* NewL(
             CMsvSession& aMsvSession,
             TRequestStatus& aObserverRequestStatus,
@@ -62,7 +64,8 @@
             TInt aFSRequestId,
             CIpsPlgEventHandler* aEventHandler,
             TBool aSignallingAllowed=ETrue,
-            TBool aFetchWillFollow=EFalse );
+            TBool aFetchWillFollow=EFalse,
+            TBool aSilentConnection=EFalse);
 
         /**
         *
@@ -118,6 +121,7 @@
 		// <qmail> MFSMailRequestObserver& changed to pointer
 		// <qmail> aSignallingAllowed parameter added
         // <qmail> aFetchWillFollow parameter added
+        // <qmail> aSilentConnection parameter added
         CIpsPlgPop3ConnectOp(
             CMsvSession& aMsvSession,
             TRequestStatus& aObserverRequestStatus,
@@ -129,7 +133,8 @@
             TInt aFSRequestId,
             CIpsPlgEventHandler* aEventHandler,
             TBool aSignallingAllowed,
-            TBool aFetchWillFollow );
+            TBool aFetchWillFollow,
+            TBool aSilentConnection);
 
         /**
         *
@@ -179,6 +184,8 @@
 	    // <qmail> iAlreadyConnected removed
         // <qmail>
         TBool                                           iFetchWillFollow;
+        // whether silent connection is requested or not
+        TBool                                           iSilentConnection;
         // </qmail>
     };
 
--- a/ipsservices/ipssosplugin/ipssosplugin.pro	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/ipssosplugin.pro	Thu Oct 14 17:33:43 2010 +0300
@@ -169,6 +169,7 @@
     -lfsfwcommonlib \
     -lbafl \
     -lcentralrepository \
+    -lsysutil \ 
     -lCommonEngine \
     -lcharconv \
     -lConnMon \
--- a/ipsservices/ipssosplugin/src/ipsplgconnectandrefreshfolderlist.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgconnectandrefreshfolderlist.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -88,7 +88,7 @@
 void CIpsPlgConnectAndRefreshFolderList::ConstructL()
     {
     FUNC_LOG;
-    BaseConstructL( KSenduiMtmImap4Uid );
+    BaseConstructL( KUidMsgTypeIMAP4 );
     iState = EStartConnect;
     DoRunL();
     }
--- a/ipsservices/ipssosplugin/src/ipsplgcreatereplymessageoperation.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgcreatereplymessageoperation.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -139,10 +139,9 @@
         for( TInt i = 0; i < toRecipientCount; i++ )
             {
             emailAddr = header->ToRecipients()[i].AllocLC();
-            fsAddr = CFSMailAddress::NewLC();
+            fsAddr = CFSMailAddress::NewL();
             fsAddr->SetEmailAddress( *emailAddr ); // Copy created
             newMessage->AppendToRecipient( fsAddr ); // No copy
-            CleanupStack::Pop( fsAddr ); // fsAddr belong now to fsMsg
             CleanupStack::PopAndDestroy( emailAddr ); // emailAddr not used
             }
 
@@ -238,6 +237,7 @@
                     }
                 }
            
+            CleanupStack::Pop( fsAddr ); // fsAddr belong now to fsMsg
             if( present )
                 {
                 aNewMessage->AppendToRecipient( fsAddr ); // No copy
@@ -247,7 +247,6 @@
                 aNewMessage->AppendCCRecipient( fsAddr ); // No copy
                 }
            
-            CleanupStack::Pop( fsAddr ); // fsAddr belong now to fsMsg
             CleanupStack::PopAndDestroy( emailAddr ); // emailAddr not used
             }
         CleanupStack::PopAndDestroy( tmpHeader );
@@ -258,10 +257,9 @@
     for( TInt i = 0; i < aHeader->BccRecipients().Count(); i++ )
         {
         emailAddr = aHeader->BccRecipients()[i].AllocLC();
-        fsAddr = CFSMailAddress::NewLC();
+        fsAddr = CFSMailAddress::NewL();
         fsAddr->SetEmailAddress( *emailAddr ); // Copy created
         aNewMessage->AppendBCCRecipient( fsAddr ); // No copy
-        CleanupStack::Pop( fsAddr ); // fsAddr belong now to fsMsg
         CleanupStack::PopAndDestroy( emailAddr ); // emailAddr not used
         }
     }
--- a/ipsservices/ipssosplugin/src/ipsplgeventhandler.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgeventhandler.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -373,7 +373,7 @@
     AppendSettingsObserverL( aMailboxId, aKey );
     //at the moment we won't support syncstate events for IMAP alwaysonline.
     //because of imap idle. we can't extract usefull syncstate changes when it is in use.
-   /* if ( iBasePlugin.MtmId().iUid != KSenduiMtmImap4UidValue )
+   /* if ( iBasePlugin.MtmId() != KUidMsgTypeIMAP4 )
         {
         AppendSyncStateObserverL( aMailboxId );
         }*/
@@ -447,7 +447,7 @@
          ret = EFalse;
          }
 
-    if ( !ret && aEntry.iMtm.iUid == KSenduiMtmSmtpUidValue )
+    if ( !ret && aEntry.iMtm == KUidMsgTypeSMTP )
         {
         ret = ETrue;
         }
@@ -464,15 +464,15 @@
     FUNC_LOG;
     TFSMailMsgId id;
     id.SetId( aId );
-    if ( aMtmUid == KSenduiMtmImap4UidValue )
+    if ( aMtmUid == KUidMsgTypeIMAP4.iUid )
         {
         id.SetPluginId( KIpsPlgImap4PluginUid );
         }
-    else if ( aMtmUid == KSenduiMtmPop3UidValue )
+    else if ( aMtmUid == KUidMsgTypePOP3.iUid )
         {
         id.SetPluginId( KIpsPlgPop3PluginUid );
         }
-    else if ( aMtmUid == KSenduiMtmSmtpUidValue )
+    else if ( aMtmUid == KUidMsgTypeSMTP.iUid )
         {
         // set plugin id to this plugin
         id.SetPluginId( TUid::Uid(iPluginId) );
@@ -570,10 +570,10 @@
     CMsvEntry* root = iSession->GetEntryL( KMsvRootIndexEntryIdValue );
     CleanupStack::PushL( root );
 
-    CMsvEntrySelection* pop = root->ChildrenWithMtmL( KSenduiMtmPop3Uid );
+    CMsvEntrySelection* pop = root->ChildrenWithMtmL( KUidMsgTypePOP3 );
     CleanupStack::PushL( pop );
 
-    CMsvEntrySelection* imap = root->ChildrenWithMtmL( KSenduiMtmImap4Uid );
+    CMsvEntrySelection* imap = root->ChildrenWithMtmL( KUidMsgTypeIMAP4 );
     CleanupStack::PushL( imap );
 
     TInt count = pop->Count();
@@ -729,7 +729,7 @@
 
             CleanupStack::PopAndDestroy( &array );
 
-            if( tNew.iMtm.iUid == KSenduiMtmImap4UidValue )
+            if( tNew.iMtm == KUidMsgTypeIMAP4 )
                 {
                 SetFolderIdToArrayL( tNew.Id() );
                 }
@@ -787,7 +787,7 @@
 
         TFSMailMsgId mbox;
         // solve mailbox.
-        if ( tMoved.iMtm.iUid == KSenduiMtmSmtpUidValue )
+        if ( tMoved.iMtm == KUidMsgTypeSMTP )
             {
             TMsvEntry serv;
             TMsvId service;
@@ -909,7 +909,7 @@
             CleanupClosePushL( array );
             TFSMailMsgId parentId( iPluginId, tEntry.Id() );
 
-            if ( tEntry.iMtm.iUid == KSenduiMtmImap4UidValue )
+            if ( tEntry.iMtm == KUidMsgTypeIMAP4 )
                 {
                 isFolderId = MatchFolderIdFound( deletedId );
                 }
@@ -949,15 +949,21 @@
 
             CleanupStack::PopAndDestroy( &array );
             }
-        else if ( tEntry.iMtm.iUid == KSenduiMtmSmtpUidValue )
+        else if ( tEntry.iMtm == KUidMsgTypeSMTP )
             {
             // seems that case when deleding from draft, symbian
             // sends event that contains some child part's id of
             // correct deleted mail. So append parents id to array
             TFSMailMsgId msg;
             msg.SetId( tEntry.Id() );
+            // <qmail> In case where child is attachment do not append parent id.
             TFSMailMsgId parent;
-            parent.SetId( tEntry.Parent() );
+            if (!tEntry.Attachment())
+                {
+                parent.SetId( tEntry.Parent() );        
+                }
+            // </qmail>
+            
             if( !iSession )
                 {
                 User::Leave( KErrNotReady );
@@ -971,15 +977,25 @@
             mbox.SetId( tEntry.Id() );
 
             // set plugin id to msg, parent and mbox
-            if ( tEntry.iMtm.iUid == KSenduiMtmImap4UidValue )
+            if ( tEntry.iMtm == KUidMsgTypeIMAP4 )
         		{
-        		parent.SetPluginId( KIpsPlgImap4PluginUid );
+                // <qmail>
+                if (!tEntry.Attachment())
+                    {
+                    parent.SetPluginId( KIpsPlgImap4PluginUid );
+                    }
+                // </qmail>
         		msg.SetPluginId( KIpsPlgImap4PluginUid );
         		mbox.SetPluginId( KIpsPlgImap4PluginUid );
         		}
-    		else if ( tEntry.iMtm.iUid == KSenduiMtmPop3UidValue )
+    		else if ( tEntry.iMtm == KUidMsgTypePOP3 )
         		{
-        		parent.SetPluginId( KIpsPlgPop3PluginUid );
+                // <qmail>
+                if (!tEntry.Attachment())
+                    {
+                    parent.SetPluginId( KIpsPlgPop3PluginUid );
+                    }
+                // </qmail>
         		msg.SetPluginId( KIpsPlgPop3PluginUid );
         		mbox.SetPluginId( KIpsPlgPop3PluginUid );
         		}
@@ -993,7 +1009,12 @@
             CleanupClosePushL( array );
             array.AppendL( msg );
             arg1 = &array;
-            arg2 = &parent;
+            // <qmail>
+            if (!tEntry.Attachment())
+                {
+                arg2 = &parent;
+                }
+            // </qmail>
             event = TFSEventMailDeleted;
             SendDelayedEventL(
                 event,
@@ -1071,7 +1092,7 @@
         TFSMailMsgId id = SymId2FsId( *(static_cast<TMsvId*>(aArg2)), tChanged.iMtm.iUid );
         arg2 = &id;
 
-        if ( tChanged.iMtm.iUid == KSenduiMtmImap4UidValue )
+        if ( tChanged.iMtm == KUidMsgTypeIMAP4 )
             {
             TMsvEmailEntry eml( tChanged );
             TInt index = iImapFolderIds.Find(tChanged.Id());
@@ -1118,7 +1139,7 @@
         {
         TFSMailMsgId mbox;
         // solve mailbox.
-        if ( tChanged.iMtm.iUid == KSenduiMtmSmtpUidValue )
+        if ( tChanged.iMtm == KUidMsgTypeSMTP )
             {
             TMsvEntry serv;
             TMsvId service;
@@ -1211,10 +1232,10 @@
 // ---------------------------------------------------------------------------
 TUid CIpsPlgEventHandler::MtmId() const
     {
-    TUid ret = KSenduiMtmImap4Uid;
+    TUid ret = KUidMsgTypeIMAP4;
     if ( iBasePlugin.MtmId().iUid == KIpsPlgPop3PluginUidValue )
         {
-        ret = KSenduiMtmPop3Uid;
+        ret = KUidMsgTypePOP3;
         }
     return ret;
     }
@@ -1402,8 +1423,8 @@
 TBool CIpsPlgEventHandler::AccountExistsL( const TMsvEntry& aEntry )
     {
     FUNC_LOG;
-    if ( !(aEntry.iMtm.iUid == KSenduiMtmImap4UidValue
-        || aEntry.iMtm.iUid == KSenduiMtmPop3UidValue) )
+    if ( !(aEntry.iMtm == KUidMsgTypeIMAP4
+        || aEntry.iMtm == KUidMsgTypePOP3) )
         {
         // check only imap and pop
         return ETrue;
@@ -1440,13 +1461,13 @@
         }
 
     // only pop or imap types are alloved beyond this point
-    __ASSERT_DEBUG( ( aParent.iMtm.iUid == KSenduiMtmImap4UidValue ||
-            aParent.iMtm.iUid == KSenduiMtmPop3UidValue ),
+    __ASSERT_DEBUG( ( aParent.iMtm == KUidMsgTypeIMAP4 ||
+            aParent.iMtm == KUidMsgTypePOP3 ),
         User::Panic( KIpsPlgEventHandlerPanic, KErrGeneral ) );
 
     TBool doRecursion = EFalse;
 
-    if ( aParent.iMtm.iUid == KSenduiMtmImap4UidValue )
+    if ( aParent.iMtm == KUidMsgTypeIMAP4 )
         {
         if ( aParent.iType.iUid == KUidMsvServiceEntryValue )
             {
--- a/ipsservices/ipssosplugin/src/ipsplgimap4connectop.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgimap4connectop.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -29,6 +29,7 @@
 // <qmail> priority parameter has been removed
 // <qmail> MFSMailRequestObserver& changed it to pointer
 // <qmail> aSignallingAllowed parameter has been removed
+// <qmail> silent connection parameter added
 CIpsPlgImap4ConnectOp* CIpsPlgImap4ConnectOp::NewL(
     CMsvSession& aMsvSession,
     TRequestStatus& aObserverRequestStatus,
@@ -38,7 +39,8 @@
     MFSMailRequestObserver* aFSOperationObserver,
     TInt aFSRequestId,
     CIpsPlgEventHandler* aEventHandler,
-    TBool aDoPlainConnect )
+    TBool aDoPlainConnect,
+    TBool aSilentConnection)
     {
     FUNC_LOG;
     CIpsPlgImap4ConnectOp* self = new (ELeave) CIpsPlgImap4ConnectOp(
@@ -50,7 +52,8 @@
         aFSOperationObserver,
         aFSRequestId,
         aDoPlainConnect,
-        aEventHandler );
+        aEventHandler,
+        aSilentConnection);
         
     CleanupStack::PushL( self );
     self->ConstructL();
@@ -64,6 +67,7 @@
 // <qmail> priority parameter has been removed
 // <qmail> MFSMailRequestObserver& changed it to pointer
 // <qmail> aSignallingAllowed parameter has been removed
+// <qmail> silent connection parameter added
 CIpsPlgImap4ConnectOp::CIpsPlgImap4ConnectOp(
     CMsvSession& aMsvSession,
     TRequestStatus& aObserverRequestStatus,
@@ -73,7 +77,8 @@
     MFSMailRequestObserver* aFSOperationObserver,
     TInt aFSRequestId,
     TBool aDoPlainConnect,
-    CIpsPlgEventHandler* aEventHandler)
+    CIpsPlgEventHandler* aEventHandler,
+    TBool aSilentConnection)
     :
     CIpsPlgOnlineOperation(
 	    aMsvSession,
@@ -86,7 +91,8 @@
     iSelection( NULL ),
     iDoPlainConnect( aDoPlainConnect ),
     iEventHandler( aEventHandler ),
-    iIsSyncStartedSignaled( EFalse )
+    iIsSyncStartedSignaled( EFalse ),
+    iSilentConnection( aSilentConnection )
     {
     FUNC_LOG;
     iService = aService;
@@ -341,6 +347,8 @@
         TBuf8<1> parameter;
         NM_COMMENT("CIpsPlgImap4ConnectOp: do plain connect");
         // connect and synchronise starts background sync or idle
+        // select connection type based on iSilentConnection
+        // NOTE: Cannot be implemented yet, because MTM support is not released yet
         iSubOperation = iBaseMtm->InvokeAsyncFunctionL(
             KIMAP4MTMConnect, *iSelection, parameter, iStatus);
         }
@@ -358,6 +366,8 @@
         // the used command requires an observer to be given even though we're not using it
         NM_COMMENT("CIpsPlgImap4ConnectOp: connect and sync");
         TPckg<MMsvImapConnectionObserver*> parameter( NULL );
+        // select connection type based on iSilentConnection
+        // NOTE: Cannot be implemented yet, because MTM support is not released yet
         iSubOperation = iBaseMtm->InvokeAsyncFunctionL(
             KIMAP4MTMConnectAndSyncCompleteAfterFullSync, 
             *iSelection, parameter, iStatus );
--- a/ipsservices/ipssosplugin/src/ipsplgimap4fetchattachmentop.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgimap4fetchattachmentop.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -308,7 +308,9 @@
 void CIpsPlgImap4FetchAttachmentOp::ReportProgressL()
     {
     FUNC_LOG;
+        
     TInt error = KErrNone;
+
     TFSProgress fsProgress = { TFSProgress::EFSStatus_Waiting, 0, 0, KErrNone };
     if ( iSubOperation && iState == EStateFetching )
         {
@@ -337,6 +339,20 @@
         User::Leave( error );
         }
 
+    TInt fileSize( 0 );
+    
+    if ( fsProgress.iMaxCount - fsProgress.iCounter > 0 )
+        {
+        fileSize = fsProgress.iMaxCount - fsProgress.iCounter;
+        }
+
+    if ( EnoughDiskSpaceOnCurrentDrive( fileSize ) == EFalse )
+        {
+        // Not enough space on the disk for the attachment!
+        error = KErrDiskFull;
+        fsProgress.iError = error;
+        }
+
 // <qmail>
     // signal observer if it exists
     if ( iFSOperationObserver )
@@ -344,6 +360,11 @@
         iFSOperationObserver->RequestResponseL( fsProgress, iFSRequestId );
         }
 // </qmail>
+    
+    if ( error == KErrDiskFull )
+        {
+        Cancel();
+        }
     }
 
 // ----------------------------------------------------------------------------
--- a/ipsservices/ipssosplugin/src/ipsplgimap4plugin.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgimap4plugin.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -142,7 +142,7 @@
     const TFSMailMsgId& aMailBoxId,
     MFSMailRequestObserver& aOperationObserver,
     TInt aRequestId,
-    const TBool /*aSilentConnection*/ )
+    const TBool aSilentConnection )
     {
     FUNC_LOG;
     
@@ -152,6 +152,7 @@
     CleanupStack::PushL( watcher );
     
     // <qmail> priority parameter has been removed
+	// <qmail> silent connection parameter added
     CIpsPlgBaseOperation* op = CIpsPlgImap4ConnectOp::NewL(
     		*iSession,
     		watcher->iStatus, 
@@ -160,9 +161,12 @@
           	aMailBoxId, 
           	&aOperationObserver,
           	aRequestId,
-          	iEventHandler );
+          	iEventHandler,
+          	EFalse,
+          	aSilentConnection );
     
-    watcher->SetOperation( op );
+    watcher->SetOperation( op ); // watcher takes ownership,
+                                 // no PushL needed before AppendL
     iOperations.AppendL( watcher );
     CleanupStack::Pop( watcher );
     
@@ -309,7 +313,8 @@
         iEventHandler, 
         EFalse ); // do not filter mail selection
     
-    watcher->SetOperation( op );
+    watcher->SetOperation( op ); // watcher takes ownership,
+                                 // no PushL needed before AppendL
     CleanupStack::PopAndDestroy( sel );
     iOperations.AppendL( watcher );
     CleanupStack::Pop( watcher );
@@ -372,7 +377,8 @@
             NULL, // no observer, async not supported
             0 ); // async not supported
 
-        watcher->SetOperation( op );
+        watcher->SetOperation( op ); // watcher takes ownership,
+                                     // no PushL needed before AppendL
         CleanupStack::PopAndDestroy( sel );
         iOperations.AppendL( watcher );
         CleanupStack::Pop( watcher );
@@ -445,7 +451,8 @@
             &aOperationObserver, // async not supported
             0 ); // async not supported
 
-        watcher->SetOperation( op );
+        watcher->SetOperation( op ); // watcher takes ownership,
+                                     // no PushL needed before AppendL
         CleanupStack::PopAndDestroy( sel );
         iOperations.AppendL( watcher );
         CleanupStack::Pop( watcher );
@@ -536,7 +543,8 @@
         &aOperationObserver,
         aRequestId );
     
-    watcher->SetOperation( op );
+    watcher->SetOperation( op ); // watcher takes ownership,
+                                 // no PushL needed before next line
     iOperations.AppendL( watcher );
 // <qmail>
     CleanupStack::Pop( sel );
@@ -612,7 +620,8 @@
         iEventHandler,
         EFalse ); // do not block entry changed and created events
     
-    watcher->SetOperation( op );
+    watcher->SetOperation( op ); // watcher takes ownership,
+                                 // no PushL needed before AppendL
     CleanupStack::PopAndDestroy( sel );
     iOperations.AppendL( watcher );
     CleanupStack::Pop( watcher );
--- a/ipsservices/ipssosplugin/src/ipsplgmsgiterator.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgmsgiterator.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -261,7 +261,7 @@
         const TMsvEmailEntry& entry( 
             iFolderEntry->ChildDataL( aMessageEntries->At(i) ) );
         if ( ( EDisconnectedDeleteOperation != entry.DisconnectedOperation() ) &&
-        	(( entry.iMtm != KSenduiMtmImap4Uid )  || !entry.DeletedIMAP4Flag() ) &&
+        	(( entry.iMtm != KUidMsgTypeIMAP4 )  || !entry.DeletedIMAP4Flag() ) &&
         	 ( entry.iType == KUidMsvMessageEntry ) )
             {
             fsMsg = iMsgMapper->GetMailMessageL( iMailboxId, entry, 
@@ -301,7 +301,7 @@
         const TMsvEmailEntry& entry( 
             iFolderEntry->ChildDataL( aMessageEntries->At(i) ) );
         if ( ( EDisconnectedDeleteOperation != entry.DisconnectedOperation() ) &&
-        	(( entry.iMtm != KSenduiMtmImap4Uid )  || !entry.DeletedIMAP4Flag() ) &&	
+        	(( entry.iMtm != KUidMsgTypeIMAP4 )  || !entry.DeletedIMAP4Flag() ) &&	
    	 		 ( entry.iType == KUidMsvMessageEntry ) )
             {
             fsMsg = iMsgMapper->GetMailMessageL( iMailboxId, entry, 
--- a/ipsservices/ipssosplugin/src/ipsplgmsgmapper.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgmsgmapper.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -307,10 +307,8 @@
     TBool modified ( EFalse );
     TBool unread( aEmlEntry.Unread() );
 
-// <qmail>
-    if ( LogicalXor( unread, msgFlags & EFSMsgFlag_Read ) ||
-         LogicalXor( unread, msgFlags & EFSMsgFlag_Read_Locally ))
-// </qmail>
+    if ( !LogicalXor( unread, msgFlags & EFSMsgFlag_Read ) ||
+         !LogicalXor( unread, msgFlags & EFSMsgFlag_Read_Locally ))
         {
         aEmlEntry.SetUnread( !unread );
         modified = ETrue;
@@ -349,7 +347,7 @@
     // EFSMsgFlag_Multiple: no counterpart in Symbian message
 
     // EFSMsgFlag_CalendarMsg
-    if( ( aEmlEntry.iMtm == KSenduiMtmSmtpUid ) && ( msgFlags & EFSMsgFlag_CalendarMsg ) )
+    if( ( aEmlEntry.iMtm == KUidMsgTypeSMTP ) && ( msgFlags & EFSMsgFlag_CalendarMsg ) )
         {
         if( !aEmlEntry.ICalendar() )
             {
@@ -375,7 +373,7 @@
     // EFSMsgFlag_Answered
 
     // IMAP flags
-    if ( aEmlEntry.iMtm == KSenduiMtmImap4Uid )
+    if ( aEmlEntry.iMtm == KUidMsgTypeIMAP4 )
         {
             // EFSMsgFlag_FollowUp
         if ( LogicalXor( aEmlEntry.FlaggedIMAP4Flag(),
@@ -546,8 +544,8 @@
             {
             addr = CFSMailAddress::NewLC();
             ConvertAddressL( toRecs[i], *addr );
+            CleanupStack::Pop( addr );
             aMsg.AppendToRecipient( addr );
-            CleanupStack::Pop( addr );
             }
 
         const CDesCArray& ccRecs = header->CcRecipients();
@@ -556,8 +554,8 @@
             {
             addr = CFSMailAddress::NewLC();
             ConvertAddressL( ccRecs[i], *addr );
+            CleanupStack::Pop( addr );
             aMsg.AppendCCRecipient( addr );
-            CleanupStack::Pop( addr );
             }
 
         const CDesCArray& bccRecs = header->BccRecipients();
@@ -566,8 +564,8 @@
             {
             addr = CFSMailAddress::NewLC();
             ConvertAddressL( bccRecs[i], *addr );
+            CleanupStack::Pop( addr );
             aMsg.AppendBCCRecipient( addr );
-            CleanupStack::Pop( addr );
             }
 
         CleanupStack::PopAndDestroy( header );
@@ -674,7 +672,7 @@
 
 // <cmail>
     //only for incomplete POP3 messages
-    if ( aEntry.iMtm.iUid == KSenduiMtmPop3UidValue &&
+    if ( aEntry.iMtm == KUidMsgTypePOP3 &&
             ( !aEntry.Complete() || aEntry.PartialDownloaded () ) )
         {
         TRAP_IGNORE( AttaCheckForIncompleteMsgL( aEntry, aMsg ) );
@@ -759,7 +757,7 @@
     // but this should be tested
 
     // Additional logic for IMAP4 messages
-    if ( aEntry.iMtm == KSenduiMtmImap4Uid )
+    if ( aEntry.iMtm == KUidMsgTypeIMAP4 )
         {
         if ( aEntry.FlaggedIMAP4Flag() )
             {
@@ -782,7 +780,7 @@
     CFSMailMessagePart& aMessage )
     {
     FUNC_LOG;
-    if ( aEntry.iMtm.iUid == KSenduiMtmPop3UidValue && 
+    if ( aEntry.iMtm == KUidMsgTypePOP3 && 
             aEntry.Id() != aMsgMainId &&
             !aIsAtta )
         {
@@ -1222,7 +1220,7 @@
 
                 CleanupStack::PopAndDestroy( cEntry );
                 }
-            else if ( aEntry.iMtm == KSenduiMtmPop3Uid &&
+            else if ( aEntry.iMtm == KUidMsgTypePOP3 &&
                     iSession.GetEntry( aEntry.Parent(), dummy, parent )
                     == KErrNone && parent.PartialDownloaded() )
                 {
--- a/ipsservices/ipssosplugin/src/ipsplgonlineoperation.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgonlineoperation.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -189,7 +189,7 @@
     const TDesC8& aParams )
     {
     FUNC_LOG;
-    
+        
     TMsvEntry tEntry;
     TMsvId service;
     if ( aSel.Count() )
@@ -242,6 +242,29 @@
         }
     }
 
+
+// ----------------------------------------------------------------------------
+// CIpsPlgOnlineOperation::EnoughDiskSpaceOnCurrentDrive()
+// Returns true if there is enough space on the disk for a file with given
+// file size.
+// ----------------------------------------------------------------------------
+//
+TBool CIpsPlgOnlineOperation::EnoughDiskSpaceOnCurrentDrive(
+        const TInt aFileSize ) const
+    {
+    TDriveUnit driveUnit;
+    TRAP_IGNORE( driveUnit = iMsvSession.CurrentDriveL() );
+    RFs rfs( iMsvSession.FileSession() );
+    
+    TBool belowCriticalLevel( EFalse );
+    
+    TRAP_IGNORE( belowCriticalLevel =
+        SysUtil::DiskSpaceBelowCriticalLevelL( &rfs, aFileSize, driveUnit ) );
+
+    return !belowCriticalLevel;
+    }
+
+
 // <qmail> removed IpsOpType()
 
 // <qmail> makes more sence to have this method here in "base" online op than in every derived class
--- a/ipsservices/ipssosplugin/src/ipsplgpop3connectop.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgpop3connectop.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -32,6 +32,7 @@
 // <qmail> MFSMailRequestObserver& changed to pointer
 // <qmail> aSignallingAllowed parameter added
 // <qmail> aFetchWillFollow parameter added
+// <qmail> Silent connection parameter added
 CIpsPlgPop3ConnectOp* CIpsPlgPop3ConnectOp::NewL(
     CMsvSession& aMsvSession,                           
     TRequestStatus& aObserverRequestStatus,
@@ -43,7 +44,8 @@
     TInt aFSRequestId,
     CIpsPlgEventHandler* aEventHandler,
     TBool aSignallingAllowed,
-    TBool aFetchWillFollow )
+    TBool aFetchWillFollow,
+    TBool aSilentConnection)
     {
     FUNC_LOG;
     CIpsPlgPop3ConnectOp* op = new(ELeave) CIpsPlgPop3ConnectOp(
@@ -57,7 +59,8 @@
         aFSRequestId,
         aEventHandler,
         aSignallingAllowed,
-        aFetchWillFollow );
+        aFetchWillFollow,
+        aSilentConnection);
 
     CleanupStack::PushL( op );
     op->ConstructL();
@@ -259,6 +262,7 @@
 // <qmail> aSignallingAllowed parameter added
 // <qmail> aFetchWillFollow parameter added
 // <qmail> iAlreadyConnected removed
+// <qmail> Silent connection parameter added
 CIpsPlgPop3ConnectOp::CIpsPlgPop3ConnectOp(
     CMsvSession& aMsvSession,
     TRequestStatus& aObserverRequestStatus,
@@ -270,7 +274,8 @@
     TInt aFSRequestId,
     CIpsPlgEventHandler* aEventHandler,
     TBool aSignallingAllowed,
-    TBool aFetchWillFollow )
+    TBool aFetchWillFollow,
+    TBool aSilentConnection )
     :
     CIpsPlgOnlineOperation(
         aMsvSession,
@@ -283,7 +288,8 @@
     iState( EIdle ),
     iForcePopulate( aForcePopulate ),
     iEventHandler( aEventHandler ),
-    iFetchWillFollow( aFetchWillFollow )
+    iFetchWillFollow( aFetchWillFollow ),
+    iSilentConnection( aSilentConnection )
     {
     iService = aServiceId; 
     }
@@ -337,6 +343,9 @@
     FUNC_LOG;
     // <qmail> unnecessary: iStatus = KRequestPending;
     NM_COMMENT("CIpsPlgPop3ConnectOp: connecting");
+    
+    // select connection type based on iSilentConnection
+    // NOTE: Cannot be implemented yet, because MTM support is not released yet
     InvokeClientMtmAsyncFunctionL( KPOP3MTMConnect, iService ); // <qmail> 1 param removed
     SetActive();
 
--- a/ipsservices/ipssosplugin/src/ipsplgpop3plugin.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgpop3plugin.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -140,7 +140,7 @@
     const TFSMailMsgId& aMailBoxId,
     MFSMailRequestObserver& aOperationObserver,
     TInt aRequestId,
-    const TBool /*aSilentConnection*/ )
+    const TBool aSilentConnection )
     {
     FUNC_LOG;
     TMsvId service = aMailBoxId.Id();
@@ -181,9 +181,14 @@
         aMailBoxId, 
         &aOperationObserver,
         aRequestId,
-        iEventHandler );
+        iEventHandler,
+// <qmail> silent connection parameter added
+        ETrue,
+        EFalse,
+        aSilentConnection );
+// </qmail>    
     
-    watcher->SetOperation( op );
+    watcher->SetOperation( op ); // watcher takes ownership, no PushL needed
     CleanupStack::PopAndDestroy( sel ); // >>> sel
     
     iOperations.AppendL( watcher );
@@ -349,7 +354,7 @@
         aRequestId,
         iEventHandler );
     
-    watcher->SetOperation( op );
+    watcher->SetOperation( op ); // watcher takes ownership, no PushL needed
 	// <qmail> change PopAndDestroy to Pop
     CleanupStack::Pop( sel );
     CleanupStack::Pop( watcher );
--- a/ipsservices/ipssosplugin/src/ipsplgsearch.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgsearch.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -569,7 +569,7 @@
     FUNC_LOG;
     iActiveEntry->SetEntryL( aParams.iMailbox.Id() );
     
-    if ( iActiveEntry->Entry().iMtm == KSenduiMtmPop3Uid )
+    if ( iActiveEntry->Entry().iMtm == KUidMsgTypePOP3 )
         {
         aParams.iFolderIds.AppendL( 
             TFSMailMsgId( iPlugin.PluginId(), aParams.iMailbox.Id() ) );
@@ -1005,7 +1005,7 @@
             const TMsvEntry& entry = ( *iActiveEntry )[msg];
             if ( entry.iType == KUidMsvMessageEntry &&
             	 entry.iServiceId == serviceId &&
-                 ( entry.iMtm.iUid == KSenduiMtmSmtpUidValue ||
+                 ( entry.iMtm == KUidMsgTypeSMTP ||
                    entry.iMtm.iUid == iPlugin.MtmId().iUid ) )
                 {
                 iEmailMessages.AppendL( TMsgContainer( entry,
--- a/ipsservices/ipssosplugin/src/ipsplgsmtpoperation.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgsmtpoperation.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -436,7 +436,7 @@
     if ( !iSmtpMtm )
         {
         iSmtpMtm = static_cast<CSmtpClientMtm*>(
-            iMtmRegistry->NewMtmL( KSenduiMtmSmtpUid ) );
+            iMtmRegistry->NewMtmL( KUidMsgTypeSMTP ) );
         }
     }
     
--- a/ipsservices/ipssosplugin/src/ipsplgsosbaseplugin.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgsosbaseplugin.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -816,7 +816,7 @@
         aOperationObserver,
         aRequestId );
     //</qmail>
-    watcher->SetOperation( op );
+    watcher->SetOperation( op ); // takes ownership of op
 
     iOperations.AppendL( watcher );
     CleanupStack::Pop( watcher );
@@ -861,7 +861,7 @@
         }
 
     if ( ( orgMsg.Parent() == KMsvSentEntryIdValue ) &&
-         ( orgMsg.iMtm == KSenduiMtmSmtpUid ) )
+         ( orgMsg.iMtm == KUidMsgTypeSMTP ) )
         {
         iSmtpService->ChangeServiceIdL( orgMsg );
         }
@@ -881,7 +881,7 @@
         aOperationObserver,
         aRequestId );
     //</qmail>
-    watcher->SetOperation( op );
+    watcher->SetOperation( op ); // takes ownership of op
 
     iOperations.AppendL( watcher );
     CleanupStack::Pop( watcher );
@@ -927,7 +927,7 @@
         }
 
     if ( ( orgMsg.Parent() == KMsvSentEntryIdValue ) &&
-         ( orgMsg.iMtm == KSenduiMtmSmtpUid ) )
+         ( orgMsg.iMtm == KUidMsgTypeSMTP ) )
         {
         iSmtpService->ChangeServiceIdL( orgMsg );
         }
@@ -953,7 +953,7 @@
         aOperationObserver,
         aRequestId );
     //</qmail>
-    watcher->SetOperation( op );
+    watcher->SetOperation( op ); // takes ownership of op
 
     iOperations.AppendL( watcher );
     CleanupStack::Pop( watcher );
@@ -981,8 +981,8 @@
 
         if ( status == KErrNone )
             {
-            incoming = ( tEntry.iMtm == KSenduiMtmImap4Uid ) ||
-                ( tEntry.iMtm == KSenduiMtmPop3Uid );
+            incoming = ( tEntry.iMtm == KUidMsgTypeIMAP4 ) ||
+                ( tEntry.iMtm == KUidMsgTypePOP3 );
             }
         }
 
@@ -1036,7 +1036,7 @@
                     aOperationObserver,
                     aRequestId );
 
-    watcher->SetOperation(op);
+    watcher->SetOperation(op); // takes ownership of op
     iOperations.AppendL(watcher);
     CleanupStack::Pop( 2, watcher );
     }
@@ -1138,7 +1138,7 @@
         aOperationObserver,
         aRequestId,
         iMsgMapper);
-    watcher->SetOperation( op );
+    watcher->SetOperation( op ); // takes ownership of op
 
     iOperations.AppendL( watcher );
     CleanupStack::Pop( watcher );
@@ -1214,7 +1214,7 @@
         aPartId,
         aOperationObserver,
         aRequestId);
-    watcher->SetOperation( op );
+    watcher->SetOperation( op ); // takes ownership of op
 
     iOperations.AppendL( watcher );
     CleanupStack::Pop( watcher );
@@ -1487,7 +1487,7 @@
                     watcher->iStatus, *this, aMessageParts,
                     aOperationObserver, aRequestId);
 
-    watcher->SetOperation(op);
+    watcher->SetOperation(op); // takes ownership of op
     iOperations.AppendL(watcher);
     CleanupStack::Pop( 2, watcher );
     }
@@ -1688,7 +1688,7 @@
     CMsvOperation* op = CIpsPlgDeleteOperation::NewL( *iSession,
         watcher->iStatus, sel );
     //</qmail>
-    watcher->SetOperation( op );
+    watcher->SetOperation( op ); // takes ownership of op
     iOperations.AppendL( watcher );
     CleanupStack::Pop( watcher );
     //<qmail>
@@ -1728,7 +1728,7 @@
     CleanupStack::PushL( watcher );
     CMsvOperation* op = CIpsPlgDeleteOperation::NewL( *iSession,
         watcher->iStatus, sel, aOperationObserver, aRequestId );
-    watcher->SetOperation( op );
+    watcher->SetOperation( op ); // takes ownership of op
     iOperations.AppendL( watcher );
     CleanupStack::Pop( watcher );
     CleanupStack::Pop( sel );
@@ -1953,7 +1953,7 @@
         {
         folderType = EFSInbox;
         }
-	else if( ( aEntry->Entry().iMtm == KSenduiMtmPop3Uid ) &&
+	else if( ( aEntry->Entry().iMtm == KUidMsgTypePOP3 ) &&
 	         ( aEntry->Entry().iType == KUidMsvServiceEntry ) &&
 	         ( aEntry->Entry().iServiceId == aFolderId.Id() ) )
 	    {
@@ -2156,7 +2156,7 @@
             &aObserver,
             aRequestId );
 
-        watcher->SetOperation( op );
+        watcher->SetOperation( op ); // takes ownership of op
         CleanupStack::PopAndDestroy( sel );
         iOperations.AppendL( watcher );
         CleanupStack::Pop( watcher );
@@ -2199,7 +2199,7 @@
     CIpsPlgSmtpOperation* op = CIpsPlgSmtpOperation::NewLC( *iSession, watcher->iStatus );
 // </qmail>
     op->SetEventHandler(iEventHandler);
-    watcher->SetOperation(op);
+    watcher->SetOperation(op); // takes ownership of op
     op->EmptyOutboxFromPendingMessagesL( aMailBoxId.Id() );
     iOperations.AppendL(watcher);
     CleanupStack::Pop( 2, watcher );
@@ -2399,10 +2399,10 @@
 TUid CIpsPlgSosBasePlugin::MtmId() const
     {
     FUNC_LOG;
-    TUid ret = KSenduiMtmImap4Uid;
+    TUid ret = KUidMsgTypeIMAP4;
     if ( iFSPluginId == KIpsPlgPop3PluginUidValue )
         {
-        ret = KSenduiMtmPop3Uid;
+        ret = KUidMsgTypePOP3;
         }
     return ret;
     }
@@ -2468,7 +2468,7 @@
     //currently, no actions unless this is inbox
     //also, if id is '0', it means inbox before first sync...it doesn't really exist yet
     if( folder.iDetails.CompareF( KIpsPlgInbox ) == 0 || folder.Id() == 0 ||
-            ( folder.iMtm == KSenduiMtmPop3Uid ) &&
+            ( folder.iMtm == KUidMsgTypePOP3 ) &&
             ( folder.iType == KUidMsvServiceEntry ) &&
             ( folder.iServiceId == aActiveFolderId.Id() ) )
         {
--- a/ipsservices/nmimapclientplugin/inc/nmimapclientplugin.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/nmimapclientplugin/inc/nmimapclientplugin.h	Thu Oct 14 17:33:43 2010 +0300
@@ -40,9 +40,10 @@
     virtual ~NmImapClientPlugin();
     void getActions( const NmActionRequest &request,
         QList<NmAction*> &actionList);
+    void launchSettings(const NmId &mailboxId);
 
 private slots:
-    void settings();
+    void settings(const NmId &mailboxId=0);
     void switchToStandardFolderInbox();
     void switchToStandardFolderOutbox();
     void switchToStandardFolderDrafts();
--- a/ipsservices/nmimapclientplugin/src/nmimapclientplugin.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/nmimapclientplugin/src/nmimapclientplugin.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -146,16 +146,32 @@
 }
 
 /*!
+    Public method to access from extensionmanager to launch settings.
+    Opens mailbox settings.
+ */
+void NmImapClientPlugin::launchSettings(const NmId &mailboxId)
+{
+    NMLOG("NmImapClientPlugin::launchSettings()-->");
+    // Check if this request is for the IMAP protocol.
+    if (mailboxId.pluginId32() == this->pluginId()) {
+        settings(mailboxId);
+    }
+}
+
+/*!
     Slot connected to options menu settings NmAction.
     Opens mailbox settings.
  */
-void NmImapClientPlugin::settings()
+void NmImapClientPlugin::settings(const NmId &mailboxId)
 {
     NMLOG("NmImapClientPlugin::settings()-->");
-
-    const NmId &id = mMenuRequest.mailboxId();
-    NmMailboxMetaData *mailbox = mUiEngine->mailboxById(id);
-
+    
+    NmId id = mMenuRequest.mailboxId();
+    if (mailboxId.id()) {
+        id = mailboxId;
+    }
+    NmMailboxMetaData *mailbox = mUiEngine->mailboxById(id);    
+    
     if (mailbox) {
         if (!mSettingsViewLauncher) {
             mSettingsViewLauncher = new NmSettingsViewLauncher();
--- a/ipsservices/nmipsmtms/src/nmipsmtmui.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/nmipsmtms/src/nmipsmtmui.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -16,7 +16,6 @@
 */
 
 #include <msvapi.h>
-#include <SendUiConsts.h>
 #include <msvuids.h>
 
 #include "nmipsmtmui.h"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsservices/nmipssettings/inc/nmipssettingsdeletemailboxop.h	Thu Oct 14 17:33:43 2010 +0300
@@ -0,0 +1,97 @@
+/*
+* 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:
+*
+*/
+
+#ifndef NMIPSSETTINGSDELETEMAILBOXOP_H
+#define NMIPSSETTINGSDELETEMAILBOXOP_H
+
+#include <QObject>
+#include <nmcommon.h>
+
+class CMailboxDisconnectWait;
+class NmIpsSettingsManagerBase;
+class HbMessageBox;
+class HbProgressDialog;
+class HbAction;
+
+/// Operation results
+enum NmDeleteMailboxOpResults {
+    /// Operation successful. Errorcode is always 0
+    DeleteMbResultSuccess,
+    /// Operation has failed. Errorcode will identify the error
+    DeleteMbResultFailure,
+    /// Operation was canceled. Errorcode is always 0
+    DeleteMbResultCanceled
+};
+
+class NmIpsSettingsDeleteMailboxOp : public QObject
+{
+    Q_OBJECT
+
+public:
+    NmIpsSettingsDeleteMailboxOp(NmIpsSettingsManagerBase &settingsManager);
+    ~NmIpsSettingsDeleteMailboxOp();
+
+    void startOperation();
+
+public slots:
+    void mailboxDisconnected();
+    
+signals:
+    void operationComplete(int result, int error);
+    void goOffline(NmId mailboxId);
+    void stateChanged();
+
+private:
+    /// Operation states
+    enum DeleteOpStates {
+        StateConfirmation,
+        StateDisconnect,
+        StateDelete,
+        StateUnregisterMailbox,
+        StateDone
+    };
+
+private:
+    void complete(int result, int error);
+    
+private slots:
+    void handleConfimationDlg(HbAction *action);
+    void handleDisconnectTimeout();
+    void processState();
+    void changeState(DeleteOpStates nextState);
+
+    
+private: // data
+    // Owned. Messaging server observer (Symbian class)
+    CMailboxDisconnectWait *mDisconnectWait;
+    // Settings manager
+    NmIpsSettingsManagerBase &mSettingsManager;
+    // Owned. Confirmation query dialog
+    HbMessageBox *mDeleteConfirmationDlg;
+    // Owned. Wait dialog
+    HbProgressDialog* mDeleteProgressDlg;
+    // Current state
+    DeleteOpStates mState;
+    // How many retry attempts is left
+    int mRetryCount;
+    // Operation error code
+    int mError;
+    // Operation result (NmDeleteMailboxOpResults)
+    int mResult;
+};
+
+#endif // NMIPSSETTINGSDELETEMAILBOXOP_H
--- a/ipsservices/nmipssettings/inc/nmipssettingshelper.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/nmipssettings/inc/nmipssettingshelper.h	Thu Oct 14 17:33:43 2010 +0300
@@ -38,7 +38,7 @@
 class NmIpsSettingsManagerBase;
 class NmId;
 class CmApplSettingsUi;
-
+class NmIpsSettingsDeleteMailboxOp;
 
 // Constant for User Defined sync profile (EmailProfileOffsetUD)
 // \sa ipssettingkeys.h - Currently used sync profile
@@ -117,14 +117,14 @@
     void receivingWeekdaysModified();
     void startTimeModified(QTime time);
     void endTimeModified(QTime time);
-    void handleMailboxDelete(HbAction *action);
     void handleMailboxDeleteUpdate(HbAction *action);
     void handleUserDefinedIncomingPortInput(HbAction *action);
     void handleUserDefinedFolderPathInput(HbAction *action);
     void handleUserDefinedOutgoingPortInput(HbAction *action);
     void handleConnectionSelected(uint status);
     void refreshPeriodModified(int index);
-
+    void deleteOpComplete(int result, int error);
+    
 private:
 
     enum AppLibUpdateOperation
@@ -165,6 +165,7 @@
     bool mServerInfoDynamicItemsVisible;
     bool mAbortDynamicRSItemHandling;
     int mPrevInboxCount;
+    NmIpsSettingsDeleteMailboxOp *mDeleteOp;
 };
 
 #endif // NMIPSSETTINGSHELPER_H
--- a/ipsservices/nmipssettings/nmipssettings.pro	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/nmipssettings/nmipssettings.pro	Thu Oct 14 17:33:43 2010 +0300
@@ -49,7 +49,8 @@
            inc/nmipssettingscustomitem.h \
            inc/nmipssettingslabeledcombobox.h \
            inc/nmipssettingstimeeditor.h \
-           inc/nmipssettingsmultiselectionitem.h
+           inc/nmipssettingsmultiselectionitem.h \
+           inc/nmipssettingsdeletemailboxop.h
 
 SOURCES += src/nmipssettingsplugin.cpp \
            src/nmipssettingshelper.cpp \
@@ -61,7 +62,8 @@
            src/nmipssettingscustomitem.cpp \
            src/nmipssettingslabeledcombobox.cpp \
            src/nmipssettingstimeeditor.cpp \
-           src/nmipssettingsmultiselectionitem.cpp
+           src/nmipssettingsmultiselectionitem.cpp \
+           src/nmipssettingsdeletemailboxop.cpp
 
 symbian: { 
     TARGET.EPOCALLOWDLLDATA = 1
@@ -76,6 +78,7 @@
     LIBS += -llibc
     LIBS += -lcmapplsettingsui
     LIBS += -lAlwaysOnlineManagerClient
+    LIBS += -lmsgs
     
     CONFIG += mobility
     MOBILITY += bearer serviceframework
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsservices/nmipssettings/src/nmipssettingsdeletemailboxop.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -0,0 +1,357 @@
+/*
+* 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 <msvapi.h>
+#include <msvids.h>
+
+#include <QTimer>
+#include <QServiceManager>
+#include <QServiceFilter>
+#include <QServiceInterfaceDescriptor>
+
+#include <HbMessageBox>
+#include <HbProgressDialog>
+#include <HbAction>
+
+#include "nmipssettingsdeletemailboxop.h"
+#include "nmipssettingsmanagerbase.h"
+
+/// CONSTANTS
+
+/// How many times the delete is attempted before giving up.
+const int KDeleteRetryCount = 3;
+/// How long will the operation wait (ms) for the disconnect event to arrive before timing out
+const int KDisconnectTimeout = 2500;
+/// How long will the operation wait (ms) before attempting the delete again if error happened.
+const int KRetryDelay = 250;
+
+
+/*!
+    \class CMailboxDisconnectWait
+    \brief Symbian helper class for mailbox delete operation. Used for listening disconnect events
+           from messaging server.
+
+*/
+class CMailboxDisconnectWait : public CBase, public MMsvSessionObserver
+{
+public:
+    static CMailboxDisconnectWait* NewL(
+        NmIpsSettingsDeleteMailboxOp& aDeleteOp, const TMsvId& aMailboxId );
+    ~CMailboxDisconnectWait();
+
+    TBool IsConnected();
+    
+public: // from MMsvSessionObserver
+    void HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* aArg3);
+
+private:
+    CMailboxDisconnectWait( NmIpsSettingsDeleteMailboxOp& aDeleteOp, const TMsvId& aMailboxId );
+
+private: // data
+    /// Own. Messaging server session
+    CMsvSession* iMsvSession;
+    /// Mailbox ID that is observed
+    TMsvId iMailboxId;
+    /// Delete operation
+    NmIpsSettingsDeleteMailboxOp& iDeleteOp;
+};
+
+/*!
+    Constructor of CMailboxDisconnectWait.
+*/
+CMailboxDisconnectWait* CMailboxDisconnectWait::NewL( 
+    NmIpsSettingsDeleteMailboxOp& aDeleteOp,
+    const TMsvId& aMailboxId )
+{
+    CMailboxDisconnectWait* self = new(ELeave) CMailboxDisconnectWait( aDeleteOp, aMailboxId );
+    CleanupStack::PushL( self );
+    self->iMsvSession = CMsvSession::OpenSyncL( *self );
+    CleanupStack::Pop( self );
+    return self;
+}
+
+/*!
+    Constructor of CMailboxDisconnectWait.
+*/
+CMailboxDisconnectWait::CMailboxDisconnectWait( 
+    NmIpsSettingsDeleteMailboxOp& aDeleteOp, const TMsvId& aMailboxId ) : 
+    iMailboxId( aMailboxId ),
+    iDeleteOp( aDeleteOp )
+{
+}
+
+/*!
+    Destructor of CMailboxDisconnectWait.
+*/
+CMailboxDisconnectWait::~CMailboxDisconnectWait()
+{
+    delete iMsvSession;
+}
+
+/*!
+    Check if observed mailbox is connected or not
+*/
+TBool CMailboxDisconnectWait::IsConnected()
+{
+    TBool connected = EFalse;
+    TMsvEntry entry;
+    TMsvId id;
+    if( iMsvSession->GetEntry( iMailboxId, id, entry ) == KErrNone )
+        {
+        connected = entry.Connected();
+        }
+    return connected;
+}
+
+/*!
+    Event handler of Messaging server events
+*/
+void CMailboxDisconnectWait::HandleSessionEventL(TMsvSessionEvent aEvent, TAny* aArg1, TAny* aArg2, TAny* /*aArg3*/)
+{
+    // Entry changed event is received when online/offline state has changed
+    if( EMsvEntriesChanged == aEvent )
+        {
+        // mailboxes are only on root level, so check the parent
+        TMsvId parent = *static_cast<TMsvId*>(aArg2);
+        if( parent == KMsvRootIndexEntryId )
+            {
+            // find the mailbox we're observing
+            CMsvEntrySelection* selection = static_cast<CMsvEntrySelection*>(aArg1);
+            TInt count = selection->Count();
+            for( TInt i = 0; i < count; ++i )
+                {
+                if( (*selection)[i] == iMailboxId )
+                    {
+                    // if mailbox is not connected -> report to observer
+                    TMsvEntry entry;
+                    TMsvId id;
+                    TInt err = iMsvSession->GetEntry( iMailboxId, id, entry );
+                    if( !err && !entry.Connected() )
+                        {
+                        TInt err; // error code ignored
+                        QT_TRYCATCH_ERROR( err, iDeleteOp.mailboxDisconnected() );
+                        Q_UNUSED(err); // remove compile warning
+                        }
+                    }
+                }
+            }
+        }
+}
+
+
+/*!
+    \class NmIpsSettingsDeleteMailboxOp
+    \brief Operation that handles the deletion of mailbox
+
+*/
+
+// ======== MEMBER FUNCTIONS ========
+
+/*!
+    Constructor of NmIpsSettingsDeleteMailboxOp.
+*/
+NmIpsSettingsDeleteMailboxOp::NmIpsSettingsDeleteMailboxOp(NmIpsSettingsManagerBase &settingsManager) :
+    mDisconnectWait(NULL),
+    mSettingsManager(settingsManager),
+    mDeleteConfirmationDlg(NULL),
+    mDeleteProgressDlg(NULL),
+    mRetryCount(KDeleteRetryCount),
+    mError(0)
+{
+    connect( this, SIGNAL(stateChanged()), this, SLOT(processState()), Qt::QueuedConnection );
+}
+
+/*!
+    Destructor of NmIpsSettingsDeleteMailboxOp.
+*/
+NmIpsSettingsDeleteMailboxOp::~NmIpsSettingsDeleteMailboxOp()
+{
+    delete mDeleteConfirmationDlg;
+    delete mDeleteProgressDlg;
+    delete mDisconnectWait;
+}
+
+/*!
+    Starts the operation
+*/
+void NmIpsSettingsDeleteMailboxOp::startOperation()
+{
+    // reset state
+    mRetryCount = KDeleteRetryCount;
+    mResult = DeleteMbResultSuccess;
+    mError = 0;
+    
+    delete mDisconnectWait;
+    mDisconnectWait = NULL;
+    TRAPD( err, mDisconnectWait = CMailboxDisconnectWait::NewL( 
+        *this, mSettingsManager.mailboxId().id32() ) );
+
+    if(!err) {
+        changeState(StateConfirmation);
+    } else {
+        // failed
+        complete(DeleteMbResultFailure, err);
+    }
+}
+
+/*!
+    Observer method to get notifications when the handled mailbox has disconnected
+*/
+void NmIpsSettingsDeleteMailboxOp::mailboxDisconnected()
+{
+    if( mState == StateDisconnect )
+        {
+        changeState(StateDelete);
+        }
+}
+
+/*!
+    Notification method that is called when user has responded to confirmation query
+*/
+void NmIpsSettingsDeleteMailboxOp::handleConfimationDlg(HbAction *action)
+{
+    if (action == mDeleteConfirmationDlg->actions().at(0)) {
+        changeState(StateDisconnect);
+    } else {
+        complete(DeleteMbResultCanceled, 0);
+    }
+}
+
+/*!
+    Notification method that is called when timeout has occured while waiting for disconnect event
+*/
+void NmIpsSettingsDeleteMailboxOp::handleDisconnectTimeout()
+{
+    if( mState == StateDisconnect )
+        {
+        changeState(StateDelete);
+        }
+}
+
+/*!
+    Operation's state machine. Handles states.
+*/
+void NmIpsSettingsDeleteMailboxOp::processState()
+{
+    switch( mState ) {
+    case StateConfirmation: {
+        // Ask user whether to delete or not
+        if(!mDeleteConfirmationDlg) {
+            mDeleteConfirmationDlg =
+                new HbMessageBox(HbMessageBox::MessageTypeQuestion);
+            mDeleteConfirmationDlg->setText(
+                hbTrId("txt_mail_dialog_do_you_want_to_delete_the_mailbox"));
+            mDeleteConfirmationDlg->setTimeout(HbMessageBox::NoTimeout);
+            mDeleteConfirmationDlg->setStandardButtons(HbMessageBox::Yes | HbMessageBox::No);
+        }
+        mDeleteConfirmationDlg->open(this, SLOT(handleConfimationDlg(HbAction *)));
+        break;
+    }
+    
+    case StateDisconnect: {
+        // Disconnect mailbox
+        emit goOffline(mSettingsManager.mailboxId());
+
+        // Display the progress note during rest of the operation
+        if( !mDeleteProgressDlg ) {
+            mDeleteProgressDlg = new HbProgressDialog(HbProgressDialog::WaitDialog);
+            mDeleteProgressDlg->removeAction( mDeleteProgressDlg->actions().at(0));
+            mDeleteProgressDlg->setText(hbTrId("txt_common_info_deleting"));
+        }
+        mDeleteProgressDlg->delayedShow();
+
+        if( mDisconnectWait->IsConnected() ) {
+            // connected -> wait for disconnect or timeout
+            QTimer::singleShot(KDisconnectTimeout, this, SLOT(handleDisconnectTimeout()));
+        } else {
+            // not connected -> delete mailbox immediately
+            changeState( StateDelete );
+        }
+        break;
+    }
+    
+    case StateDelete: {
+        // delete mailbox
+        int error = mSettingsManager.deleteMailbox();
+        if( !error ) {
+            changeState(StateUnregisterMailbox);
+
+        } else if( mRetryCount-- ) {
+            // attempt again after small delay
+            QTimer::singleShot(KRetryDelay, this, SLOT(processState()));
+        
+        } else {
+            // enough failures. give up
+            complete(DeleteMbResultFailure, error);
+        }
+        break;
+    }
+    
+    case StateUnregisterMailbox: {
+        // Unregister mailbox from application library
+        QtMobility::QServiceManager manager;
+        QtMobility::QServiceFilter filter("com.nokia.symbian.IEmailRegisterAccount");
+        QList<QtMobility::QServiceInterfaceDescriptor> interfaces = manager.findInterfaces(filter);
+        QObject *registerInterface = NULL;
+        if (!interfaces.isEmpty()) {
+            registerInterface = manager.loadInterface(interfaces.first());
+        }
+
+        if (registerInterface) {
+            quint64 mailboxId(mSettingsManager.mailboxId().id());
+            // Try to remove the mailbox from the App Library.
+            (void)QMetaObject::invokeMethod(registerInterface,
+                "unregisterMailbox", Q_ARG(quint64, mailboxId));
+            }
+        
+        // All done -> complete
+        complete(DeleteMbResultSuccess, 0);
+        break;
+    }
+    
+    case StateDone: // fall through
+    default: {
+        // Hide the progress note
+        if( mDeleteProgressDlg ) {
+            mDeleteProgressDlg->close();
+        }
+        emit operationComplete(mResult, mError);
+        break;
+    }
+    }
+}
+
+/*!
+    Changes the operation state
+*/
+void NmIpsSettingsDeleteMailboxOp::changeState(DeleteOpStates nextState)
+{
+    mState = nextState;
+    emit stateChanged();
+}
+
+/*!
+    Completes the operation by setting the result values and changing the state to [done]
+*/
+void NmIpsSettingsDeleteMailboxOp::complete(int result, int error)
+{
+    mError = error;
+    mResult = result;
+    mState = StateDone;
+    emit stateChanged();
+}
+
+
--- a/ipsservices/nmipssettings/src/nmipssettingshelper.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/nmipssettings/src/nmipssettingshelper.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -44,6 +44,7 @@
 #include "nmipssettingsmanagerbase.h"
 #include "nmipssettingscustomitem.h"
 #include "nmipsextendedsettingsmanager.h"
+#include "nmipssettingsdeletemailboxop.h"
 
 // CONSTANTS
 
@@ -100,7 +101,8 @@
   mOutgoingPortInputValidator(NULL),
   mDestinationDialog(NULL),
   mServerInfoDynamicItemsVisible(false),
-  mAbortDynamicRSItemHandling(false)
+  mAbortDynamicRSItemHandling(false),
+  mDeleteOp(NULL)
 {
     QVariant inboxValue;
     mSettingsManager.readSetting(IpsServices::ReceptionInboxSyncWindow, inboxValue);
@@ -113,6 +115,7 @@
 NmIpsSettingsHelper::~NmIpsSettingsHelper()
 {
     mContentItems.clear();
+    delete mDeleteOp;
     delete mDeleteConfirmationDialog;
     delete mIncomingPortInputDialog;
     delete mIncomingPortInputValidator;
@@ -205,7 +208,7 @@
                         weekdayItemValues);
 
                     formItemData->setContentWidgetData("heading",
-                        hbTrId("txt_mailips_dialog_heading_receiving_weekdays"));
+                        hbTrId("txt_mailips_dialog_heading_receiving_days"));
 
                     formItemData->setContentWidgetData("items", weekdayItems);
 
@@ -597,55 +600,14 @@
 */
 void NmIpsSettingsHelper::deleteButtonPress()
 {
-    if(!mDeleteConfirmationDialog) {
-        mDeleteConfirmationDialog =
-            new HbMessageBox(HbMessageBox::MessageTypeQuestion);
-        mDeleteConfirmationDialog->setText(
-            hbTrId("txt_mail_dialog_do_you_want_to_delete_the_mailbox"));
-        mDeleteConfirmationDialog->setTimeout(HbMessageBox::NoTimeout);
-        mDeleteConfirmationDialog->setStandardButtons(HbMessageBox::Yes | HbMessageBox::No);
+    if( !mDeleteOp ) {
+        mDeleteOp = new NmIpsSettingsDeleteMailboxOp( mSettingsManager );
+        connect( mDeleteOp, SIGNAL(goOffline(const NmId &)), this, SIGNAL(goOffline(const NmId &)));
+        connect( mDeleteOp, SIGNAL(operationComplete(int,int)), 
+            this, SLOT(deleteOpComplete(int,int)));
+        mDeleteOp->startOperation();
     }
-    mDeleteConfirmationDialog->open(this, SLOT(handleMailboxDelete(HbAction *)));
-}
-
-/*!
-    Deletes mailbox and displays the proper notes.
-*/
-void NmIpsSettingsHelper::handleMailboxDelete(HbAction *action)
-{
-    if (action == mDeleteConfirmationDialog->actions().at(0)) {
-        emit goOffline(mSettingsManager.mailboxId());
-        mEmitOnline = false;
-
-        QVariant mailboxName;
-        mSettingsManager.readSetting(IpsServices::MailboxName, mailboxName);
-
-        // Display the progress note. Before display the note, remove the cancel
-        // button.
-        HbProgressDialog progressNote(HbProgressDialog::WaitDialog);
-        progressNote.setText(hbTrId("txt_common_info_deleting"));
-        progressNote.removeAction(progressNote.actions().at(0));
-        progressNote.delayedShow();
-
-        if (!mSettingsManager.deleteMailbox()) {
-            // The mailbox was deleted successfully.
-
-            // Delete the mailbox also from AppLib.
-            updateAppLib(UnregisterMailbox);
-
-            // Hide the progress note and display the "mailbox deleted" dialog.
-            progressNote.close();
-
-            HbNotificationDialog *note = new HbNotificationDialog();
-            QString noteText = hbTrId("txt_mail_dialog_1_deleted").arg(mailboxName.toString());
-            note->setTitle(noteText);
-            note->setAttribute(Qt::WA_DeleteOnClose);
-            note->open(this, SLOT(handleMailboxDeleteUpdate(HbAction *)));
-        } else {
-            // Failed to delete the mailbox!
-            progressNote.close();
-        }
-    }
+    
 }
 
 /*!
@@ -654,6 +616,10 @@
 void NmIpsSettingsHelper::handleMailboxDeleteUpdate(HbAction *action)
 {
     Q_UNUSED(action);
+
+    delete mDeleteOp;
+    mDeleteOp = NULL;
+    
     // Emit the signal to update the UI.
     emit mailboxListChanged(mSettingsManager.mailboxId(),
                             NmSettings::MailboxDeleted);
@@ -678,12 +644,12 @@
     // Read receiving schedule item values and
     // make a decision based on those if item should be visible or not.
     mAbortDynamicRSItemHandling = false;
-    for (int index(0); (index < NmIpsSettingsReceivingScheduleItemCount) &&
-             !mAbortDynamicRSItemHandling; ++index) {
+    for (int i(0); (i < NmIpsSettingsReceivingScheduleItemCount) &&
+             !mAbortDynamicRSItemHandling; ++i) {
 
         // Read setting value from active profile
         QVariant setting;
-        IpsServices::SettingItem item(NmIpsSettingsReceivingScheduleItems[index]);
+        IpsServices::SettingItem item(NmIpsSettingsReceivingScheduleItems[i]);
         mSettingsManager.readSetting(item, setting);
 
         // If setting value is not valid (-1=N/A) then remove setting item.
@@ -1541,3 +1507,26 @@
 			selectedValue);
 	}
 }
+
+void NmIpsSettingsHelper::deleteOpComplete( int result, int error)
+{
+    Q_UNUSED(error);
+    if( result == DeleteMbResultSuccess ) {
+        // Show notification that mailbox has been deleted
+        QVariant mailboxName;
+        mSettingsManager.readSetting(IpsServices::MailboxName, mailboxName);
+
+        HbNotificationDialog *note = new HbNotificationDialog();
+        QString noteText = hbTrId("txt_mail_dialog_1_deleted").arg(mailboxName.toString());
+        note->setTitle(noteText);
+        note->setAttribute(Qt::WA_DeleteOnClose);
+        note->open(this, SLOT(handleMailboxDeleteUpdate(HbAction *)));
+    } else {
+        // Add error note here to be shown if delete operation has failed
+
+        // delete operation
+        delete mDeleteOp;
+        mDeleteOp = NULL;
+    }
+}
+
--- a/ipsservices/nmipssettings/src/nmipssettingsplugin.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/nmipssettings/src/nmipssettingsplugin.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -589,7 +589,7 @@
         int folderPathItemIndex = mSettingsHelper->getCorrectFolderPathComboBoxIndex();
         folderPathItem->setContentWidgetData(NmIpsSettingsCurrentIndex, folderPathItemIndex);
 
-		mForm->addConnection(folderPathItem, SIGNAL(itemSelected(int)),
+		mForm->addConnection(folderPathItem, SIGNAL(currentIndexChanged(int)),
 							 mSettingsHelper, SLOT(folderPathChange(int)));
 
         item.appendChild(folderPathItem);
--- a/ipsservices/nmpopclientplugin/inc/nmpopclientplugin.h	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/nmpopclientplugin/inc/nmpopclientplugin.h	Thu Oct 14 17:33:43 2010 +0300
@@ -40,9 +40,10 @@
     virtual ~NmPopClientPlugin();
     void getActions( const NmActionRequest &request,
         QList<NmAction*> &actionList);
+    void launchSettings(const NmId &mailboxId);
 
 private slots:
-    void settings();
+    void settings(const NmId &mailboxId=0);
     void switchToStandardFolderInbox();
     void switchToStandardFolderOutbox();
     void switchToStandardFolderDrafts();
--- a/ipsservices/nmpopclientplugin/src/nmpopclientplugin.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/ipsservices/nmpopclientplugin/src/nmpopclientplugin.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -151,15 +151,31 @@
 }
 
 /*!
+    Public method to access from extensionmanager to launch settings.
+    Opens mailbox settings.
+ */
+void NmPopClientPlugin::launchSettings(const NmId &mailboxId)
+{
+    NMLOG("NmPopClientPlugin::launchSettings()-->");
+    // Check if this request is for the POP protocol.
+    if (mailboxId.pluginId32() == this->pluginId()) {
+        settings(mailboxId);             
+    }
+}
+
+/*!
     Slot connected to options menu settings NmAction.
     Opens mailbox settings.
  */
-void NmPopClientPlugin::settings()
+void NmPopClientPlugin::settings(const NmId &mailboxId)
 {
     NMLOG("NmPopClientPlugin::settings()-->");
 
-    const NmId &id = mMenuRequest.mailboxId();
-    NmMailboxMetaData *mailbox = mUiEngine->mailboxById(id);
+    NmId id = mMenuRequest.mailboxId();
+    if (mailboxId.id()) {
+        id = mailboxId;
+    }
+    NmMailboxMetaData *mailbox = mUiEngine->mailboxById(id);  
 
     if (mailbox) {
         if (!mSettingsViewLauncher) {
@@ -181,7 +197,6 @@
                 SIGNAL(goOffline(const NmId &)),
                 this, SLOT(goOffline(const NmId &)));
         }
-
         handleRequest(NmActionResponseCommandSettings, mMenuRequest);
         mSettingsViewLauncher->launchSettingsView(id, mailbox->name());
     }
--- a/package_definition.xml	Thu Sep 30 11:43:07 2010 +0300
+++ b/package_definition.xml	Thu Oct 14 17:33:43 2010 +0300
@@ -50,7 +50,7 @@
       <component id="nmipsmtms" filter="s60" name="NM IPS Client Plugin" introduced="^4" class="plugin">
        <!-- <unit bldFile="ipsservices/nmipsmtms" qt:proFile="nmipsmtms.pro"/>-->
       </component>
-      <component id="nmipssettings" filter="s60" name="NM IPS Settings" introduced="^4">
+      <component id="nmipssettings" filter="s60,test" name="NM IPS Settings" introduced="^4">
        <!-- <unit bldFile="ipsservices/nmipssettings" qt:proFile="nmipssettings.pro"/>-->
         <unit bldFile="ipsservices/nmipssettings/tsrc/tools/extendedkeygen" qt:proFile="extendedkeygenerator.pro"/>
       </component>