Revision: 201019 RCL_3 PDK_3.0.0
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 25 May 2010 12:23:16 +0300
branchRCL_3
changeset 17 67369d1b217f
parent 16 b5fbb9b25d57
child 18 6b8f3b30d0ec
Revision: 201019 Kit: 2010121
email_plat/email_client_api/group/bld.inf
email_plat/email_client_api/inc/memailmailbox.h
email_plat/email_client_api/inc/mmailboxcontentobserver.h
emailservices/emailclientapi/inc/emailmailbox.h
emailservices/emailclientapi/src/emailmailbox.cpp
emailservices/emailframework/commonlib/group/bld.inf
emailservices/emailframework/commonlib/inc/cmailboxstateext.h
emailservices/emailframework/commonlib/inc/emailextensionuids.hrh
emailservices/emailframework/commonlib/src/CFSMailBox.cpp
emailservices/emailframework/data/fsmailbrandmanager.rss
emailservices/emailserver/cmailhandlerplugin/inc/cmailcpshandler.h
emailservices/emailserver/cmailhandlerplugin/src/cmailcpshandler.cpp
emailservices/emailserver/cmailhandlerplugin/src/cmailcpssettings.cpp
emailservices/emailstore/base_plugin/src/BaseMrInfoObject.cpp
emailuis/emailui/data/FreestyleEmailUi.rss
emailuis/emailui/group/FreestyleEmailUi.mmp
emailuis/emailui/inc/FSAsyncTextFormatter.h
emailuis/emailui/inc/FreestyleEmailUiAppui.h
emailuis/emailui/inc/FreestyleEmailUiHtmlViewerView.h
emailuis/emailui/inc/FreestyleEmailUiLauncherGridVisualiser.h
emailuis/emailui/inc/FreestyleEmailUiMailListVisualiser.h
emailuis/emailui/inc/FreestyleEmailUiSearchListVisualiser.h
emailuis/emailui/inc/FreestyleEmailUiTextureManager.h
emailuis/emailui/inc/ceuiexitguardian.h
emailuis/emailui/inc/ncscomposeview.h
emailuis/emailui/inc/ncscomposeviewcontainer.h
emailuis/emailui/src/FSAsyncTextFormatter.cpp
emailuis/emailui/src/FreestyleEmailDownloadInformationMediator.cpp
emailuis/emailui/src/FreestyleEmailUiAppui.cpp
emailuis/emailui/src/FreestyleEmailUiFolderListVisualiser.cpp
emailuis/emailui/src/FreestyleEmailUiHtmlViewerView.cpp
emailuis/emailui/src/FreestyleEmailUiLauncherGridVisualiser.cpp
emailuis/emailui/src/FreestyleEmailUiLayoutHandler.cpp
emailuis/emailui/src/FreestyleEmailUiMailListVisualiser.cpp
emailuis/emailui/src/FreestyleEmailUiSearchListVisualiser.cpp
emailuis/emailui/src/FreestyleEmailUiSendAttachmentsListControl.cpp
emailuis/emailui/src/FreestyleEmailUiSettingsList.cpp
emailuis/emailui/src/FreestyleEmailUiSettingsListView.cpp
emailuis/emailui/src/FreestyleEmailUiTextureManager.cpp
emailuis/emailui/src/FreestyleEmailUiViewBase.cpp
emailuis/emailui/src/ceuiexitguardian.cpp
emailuis/emailui/src/ncscomposeview.cpp
emailuis/emailui/src/ncscomposeviewcontainer.cpp
emailuis/emailui/src/ncsheadercontainer.cpp
emailuis/uicomponents/src/fscontrolbuttonvisualiser.cpp
emailuis/uicomponents/src/fstreeplainonelineitemvisualizer.cpp
emailuis/uicomponents/src/fstreevisualizerbase.cpp
ipsservices/ipssosplugin/group/IPSSosPlugin.mmp
ipsservices/ipssosplugin/group/bld.inf
ipsservices/ipssosplugin/inc/cemailsettingsextension.h
ipsservices/ipssosplugin/inc/cemailsettingsextensionimpl.h
ipsservices/ipssosplugin/inc/ipsplgheaders.h
ipsservices/ipssosplugin/inc/ipsplgimap4fetchattachmentop.h
ipsservices/ipssosplugin/inc/ipsplgsosbaseplugin.h
ipsservices/ipssosplugin/src/cemailsettingsextensionimpl.cpp
ipsservices/ipssosplugin/src/ipsplgimap4fetchattachmentop.cpp
ipsservices/ipssosplugin/src/ipsplgsosbaseplugin.cpp
ipsservices/ipssossettings/inc/ipssetview.h
ipsservices/ipssossettings/src/ipssetview.cpp
meetingrequest/mrgui/data/esmrgui.rss
meetingrequest/mrgui/loc/mrui.loc
meetingrequest/mrgui/mrfieldbuilderplugin/group/esmrfieldbuilderplugin.mmp
meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrattachmentcommandhandler.cpp
meetingrequest/mrgui/mrfieldbuilderplugin/src/cmropenattachmentcommand.cpp
meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrsaveandopenattachmentcommand.cpp
meetingrequest/mrgui/mrfieldbuilderpluginextension/group/esmrfieldbuilderpluginextension.mmp
meetingrequest/mrgui/mrfieldbuilderpluginextension/src/CESMRFieldBuilderPluginExtension.cpp
meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrconflictpopup.cpp
meetingrequest/mrgui/mrlocationplugin/src/cesmrlocationpluginimpl.cpp
meetingrequest/mrgui/src/cesmreditordialog.cpp
meetingrequest/mrgui/src/cesmrviewerdialog.cpp
--- a/email_plat/email_client_api/group/bld.inf	Tue May 11 15:57:15 2010 +0300
+++ b/email_plat/email_client_api/group/bld.inf	Tue May 25 12:23:16 2010 +0300
@@ -36,5 +36,6 @@
 ../inc/memailcontent.h              APP_LAYER_PLATFORM_EXPORT_PATH(memailcontent.h)
 ../inc/memailmessagesearch.h		APP_LAYER_PLATFORM_EXPORT_PATH(memailmessagesearch.h)
 ../inc/mmailboxsyncobserver.h		APP_LAYER_PLATFORM_EXPORT_PATH(mmailboxsyncobserver.h)
+../inc/mmailboxcontentobserver.h	APP_LAYER_PLATFORM_EXPORT_PATH(mmailboxcontentobserver.h)
 
 // End of File
--- a/email_plat/email_client_api/inc/memailmailbox.h	Tue May 11 15:57:15 2010 +0300
+++ b/email_plat/email_client_api/inc/memailmailbox.h	Tue May 25 12:23:16 2010 +0300
@@ -140,6 +140,17 @@
      * The method follows "fire and forget" pattern, returns immediately.
      */
     virtual void EditNewMessageL() = 0;
+    
+    /** Register mailbox observer 
+     * @param aObserver observer called back when changes in mailbox (new message,
+     * messages changes or messages deleted).
+     * */
+    virtual void RegisterObserverL( MMailboxContentObserver& aObserver ) = 0;
+        
+    /** 
+     * Unregister mailbox observe.r 
+     */
+    virtual void UnregisterObserver( MMailboxContentObserver& aObserver ) = 0;
 
 };
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/email_plat/email_client_api/inc/mmailboxcontentobserver.h	Tue May 25 12:23:16 2010 +0300
@@ -0,0 +1,37 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Observer interface for mailbox events.
+*
+*/
+
+#ifndef MMAILBOXCONTENTOBSERVER_H
+#define MMAILBOXCONTENTOBSERVER_H
+
+#include <emailapidefs.h>
+
+namespace EmailInterface {
+
+class MMailboxContentObserver
+{
+public:
+    virtual void NewMessageEventL( const TMailboxId& aMailbox, const REmailMessageIdArray aNewMessages, const TFolderId& aParentFolderId ) = 0; 
+    
+    virtual void MessageChangedEventL( const TMailboxId& aMailbox, const REmailMessageIdArray aChangedMessages, const TFolderId& aParentFolderId ) = 0;
+    
+    virtual void MessageDeletedEventL( const TMailboxId& aMailbox, const REmailMessageIdArray aDeletedMessages, const TFolderId& aParentFolderId ) = 0;
+};
+
+} // namespace EmailInterface
+
+#endif // MMAILBOXCONTENTOBSERVER_H
--- a/emailservices/emailclientapi/inc/emailmailbox.h	Tue May 11 15:57:15 2010 +0300
+++ b/emailservices/emailclientapi/inc/emailmailbox.h	Tue May 25 12:23:16 2010 +0300
@@ -22,6 +22,7 @@
 #include <memailmailbox.h>
 #include "mfsmaileventobserver.h"
 #include "mfsmailrequestobserver.h"
+#include "mmailboxcontentobserver.h"
 
 using namespace EmailInterface;
 
@@ -124,6 +125,7 @@
         virtual void EventL(TFSMailEvent aEvent, TFSMailMsgId aMailbox, TAny* aParam1, TAny* aParam2, TAny* aParam3 );
         typedef void (CEmailMailbox::TObserverEventMapper::*TEventMapFunc)( TMailboxId, TAny*, TAny*, TAny* );
     private: // mappers, so say we all!
+        void ConvertParamsL( TMailboxId aMailbox, TAny* aParam1, TAny* aParam2, REmailMessageIdArray& aMessageIds, TFolderId& aFolderId );
         void IgnoreEventL( TMailboxId     aMailbox, TAny* aParam1, TAny* aParam2, TAny* aParam3 );
         void NewMessageL( TMailboxId     aMailbox, TAny* aParam1, TAny* aParam2, TAny* aParam3 );
         void MessageChangedL( TMailboxId     aMailbox, TAny* aParam1, TAny* aParam2, TAny* aParam3 );
--- a/emailservices/emailclientapi/src/emailmailbox.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailservices/emailclientapi/src/emailmailbox.cpp	Tue May 25 12:23:16 2010 +0300
@@ -41,8 +41,6 @@
 
 // Constants
 
-_LIT( KNewLine, "\n" );
-
 // -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
@@ -201,15 +199,21 @@
         {
         case EInbox:
             fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSInbox );
+            break;
         case EOutbox:
             fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSOutbox );
+            break;
         case EDrafts:
             fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSDraftsFolder );
+            break;
         case EDeleted:
             fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSDeleted );
+            break;
         case ESent:
             fsFolderId = iPlugin->GetStandardFolderIdL( FsMailboxId(), EFSSentFolder );
+            break;
         case EOther:
+            break;
         default:
             User::Leave( KErrNotFound );
             break;
@@ -286,13 +290,27 @@
 // -----------------------------------------------------------------------------
 MEmailMessage* CEmailMailbox::CreateForwardMessageL( const TMessageId& aMessageId ) const
     {
+    // create temp header descriptor
+    TReplyForwardParams params;
+    params.iHeader = HBufC::NewLC(1);
+    params.iHeader->Des().Copy(KNullDesC());    
+    params.iSmartTag = HBufC::NewLC(1);
+    params.iSmartTag->Des().Copy(KNullDesC());        
+    TPckgBuf<TReplyForwardParams> buf( params );
+    HBufC* temp = HBufC::NewLC( buf.Length() );
+    temp->Des().Copy( buf );
+    
     CFSMailMessage* fsMessage = iFsMailbox->CreateForwardMessage(
-        FsMsgId( iPluginData, aMessageId ), KNewLine() );
+        FsMsgId( iPluginData, aMessageId ), *temp );
     User::LeaveIfNull( fsMessage );
     CleanupStack::PushL( fsMessage );
     MEmailMessage* message = CEmailMessage::NewL( iPluginData, fsMessage, EClientOwns );
     CleanupStack::Pop();  // fsMessage
-
+    
+    CleanupStack::PopAndDestroy( temp );
+    CleanupStack::PopAndDestroy( params.iSmartTag );
+    CleanupStack::PopAndDestroy( params.iHeader );
+    
     return message;
     }
 
@@ -448,6 +466,7 @@
     &CEmailMailbox::TObserverEventMapper::IgnoreEventL,
     &CEmailMailbox::TObserverEventMapper::IgnoreEventL,
     &CEmailMailbox::TObserverEventMapper::IgnoreEventL,
+    &CEmailMailbox::TObserverEventMapper::IgnoreEventL,
     &CEmailMailbox::TObserverEventMapper::NewMessageL,
     &CEmailMailbox::TObserverEventMapper::MessageChangedL,
     &CEmailMailbox::TObserverEventMapper::MessageDeletedL,
@@ -471,24 +490,68 @@
         }
     }
 
+void CEmailMailbox::TObserverEventMapper::ConvertParamsL( TMailboxId aMailbox, TAny* aParam1, 
+                                            TAny* aParam2, REmailMessageIdArray& aMessageIds, TFolderId& aFolderId )
+    {  
+    RArray<TFSMailMsgId>* newEntries( static_cast< RArray<TFSMailMsgId>* >( aParam1 ) );
+    CleanupClosePushL( *newEntries );
+    TFSMailMsgId* parentFolder = static_cast<TFSMailMsgId*>( aParam2 );
+    aFolderId = TFolderId( parentFolder->Id(), aMailbox );
+    
+    for (TInt j = 0; j < newEntries->Count(); j++ ) 
+        {
+        TFSMailMsgId fsId(( *newEntries )[j]);
+        TMessageId messageId( fsId.Id(), aFolderId.iId, aMailbox);
+        aMessageIds.Append(messageId);
+        }
+    
+    CleanupStack::PopAndDestroy( newEntries );
+    }
+
 void CEmailMailbox::TObserverEventMapper::IgnoreEventL(
     TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
     {
     }
 
 void CEmailMailbox::TObserverEventMapper::NewMessageL(
-    TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
-    {
+    TMailboxId aMailbox, TAny* aParam1, TAny* aParam2, TAny* /*aParam3*/ )
+    {  
+    REmailMessageIdArray messageIds;    
+    TFolderId folderId;
+    ConvertParamsL( aMailbox, aParam1, aParam2, messageIds, folderId );
+    for ( TInt i = 0; i < iClientObservers.Count(); i++ ) 
+        {
+        MMailboxContentObserver* observer = iClientObservers[i];
+        observer->NewMessageEventL( aMailbox, messageIds, folderId );
+        }
     }
 
 void CEmailMailbox::TObserverEventMapper::MessageChangedL(
-    TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
+    TMailboxId aMailbox, TAny* aParam1, TAny* aParam2, TAny* /*aParam3*/ )
     {
+    REmailMessageIdArray messageIds;    
+    TFolderId folderId;
+    ConvertParamsL( aMailbox, aParam1, aParam2, messageIds, folderId );
+    
+    for ( TInt i = 0; i < iClientObservers.Count(); i++ ) 
+        {
+        MMailboxContentObserver* observer = iClientObservers[i];
+        observer->MessageChangedEventL( aMailbox, messageIds, folderId );
+        }
     }
 
 void CEmailMailbox::TObserverEventMapper::MessageDeletedL(
-    TMailboxId /*aMailbox*/, TAny* /*aParam1*/, TAny* /*aParam2*/, TAny* /*aParam3*/ )
+    TMailboxId aMailbox, TAny* aParam1, TAny* aParam2, TAny* /*aParam3*/ )
     {
+    REmailMessageIdArray messageIds;    
+    TFolderId folderId;
+    ConvertParamsL( aMailbox, aParam1, aParam2, messageIds, folderId );
+        
+    for ( TInt i = 0; i < iClientObservers.Count(); i++ ) 
+        {
+        MMailboxContentObserver* observer = iClientObservers[i];
+        observer->MessageDeletedEventL( aMailbox, messageIds, folderId );
+        }
     }
 
 void CEmailMailbox::TObserverEventMapper::MessageMoved(
--- a/emailservices/emailframework/commonlib/group/bld.inf	Tue May 11 15:57:15 2010 +0300
+++ b/emailservices/emailframework/commonlib/group/bld.inf	Tue May 25 12:23:16 2010 +0300
@@ -28,6 +28,7 @@
 ../inc/cfsmailmessagepart.h |../../../../inc/cfsmailmessagepart.h
 ../inc/cfsmailaddress.h |../../../../inc/cfsmailaddress.h
 ../inc/cemailextensionbase.h |../../../../inc/cemailextensionbase.h
+../inc/emailextensionuids.hrh |../../../../inc/emailextensionuids.hrh
 ../inc/cmrcalendarinfo.h |../../../../inc/cmrcalendarinfo.h
 ../inc/cmailmessageext.h |../../../../inc/cmailmessageext.h
 ../inc/cmailboxstateext.h |../../../../inc/cmailboxstateext.h
--- a/emailservices/emailframework/commonlib/inc/cmailboxstateext.h	Tue May 11 15:57:15 2010 +0300
+++ b/emailservices/emailframework/commonlib/inc/cmailboxstateext.h	Tue May 25 12:23:16 2010 +0300
@@ -19,10 +19,10 @@
 #define CMAILBOXSTATEEXT_H
 
 #include "cemailextensionbase.h"
+#include "emailextensionuids.hrh"
 #include "cfsmailcommon.h"
 
 // interface UID value passed to CFSMailClient::ExtensionL
-const TUid KEmailMailboxStateExtensionUid        = { 0x2001E28B };
 
 /**
 * Data providider interface.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailservices/emailframework/commonlib/inc/emailextensionuids.hrh	Tue May 25 12:23:16 2010 +0300
@@ -0,0 +1,27 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description : Common email extension uid definitions
+* Version     : %version: 1 %
+*
+*/
+
+
+#ifndef EMAILEXTENSIONUIDS_HRH
+#define EMAILEXTENSIONUIDS_HRH
+
+// interface UID value passed to CFSMailClient::ExtensionL
+const TUid KEmailMailboxStateExtensionUid        = { 0x2001E28B };
+const TUid KEmailSettingExtensionUid             = { 0x2001E289 };
+
+#endif // EMAILEXTENSIONUIDS_HRH
--- a/emailservices/emailframework/commonlib/src/CFSMailBox.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailservices/emailframework/commonlib/src/CFSMailBox.cpp	Tue May 25 12:23:16 2010 +0300
@@ -21,6 +21,7 @@
 
 #include "cfsmailplugin.h"
 #include "cmrcalendarinfoimpl.h"
+#include "emailextensionuids.hrh"
 
 #include "cfsmailbox.h"
 #include "cfsmailrequestobserver.h"
@@ -844,8 +845,20 @@
     // exists. It is released in desctrucor
     if( aExtension->Uid() != KMailboxExtMrCalInfo )
         {
-        // no specialized behaviour, call base class
-        CExtendableEmail::ReleaseExtension( aExtension );
+        if( aExtension->Uid() == KEmailSettingExtensionUid )
+            {
+            // check that plugin supports requested extension.
+            if ( CFSMailPlugin* plugin = iRequestHandler->GetPluginByUid( GetId() ) )
+                {
+                // remove extension from plugin
+                 plugin->ReleaseExtension(aExtension);            
+                }
+            }
+        else
+            {
+            // no specialized behaviour, call base class
+            CExtendableEmail::ReleaseExtension( aExtension );
+            }
         }
     else
         {
@@ -874,7 +887,8 @@
             CleanupStack::Pop(); // calInfo
             }
         }    
-    else if ( aInterfaceUid == KEmailMailboxStateExtensionUid )
+    else if ( aInterfaceUid == KEmailMailboxStateExtensionUid ||
+              aInterfaceUid == KEmailSettingExtensionUid )
         {
         if ( !extension )
             {
--- a/emailservices/emailframework/data/fsmailbrandmanager.rss	Tue May 11 15:57:15 2010 +0300
+++ b/emailservices/emailframework/data/fsmailbrandmanager.rss	Tue May 25 12:23:16 2010 +0300
@@ -466,35 +466,7 @@
                                     red = 0xff; green = 0x30; blue = 0x20; alpha = 0xff; }
                                     };
                                 },
-                                
-                                BRAND {
-                                    // Definition of Verizon Yahoo! Mail brand   
-                                    graphics_file_path = APP_BITMAP_DIR"\\yahoo_brand_graphics.mif";
 
-                                    brand_id_match_strings =
-                                        {
-                                        BRAND_MATCH_STRING { text = "verizon.net"; }
-                                        };
-                                    
-                                    graphics = 
-                                        {
-                                        BRANDABLE_GRAPHIC { id = EFSMailboxIcon;
-                                        icon_id = EMbmYahoo_brand_graphicsYahoo;
-                                        mask_id = EMbmYahoo_brand_graphicsYahoo_mask; }                    
-                                        };
-                                        
-                                    texts = 
-                                        {
-                                        BRANDABLE_TEXT { id = EFSMailboxName; text = "Verizon Yahoo! Mail"; }
-                                        };
-                                        
-                                    colors =
-                                        {
-                                        BRANDABLE_COLOR { id = EFSMailboxNameColor;
-                                        red = 0xff; green = 0x30; blue = 0x20; alpha = 0xff; }
-                                        };
-                                    },
-                                    
                                     BRAND {
                                         // Definition of Yahoo!Xtra Mail brand   
                                         graphics_file_path = APP_BITMAP_DIR"\\yahoo_brand_graphics.mif";
--- a/emailservices/emailserver/cmailhandlerplugin/inc/cmailcpshandler.h	Tue May 11 15:57:15 2010 +0300
+++ b/emailservices/emailserver/cmailhandlerplugin/inc/cmailcpshandler.h	Tue May 25 12:23:16 2010 +0300
@@ -434,6 +434,8 @@
      */
     CMailPluginProxy* GetExtPluginL( const TDesC& aContentId );
 
+    TBool BackupOrRestoreMode();
+    
 private: // data
     CEikonEnv* iEnv;
     // pointer to liw wrapper that handles actual publishing
--- a/emailservices/emailserver/cmailhandlerplugin/src/cmailcpshandler.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailservices/emailserver/cmailhandlerplugin/src/cmailcpshandler.cpp	Tue May 25 12:23:16 2010 +0300
@@ -26,7 +26,8 @@
 #include <emailobserverplugin.h>
 #include <memaildata.h>
 #include <memailmailboxdata.h>
-
+#include <e32property.h>
+#include <connect/sbdefs.h>
 #include <scs/cleanuputils.h> // CleanupResetAndDestroyPushL
 
 #include "emailtrace.h"
@@ -334,7 +335,11 @@
         {
         TBuf<KMaxDescLen> cid;
         iSettings->GetContentId( aMailbox.Id(), i + 1, cid );
-        iLiwIf->SetUpdateNeeded( iLiwIf->GetWidgetInstanceId( cid ), ETrue );
+        TInt widgetInstance = iLiwIf->GetWidgetInstanceId( cid );
+        if ( widgetInstance != KErrNotFound )
+            {
+            iLiwIf->SetUpdateNeeded( widgetInstance, ETrue );
+            }
         }
     }
 
@@ -839,7 +844,12 @@
     {
     FUNC_LOG;
 
-    // Is the mailbox in our list
+    // If backup or restore is ongoing ignore all events
+    if ( BackupOrRestoreMode() )
+        {
+        return;
+        }
+    
     switch ( aEvent )
         {
         case TFSEventNewMailbox:
@@ -1943,4 +1953,42 @@
     iQuery->ShowNoteL(EAknGlobalConfirmationNote, str->Des());
     CleanupStack::PopAndDestroy( str );    
     }
+
+// ----------------------------------------------------------------------------
+// CMailCpsHandler::BackupOrRestoreMode()
+// Check if phone is in backup/restore mode
+// ----------------------------------------------------------------------------
+//
+TBool CMailCpsHandler::BackupOrRestoreMode()
+    {
+    FUNC_LOG;
     
+    TBool backupOrRestore = EFalse;
+    
+    // Get the back-up restore key, return EFalse if we can't get the key
+    TInt keyVal = 0;
+    const TInt error = RProperty::Get(  KUidSystemCategory, conn::KUidBackupRestoreKey, keyVal );
+    if( error == KErrNone )
+        {
+        const conn::TBURPartType partType = 
+                static_cast< conn::TBURPartType >( keyVal & conn::KBURPartTypeMask );
+                
+        if ( keyVal != 0 )
+            {
+            switch( partType )
+                {
+                case conn::EBURBackupFull:
+                case conn::EBURBackupPartial:
+                case conn::EBURRestoreFull:
+                case conn::EBURRestorePartial:
+                    backupOrRestore = ETrue;
+                    break;
+                case conn::EBURUnset:
+                case conn::EBURNormal:
+                default:
+                    break;                
+                }
+            }
+        }
+    return backupOrRestore;
+    }
--- a/emailservices/emailserver/cmailhandlerplugin/src/cmailcpssettings.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailservices/emailserver/cmailhandlerplugin/src/cmailcpssettings.cpp	Tue May 25 12:23:16 2010 +0300
@@ -117,8 +117,17 @@
 
 // ---------------------------------------------------------------------------
 // CMailCpsSettings::LoadSettingsL
+// 
+// synchronizes the iMailboxArray with Central repository settings
+// only existing mailboxes are synchronized
+// usecases 
+// 1. delete widget from homesceen - removed item from cenrep array
+// 2. add widget to homescreen - added item to the end of cenrep array
+// 3. change mailbox for widget - changed value of cenrep array item 
+// 4. remove mailbox from server - mailbox absence for array item 
+// 5. add mailbox to the server (leads to widget adding)
 // ---------------------------------------------------------------------------
-//
+
 void CMailCpsSettings::LoadSettingsL()
     {
     FUNC_LOG;
@@ -136,12 +145,13 @@
     GetMailboxNonZeroKeysL( keys );
     TInt dMax( keys.Count() );
     
-    cenrepMailboxes.ReserveL( dMax );
-    cenrepMailboxesExistence.ReserveL( dMax );
+    cenrepMailboxes.ReserveL( dMax ); // cenrep mailbox ids array
+    cenrepMailboxesExistence.ReserveL( dMax ); // auxiliary if it was found in iMailboxArray looping
     
-    // make array of mailbox keys
+    // initialize array of mailbox keys
     TInt value( 0 );
-    TInt i;
+    TInt i; // main loop
+    TInt j; // auxiliary / inner loop
     for ( i = 0; i < dMax; i++ )
         {
          User::LeaveIfError( ret = iCenRep->Get( keys[i], value ));
@@ -151,73 +161,135 @@
     CleanupStack::PopAndDestroy(&keys); 
     
     // Sync array of cenrep keys with iMailboxArray
-    // remove from array what is not in cenrep
+    // 1. remove from iMailboxArray what is not in cenrep, mark what is. Distinct existence. 
+    // 2. remove mailbox ids not detected on the server
     TInt dFound( KErrNotFound );
-    for ( i = iMailboxArray.Count()-1; i >= 0; i -- )
+    for ( i = iMailboxArray.Count()-1; i >= 0; i -- ) // iArray loop
         {
         dFound = cenrepMailboxes.Find( iMailboxArray[i].Id() );
-        if ( KErrNotFound != dFound ) 
+        if ( KErrNotFound != dFound ) // if found in cenrep
             { 
-             // mailbox is in iMailboxArray and in cenrep => check provider
+                 // mailbox is in iMailboxArray and in cenrep => check provider
             INFO_1("Mailbox both in cenrep and iMailboxArray: i = %d ", i );
-            ret = CheckMailboxExistence( iMailboxArray[i] );
-            if ( KErrNotFound == ret)
-                {
-                // mailbox was removed from provider => remove from cenrep also
-                // cenrepMailboxes indexed the same way as keys => finding key not needed 
-                ret = iCenRep->Reset( KCMailMailboxIdBase + i );
-                ret = iCenRep->Reset( KCMailPluginIdBase + i );
-                ret = iCenRep->Reset( KCMailWidgetContentIdBase + i );
-                INFO_1("Mailbox removed from cenrep: dFound %d ", dFound );
-                }
-            else
-                {
-                User::LeaveIfError(ret); // for instance if no memory
-                INFO_1("Mailbox provider check ok: dFound = %d ", dFound );
-                }
-            cenrepMailboxesExistence[dFound] = ETrue; // not remove to ensure indexes are the same as in keys
+            if ( ! cenrepMailboxesExistence[dFound] )
+                { 
+                ret = CheckMailboxExistence( iMailboxArray[i] );
+                if ( KErrNotFound == ret)
+                    {
+                    // mailbox was removed from provider => remove from cenrep also
+                    // cenrepMailboxes indexed the same way as keys => finding key not needed 
+                    ret = iCenRep->Reset( KCMailMailboxIdBase + i );
+                    ret = iCenRep->Reset( KCMailPluginIdBase + i );
+                    ret = iCenRep->Reset( KCMailWidgetContentIdBase + i );
+                    INFO_1("Mailbox removed from cenrep: dFound %d ", dFound );
+                    // remove also from all arrays
+                    iMailboxArray.Remove(i);
+                    cenrepMailboxes.Remove( dFound );
+                    cenrepMailboxesExistence.Remove( dFound );
+                    dMax--;
+                    }
+                else 
+                    {
+                    User::LeaveIfError(ret); // for instance if no memory
+                    INFO_1("Mailbox provider check ok: dFound = %d ", dFound );
+                    cenrepMailboxesExistence[dFound] = ETrue; // not remove to ensure indexes are the same as in keys
+                    // handle also possible mailbox duplications
+                    for (j = dFound+1; j<dMax; j++)
+                        {
+                        if ( cenrepMailboxes[dFound] == cenrepMailboxes[j] )
+                            { 
+                            cenrepMailboxesExistence[j] = ETrue; 
+                            }
+                        }
+                    }
+                 } // else already tested for existence
             }
-        else
+        else // not found in cenrep
             {
-            // mailbox was removed from cenrep => remove from array
+            // mailbox was removed from cenrep => remove from iArray as well
             iMailboxArray.Remove(i);
             INFO_1("Mailbox removed from iMailboxArray: i = %d ", i );
             }
-        }
-    // Check order and new mailboxes 
-    TInt j(0);
+        } // iArray loop
+    
+    // Add mailboxes existing only in cenrep to iMailboxArray in correct order
+    // or check and correct order of mailboxes (swap already dot checked, copy duplicated)
     for ( i = 0; i < dMax; i++ )
         {
-        // new mailboxes in cenrep needs to be added to iMailboxArray
+        // firstly new mailboxes in cenrep needs to be added to iMailboxArray
         if ( ! cenrepMailboxesExistence[i] ) 
             {
             TFSMailMsgId mailbox; 
-            // Find mailbox by this function because cenrep does not hold pluginID
+            // Find mailbox by this unefficient function because cenrep does not hold pluginID
             if ( KErrNone == ResolveMailbox( cenrepMailboxes[i], mailbox ) )
                 {
-                iMailboxArray.Insert( mailbox, i );
+                iMailboxArray.InsertL( mailbox, i );
                 INFO_1("Mailbox added to iMailboxArray: i = %d ", i );
+                // ensured iMailboxArray[i].Id() == cenrepMailboxes[i]
                 }
-            }
-        // Check if order is OK
-        if ( iMailboxArray[i].Id() != cenrepMailboxes[i] )
-            {
-            TInt jMax( iMailboxArray.Count() );
-            for ( j = i+1; j <= jMax; j++ )
+            else // KErrNotFound
                 {
-                if ( iMailboxArray[j].Id() == cenrepMailboxes[i])
-                    {
-                    iMailboxArray.Insert( iMailboxArray[j], i ); 
-                    iMailboxArray.Remove( j+1 );// insertion increased indices 
-                    break;
+                // remove not valid mailbox from cenrep arrays
+                cenrepMailboxes.Remove( i );
+                cenrepMailboxesExistence.Remove( i );
+                // remove from cenrep
+                ret = iCenRep->Reset( KCMailMailboxIdBase + i );
+                ret = iCenRep->Reset( KCMailPluginIdBase + i );
+                ret = iCenRep->Reset( KCMailWidgetContentIdBase + i );
+                INFO_1("Mailbox removed from cenrep: i = %d ", i );
+                // update loop control expression
+                dMax--;
+                i--;
+                }
+            continue; // ensured equation or removed item
+            } // end of if mailbox not in cenrep
+
+        // Check if iMailboxArray is in correct order on i position
+        TInt jMax( iMailboxArray.Count() );
+        j = i; // assume iMailboxArray[i].Id() == cenrepMailboxes[i]
+        if ( ( i < jMax ) && ( iMailboxArray[i].Id() != cenrepMailboxes[i] ) )
+            { // not in correct order try to swap
+            for ( j = i+1; j < jMax; j++ )
+                {
+                if ( iMailboxArray[j].Id() == cenrepMailboxes[i] )
+                    { // swap is better from efficiency point of view
+                    TFSMailMsgId tmp( iMailboxArray[i] ); 
+                    iMailboxArray[i] = iMailboxArray[j]; 
+                    iMailboxArray[j] = tmp; 
+                    break; // j < jMax here
                     }
                 }
-            if (j == jMax) // arrays not in sync error
+            // as previous code does not detect existence of repeating id occurence
+            // the loop may not find the repeated mailbox id - then j=jMax
+            } 
+        // if cenrep has multiplied mailbox widgets then add them 
+        if ( j >= jMax ) // swapping did not help or item is missing
+            {
+            // if i=j=jMax then missing duplicated iArray element
+            // if j>i then iArray contains not used element
+            // two widgets shows the same mailbox then take already used iMailboxArray value
+            dFound = cenrepMailboxes.Find( cenrepMailboxes[i] );
+            if ( dFound < i )
                 {
+                // the arrays are synchronized below up to i, duplication to correct i place
+                iMailboxArray.InsertL( iMailboxArray[dFound], i ); 
+                }
+            else
+                {
+                // unable to synchronize the arrays - algorithm is wrong
+                INFO_1("CMAIL: CMailCpsSettings::LoadSettingsL() : FATAL ALGORITHM ERROR - ARRAY NOT SYNCHRONIZED  i = %d ", i );
                 User::Leave( KErrNotFound );
                 }
-            }
+            } // end of j >= jMax 
+        
+        } // end check order for i = 0..dMax loop 
+
+    // if iMailboxArray has more items than cenrepMailboxes then remove these items
+    for( i = iMailboxArray.Count()-1; i >= dMax; i-- )
+        {
+        iMailboxArray.Remove(i);
         }
+
     CleanupStack::PopAndDestroy(&cenrepMailboxesExistence);
     CleanupStack::PopAndDestroy(&cenrepMailboxes);
     }
--- a/emailservices/emailstore/base_plugin/src/BaseMrInfoObject.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailservices/emailstore/base_plugin/src/BaseMrInfoObject.cpp	Tue May 25 12:23:16 2010 +0300
@@ -83,7 +83,6 @@
     iSequenceNumber = aMrInfo.MRSequenceNumberL();
     iPriority = aMrInfo.PriorityL();
 
-    iOrganizer = CBaseMrAttendee::NewL();
     iOrganizer = CBaseMrAttendee::NewL( aMrInfo.MROrganizerL() );
     
     RPointerArray<MMRAttendee>& attendees = aMrInfo.AttendeesL();
--- a/emailuis/emailui/data/FreestyleEmailUi.rss	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/data/FreestyleEmailUi.rss	Tue May 25 12:23:16 2010 +0300
@@ -1939,7 +1939,6 @@
     {
     items =
         {
-        MENU_ITEM { command = EFsEmailUiCmdSelect; txt = text_softkey_select; },
         MENU_ITEM { command = EFsEmailUiCmdHelp; txt = qtn_options_help; },
         MENU_ITEM { command = EFsEmailUiCmdExit; txt = qtn_options_exit; }
         };
--- a/emailuis/emailui/group/FreestyleEmailUi.mmp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/group/FreestyleEmailUi.mmp	Tue May 25 12:23:16 2010 +0300
@@ -112,6 +112,7 @@
 SOURCE  OverlayControl.cpp
 SOURCE FSHtmlReloadAO.cpp
 SOURCE fsemailstatuspaneindicatorhandler.cpp
+SOURCE FSAsyncTextFormatter.cpp
 
 SOURCEPATH      ../group
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/emailui/inc/FSAsyncTextFormatter.h	Tue May 25 12:23:16 2010 +0300
@@ -0,0 +1,116 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Declaration of asynchronous text formatter.
+*
+*/
+
+#ifndef _CFSASYNCTEXTFORMATTER_H_
+#define _CFSASYNCTEXTFORMATTER_H_
+
+#include <e32base.h>
+
+class CTextLayout;
+
+/**
+ * Observer for informing about active object status.
+ */
+class MAsyncTextFormatterObserver
+    {
+public:
+
+    /**
+     * Called when text formatting is complete. 
+     */
+    virtual void FormatAllTextComplete() = 0;
+    
+    /**
+     * Called when text formatting was cancelled.
+     */
+    virtual void FormatAllTextCancelled() = 0;
+    };
+
+/**
+ * Asynchronous formatter of text from CTextLayout class.
+ */
+class CFSAsyncTextFormatter : public CActive
+    {
+public:
+    
+    /**
+     * NewL for two phase construction.
+     */
+    static CFSAsyncTextFormatter* NewL();
+    
+    /**
+     * Destructor.
+     */
+    virtual ~CFSAsyncTextFormatter();
+    
+    /**
+     * Starts active object (formatting).
+     * @param aTextLayout pointer to text layout which content needs to be 
+     *                    formatted
+     * @param aObserver observer which will be informed when formatting 
+     *                  finished or cancelled 
+     */
+    void StartFormatting( CTextLayout* aTextLayout, 
+            MAsyncTextFormatterObserver* aObserver );
+        
+private:
+    
+    /**
+     * constructor.
+     */
+    CFSAsyncTextFormatter();
+    
+    /**
+     * 2nd phase constructor can leave.
+     */
+    void ConstructL();
+    
+protected: // From CActive
+
+    /**
+     * From base class CActive
+     * Handles an active object's request completion event.
+     */
+    void RunL();
+    
+    /**
+     * From base class CActive
+     * Implements cancellation of an outstanding request.
+     */
+    void DoCancel();
+    
+private:
+    
+    /**
+     * Current position of formatted part of document.
+     */ 
+    TInt iCurrentDocPos;
+    
+    /**
+     * Observer which will be informed when formatting finished.
+     * Not own.
+     */ 
+    MAsyncTextFormatterObserver* iObserver;
+       
+    /**
+     * Text layout which contains text to be formatted.
+     * Not own.
+     */
+    CTextLayout* iTextLayout;
+    };
+
+#endif /* _CFSASYNCTEXTFORMATTER_H_ */
--- a/emailuis/emailui/inc/FreestyleEmailUiAppui.h	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/inc/FreestyleEmailUiAppui.h	Tue May 25 12:23:16 2010 +0300
@@ -450,11 +450,9 @@
     TInt ViewLoadIdleCallbackFunctionL();
 
     /**
-     * Sets the manual mailbox syncronisation/connection flag if the
-     * user chose to synchorise/connect mail boxes from the menu
+     * Sets the manual mailbox connection flag if the
+     * user chose to connect mail boxes from the menu
      */
-    void ManualMailBoxSync( TBool aManualMailBoxSync );
-    void ManualMailBoxSyncAll( TBool aManualMailBoxSyncAll );
     void ManualMailBoxConnectAll( TBool aManualMailBoxConnectAll );
     void ManualMailBoxDisconnectAll( TBool aManualMailBoxConnectAll );
 
@@ -502,6 +500,11 @@
     // returns last seen pointer position
     const TPoint& LastSeenPointerPosition() const;
     
+    // Runs fake sync animation (needed for better user experience as
+    // otherwise in some connection/sync states pressing "send & receive"
+    // wouldn't have any visible effect.
+    void RunFakeSyncAnimL();
+    
 public: //from MFSMailEventObserver
     /**
      * Framework event message.
@@ -771,9 +774,7 @@
     // For feature manager
     TBool iFeatureManagerInitialized;
 
-    //ETrue if user started the sync/connect all
-    TBool iManualMailBoxSync;
-    TBool iManualMailBoxSyncAll;
+    // ETrue if user started the connect all
     TBool iManualMailBoxConnectAll;
     TBool iManualMailBoxDisconnectAll;
 
@@ -810,6 +811,7 @@
     CCustomStatuspaneIndicators* iStatusPaneIndicators;
     TBool iConnectionStatusVisible;
     CFSEmailUiGenericTimer* iConnectionStatusIconAnimTimer;
+    CFSEmailUiGenericTimer* iFakeSyncAnimStopTimer;
     CFbsBitmap* iConnectionIconBitmap;
     CFbsBitmap* iConnectionIconMask;
     TInt iConnectionStatusIconAngle;
--- a/emailuis/emailui/inc/FreestyleEmailUiHtmlViewerView.h	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/inc/FreestyleEmailUiHtmlViewerView.h	Tue May 25 12:23:16 2010 +0300
@@ -166,6 +166,8 @@
     void OperationCompleted( TIcalViewerOperationResult aResult );        
     void OperationError( TIcalViewerOperationResult aResult );
 	
+    void FadeOut(TBool aDirectionOut);
+    
 private: // from
     /**
      * @see CFsEmailUiViewBase::ChildDoActivateL
--- a/emailuis/emailui/inc/FreestyleEmailUiLauncherGridVisualiser.h	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/inc/FreestyleEmailUiLauncherGridVisualiser.h	Tue May 25 12:23:16 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2007-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"
@@ -21,17 +21,13 @@
 #define __FREESTYLEEMAILUI_MAINGRIDUIVISUALISER_H__
 
 // SYSTEM INCLUDE FILES
-//<cmail> SF
 #include <alf/alfcontrol.h>
-//</cmail>
-// for AIW handling
 #include <AiwServiceHandler.h>
-//<cmail>
 #include <alf/alfdecklayout.h>
 #include <alf/alfgridlayout.h>
 #include <alf/alfmappingfunctions.h>
 #include <alf/alfbitmapprovider.h>
-//</cmail>
+#include <aknphysicsobserveriface.h>
 
 // INTERNAL INCLUDE FILES
 #include "FreestyleEmailUiViewBase.h"
@@ -47,7 +43,7 @@
 class CFsAlfScrollbarLayout;
 class CAknStylusPopUpMenu;
 class CCoeControl;
-
+class CAknPhysics;
 
 class TFSLauncherGridMailboxStatus
     {
@@ -65,7 +61,8 @@
                      				   	 public MFSEmailLauncherItemObserver,
                      				   	 public MEikScrollBarObserver,
                      				   	 public MFSEmailUiMailboxDeleteObserver,
-  									     public MFSEmailUiGenericTimerCallback
+  									     public MFSEmailUiGenericTimerCallback,
+  		                                 public MAknPhysicsObserver
     {
 public:
     enum TDirection
@@ -162,7 +159,7 @@
 	void SetRefreshNeeded();
 	// <cmail> 
     // Handling of foreground events
-	void HandleForegroundEventL();
+	void HandleForegroundEventL( TBool aForeground );
 	
     /**
      * From MEikScrollBarObserver
@@ -214,6 +211,23 @@
     
     void MailboxDeletionComplete();
     
+private: // from MAknPhysicsObserver
+
+   /**
+    * @see MAknPhysicsObserver::ViewPositionChanged
+    */
+   virtual void ViewPositionChanged( const TPoint& aNewPosition, 
+           TBool aDrawNow, TUint aFlags );
+
+   /**
+    * @see MAknPhysicsObserver::PhysicEmulationEnded
+    */
+   virtual void PhysicEmulationEnded();
+
+   /**
+    * @see MAknPhysicsObserver::ViewPosition
+    */
+   virtual TPoint ViewPosition() const;
     
 private: // New methods.
 
@@ -324,6 +338,7 @@
 
     void DetachSelectorMappingFunctions();
     void UpdateFocusVisibility();
+    void UpdatePhysicsL();
 
 private: // data
 	CAlfEnv& iEnv;
@@ -422,6 +437,16 @@
 
     // Timer to postpone the Drawing 
     CFSEmailUiGenericTimer* iStartupCallbackTimer;
-    };
+    
+    CAknPhysics* iPhysics;   
+    TBool iPointerAction;
+    TBool iIsDragging;
+    TPoint iPreviousPosition;
+    TPoint iOriginalPosition;
+    TTime iStartTime;
+    TBool iScrolled;
+    TInt iTotalDragging;
+    TBool iLaunchWizardExecuted; // prevents reentrant Wizard calling
+    }; // class  CFSEmailUiLauncherGridVisualiser
 
 #endif // __FREESTYLEEMAILUI_MAINGRIDUIVISUALISER_H__
--- a/emailuis/emailui/inc/FreestyleEmailUiMailListVisualiser.h	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/inc/FreestyleEmailUiMailListVisualiser.h	Tue May 25 12:23:16 2010 +0300
@@ -445,6 +445,10 @@
 
     // Creates CMailboxStateExtension with this class set as dataprovider
     void CreateExtensionL();
+
+    // check from settings if manual or auto sync
+    TBool CheckAutoSyncSettingL();
+    
 private: // from
 
     /**
@@ -455,7 +459,7 @@
             const TDesC8& aCustomMessage );
     void ChildDoDeactivate();
     void GetParentLayoutsL( RPointerArray<CAlfVisual>& aLayoutArray ) const;
-    
+    TFSEmailUiTextures GetSortButtonTextureIndex();
 	void FadeOut(TBool aDirectionOut);
     
     /**
--- a/emailuis/emailui/inc/FreestyleEmailUiSearchListVisualiser.h	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/inc/FreestyleEmailUiSearchListVisualiser.h	Tue May 25 12:23:16 2010 +0300
@@ -105,6 +105,7 @@
     // Dynamic variant switch, called by appui
     void HandleDynamicVariantSwitchL( CFsEmailUiViewBase::TDynamicSwitchType aType );
     void GetParentLayoutsL( RPointerArray<CAlfVisual>& aLayoutArray ) const;
+    void FadeOut(TBool aDirectionOut);
 
     // Navigation functions, used mainly from viewer
     TBool IsNextMsgAvailable( TFSMailMsgId aCurrentMsgId, TFSMailMsgId& aFoundNextMsgId, TFSMailMsgId& aFoundNextMsgFolder ) const;
--- a/emailuis/emailui/inc/FreestyleEmailUiTextureManager.h	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/inc/FreestyleEmailUiTextureManager.h	Tue May 25 12:23:16 2010 +0300
@@ -159,6 +159,20 @@
     EFolderListServerFoldersTexturePopup,
     EFolderListEmailAccountTexturePopup,
     // SORT LIST ICONS
+    ESortListAttachmentAscTexturePopup,
+    ESortListAttachmentDescTexturePopup,
+    ESortListDateAscTexturePopup,
+    ESortListDateDescTexturePopup,
+    ESortListFollowAscTexturePopup,
+    ESortListFollowDescTexturePopup,
+    ESortListPriorityAscTexturePopup,
+    ESortListPriorityDescTexturePopup,
+    ESortListSenderAscTexturePopup,
+    ESortListSenderDescTexturePopup,
+    ESortListSubjectAscTexturePopup,
+    ESortListSubjectDescTexturePopup,
+    ESortListUnreadAscTexturePopup,
+    ESortListUnreadDescTexturePopup,    
     ESortListAttachmentAscTexture,
     ESortListAttachmentDescTexture,
     ESortListDateAscTexture,
@@ -242,6 +256,8 @@
 	CAlfTexture& WatermarkBackgroundForThisResolutionL();	
 	// Get any texture by ID
 	CAlfTexture& TextureByIndex( TFSEmailUiTextures aIndex );
+	// Clear any texture by ID
+	void ClearTextureByIndex( TFSEmailUiTextures aIndex );
 	// Get new skinned selector brush object for gen ui list.
 	// Ownership is NOT transferred to caller.
 	CAlfFrameBrush* ListSelectorBrushL();
--- a/emailuis/emailui/inc/ceuiexitguardian.h	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/inc/ceuiexitguardian.h	Tue May 25 12:23:16 2010 +0300
@@ -22,8 +22,6 @@
 
 // FORWARD DECLARATIONS
 class CFreestyleEmailUiAppUi;
-class CIdle;
-
 /**
  * Application exit guardian for email UI. This is needed because some routines
  * in email framework create nested scheduler loops to hide asynchronity in
@@ -31,21 +29,11 @@
  * as resources are freed while they are still being used on other recursion
  * levels.
  *
- * Usage:
- *
- * void CClass::RoutineThatMayCreatedNestedLevelL()
- *    {
- *    iExitGuardian->EnterLC();
- *    // call or execute code that may create nested sceduler loop
- *    ...
- *    // and finally popup and destroy cleanup item
- *    CleanupStack::PopAndDestroy(); // iExitGuardian->EnterLC()
- *    }
  *
  * @since S60 5.1
  */
 class CEUiExitGuardian : public CBase
-  	{
+    {
 
 public:
 
@@ -60,13 +48,6 @@
      */
     ~CEUiExitGuardian();
 
-    /**
-     * Called before executing code that may cause new nested level in
-     * active scheduler. Leaves cleanup item in cleanup stack and this item
-     * must be purged by the caller after code execution. Cleanup item is used
-     * to make level counter leavesafe.
-     */
-    void EnterLC();
 
     /**
      * Called by the application to inform that application is ready to
@@ -76,51 +57,29 @@
      * @return KRequestPending if the exit execution is delayed because of
      * nesting, KErrNone otherwise.
      */
-    TInt ExitApplication();
+    TInt TryExitApplication();
 
 private:
-
     /**
      * Constructor.
      */
-    CEUiExitGuardian(CFreestyleEmailUiAppUi& aAppUi);
+    CEUiExitGuardian( CFreestyleEmailUiAppUi& aAppUi );
 
     /**
      * Pass 2 constructor, may leave.
      */
-	void ConstructL();
-
-    /**
-     * Static exit method that is given to cleanup item.
-     */
-    static void Exit(TAny* aPtr);
-
-    /**
-     * Non static exit method that is called from static Exit.
-     */
-    void DoExit();
+    void ConstructL();
 
     /**
-     * Static callback method for CIdle. This is run when recursion is rewinded
-     * and appication can be closed.
+     * Static callback method for CPeriodic.
      */
-    static TInt IdleCallBack(TAny* aPtr);
+    static TInt PeriodicCallBack( TAny* aPtr );
 
 private:
-
     // Reference to application UI
     CFreestyleEmailUiAppUi& iAppUi;
-
-    // Recursion depth (nested level count)
-    TInt iEnterCount;
-
-    // ETrue if the application is ready to exit.
-    TBool iExitPending;
-
-    // Idle class instance to rewind final level of recursion before calling the
-    // exit
-    CIdle* iIdle;
-
+    TBool iPeriodicTimerStarted;
+    CPeriodic* iPeriodicTimer;
     };
 
 #endif // C_EUIEXITGUARDIAN_H
--- a/emailuis/emailui/inc/ncscomposeview.h	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/inc/ncscomposeview.h	Tue May 25 12:23:16 2010 +0300
@@ -213,6 +213,16 @@
     
     void HandleContainerChangeRequiringToolbarRefresh();
 
+    /**
+     * Callback method for setting body content in asynchronous way.  
+     */
+    void SetBodyContentComplete();
+    
+    /**
+     * Checks if "Opening" wait note is visible.
+     */
+    TBool IsOpeningWaitNoteVisible();
+    
 protected:
 
     void ProcessCommandL( TInt aCommand );
@@ -373,6 +383,15 @@
     *                                in front of any quote or signature
     */        
     void IncludeMessageTextL( TBool aEnsureSpaceInBegin = EFalse );
+    
+    /**
+     * Async version of IncludeMessageTextL.
+     * Inits body text async when forwarding, replying message.
+     * @param aEnsureEmptyLineInBegin When true, the function ensures there's empty lines
+     *                                in the beginning of the message. I.e. line break(s)
+     *                                are inserted in front of any quote or signature
+     */
+    void IncludeMessageTextAsyncL( TBool aEnsureSpaceInBegin = EFalse );
         
     /**
     * SetPriority
@@ -669,6 +688,32 @@
 
     // Flag to indicate whether message has been modified.
     TBool iMessageModified;
+    
+    /**
+     * Flag indicating async way of inluding message body text.
+     */
+    TBool iIncludeMessageTextAsync;
+    
+    /**
+     * Buffer for text of message's body.
+     * Own.
+     */
+    HBufC* iBody;
+    
+    /**
+     * Flag indicating that view was fully activated.
+     */
+    TBool iViewFullyActivated;
+    
+    /**
+     * Flag indicating that "Opening" wait note is visible.
+     */
+    TBool iOpeningWaitNoteVisible;
+    
+    /**
+     * "Opening" wait dialog.
+     */
+    CAknWaitDialog* iOpeningWaitDialog;
     };
 
 /**
--- a/emailuis/emailui/inc/ncscomposeviewcontainer.h	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/inc/ncscomposeviewcontainer.h	Tue May 25 12:23:16 2010 +0300
@@ -30,6 +30,7 @@
 #include "FreestyleEmailUiContactHandlerObserver.h"
 #include "FreestyleEmailUi.hrh"
 #include <aknlongtapdetector.h>
+#include "FSAsyncTextFormatter.h"
 
 class CAknPhysics;
 class CNcsEditor;
@@ -59,7 +60,8 @@
                                 public MAknLongTapDetectorCallBack,
                                 public MEikEdwinObserver,
                                 public MEikEdwinSizeObserver,
-                                public MAknPhysicsObserver
+                                public MAknPhysicsObserver,
+                                public MAsyncTextFormatterObserver
     {
     
 public:
@@ -380,6 +382,13 @@
      * @parem aReadOnlyQuote Contents of read-only quote field.
      */
     void SetBodyContentL( const TDesC& aMessage, const TDesC& aReadOnlyQuote );
+    
+    /**
+     * Set the contents of the message body in asnchronous way.
+     * @param aMessage Contents of MESSAGE-field.
+     * @param aReadOnlyQuote Contents of read-only quote field.
+     */
+    void SetBodyContentAsyncL( const TDesC& aMessage, const TDesC& aReadOnlyQuote );
 
     /**
      * Get the contents of message body. The message body consists of
@@ -502,7 +511,24 @@
      * @param aTargetPos Scrolls display to given position
      */
     void Scroll( TInt aTargetPos, TBool aDrawNow = ETrue );
-
+    
+    /**
+     * Stopping asynchronous text formatting of message body.
+     */
+    void StopAsyncTextFormatter();
+    
+public: // from MAsyncTextFormatterObserver
+    
+    /**
+     * Called when text formatting was cancelled.
+     */
+    void FormatAllTextCancelled();
+    
+    /**
+     * Called when text formatting is complete. 
+     */
+	void FormatAllTextComplete();
+	
 public: // from CoeControl
 
     /**
@@ -642,12 +668,8 @@
     */
    virtual TPoint ViewPosition() const;
 
-private:
+private: // data
 
-   void DoUpdateSubjectL();
-
-private: // data
-    
     /**
     * header container
     */
@@ -740,6 +762,27 @@
     TInt iTotalMoveY;
     TInt iSeparatorHeight;
     TInt iHeaderHeight;
+
+    /**
+     * Flag for switching off text formatting.
+     */
+    TBool iSwitchOffFormattingText;
+    
+    /**
+     * Currently processed field - needed by async text formatting.
+     */
+    CNcsEditor* iProcessedField;
+    
+    /**
+     * Async text formatter.
+     * Own.
+     */
+    CFSAsyncTextFormatter* iAsyncTextFormatter;
+    
+    /**
+     * Pane rect calculated during ChangeSize.
+     */
+    TRect iCmailPaneRect;
     };
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/emailui/src/FSAsyncTextFormatter.cpp	Tue May 25 12:23:16 2010 +0300
@@ -0,0 +1,138 @@
+/*
+* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "Symbian Foundation License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Definition of asynchronous text formatter.
+*
+*/
+
+#include "emailtrace.h"
+#include "FSAsyncTextFormatter.h"
+#include <FRMTLAY.H>
+#include <e32base.h>
+
+const TUint KCharsFormattedPerRun = 2000;
+
+// ---------------------------------------------------------------------------
+// CFSAsyncTextFormatter::CFSAsyncTextFormatter
+// Constructor.
+// ---------------------------------------------------------------------------
+//
+CFSAsyncTextFormatter::CFSAsyncTextFormatter() : CActive( EPriorityLow )
+    {
+    FUNC_LOG;
+    CActiveScheduler::Add( this );
+    }
+
+// ---------------------------------------------------------------------------
+// CFSAsyncTextFormatter::~CFSAsyncTextFormatter
+// Destructor.
+// ---------------------------------------------------------------------------
+//
+CFSAsyncTextFormatter::~CFSAsyncTextFormatter()
+    {
+    FUNC_LOG;
+    Cancel();
+    }
+
+// ---------------------------------------------------------------------------
+// CFSAsyncTextFormatter::NewL
+// Two-phased constructor.
+// ---------------------------------------------------------------------------
+//
+CFSAsyncTextFormatter* CFSAsyncTextFormatter::NewL()
+    {
+    FUNC_LOG;
+    CFSAsyncTextFormatter* self = new (ELeave) CFSAsyncTextFormatter();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CFSAsyncTextFormatter::ConstructL
+// Symbian 2nd phase constructor can leave.
+// ---------------------------------------------------------------------------
+//
+void CFSAsyncTextFormatter::ConstructL()
+    {
+    FUNC_LOG;
+    iCurrentDocPos = 0;
+    }
+
+// ---------------------------------------------------------------------------
+// CFSAsyncTextFormatter::FormatAll
+// Starts formatting process.
+// ---------------------------------------------------------------------------
+//
+void CFSAsyncTextFormatter::StartFormatting( CTextLayout* aTextLayout, 
+        MAsyncTextFormatterObserver* aObserver )
+    {
+    FUNC_LOG;
+    iTextLayout = aTextLayout;
+    iObserver = aObserver;
+    iCurrentDocPos = 0;
+    
+    if ( !IsActive() )
+        {
+        TRequestStatus * status = &iStatus;
+        User::RequestComplete(status, 0);
+        SetActive();
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CFSAsyncTextFormatter::RunL
+// Handles an active object's request completion event.
+// ---------------------------------------------------------------------------
+//
+void CFSAsyncTextFormatter::RunL()
+    {
+    FUNC_LOG;
+    
+    if ( iCurrentDocPos < iTextLayout->DocumentLength() )
+        {
+        iCurrentDocPos += KCharsFormattedPerRun;
+        if ( iCurrentDocPos > iTextLayout->DocumentLength() )
+            {
+            iCurrentDocPos = iTextLayout->DocumentLength();
+            }
+        iTextLayout->ExtendFormattingToCoverPosL( iCurrentDocPos );
+        
+        // run again
+        TRequestStatus* status = &iStatus;
+        User::RequestComplete( status, KErrNone );
+        SetActive();
+        }
+    else
+        {
+        if ( iObserver )
+            {
+            iObserver->FormatAllTextComplete();
+            }
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// CFSAsyncTextFormatter::DoCancel
+// Implements cancellation of an outstanding request.
+// ---------------------------------------------------------------------------
+//
+void CFSAsyncTextFormatter::DoCancel()
+    {
+    FUNC_LOG;
+    if ( IsActive() && iObserver )
+        {
+        iObserver->FormatAllTextCancelled();
+        }
+    }
--- a/emailuis/emailui/src/FreestyleEmailDownloadInformationMediator.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/src/FreestyleEmailDownloadInformationMediator.cpp	Tue May 25 12:23:16 2010 +0300
@@ -829,21 +829,8 @@
     // no close button pressed
     if (iStatus.Int() != EAknSoftkeyClose )
         {
-        // open attachment list
-        if ( iPopupLaunchData.iMessagePartId.IsNullId() )
-            {
-            TAttachmentListActivationData params;
-            params.iMailBoxId = iPopupLaunchData.iMailBoxId;
-            params.iFolderId = iPopupLaunchData.iFolderId;
-            params.iMessageId = iPopupLaunchData.iMessageId;
-            // use package buffer to pass the params
-            TPckgBuf<TAttachmentListActivationData> buf( params );
-            TUid emptyCustomMessageId = { 0 };
-            CFreestyleEmailUiAppUi* appUi = (CFreestyleEmailUiAppUi*)CCoeEnv::Static()->AppUi();
-            appUi->EnterFsEmailViewL( AttachmentMngrViewId, emptyCustomMessageId, buf );
-            }
         // open attachment
-        else
+        if ( !iPopupLaunchData.iMessagePartId.IsNullId() )
             {
             // Force FsEmailUI to foreground because global completion note may appear
             // while some other application is active and our local error notes are not shown
--- a/emailuis/emailui/src/FreestyleEmailUiAppui.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/src/FreestyleEmailUiAppui.cpp	Tue May 25 12:23:16 2010 +0300
@@ -38,6 +38,7 @@
 #include "cfsmailmessage.h"
 #include "cfsmailaddress.h"
 #include "cfsmailcommon.h"
+#include "cemailsettingsextension.h"
 //</cmail>
 #include <freestyleemailui.mbg>
 #include <AknQueryDialog.h>
@@ -151,6 +152,7 @@
     }
 
 const TUint KConnectionStatusIconRotationInterval = 100;
+const TUint KFakeSyncAnimStopTimerInterval = 3000; // 3 secs
 const TInt KConnectionStatusIconRotationAmount = 18;
 // Length of the drive letter descriptor (e.g. "c:")
 const TInt KDriveDescLength = 2;
@@ -584,6 +586,7 @@
     // Create custom statuspane indicators object, which shows priority and followup flags
     CreateStatusPaneIndicatorsL();
     iConnectionStatusIconAnimTimer = CFSEmailUiGenericTimer::NewL(this, CActive::EPriorityLow);
+    iFakeSyncAnimStopTimer = CFSEmailUiGenericTimer::NewL(this, CActive::EPriorityLow);
 
     // this includes a wait note where code running will be pending
     // until a certain callback event is received
@@ -740,7 +743,7 @@
     delete iNaviDecorator2MailViewer;
 
     delete iConnectionStatusIconAnimTimer;
-
+    delete iFakeSyncAnimStopTimer;
 
     MTouchFeedback* touchFeedback( MTouchFeedback::Instance() );
     if (touchFeedback && touchFeedback->TouchFeedbackSupported())
@@ -1132,7 +1135,7 @@
     FUNC_LOG;
     TIMESTAMP ("Exiting from email application");
     g_ApplicationExitOnGoing = ETrue;
-    if ( iExitGuardian->ExitApplication() == KRequestPending )
+    if ( iExitGuardian->TryExitApplication() == KRequestPending )
         {
         SendToBackground();
         }
@@ -1586,18 +1589,6 @@
         }
     }
 
-void CFreestyleEmailUiAppUi::ManualMailBoxSync( TBool aManualMailBoxSync )
-    {
-    FUNC_LOG;
-    iManualMailBoxSync = aManualMailBoxSync;
-    }
-
-void CFreestyleEmailUiAppUi::ManualMailBoxSyncAll( TBool aManualMailBoxSyncAll )
-    {
-    FUNC_LOG;
-    iManualMailBoxSyncAll = aManualMailBoxSyncAll;
-    }
-
 void CFreestyleEmailUiAppUi::ManualMailBoxConnectAll( TBool aManualMailBoxConnectAll )
     {
     FUNC_LOG;
@@ -1822,7 +1813,21 @@
 	// Disabled if offline or roaming
     if ( aAutoSync )
         {
-        StartMonitoringL();
+        // check manual online setting
+        CEmailExtension* ext=NULL;
+        TBool manualSync = EFalse;
+        ext = iActiveMailbox->ExtensionL( KEmailSettingExtensionUid );
+        if (ext)
+            {
+            CEmailSettingsExtension* extension = reinterpret_cast<CEmailSettingsExtension*>( ext );
+            extension->SetMailBoxId(iActiveMailbox->GetId());
+            manualSync = extension->IsSetL(EmailSyncInterval);
+            iActiveMailbox->ReleaseExtension(ext);
+            }
+        if(!manualSync)
+            {
+            StartMonitoringL();
+            }
         }
 	}
 
@@ -2111,10 +2116,6 @@
     FUNC_LOG;
     INFO_1( "CMAIL Received event: %d", aEvent );
 
-    if (iExitGuardian)
-        {
-        iExitGuardian->EnterLC();
-        }
 
     TBool gridContentsChanged = EFalse;
 
@@ -2177,6 +2178,7 @@
   			break;
     	case TFSEventMailboxSyncStateChanged:
     		{
+    		TBool tryRunningFakeSyncAnim( EFalse );
     		TSSMailSyncState* newSyncState = static_cast<TSSMailSyncState*>( aParam1 );
     		if ( newSyncState !=0 && *newSyncState )
     			{
@@ -2185,49 +2187,41 @@
                     case StartingSync:
                         {
                         TIMESTAMP( "Starting sync" );
-                        //If syncs were started by user, show the synchoronisation indicator
-                        if(iManualMailBoxSyncAll)
-                            {
-                            ManualMailBoxSyncAll(EFalse);
-                            }
                         }
                         break;
                     case SyncError:
                         {
                         // error occured during "Connect" or "Send and receive" operation
-                        // check if user needs to be notified
                         TIMESTAMP( "Sync error" );
-                        if ( iManualMailBoxSync )
-                            {
-							/*
-							 * As a fix to TJOS-82ZFCW, this general popup is no longer needed
-                             * // since error id is not provided by plugin, lets popup general note
-                             * HBufC* text = StringLoader::LoadL( R_FS_MSERVER_TEXT_UNABLE_TO_COMPLETE );
-                             * CleanupStack::PushL( text );
-                             * CAknInformationNote* infoNote = new ( ELeave ) CAknInformationNote;
-                             * infoNote->ExecuteLD( *text );
-                             * CleanupStack::PopAndDestroy( text );
-                             */
-                            ManualMailBoxSync( EFalse );
-                            }
                         }
                         break;
-                    case FinishedSuccessfully:
+                    case FinishedSuccessfully: // fall through
+                    case Idle:    
+                        tryRunningFakeSyncAnim = ETrue;
+                        // fall through
                     case SyncCancelled:
-                    case Idle:
                         {
                         TIMESTAMP( "Sync finished" );
-                        ManualMailBoxSync( EFalse );
                         }
-                        break;
-
+                        break;                       
        				case PushChannelOffBecauseBatteryIsLow:
     					{
     					}
     					break;
         			} //switch
     			}
-    		UpdateTitlePaneConnectionStatus();
+
+    		if ( tryRunningFakeSyncAnim )
+    		    {
+                TRAP_IGNORE( RunFakeSyncAnimL() );
+    		    }
+    		
+    		// update title pane connection status only if fake anim isn't
+    		// ongoing (if it is the update will happen once it's finished)
+    		if ( !iFakeSyncAnimStopTimer->IsActive() )
+    		    {
+                UpdateTitlePaneConnectionStatus();
+    		    }
     		} //case
     		break;
 
@@ -2317,10 +2311,6 @@
     	}
     // Download manager removed
 
-    if (iExitGuardian)
-        {
-        CleanupStack::PopAndDestroy(); // iExitGuardian->EnterLC()
-        }
     }
 
 void CFreestyleEmailUiAppUi::LaunchWizardL()
@@ -2530,6 +2520,7 @@
 		titlePane->SetSmallPicture( iConnectionIconBitmap, iConnectionIconMask, iConnectionIconBitmap && iConnectionIconMask);
 		}
 	iConnectionStatusIconAnimTimer->Stop();
+	iFakeSyncAnimStopTimer->Stop();
     }
 
 void CFreestyleEmailUiAppUi::UpdateTitlePaneConnectionStatus(
@@ -2563,6 +2554,7 @@
 
 			// Set connection icon
 			iConnectionStatusIconAnimTimer->Stop();
+			iFakeSyncAnimStopTimer->Stop();
 			iConnectionIconBitmap = 0;
 			iConnectionIconMask = 0;
 			TSize iconSize = LayoutHandler()->statusPaneIconSize();
@@ -2920,6 +2912,56 @@
     }
 
 // -----------------------------------------------------------------------------
+// CFreestyleEmailUiAppUi::RunFakeSyncAnimL
+// -----------------------------------------------------------------------------
+void CFreestyleEmailUiAppUi::RunFakeSyncAnimL()
+    {
+    FUNC_LOG;
+    
+    if ( iConnectionStatusVisible )
+        {
+        // don't run if animation already ongoing
+        if ( !iConnectionStatusIconAnimTimer->IsActive() )
+            {
+            TUid titlePaneUid = TUid::Uid( EEikStatusPaneUidTitle );
+            CEikStatusPaneBase::TPaneCapabilities subPaneTitle = 
+                StatusPane()->PaneCapabilities( titlePaneUid );
+            if ( subPaneTitle.IsPresent() && subPaneTitle.IsAppOwned() )
+                {
+                CAknTitlePane* titlePane = 
+                    static_cast<CAknTitlePane*>( 
+                        StatusPane()->ControlL( titlePaneUid ) );
+                if ( titlePane )
+                    {
+                    iConnectionIconBitmap = NULL;
+                    iConnectionIconMask = NULL;
+                    FsTextureManager()->ProvideBitmapL( 
+                        EStatusTextureSynchronising,
+                        iConnectionIconBitmap, 
+                        iConnectionIconMask );
+                    if ( iConnectionIconBitmap && iConnectionIconMask )
+                        {
+                        AknIconUtils::SetSize( 
+                            iConnectionIconBitmap, 
+                            LayoutHandler()->statusPaneIconSize(), 
+                            EAspectRatioNotPreserved );
+                        titlePane->SetSmallPicture( 
+                            iConnectionIconBitmap, 
+                            iConnectionIconMask, 
+                            ETrue );
+                        iConnectionStatusIconAnimTimer->Start(
+                            KConnectionStatusIconRotationInterval );
+                        iFakeSyncAnimStopTimer->Start( 
+                            KFakeSyncAnimStopTimerInterval );
+                        titlePane->DrawNow();
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
 //
 // -----------------------------------------------------------------------------
 void CFreestyleEmailUiAppUi::ConstructNaviPaneL()
@@ -2975,7 +3017,7 @@
 
 void CFreestyleEmailUiAppUi::TimerEventL( CFSEmailUiGenericTimer* aTriggeredTimer )
     {
-    if (aTriggeredTimer == iConnectionStatusIconAnimTimer)
+    if ( aTriggeredTimer == iConnectionStatusIconAnimTimer )
         {
         if ( iConnectionStatusVisible )
             {
@@ -2997,6 +3039,12 @@
                 }
             }
         }
+    if ( aTriggeredTimer == iFakeSyncAnimStopTimer )
+        {
+        // Just call the UpdateTitlePaneConnectionStatus.
+        // The method will put the correct sync icon to title pane
+        UpdateTitlePaneConnectionStatus();
+        }
     }
 
 // -----------------------------------------------------------------------------
--- a/emailuis/emailui/src/FreestyleEmailUiFolderListVisualiser.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/src/FreestyleEmailUiFolderListVisualiser.cpp	Tue May 25 12:23:16 2010 +0300
@@ -599,15 +599,20 @@
     iParentLayout->SetPadding( paddingMetric );
 
 	// Set list background
-	if ( !iBackgroundBrush )
-		{
-		iBackgroundBrush =
-            CAlfFrameBrush::NewL( iEnv, KAknsIIDQsnFrPopup, 1, 1 );
-        TRect outerRect( iScreenRect );
-        outerRect.Shrink( paddingValue, paddingValue );
+    TRect outerRect( iScreenRect );
+    outerRect.Shrink( paddingValue, paddingValue );
+    if ( !iBackgroundBrush )
+        {
+        iBackgroundBrush = CAlfFrameBrush::NewL( iEnv, KAknsIIDQsnFrPopup, 1, 1 );
         iBackgroundBrush->SetFrameRectsL( outerRect, iScreenRect );
-        iParentLayout->Brushes()->AppendL( iBackgroundBrush, EAlfDoesNotHaveOwnership );
-		}
+        iParentLayout->Brushes()->InsertL( 0, iBackgroundBrush, EAlfDoesNotHaveOwnership );
+        }
+    else
+        {
+        // this prevents transparent popuplist background in portrait layout
+        // when sw keyboard in landscape layout was called between popups
+        iBackgroundBrush->SetFrameRectsL( outerRect, iScreenRect );
+        }
 
 	if( !iShadowBrush )
 	    {
@@ -620,12 +625,26 @@
 	    }
 
       // Append brush if it's not yet appended. 
-      if ( iParentLayout->Brushes()->Count() == 0 )
-          {
-          // Keep the ownership of the brush to avoid unneeded object deletion / reconstruction
-          iParentLayout->Brushes()->InsertL( 0, iBackgroundBrush, EAlfDoesNotHaveOwnership );
-          iParentLayout->Brushes()->AppendL( iShadowBrush, EAlfDoesNotHaveOwnership );
-          }
+    switch ( iParentLayout->Brushes()->Count() ) 
+        {
+        case 0 :
+            // Keep the ownership of the brush to avoid unneeded object deletion / reconstruction
+            iParentLayout->Brushes()->InsertL( 0, iBackgroundBrush, EAlfDoesNotHaveOwnership );
+            iParentLayout->Brushes()->AppendL( iShadowBrush, EAlfDoesNotHaveOwnership );
+            break;
+        case 1 :
+            if ( static_cast<CAlfBrush *>(iBackgroundBrush) == & ( iParentLayout->Brushes()->At(0)) )
+                {
+                iParentLayout->Brushes()->AppendL( iShadowBrush, EAlfDoesNotHaveOwnership );
+                }
+            else 
+                {
+                iParentLayout->Brushes()->InsertL( 0, iBackgroundBrush, EAlfDoesNotHaveOwnership );
+                }
+            break;
+        default: // 2: it's ok no need to add brush 
+            break;
+        } // switch
 	
 	SetPopupSoftkeysL();
 	// SetRect need to be called also here, otherwise the list layout might
@@ -1159,10 +1178,6 @@
         	   // remove help support in pf5250
         	   aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue);
         	   }
-
-            // select option
-            aMenuPane->SetItemDimmed( EFsEmailUiCmdSelect, iModel->Count() == 0 );
-
             }
 
         // Add shortcut hints
@@ -1324,7 +1339,6 @@
                   }
               case EAknSoftkeyOpen:
               case EFsEmailUiCmdOpen:
-              case EFsEmailUiCmdSelect:
                   {
                   HandleSelectionL( EFSEmailUiCtrlBarResponseSelect );
                   }
@@ -2702,20 +2716,20 @@
         iIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( EFolderListEmailAccountTexturePopup ) );     // EFolderListIconEmailAccount
 	    
 	    // NOTE: Must be appended same order as are in TFsEmailUiSortListIcons!
-        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListAttachmentAscTexture ) );       // ESortListAttachmentAscIcon
-        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListAttachmentDescTexture ) );      // ESortListAttachmentDescIcon
-        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListDateAscTexture ) );       		 // ESortListDateAscIcon
-        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListDateDescTexture ) );       	 // ESortListDateDescIcon
-        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListFollowAscTexture ) );       	 // ESortListFollowAscIcon
-        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListFollowDescTexture ) );        	 // ESortListFollowDescIcon
-        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListPriorityAscTexture ) );         // ESortListPriorityAscIcon
-        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListPriorityDescTexture ) );        // ESortListPriorityDescIcon
-        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListSenderAscTexture ) );       	 // ESortListSenderAscIcon
-        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListSenderDescTexture ) );       	 // ESortListSenderDescIcon
-        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListSubjectAscTexture ) );       	 // ESortListSubjectAscIcon
-        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListSubjectDescTexture ) );       	 // ESortListSubjectDescIcon
-        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListUnreadAscTexture ) );       	 // ESortListUnreadAscIcon
-        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListUnreadDescTexture ) );       	 // ESortListUnreadDescIcon
+        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListAttachmentAscTexturePopup ) );       // ESortListAttachmentAscIcon
+        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListAttachmentDescTexturePopup ) );      // ESortListAttachmentDescIcon
+        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListDateAscTexturePopup ) );       		 // ESortListDateAscIcon
+        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListDateDescTexturePopup ) );       	 // ESortListDateDescIcon
+        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListFollowAscTexturePopup ) );       	 // ESortListFollowAscIcon
+        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListFollowDescTexturePopup ) );        	 // ESortListFollowDescIcon
+        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListPriorityAscTexturePopup ) );         // ESortListPriorityAscIcon
+        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListPriorityDescTexturePopup ) );        // ESortListPriorityDescIcon
+        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListSenderAscTexturePopup ) );       	 // ESortListSenderAscIcon
+        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListSenderDescTexturePopup ) );       	 // ESortListSenderDescIcon
+        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListSubjectAscTexturePopup ) );       	 // ESortListSubjectAscIcon
+        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListSubjectDescTexturePopup ) );       	 // ESortListSubjectDescIcon
+        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListUnreadAscTexturePopup ) );       	 // ESortListUnreadAscIcon
+        iSortIconArray.AppendL( &iAppUi.FsTextureManager()->TextureByIndex( ESortListUnreadDescTexturePopup ) );       	 // ESortListUnreadDescIcon
 	    }
 	}
 
--- a/emailuis/emailui/src/FreestyleEmailUiHtmlViewerView.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/src/FreestyleEmailUiHtmlViewerView.cpp	Tue May 25 12:23:16 2010 +0300
@@ -455,6 +455,16 @@
         }
     }
 
+// ---------------------------------------------------------------------------
+//  hide or show Container ( used for activation of the view )
+//
+void CFsEmailUiHtmlViewerView::FadeOut(TBool aDirectionOut )
+	{
+	FUNC_LOG;
+	iContainer->MakeVisible(!aDirectionOut);
+	}
+
+
 // -----------------------------------------------------------------------------
 // CFsEmailUiHtmlViewerView::DoActivateL()
 // Activate an Compose view
@@ -1087,6 +1097,8 @@
 void CFsEmailUiHtmlViewerView::HandleStatusPaneSizeChange()
     {
     CFsEmailUiViewBase::HandleStatusPaneSizeChange();
+	
+	HandleViewRectChange();
     }
 
 void CFsEmailUiHtmlViewerView::HandleViewRectChange()
@@ -1536,7 +1548,9 @@
     SetToolbarItemDimmed( EFsEmailUiTbCmdActions, ETrue);
     SetToolbarItemDimmed( EFsEmailUiTbCmdDelete, ETrue);
         
+    HideToolbar();
     CFsDelayedLoader::InstanceL()->GetContactHandlerL()->LaunchRemoteLookupWithQueryL( *mailBox, *textData );
+    ShowToolbar();  
     
     SetToolbarItemDimmed( EFsEmailUiTbCmdActions, EFalse);
     SetToolbarItemDimmed( EFsEmailUiTbCmdDelete, EFalse);
--- a/emailuis/emailui/src/FreestyleEmailUiLauncherGridVisualiser.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/src/FreestyleEmailUiLauncherGridVisualiser.cpp	Tue May 25 12:23:16 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007-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"
@@ -58,6 +58,7 @@
 #include <aknlayoutscalable_apps.cdl.h>
 #include <layoutmetadata.cdl.h>
 #include <touchfeedback.h>
+#include <aknphysics.h>
 
 // INTERNAL INCLUDE FILES
 #include "FSEmailBuildFlags.h"
@@ -125,7 +126,11 @@
 	iSelector( 0 ),
 	iStartupAnimation( 0 ),
 	iStartupEffectStyle( 0 ),
-  	iWizardWaitnoteShown( EFalse )
+  	iWizardWaitnoteShown( EFalse ),
+  	iPointerAction( EFalse ),
+    iIsDragging( EFalse ),
+    iScrolled( EFalse ),
+    iLaunchWizardExecuted( EFalse )
     {
     FUNC_LOG;
     iItemIdInButtonDownEvent.iItemId = KErrNotFound;
@@ -148,6 +153,13 @@
     // Create startup timer
     iStartupCallbackTimer = CFSEmailUiGenericTimer::NewL( this );
 
+    iCurrentLevel.iParentPos.iY = 0; 
+    iCurrentLevel.iParentPos.iX = 0;
+
+    if ( CAknPhysics::FeatureEnabled() )
+        {
+        iPhysics = CAknPhysics::NewL(*this, NULL);
+        }
     }
 
 // ----------------------------------------------------------------------------
@@ -244,6 +256,8 @@
     // Initial visual layout update is done when the view gets activated.
     iRefreshNeeded = ETrue;
 
+    UpdatePhysicsL(); // init sizes for scrooling
+    
     // First start toggle
     iConstructionCompleted = ETrue;
     }
@@ -291,7 +305,10 @@
         TAlfTimedValue scaleValue;
         scaleValue.SetTarget( transition, KIconScalingTransitionTimeMs * 2 );
         iCurrentLevel.iItemVisualData[selectedItem].iImage->SetScale( scaleValue );
-        HandleRowMovement( EDirectionTouch, selectedItem );
+        if ( !iScrolled )
+            {
+            HandleRowMovement( EDirectionTouch, selectedItem );
+            }
         }
     }
 
@@ -321,6 +338,7 @@
     delete iMailboxDeleter;
     delete iStylusPopUpMenu;
     delete iCoeControl;
+    delete iPhysics;
     }
 
 void CFSEmailUiLauncherGridVisualiser::CreateModelL()
@@ -354,7 +372,6 @@
 
     TInt count = reader.ReadInt16();
 
-// <cmail> Use layout data instead of hard-coded values
     TRect mainPaneRect;
     AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
 
@@ -370,7 +387,6 @@
     TAknLayoutRect gridIconLRect;
     gridIconLRect.LayoutRect(itemRect.Rect(), AknLayoutScalable_Apps::cell_cmail_l_pane_g1(var));
     TSize iconSize = gridIconLRect.Rect().Size();
-// </cmail>
 
     for ( TInt itemIndex = 0; itemIndex < count; itemIndex++ )
         {
@@ -681,7 +697,6 @@
 	  	iAppUi.GridStarted( startedFromOds );
 	    iAppUi.ShowMailboxQueryL();
   		}
-  	// <cmail>
   	else
   	    {
   	    // Ensure that FSMailServer is running, but don't do it on first
@@ -713,7 +728,6 @@
     {
     FUNC_LOG;
     iScrollbar->MakeVisible(EFalse);
-    FadeOut(ETrue);  // hide CAlfVisuals on deactivation
     }
 
 void CFSEmailUiLauncherGridVisualiser::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
@@ -751,9 +765,7 @@
 			}
 		else
 			{
-		    // <cmail>
 		   	aMenuPane->SetItemDimmed( EFsEmailUiCmdAbout, ETrue );
-		   	// </cmail>
 
 		   	if( mbStatus.iMailboxCount <= 0 )
 		   	    {
@@ -905,14 +917,6 @@
 		case EFsEmailUiCmdSync:
         case EFsEmailUiCmdSyncAll:
 			{
-			if (aCommand == EFsEmailUiCmdSyncAll)
-				{
-			   	iAppUi.ManualMailBoxSyncAll(ETrue);
-				}
-			else
-			    {
-			    iAppUi.ManualMailBoxSync(ETrue);
-			    }
             RPointerArray<CFSMailBox> mailBoxes;
             CleanupResetAndDestroyClosePushL( mailBoxes );
             TFSMailMsgId id;
@@ -1054,8 +1058,16 @@
         		|| (scanCode == EStdKeyDeviceA)
         		|| (scanCode ==EStdKeyDevice3))
         	{
-
-        	if ( !iAppUi.SetFocusVisibility( ETrue ) )
+            TBool scrolled = iScrolled;
+            if ( iScrolled )
+                {
+                iScrolled = EFalse;
+                SetFocusedItemL( iFirstVisibleRow * iVisibleColumns );
+                }
+            
+            //iCurrentLevel.iSelected = 
+        	if ( !iAppUi.SetFocusVisibility( ETrue ) ||
+        	     scrolled )
         		{
 				// focus is now activated. ignore key press.
 				UpdateFocusVisibility();
@@ -1110,17 +1122,30 @@
 	const TAlfEvent& aEvent )
     {
     FUNC_LOG;
-    TBool result( EFalse );
-    TInt currentlyFocused( iCurrentLevel.iSelected );
+    if( !IsViewActive() )
+        {
+        return EFalse;
+        }
     TPointerEvent::TType type = aEvent.PointerEvent().iType;
     TInt id = FindPointedItem( aEvent );
 
-    if( KErrNotFound != id )
+    switch( type )
         {
-        // The event coordinates correspond with an item.
-        switch( type )
+        case TPointerEvent::EButton1Down:
             {
-            case TPointerEvent::EButton1Down:
+            iPreviousPosition = iOriginalPosition = aEvent.PointerEvent().iParentPosition;
+            iPointerAction = ETrue;
+            iIsDragging = EFalse;
+
+            if( iPhysics )
+                {
+                iPhysics->StopPhysics();
+                iPhysics->ResetFriction();
+                iStartTime.HomeTime();
+                UpdatePhysicsL();
+                iTotalDragging = 0;
+                }            
+            if ( id != KErrNotFound)
                 {
                 // tactile feedback
                 MTouchFeedback* feedback = MTouchFeedback::Instance();
@@ -1133,17 +1158,28 @@
                 iItemIdInButtonDownEvent.iLaunchSelection = ETrue;
                 SetFocusedItemL( id );
                 UpdateFocusVisibility();
-                break;
                 }
-            case TPointerEvent::EButton1Up:
+            break;
+            }
+        case TPointerEvent::EButton1Up:
+            {
+            if( iIsDragging && iPhysics )
+                {
+                TPoint drag( iOriginalPosition - aEvent.PointerEvent().iParentPosition ); 
+                iPhysics->StartPhysics( drag, iStartTime );
+                iIsDragging = EFalse;
+                iPointerAction = EFalse;
+                iTotalDragging = 0;
+                }
+            else if ( id != KErrNotFound )
                 {
                 if ( iStylusPopUpMenuLaunched )
-                	{
-                	// A pop-up menu was launched. Do not open the selected
-                	// item.
-                	iItemIdInButtonDownEvent.iLaunchSelection = EFalse;
-                	break;
-                	}
+                    {
+                    // A pop-up menu was launched. Do not open the selected
+                    // item.
+                    iItemIdInButtonDownEvent.iLaunchSelection = EFalse;
+                    break;
+                    }
 
                 // Hide focus always after pointer up event.
                 iAppUi.SetFocusVisibility( EFalse );
@@ -1161,100 +1197,75 @@
                 else
                     {
                     HandleButtonReleaseEvent();
-                    break;
                     }
                 }
-            case TPointerEvent::EDrag:
+            else if( iItemIdInButtonDownEvent.iItemId != KErrNotFound )
+                {
+                iItemIdInButtonDownEvent.iLaunchSelection = EFalse;
+                ResizeItemIcon( ETrue );
+
+                // Hide focus always after pointer up event.
+                iAppUi.SetFocusVisibility( EFalse );
+                iItemIdInButtonDownEvent.iItemId = KErrNotFound;
+                HandleButtonReleaseEvent();
+                }
+            else
                 {
-                // if pointer is moved on to other item, decrease focused
-                // item's icon.
-                if ( ( currentlyFocused != id ) &&
-                     ( iItemIdInButtonDownEvent.iItemId != KErrNotFound ) )
-                    {
-                    iItemIdInButtonDownEvent.iLaunchSelection = EFalse;
-                    ResizeItemIcon( ETrue );
-                    }
-
-                // if pointer is moved on item that has focus, increase item's
-                // icon.
-                else if ( id == iItemIdInButtonDownEvent.iItemId )
+                iAppUi.SetFocusVisibility( EFalse );
+                }
+			break;
+            }
+        case TPointerEvent::EDrag:
+            {
+            if( iPhysics )
+                {
+                TPoint position = aEvent.PointerEvent().iParentPosition;
+                TPoint delta( 0, iPreviousPosition.iY - position.iY );
+                iTotalDragging = iTotalDragging + delta.iY;
+                if (Abs(iTotalDragging) >= iPhysics->DragThreshold() || iIsDragging )
                     {
-                    iItemIdInButtonDownEvent.iLaunchSelection = ETrue;
-                    ResizeItemIcon( EFalse );
+                    // Hide focus always when dragging.
+                    iAppUi.SetFocusVisibility( EFalse );
+                    if ( iSelector )
+                        {
+                        TAlfTimedValue selectorOpacity;
+                        selectorOpacity.SetValueNow( 0 );
+                        iSelector->SetOpacity( selectorOpacity );
+                        }
+
+                    iIsDragging = ETrue;
+                
+                    iPhysics->RegisterPanningPosition( delta );
+                    iScrolled = ETrue;
                     }
-
-                break;
+                // Save current position as previous pos for future calculations
+                iPreviousPosition = position;                
                 }
-            case TPointerEvent::EButtonRepeat:
-            	{
-            	// Long tap.
-                if ( currentlyFocused != id ||
-                     iItemIdInButtonDownEvent.iItemId == KErrNotFound )
-            		{
-            		// The item beneath the touch was changed during the long
-            		// tap. Thus, do not show the pop-up.
-            		break;
-            		}
-
-            	// Check the type of the currently selected item.
+            break;
+            }
+        case TPointerEvent::EButtonRepeat:
+          	{
+           	if (!iIsDragging && id != KErrNotFound )
+           	    {
+   	            // Check the type of the currently selected item.
     			TInt itemType = iCurrentLevel.iItems[id].iId;
 
 				if ( itemType == EDefaultMailboxItem ||
 					 itemType == EOtherMailboxItems )
-    				{
-    				// The selected item is a mail box. Launch the pop-up
-    				// menu.
-    	            LaunchStylusPopupMenu( id );
+   					{
+   					// The selected item is a mail box. Launch the pop-up
+   					// menu.
+   	            	LaunchStylusPopupMenu( id );
     				}
-
-            	break;
-            	}
-            default:
-                {
-                break;
-                }
+           	    }
+           	break;
             }
-
-        result = ETrue;
-        }
-    // if event do not concern any of items.
-    else if( iItemIdInButtonDownEvent.iItemId != KErrNotFound )
-        {
-        iItemIdInButtonDownEvent.iLaunchSelection = EFalse;
-        ResizeItemIcon( ETrue );
-
-        switch( type )
+        default:
             {
-            case TPointerEvent::EButton1Down:
-                {
-                // ask if focus is on (flip open)
-                // iItemIdInButtonDownEvent.iItemId = currentlyFocused
-                break;
-                }
-            case TPointerEvent::EButton1Up:
-                {
-                // Hide focus always after pointer up event.
-                iAppUi.SetFocusVisibility( EFalse );
-                iItemIdInButtonDownEvent.iItemId = KErrNotFound;
-                HandleButtonReleaseEvent();
-                break;
-                }
-            default:
-                {
-                break;
-                }
+            break;
             }
         }
-    else
-        {
-        if( aEvent.IsPointerEvent() && aEvent.PointerUp() )
-            {
-            // Hide focus always after pointer up event.
-            iAppUi.SetFocusVisibility( EFalse );
-            }
-        }
-
-    return result;
+    return ETrue;
     }
 
 // ---------------------------------------------------------------------------
@@ -1414,12 +1425,12 @@
             iCurrentLevel.iSelected = itemCount - 1;
             }
         }
-
-    TInt x = iCurrentLevel.iSelected % iVisibleColumns;
-    TInt y = (iCurrentLevel.iSelected-x) / iVisibleColumns;
-
-    ScrollToRow( y );
-
+    if (!iPointerAction)
+        {
+        TInt x = iCurrentLevel.iSelected % iVisibleColumns;
+        TInt y = (iCurrentLevel.iSelected-x) / iVisibleColumns;
+        ScrollToRow( y );
+        }
     }
 
 
@@ -1430,10 +1441,8 @@
     iSelector->SetPos( curPos, 0 ); // wrap position now
 
     // Calculate where are we heading
-    // <cmail> Platform layout change
     CAlfVisual* selectedBase = iCurrentLevel.iItemVisualData[iCurrentLevel.iSelected].iBase;
     TPoint displayPos = selectedBase->LocalToDisplay( selectedBase->Pos().Target() );
-    // </cmail>
     TPoint targetPos = iSelector->DisplayToLocal( displayPos );
 
     // Check if we need to wrap the selector over the edge of the screen
@@ -1461,9 +1470,7 @@
 
     // Animate the movement to the new position
     TInt animTime = KSelectTransitionTimeMs;
-    // <cmail>
     if ( aDir == EDirectionReset || aDir == EDirectionNone || aDir == EDirectionTouch )
-    // </cmail>
         {
         animTime = KStartupAnimationTime;
         }
@@ -1507,18 +1514,10 @@
         return;
         }
 
-// <cmail> Fix scrolling so that it works properly with 2 visible rows (landscape layout data)
     if ( iFirstVisibleRow + iVisibleRows - 1 < aRow )
         {
         // Scroll downwards
-//        if ( aRow == iRowCount - 1 )
-//            {
-            iFirstVisibleRow = aRow - iVisibleRows + 1 ;
- //           }
-//        else
-//            {
-//            iFirstVisibleRow = aRow - iVisibleRows + 2;
-//            }
+        iFirstVisibleRow = aRow - iVisibleRows + 1 ;
         }
     else if ( iFirstVisibleRow > aRow )
         {
@@ -1539,11 +1538,9 @@
     TAlfTimedPoint alfScrollOffset;
     alfScrollOffset.iY.SetTarget( offset , KScrollTransitionTimeMs );
     iCurrentLevel.iGridLayout->SetScrollOffset(alfScrollOffset);
-// <cmail>
-    iScrollbarModel.SetFocusPosition(iFirstVisibleRow);
+    iScrollbarModel.SetFocusPosition(offset);
     TRAP_IGNORE( iScrollbar->SetModelL(&iScrollbarModel) );
     iScrollbar->DrawNow();
-// </cmail>
     }
 
 void CFSEmailUiLauncherGridVisualiser::RefreshLauncherViewL()
@@ -1709,6 +1706,7 @@
     FUNC_LOG;
 	if ( !iAppUi.ViewSwitchingOngoing() )
 		{
+        iPointerAction = EFalse;
         iItemIdInButtonDownEvent.iItemId = KErrNotFound;
         UpdateFocusVisibility();
 
@@ -1794,12 +1792,8 @@
 	            case EAddNewMailboxItem:
 	                {
                     // To prevent accidental double clicks of the wizard item
-	                // wizard would crash without this
-	                if ( !iDoubleClickLock )
-	                    {
-	                    iDoubleClickLock = ETrue;
+	                // wizard would crash without this - moved to function
 	                    LaunchWizardL();
-    	                }
 	                }
 	            	break;
 	            case EHelpItem:
@@ -1821,14 +1815,14 @@
 	}
 
 
-void CFSEmailUiLauncherGridVisualiser::HandleForegroundEventL()
+void CFSEmailUiLauncherGridVisualiser::HandleForegroundEventL( TBool aForeground )
     {
     FUNC_LOG;
 
     UpdateFocusVisibility();
 
     // Toggle safety lock always when receiving foreground back.
-    if ( iFirstStartComplete && iDoubleClickLock )
+    if ( aForeground && iDoubleClickLock && iFirstStartComplete )
         {
         iDoubleClickLock = EFalse;
         }
@@ -1908,9 +1902,17 @@
         DoFirstStartL();
         }
 
-    iAiwSHandler->ExecuteServiceCmdL( KAiwCmdSettingWizardFsEmail.iUid,
-                                      iAiwSHandler->InParamListL(),
-                                      iAiwSHandler->OutParamListL() );
+    if ( ! iLaunchWizardExecuted  ) // prevent reentrant calling
+        {
+        iLaunchWizardExecuted = ETrue;
+        TRAPD( err, iAiwSHandler->ExecuteServiceCmdL( KAiwCmdSettingWizardFsEmail.iUid,
+                                          iAiwSHandler->InParamListL(),
+                                          iAiwSHandler->OutParamListL() ) );
+       // ExecuteServiceCmdL is synchronous - uses CActiveSchedulerWait
+        iLaunchWizardExecuted = EFalse;
+        User::LeaveIfError( err );
+        }
+
     }
 
 void CFSEmailUiLauncherGridVisualiser::GoToInboxL( TFSMailMsgId& aMailboxId, TFSMailMsgId& aMailboxInboxId )
@@ -1931,7 +1933,6 @@
     FUNC_LOG;
     if ( iConstructionCompleted )
         {
-	// <cmail> Use layout data instead of hard-coded values
 		TRect mainPaneRect;
 	    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
 	    TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
@@ -1950,7 +1951,6 @@
 	   	//TInt gridIconSize = iAppUi.LayoutHandler()->GridIconSize();
 		TSize iconSize = gridIconRect.Rect().Size();
 		//iconSize.SetSize( gridIconSize, gridIconSize );
-	// </cmail>
 
         // Scale bitmaps
         for( TInt i = 0 ; i < iIconArray.Count() ; i++ )
@@ -1975,7 +1975,6 @@
 
         if ( launcherItemIcon )
             {
-// <cmail> Use layout data instead of hard-coded values
             TRect mainPaneRect;
             AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
 
@@ -1993,7 +1992,6 @@
             gridIconRect.LayoutRect(itemRect.Rect(), AknLayoutScalable_Apps::cell_cmail_l_pane_g1(var));
 
             TSize iconSize = gridIconRect.Rect().Size();
-// </cmail>
 
             const CFbsBitmap* bitmap = launcherItemIcon->Bitmap();
             const CFbsBitmap* mask = launcherItemIcon->Mask();
@@ -2008,10 +2006,7 @@
 			CAlfTexture* texture = &CAlfStatic::Env().TextureManager().CreateTextureL( iPluginTextureId, this, EAlfTextureFlagDefault );
 			// Update texture id
 			iPluginTextureId++; // Id is updated dynamically
-			// Set initiel size
-// <cmail> Use layout data instead of hard-coded values
-			//TSize iconSize(iAppUi.LayoutHandler()->GridIconSize(), iAppUi.LayoutHandler()->GridIconSize() );
-// <cmail>
+			// Set initial size
   			texture->Size().SetSize( iconSize.iHeight, iconSize.iWidth );
            iModel->AddL(
                 EShortcut,
@@ -2047,16 +2042,14 @@
         {
 	    iCurrentLevel.iParent = 0;
 
-	// <cmail> Use layout data instead of hard-coded values
 	    TRect mainPaneRect;
 	    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
 	    TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
 
 	    TAknLayoutRect scrollBarRect;
-	    // <cmail>
-//	    scrollBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::aid_size_touch_scroll_bar());
+
 	    scrollBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Apps::scroll_pane_cp03());
-	    // </cmail>
+
 	    TRect gridRect = mainPaneRect;
 	    gridRect.iBr.iX -= scrollBarRect.Rect().Width();
 
@@ -2080,8 +2073,6 @@
 	    TInt columns = iVisibleColumns = AknLayoutScalable_Apps::cell_cmail_l_pane_ParamLimits(var).LastColumn() + 1; 
 	    TInt rows = iVisibleRows = AknLayoutScalable_Apps::cell_cmail_l_pane_ParamLimits(var).LastRow() + 1; 
 
-	// </cmail>
-
         iCurrentLevel.iGridLayout->SetSize( gridRect.Size() );
         iCurrentLevel.iGridLayout->SetColumnsL( columns );
         iCurrentLevel.iGridLayout->SetRowsL( rows );
@@ -2090,7 +2081,6 @@
         UpdateScrollBarRangeL();
 
         TInt scrollbarWidth = scrollBarRect.Rect().Width();
-        // <cmail>
         if( iRowCount > iVisibleRows )
             {
             iScrollbar->MakeVisible(ETrue);
@@ -2099,7 +2089,6 @@
             {
             iScrollbar->MakeVisible(EFalse);
             }
-        // </cmail>
 
         TInt scrollbarTopLeftX = displaySize.iWidth - scrollbarWidth;
         TInt scrollbarTopLeftY = 0;
@@ -2169,13 +2158,11 @@
         SetRingWrapLimits();
         MoveSelection( EDirectionNone );
 
-	    // <cmail>
         TRect scrollbarRect;
         scrollbarRect.SetRect(scrollbarTopLeftX, scrollbarTopLeftY, scrollbarBottomRightX, scrollbarBottomRightY);
         scrollbarRect.Move(mainPaneRect.iTl);
         iScrollbar->SetRect(scrollbarRect);
         iScrollbar->DrawDeferred();
-	    // </cmail>
         iRefreshNeeded = EFalse;
         }
     }
@@ -2326,7 +2313,7 @@
             }
         }
     }
-// <cmail>
+
 void CFSEmailUiLauncherGridVisualiser::ConstructScrollbarL( CAlfLayout* aParent )
 	{
     FUNC_LOG;
@@ -2347,8 +2334,13 @@
 	{
     FUNC_LOG;
 
-	iScrollbarModel.SetScrollSpan(iRowCount);
-	iScrollbarModel.SetWindowSize(iVisibleRows);
+    TRect mainPaneRect;
+    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
+    TAknLayoutRect scrollBarRect;
+    scrollBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::aid_size_touch_scroll_bar());
+
+    iScrollbarModel.SetScrollSpan(iRowCount * (scrollBarRect.Rect().Height() / iVisibleRows));
+    iScrollbarModel.SetWindowSize(scrollBarRect.Rect().Height());  
 	iScrollbarModel.SetFocusPosition(iFirstVisibleRow);
 	iScrollbar->SetModelL(&iScrollbarModel);
 	iScrollbar->DrawNow();
@@ -2357,10 +2349,14 @@
 void CFSEmailUiLauncherGridVisualiser::HandleScrollEventL(CEikScrollBar* aScrollBar, TEikScrollEvent aEventType)
     {
     FUNC_LOG;
-    const TInt KScrollTransitionTimeMs = KSelectTransitionTimeMs;
+    if( iPhysics )
+        {
+        iPhysics->StopPhysics();
+        iPhysics->ResetFriction();
+        }
+    
     if (aScrollBar == iScrollbar)
          {
-
          switch( aEventType )
              {
              case EEikScrollHome :
@@ -2370,16 +2366,25 @@
                  //Jump to end
                  break;
              default:
-                 iFirstVisibleRow = aScrollBar->ThumbPosition();
-                 TReal offset = iFirstVisibleRow * iRowHeight;
+                 iScrolled = ETrue;
+                 iAppUi.SetFocusVisibility( EFalse );
+                 if ( iSelector )
+                     {
+                     TAlfTimedValue selectorOpacity;
+                     selectorOpacity.SetValueNow( 0 );
+                     iSelector->SetOpacity( selectorOpacity );
+                     }                 
+                 iFirstVisibleRow = iCurrentLevel.iParentPos.iY/iRowHeight;
+                 TReal offset = aScrollBar->ThumbPosition() + 1;
                  TAlfTimedPoint alfScrollOffset;
-                 alfScrollOffset.iY.SetTarget( offset , KScrollTransitionTimeMs );
-                 iCurrentLevel.iGridLayout->SetScrollOffset(alfScrollOffset);
+                 alfScrollOffset.iY.SetTarget( offset , 0);
+				 iCurrentLevel.iGridLayout->SetScrollOffset(alfScrollOffset);
+                 iCurrentLevel.iParentPos.iY = offset;
                  break;
              }
          }
     }
-// </cmail>
+
 void CFSEmailUiLauncherGridVisualiser::UpdateLauncherItemListL()
     {
     FUNC_LOG;
@@ -2510,7 +2515,6 @@
 void CFSEmailUiLauncherGridVisualiser::ProvideBitmapL(TInt aId, CFbsBitmap*& aBitmap, CFbsBitmap*& aMaskBitmap)
 	{
     FUNC_LOG;
-// <cmail> Use layout data instead of hard-coded values
     TRect mainPaneRect;
     AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
     TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
@@ -2525,7 +2529,6 @@
 
     TAknLayoutRect gridIconRect;
     gridIconRect.LayoutRect(itemRect.Rect(), AknLayoutScalable_Apps::cell_cmail_l_pane_g1(var));
-// </cmail>
 
 	CAknIcon* launcherItemIcon(0);
 	for ( TInt i=0; i<iPluginIdIconIdPairs.Count(); i++ )
@@ -2538,12 +2541,8 @@
 
 	if ( launcherItemIcon )
 		{
-// <cmail> Use layout data instead of hard-coded values
 		// Set bitmap size
-	    //TSize iconSize(iAppUi.LayoutHandler()->GridIconSize(), iAppUi.LayoutHandler()->GridIconSize() );
-
 		TSize iconSize = gridIconRect.Rect().Size();
-// </cmail>
 		if( launcherItemIcon->Bitmap() )
             {
             AknIconUtils::DisableCompression( launcherItemIcon->Bitmap() );
@@ -2680,6 +2679,69 @@
     ResizeItemIcon( !aVisible );
 	}
 
+// -----------------------------------------------------------------------------
+// CFSEmailUiLauncherGridVisualiser::ViewPositionChanged
+// From MAknPhysicsObserver
+// -----------------------------------------------------------------------------
+//
+void CFSEmailUiLauncherGridVisualiser::ViewPositionChanged(
+        const TPoint& aNewPosition,
+        TBool /*aDrawNow*/,
+        TUint /*aFlags*/ )
+    {
+    FUNC_LOG;
+
+    // controls must be created first
+    if ( !iConstructionCompleted )
+        {
+        return;
+        }
+
+    TRect mainPaneRect;
+    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
+    iCurrentLevel.iParentPos.iY = aNewPosition.iY - mainPaneRect.Height()/2;
+    TAlfTimedPoint alfScrollOffset;
+    alfScrollOffset.iY.SetTarget( iCurrentLevel.iParentPos.iY , 0 );
+    iCurrentLevel.iGridLayout->SetScrollOffset(alfScrollOffset);
+    iScrollbarModel.SetFocusPosition( iCurrentLevel.iParentPos.iY );
+    TRAP_IGNORE( iScrollbar->SetModelL(&iScrollbarModel) );
+    iScrollbar->DrawNow();
+    iFirstVisibleRow = iCurrentLevel.iParentPos.iY/iRowHeight;
+    if ( iFirstVisibleRow < 0 )
+        {
+        iFirstVisibleRow = 0;
+        }
+    else if ( iFirstVisibleRow > iRowCount )
+        {
+        iFirstVisibleRow = iRowCount;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CNcsComposeViewContainer::PhysicEmulationEnded
+// From MAknPhysicsObserver
+// -----------------------------------------------------------------------------
+//
+void CFSEmailUiLauncherGridVisualiser::PhysicEmulationEnded()
+    {
+    FUNC_LOG;
+    }
+
+// -----------------------------------------------------------------------------
+// CNcsComposeViewContainer::ViewPosition
+// From MAknPhysicsObserver
+// -----------------------------------------------------------------------------
+//
+TPoint CFSEmailUiLauncherGridVisualiser::ViewPosition() const
+    {
+    FUNC_LOG;
+    TRect mainPaneRect;
+    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
+    TInt current = iCurrentLevel.iParentPos.iY;
+    TInt viewCentre = mainPaneRect.Size().iHeight / 2;
+    TPoint point( 0, current + viewCentre );
+    return point;
+    }
 
 // ----------------------------------------------------------------------------
 // LaunchStylusPopupMenuL()
@@ -2737,3 +2799,20 @@
     iStartupCallbackTimer->Cancel();
     }
 
+// ---------------------------------------------------------------------------
+// CFSEmailUiLauncherGridVisualiser::UpdatePhysicsL()
+// ---------------------------------------------------------------------------
+//
+void CFSEmailUiLauncherGridVisualiser::UpdatePhysicsL()
+    {
+    FUNC_LOG;
+    if ( iPhysics )
+        {
+        TRect mainPaneRect;
+        AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect );
+        const TSize viewSize( mainPaneRect.Size() );        
+        const TSize worldSize( 0, iRowCount * iRowHeight );
+        iPhysics->InitPhysicsL( worldSize, viewSize, EFalse );
+        }
+    }
+
--- a/emailuis/emailui/src/FreestyleEmailUiLayoutHandler.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/src/FreestyleEmailUiLayoutHandler.cpp	Tue May 25 12:23:16 2010 +0300
@@ -1239,15 +1239,21 @@
     TAknLayoutRect controlBarRect;
     controlBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane(0));
     TAknLayoutRect iconRect;
-    if ( AknLayoutUtils::LayoutMirrored() )
+    if ( Layout_Meta_Data::IsLandscapeOrientation() )
         {
-        iconRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_g2(0));        
+        iconRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::cmail_ddmenu_btn02_pane_g2(0));
         }
     else
         {
-        iconRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_g1(0));
-        }
-    
+        if ( AknLayoutUtils::LayoutMirrored() )
+            {
+            iconRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_g2(0));        
+            }
+        else
+            {
+            iconRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_g1(0));
+            }
+         }
     return iconRect.Rect();
     }
 
--- a/emailuis/emailui/src/FreestyleEmailUiMailListVisualiser.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/src/FreestyleEmailUiMailListVisualiser.cpp	Tue May 25 12:23:16 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -90,6 +90,7 @@
 #include "FSEmail.pan"
 
 #include "ipsplgcommon.h"
+#include "cemailsettingsextension.h"
 
 // CONST VALUES
 const TInt KControlBarTransitionTime = 250;
@@ -684,7 +685,10 @@
             }
         }
     SetListAndCtrlBarFocusL();
-    iAppUi.StartMonitoringL();
+    if(!CheckAutoSyncSettingL())
+        {
+        iAppUi.StartMonitoringL();
+        }
     TIMESTAMP( "Locally stored messages fetched for message list" );
     }
 
@@ -1610,7 +1614,8 @@
     else
         {
         iMailList->ShowListL();
-        if (forwardNavigation)
+        TBool manualSync = CheckAutoSyncSettingL();
+        if (forwardNavigation && !manualSync)
             {
             iAppUi.StartMonitoringL();
             }
@@ -1698,7 +1703,6 @@
   	    iMailTreeListVisualizer->NotifyControlVisibilityChange( EFalse );
   	    }
 	iThisViewActive = EFalse;
-	FadeOut(ETrue);  // hide CAlfVisuals on deactivation
 	}
 
 // ---------------------------------------------------------------------------
@@ -3021,6 +3025,13 @@
             }
         else
             {
+            iAppUi.FsTextureManager()->ClearTextureByIndex( EListControlBarMailboxDefaultIcon );
+            iFolderListButton->SetIconL( iAppUi.FsTextureManager()->TextureByIndex( EListControlBarMailboxDefaultIcon ) );
+            iAppUi.FsTextureManager()->ClearTextureByIndex( EListTextureCreateNewMessageIcon );
+            iNewEmailButton->SetIconL( iAppUi.FsTextureManager()->TextureByIndex( EListTextureCreateNewMessageIcon ) );
+            iAppUi.FsTextureManager()->ClearTextureByIndex( GetSortButtonTextureIndex() );
+            iSortButton->SetIconL( iAppUi.FsTextureManager()->TextureByIndex( GetSortButtonTextureIndex() ) );
+           
             iMailTreeListVisualizer->HideList();
             // screen layout changed
             iCurrentClientRect = iAppUi.ClientRect();
@@ -4282,6 +4293,7 @@
             if ( aDestinationFolderId.IsNullId() )
                 {
                 // Activate folder selection view and handle moving after callback gets destination
+                RemoveMarkingModeTitleTextL();    
                 iMoveToFolderOngoing = ETrue;
                 TFolderListActivationData folderListData;
                 folderListData.iCallback = this;
@@ -5617,7 +5629,14 @@
 
 	TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
 	TAknLayoutText textLayout;
-	textLayout.LayoutText(TRect(0,0,0,0), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_ddmenu_pane_t1(var));
+	if ( Layout_Meta_Data::IsLandscapeOrientation() )
+		{
+	    textLayout.LayoutText(TRect(0,0,0,0), AknLayoutScalable_Apps::cmail_ddmenu_btn02_pane_t2(0));
+		}
+	else
+		{
+	    textLayout.LayoutText(TRect(0,0,0,0), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_ddmenu_pane_t1(var));
+		}
 	iNewEmailButton->SetTextFontL( textLayout.Font()->FontSpecInTwips() );
  	iFolderListButton->SetTextFontL( textLayout.Font()->FontSpecInTwips() );
  	iSortButton->SetTextFontL( textLayout.Font()->FontSpecInTwips() );
@@ -5655,10 +5674,23 @@
 		}
 	CleanupStack::PopAndDestroy( buttonText );
 
-	// Set icon
+	iSortButton->SetIconL(
+			iAppUi.FsTextureManager()->TextureByIndex( GetSortButtonTextureIndex() ),
+			ECBElemIconA );
+
+	}
+    
+// ---------------------------------------------------------------------------
+//
+//
+// ---------------------------------------------------------------------------
+//
+TFSEmailUiTextures CFSEmailUiMailListVisualiser::GetSortButtonTextureIndex()
+    {
+    FUNC_LOG;
+    
     TFSEmailUiTextures textureIndex( ETextureFirst );
-
-	switch ( iCurrentSortCriteria.iField )
+    switch ( iCurrentSortCriteria.iField )
 		{
 		case EFSMailSortBySubject:
 			{
@@ -5711,11 +5743,8 @@
 						   ESortListDateAscTexture;
 			}
 			break;
-		}
-
-	iSortButton->SetIconL(
-			iAppUi.FsTextureManager()->TextureByIndex( textureIndex ),
-			ECBElemIconA );
+  		}
+    return textureIndex;
 	}
 
 // ---------------------------------------------------------------------------
@@ -6727,6 +6756,10 @@
 		switch ( aResponse )
 			{
 			case EFSEmailUiCtrlBarResponseCancel:
+			    if ( iMarkingMode )
+			        {
+                    DisplayMarkingModeTitleTextL();
+			        }
 			    iMarkingModeWaitingToExit = EFalse;
 			    SetMskL();
 				return;
@@ -7223,7 +7256,8 @@
 		}
 
 	// Set the position for the popup
-	iStylusPopUpMenu->SetPosition( aPoint );
+	TPoint point(aPoint.iX, aPoint.iY + 45);
+	iStylusPopUpMenu->SetPosition( point, CAknStylusPopUpMenu::EPositionTypeRightBottom );
 
 	// Display the popup and set the flag to indicate that the menu was
 	// launched.
@@ -7636,7 +7670,8 @@
 		{
 		CleanupStack::PushL( mailBoxIcon );
         //<cmail>
-		TSize defaultIconSize(iAppUi.LayoutHandler()->GetControlBarMailboxIconRect().Size());
+		TInt iconSize( iAppUi.LayoutHandler()->GetControlBarMailboxIconRect().Width() );
+		TSize defaultIconSize ( iconSize, iconSize );
         //</cmail>
     	AknIconUtils::SetSize(mailBoxIcon->Bitmap(), defaultIconSize);
 	    AknIconUtils::SetSize(mailBoxIcon->Mask(), defaultIconSize);
@@ -8055,6 +8090,25 @@
         }
     }
 
+TBool CFSEmailUiMailListVisualiser::CheckAutoSyncSettingL()
+    {
+    CEmailExtension* ext=NULL;
+    TBool manualSync = EFalse;
+    CFSMailBox* box = iAppUi.GetActiveMailbox();
+    if (box)
+        {
+        ext = box->ExtensionL( KEmailSettingExtensionUid );
+        if (ext)
+            {
+            CEmailSettingsExtension* extension = reinterpret_cast<CEmailSettingsExtension*>( ext );
+            extension->SetMailBoxId(box->GetId());
+            manualSync = extension->IsSetL(EmailSyncInterval);
+            box->ReleaseExtension(extension);
+            }
+        }
+    return manualSync;
+    }
+
 //////////////////////////////////////////////////////////////////
 // Class implementation CMailListUpdater
 ///////////////////////////////////////////////////////////////////
--- a/emailuis/emailui/src/FreestyleEmailUiSearchListVisualiser.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/src/FreestyleEmailUiSearchListVisualiser.cpp	Tue May 25 12:23:16 2010 +0300
@@ -794,6 +794,24 @@
     aLayoutArray.Append( iScreenAnchorLayout );
     }
 
+// ---------------------------------------------------------------------------
+// hide or show CAlfVisuals ( used for activation or deactivation )
+//
+void CFSEmailUiSearchListVisualiser::FadeOut(TBool aDirectionOut )
+	{
+	FUNC_LOG;
+	if ( iScreenAnchorLayout != NULL )
+        {
+		TAlfTimedValue timedValue( 0, 0 );
+		if ( !aDirectionOut )
+		    {
+		    timedValue.SetTarget( 1, 0 );
+		    }
+		iScreenAnchorLayout->SetOpacity( timedValue );
+        }
+	}
+
+
 // -----------------------------------------------------------------------------
 // CFSEmailUiMailListVisualiser::FlipStateChangedL
 // Called when keyboard flip state is changed
@@ -2592,7 +2610,8 @@
         iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdMarkAsRead, messageRead );
 
         // Set the position for the popup
-        iStylusPopUpMenu->SetPosition( aPoint );
+	    TPoint point(aPoint.iX, aPoint.iY + 45);
+	    iStylusPopUpMenu->SetPosition( point, CAknStylusPopUpMenu::EPositionTypeRightBottom );
 
         // Display the popup and set the flag to indicate that the menu was
         // launched so that list focus stays visible.
--- a/emailuis/emailui/src/FreestyleEmailUiSendAttachmentsListControl.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/src/FreestyleEmailUiSendAttachmentsListControl.cpp	Tue May 25 12:23:16 2010 +0300
@@ -432,10 +432,11 @@
 	    		static_cast<CNcsComposeView*>( iAppUi->View(MailEditorId) );
 	    		
     		TFSMailMsgId nullId;
+            TInt err( KErrNone );
 	    	if ( composeView->NewMessage() )
 	    		{
 	    		// use composeview NewMessage if available
-				msgPart = composeView->NewMessage()->AddNewAttachmentL( filePath, nullId );
+		        TRAP( err, msgPart = composeView->NewMessage()->AddNewAttachmentL( filePath, nullId ));
 	    		}
 	    	else
 	    		{
@@ -447,10 +448,19 @@
 				        iVisualiser->EditorParams().iMsgId, 
 						EFSMsgDataStructure );
 				CleanupStack::PushL( msg );
-				msgPart = msg->AddNewAttachmentL( filePath, nullId );
+				TRAP( err, msgPart = msg->AddNewAttachmentL( filePath, nullId ));
 				CleanupStack::PopAndDestroy( msg );
 	    		}
 			CleanupStack::PushL( msgPart );
+            if( KErrNone != err)
+			    {
+				if( iWaitNote )
+				    {
+					iWaitNote->ProcessFinishedL();
+					}
+				iAttachmentAddingLocked = EFalse;
+				User::Leave( err );
+				}
 			msgPart->SaveL();
 			
 			// append file to list model
--- a/emailuis/emailui/src/FreestyleEmailUiSettingsList.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/src/FreestyleEmailUiSettingsList.cpp	Tue May 25 12:23:16 2010 +0300
@@ -1805,10 +1805,9 @@
 //
 void CFsEmailSettingsList::ClearFocus()
 	{
-	// This is not a nice way to clear the focus but unless some one comes
-	// with a better solution, this will have to do.
 	iListBox->ItemDrawer()->SetFlags( CListItemDrawer::EDisableHighlight );
-	iListBox->View()->Draw();
+	iListBox->ClearSelection();
+	iListBox->DrawNow();
 	iListBox->ItemDrawer()->ClearFlags( CListItemDrawer::EDisableHighlight );
 	}
 
--- a/emailuis/emailui/src/FreestyleEmailUiSettingsListView.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/src/FreestyleEmailUiSettingsListView.cpp	Tue May 25 12:23:16 2010 +0300
@@ -174,7 +174,7 @@
 	{
     if ( iStylusPopUpMenu )
     	{
-    	iStylusPopUpMenu->SetPosition( aPosition );
+    	iStylusPopUpMenu->SetPosition( aPosition, CAknStylusPopUpMenu::EPositionTypeLeftBottom );
     	iStylusPopUpMenu->ShowMenu();
     	}
 	}
--- a/emailuis/emailui/src/FreestyleEmailUiTextureManager.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/src/FreestyleEmailUiTextureManager.cpp	Tue May 25 12:23:16 2010 +0300
@@ -136,6 +136,17 @@
 	}
 
 // -----------------------------------------------------------------------------
+// CFreestyleEmailUiTextureManager::ClearTextureByIndex
+// -----------------------------------------------------------------------------
+//
+void CFreestyleEmailUiTextureManager::ClearTextureByIndex( TFSEmailUiTextures aIndex )
+    {
+    FUNC_LOG;
+    // unload the texture 
+    CAlfStatic::Env().TextureManager().UnloadTexture( aIndex );
+    iTextures[aIndex] = &CAlfStatic::Env().TextureManager().BlankTexture(); 
+    }
+// -----------------------------------------------------------------------------
 // CFreestyleEmailUiTextureManager::TextureByMailboxIdL
 // Returns branded mailbox icon texture based on PluginId, MailboxId and IconSize.
 // If not found. Will call LoadTexture to create new textures based on temporary
@@ -1339,71 +1350,152 @@
 			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_attach_asc,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_attach_asc_mask );
-			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListAttachmentAscTexture );
+			TInt tempsize = iAppUi->LayoutHandler()->ListControlBarMailboxDefaultIconSize();
+			iconSize.SetSize( tempsize, tempsize );
 			}
 			break;
+        case ESortListAttachmentAscTexturePopup:
+			{
+			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
+									   EMbmFreestyleemailuiQgn_prop_email_sort_attach_asc,
+									   EMbmFreestyleemailuiQgn_prop_email_sort_attach_asc_mask );
+			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListAttachmentAscTexturePopup );
+			}
+			break;	
         case ESortListAttachmentDescTexture:
 			{
 			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_attach_desc,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_attach_desc_mask );
-			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListAttachmentDescTexture );
+			TInt tempsize = iAppUi->LayoutHandler()->ListControlBarMailboxDefaultIconSize();
+			iconSize.SetSize( tempsize, tempsize );
 			}
 			break;
+        case ESortListAttachmentDescTexturePopup:
+        	{
+        	AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
+        							   EMbmFreestyleemailuiQgn_prop_email_sort_attach_desc,
+        							   EMbmFreestyleemailuiQgn_prop_email_sort_attach_desc_mask );
+        	iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListAttachmentDescTexturePopup );
+        	}
+        	break;
         case ESortListDateAscTexture:
 			{
 			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_date_asc,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_date_asc_mask );
-			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListDateAscTexture );
+			TInt tempsize = iAppUi->LayoutHandler()->ListControlBarMailboxDefaultIconSize();
+			iconSize.SetSize( tempsize, tempsize );
 			}
 			break;
+        case ESortListDateAscTexturePopup:
+        	{
+        	AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
+        							   EMbmFreestyleemailuiQgn_prop_email_sort_date_asc,
+        							   EMbmFreestyleemailuiQgn_prop_email_sort_date_asc_mask );
+        	iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListDateAscTexturePopup );
+        	}
+        	break;
         case ESortListDateDescTexture:
 			{
 			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_date_desc,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_date_desc_mask );
-			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListDateDescTexture );
+			TInt tempsize = iAppUi->LayoutHandler()->ListControlBarMailboxDefaultIconSize();
+			iconSize.SetSize( tempsize, tempsize );
 			}
 			break;
+        case ESortListDateDescTexturePopup:
+        	{
+        	AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
+        							   EMbmFreestyleemailuiQgn_prop_email_sort_date_desc,
+        							   EMbmFreestyleemailuiQgn_prop_email_sort_date_desc_mask );
+        	iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListDateDescTexturePopup );
+        	}
+        	break;
         case ESortListFollowAscTexture:
 			{
 			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_follow_asc,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_follow_asc_mask );
-			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListFollowAscTexture );
+			TInt tempsize = iAppUi->LayoutHandler()->ListControlBarMailboxDefaultIconSize();
+			iconSize.SetSize( tempsize, tempsize );
 			}
 			break;
+        case ESortListFollowAscTexturePopup:
+        	{
+        	AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
+        							   EMbmFreestyleemailuiQgn_prop_email_sort_follow_asc,
+        							   EMbmFreestyleemailuiQgn_prop_email_sort_follow_asc_mask );
+        	iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListFollowAscTexturePopup );
+        	}
+        	break;
         case ESortListFollowDescTexture:
 			{
 			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_follow_desc,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_follow_desc_mask );
-			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListFollowDescTexture );
+			TInt tempsize = iAppUi->LayoutHandler()->ListControlBarMailboxDefaultIconSize();
+			iconSize.SetSize( tempsize, tempsize );
 			}
 			break;
+        case ESortListFollowDescTexturePopup:
+        	{
+        	AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
+        							   EMbmFreestyleemailuiQgn_prop_email_sort_follow_desc,
+        							   EMbmFreestyleemailuiQgn_prop_email_sort_follow_desc_mask );
+        	iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListFollowDescTexturePopup );
+        	}
+        	break;
         case ESortListPriorityAscTexture:
 			{
 			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_priority_asc,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_priority_asc_mask );
-			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListPriorityAscTexture );
+			TInt tempsize = iAppUi->LayoutHandler()->ListControlBarMailboxDefaultIconSize();
+			iconSize.SetSize( tempsize, tempsize );
 			}
 			break;
+        case ESortListPriorityAscTexturePopup:
+        	{
+        	AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
+        							   EMbmFreestyleemailuiQgn_prop_email_sort_priority_asc,
+        							   EMbmFreestyleemailuiQgn_prop_email_sort_priority_asc_mask );
+        	iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListPriorityAscTexturePopup );
+        	}
+        	break;
         case ESortListPriorityDescTexture:
 			{
 			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_priority_desc,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_priority_desc_mask );
-			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListPriorityDescTexture );
+			TInt tempsize = iAppUi->LayoutHandler()->ListControlBarMailboxDefaultIconSize();
+			iconSize.SetSize( tempsize, tempsize );
 			}
 			break;
+        case ESortListPriorityDescTexturePopup:
+        	{
+        	AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
+        							   EMbmFreestyleemailuiQgn_prop_email_sort_priority_desc,
+        							   EMbmFreestyleemailuiQgn_prop_email_sort_priority_desc_mask );
+        	iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListPriorityDescTexturePopup );
+        	}
+        	break;
         case ESortListSenderAscTexture:
 			{
 			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_sender_asc,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_sender_asc_mask );
-			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListSenderAscTexture );
+			TInt tempsize = iAppUi->LayoutHandler()->ListControlBarMailboxDefaultIconSize();
+			iconSize.SetSize( tempsize, tempsize );
+			}
+			break;
+        case ESortListSenderAscTexturePopup:
+			{
+			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
+									   EMbmFreestyleemailuiQgn_prop_email_sort_sender_asc,
+									   EMbmFreestyleemailuiQgn_prop_email_sort_sender_asc_mask );
+			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListSenderAscTexturePopup );
 			}
 			break;
         case ESortListSenderDescTexture:
@@ -1411,7 +1503,16 @@
 			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_sender_desc,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_sender_desc_mask );
-			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListSenderDescTexture );
+			TInt tempsize = iAppUi->LayoutHandler()->ListControlBarMailboxDefaultIconSize();
+			iconSize.SetSize( tempsize, tempsize );
+			}
+			break;
+        case ESortListSenderDescTexturePopup:
+			{
+			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
+									   EMbmFreestyleemailuiQgn_prop_email_sort_sender_desc,
+									   EMbmFreestyleemailuiQgn_prop_email_sort_sender_desc_mask );
+			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListSenderDescTexturePopup );
 			}
 			break;
         case ESortListSubjectAscTexture:
@@ -1419,7 +1520,16 @@
 			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_subject_asc,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_subject_asc_mask );
-			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListSubjectAscTexture );
+			TInt tempsize = iAppUi->LayoutHandler()->ListControlBarMailboxDefaultIconSize();
+			iconSize.SetSize( tempsize, tempsize );
+			}
+			break;
+        case ESortListSubjectAscTexturePopup:
+			{
+			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
+									   EMbmFreestyleemailuiQgn_prop_email_sort_subject_asc,
+									   EMbmFreestyleemailuiQgn_prop_email_sort_subject_asc_mask );
+			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListSubjectAscTexturePopup );
 			}
 			break;
         case ESortListSubjectDescTexture:
@@ -1427,7 +1537,16 @@
 			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_subject_desc,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_subject_desc_mask );
-			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListSubjectDescTexture );
+			TInt tempsize = iAppUi->LayoutHandler()->ListControlBarMailboxDefaultIconSize();
+			iconSize.SetSize( tempsize, tempsize );
+			}
+			break;
+        case ESortListSubjectDescTexturePopup:
+			{
+			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
+									   EMbmFreestyleemailuiQgn_prop_email_sort_subject_desc,
+									   EMbmFreestyleemailuiQgn_prop_email_sort_subject_desc_mask );
+			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListSubjectDescTexturePopup );
 			}
 			break;
         case ESortListUnreadAscTexture:
@@ -1435,7 +1554,16 @@
 			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_unread_asc,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_unread_asc_mask );
-			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListUnreadAscTexture );
+			TInt tempsize = iAppUi->LayoutHandler()->ListControlBarMailboxDefaultIconSize();
+			iconSize.SetSize( tempsize, tempsize );
+			}
+			break;
+        case ESortListUnreadAscTexturePopup:
+			{
+			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
+									   EMbmFreestyleemailuiQgn_prop_email_sort_unread_asc,
+									   EMbmFreestyleemailuiQgn_prop_email_sort_unread_asc_mask );
+			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListUnreadAscTexturePopup );
 			}
 			break;
         case ESortListUnreadDescTexture:
@@ -1443,10 +1571,19 @@
 			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_unread_desc,
 									   EMbmFreestyleemailuiQgn_prop_email_sort_unread_desc_mask );
-			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListUnreadDescTexture );
+			TInt tempsize = iAppUi->LayoutHandler()->ListControlBarMailboxDefaultIconSize();
+			iconSize.SetSize( tempsize, tempsize );
 			}
 			break;
-		// SORT LIST ICON READING STOPS HERE
+        case ESortListUnreadDescTexturePopup:
+			{
+			AknIconUtils::CreateIconL( bitmap, mask, iconFileName,
+									   EMbmFreestyleemailuiQgn_prop_email_sort_unread_desc,
+									   EMbmFreestyleemailuiQgn_prop_email_sort_unread_desc_mask );
+			iconSize = iAppUi->LayoutHandler()->FolderListIconSize( aId == ESortListUnreadDescTexturePopup );
+			}
+			break;
+			// SORT LIST ICON READING STOPS HERE
 		//
 			
 		// ATTACHMENT ICONS STARTS HERE
@@ -2123,6 +2260,22 @@
         case ESortListSubjectDescTexture: iTextures[aTextureId] = &CAlfStatic::Env().TextureManager().CreateTextureL( ESortListSubjectDescTexture, this, EAlfTextureFlagRetainResolution); break;
         case ESortListUnreadAscTexture: iTextures[aTextureId] = &CAlfStatic::Env().TextureManager().CreateTextureL( ESortListUnreadAscTexture, this, EAlfTextureFlagRetainResolution); break;
         case ESortListUnreadDescTexture: iTextures[aTextureId] = &CAlfStatic::Env().TextureManager().CreateTextureL( ESortListUnreadDescTexture, this, EAlfTextureFlagRetainResolution); break;
+        
+        // SORT LIST ICONS POPUP
+        case ESortListAttachmentAscTexturePopup: iTextures[aTextureId] = &CAlfStatic::Env().TextureManager().CreateTextureL( ESortListAttachmentAscTexturePopup, this, EAlfTextureFlagRetainResolution); break;
+        case ESortListAttachmentDescTexturePopup: iTextures[aTextureId] = &CAlfStatic::Env().TextureManager().CreateTextureL( ESortListAttachmentDescTexturePopup, this, EAlfTextureFlagRetainResolution); break;
+        case ESortListDateAscTexturePopup: iTextures[aTextureId] = &CAlfStatic::Env().TextureManager().CreateTextureL( ESortListDateAscTexturePopup, this, EAlfTextureFlagRetainResolution); break;
+        case ESortListDateDescTexturePopup: iTextures[aTextureId] = &CAlfStatic::Env().TextureManager().CreateTextureL( ESortListDateDescTexturePopup, this, EAlfTextureFlagRetainResolution); break;
+        case ESortListFollowAscTexturePopup: iTextures[aTextureId] = &CAlfStatic::Env().TextureManager().CreateTextureL( ESortListFollowAscTexturePopup, this, EAlfTextureFlagRetainResolution); break;
+        case ESortListFollowDescTexturePopup: iTextures[aTextureId] = &CAlfStatic::Env().TextureManager().CreateTextureL( ESortListFollowDescTexturePopup, this, EAlfTextureFlagRetainResolution); break;
+        case ESortListPriorityAscTexturePopup: iTextures[aTextureId] = &CAlfStatic::Env().TextureManager().CreateTextureL( ESortListPriorityAscTexturePopup, this, EAlfTextureFlagRetainResolution); break;
+        case ESortListPriorityDescTexturePopup: iTextures[aTextureId] = &CAlfStatic::Env().TextureManager().CreateTextureL( ESortListPriorityDescTexturePopup, this, EAlfTextureFlagRetainResolution); break;
+        case ESortListSenderAscTexturePopup: iTextures[aTextureId] = &CAlfStatic::Env().TextureManager().CreateTextureL( ESortListSenderAscTexturePopup, this, EAlfTextureFlagRetainResolution); break;
+        case ESortListSenderDescTexturePopup: iTextures[aTextureId] = &CAlfStatic::Env().TextureManager().CreateTextureL( ESortListSenderDescTexturePopup, this, EAlfTextureFlagRetainResolution); break;
+        case ESortListSubjectAscTexturePopup: iTextures[aTextureId] = &CAlfStatic::Env().TextureManager().CreateTextureL( ESortListSubjectAscTexturePopup, this, EAlfTextureFlagRetainResolution); break;
+        case ESortListSubjectDescTexturePopup: iTextures[aTextureId] = &CAlfStatic::Env().TextureManager().CreateTextureL( ESortListSubjectDescTexturePopup, this, EAlfTextureFlagRetainResolution); break;
+        case ESortListUnreadAscTexturePopup: iTextures[aTextureId] = &CAlfStatic::Env().TextureManager().CreateTextureL( ESortListUnreadAscTexturePopup, this, EAlfTextureFlagRetainResolution); break;
+        case ESortListUnreadDescTexturePopup: iTextures[aTextureId] = &CAlfStatic::Env().TextureManager().CreateTextureL( ESortListUnreadDescTexturePopup, this, EAlfTextureFlagRetainResolution); break;
                 
 		// STATUS INDICATOR ICONS
 		case EStatusTextureSynchronising: iTextures[aTextureId] = &CAlfStatic::Env().TextureManager().CreateTextureL( EStatusTextureSynchronising, this, EAlfTextureFlagRetainResolution); break;
--- a/emailuis/emailui/src/FreestyleEmailUiViewBase.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/src/FreestyleEmailUiViewBase.cpp	Tue May 25 12:23:16 2010 +0300
@@ -128,10 +128,11 @@
         	}
 
         // View activated succesfully
+        DoTransition( EFalse ); 
         if ( !iAppUi.SwitchingToBackground() )
             {
             // Change visible control group
-            DoTransition( EFalse );
+            // having here DoTransition caused grid transparency when app left from listview
             ActivateControlGroup();
             }
         else
@@ -279,7 +280,7 @@
 // ---------------------------------------------------------------------------
 // virtual function to hide or show CAlfVisuals ( used for activation or deactivation )
 //
-void CFsEmailUiViewBase::FadeOut(TBool aDirectionOut )
+void CFsEmailUiViewBase::FadeOut( TBool /* aDirectionOut */ )
 	{
 	FUNC_LOG;
     // should be overriden ( if needed ) to use polymorphism 
--- a/emailuis/emailui/src/ceuiexitguardian.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/src/ceuiexitguardian.cpp	Tue May 25 12:23:16 2010 +0300
@@ -19,21 +19,22 @@
 #include "ceuiexitguardian.h"
 #include "emailtrace.h"
 
+
 // ---------------------------------------------------------------------------
 // CEUiExitGuardian::NewL
 //
 // ---------------------------------------------------------------------------
 //
 CEUiExitGuardian* CEUiExitGuardian::NewL( CFreestyleEmailUiAppUi& aAppUi )
-	{
+    {
     FUNC_LOG;
 
-    CEUiExitGuardian* self = new (ELeave) CEUiExitGuardian(aAppUi);
-    CleanupStack::PushL(self);
+    CEUiExitGuardian* self = new (ELeave) CEUiExitGuardian( aAppUi );
+    CleanupStack::PushL( self );
     self->ConstructL();
-    CleanupStack::Pop(self);
+    CleanupStack::Pop( self );
     return self;
-	}
+    }
 
 // ---------------------------------------------------------------------------
 // CEUiExitGuardian::CEUiExitGuardian
@@ -41,7 +42,7 @@
 // ---------------------------------------------------------------------------
 //
 CEUiExitGuardian::CEUiExitGuardian( CFreestyleEmailUiAppUi& aAppUi )
-    : iAppUi(aAppUi)
+    : iAppUi( aAppUi )
     {
     FUNC_LOG;
     }
@@ -55,9 +56,14 @@
     {
     FUNC_LOG;
 
-    delete iIdle;
+    if ( iPeriodicTimer )
+        {
+        iPeriodicTimer->Cancel();
+        delete iPeriodicTimer;
+        }
     }
 
+
 // ---------------------------------------------------------------------------
 // CEUiExitGuardian::ConstructL
 //
@@ -67,86 +73,52 @@
     {
     FUNC_LOG;
 
-    iIdle = CIdle::NewL(CActive::EPriorityStandard);
+    iPeriodicTimer = CPeriodic::NewL( CActive::EPriorityStandard );
+    iPeriodicTimerStarted = EFalse;
     }
 
+
 // ---------------------------------------------------------------------------
-// CEUiExitGuardian::EnterLC
+// CEUiExitGuardian::PeriodicCallBack
 //
 // ---------------------------------------------------------------------------
 //
-void CEUiExitGuardian::EnterLC()
-    {
-    FUNC_LOG;
-
-    if (iExitPending)
-        {
-        User::Leave(KErrNotReady);
-        }
-    iEnterCount++;
-    CleanupStack::PushL(TCleanupItem(Exit, this));
-    }
-
-// ---------------------------------------------------------------------------
-// CEUiExitGuardian::Exit
-//
-// ---------------------------------------------------------------------------
-//
-void CEUiExitGuardian::Exit(TAny* aPtr)
-    {
-    FUNC_LOG;
-
-    reinterpret_cast<CEUiExitGuardian*>(aPtr)->DoExit();
-    }
-
-// ---------------------------------------------------------------------------
-// CEUiExitGuardian::DoExit
-//
-// ---------------------------------------------------------------------------
-//
-void CEUiExitGuardian::DoExit()
+TInt CEUiExitGuardian::PeriodicCallBack( TAny* aPtr )
     {
     FUNC_LOG;
 
-    iEnterCount--;
-    if (iExitPending && !iEnterCount && !iIdle->IsActive())
-        {
-        // Start async exit processing to rewind recursion before the actual
-        // exit
-        iIdle->Start( TCallBack( IdleCallBack, this ) );
-        }
+    reinterpret_cast<CEUiExitGuardian*>(aPtr)->TryExitApplication();
+    return KErrNone;
     }
 
+
 // ---------------------------------------------------------------------------
-// CEUiExitGuardian::IdleCallBack
+// CEUiExitGuardian::TryExitApplication
 //
 // ---------------------------------------------------------------------------
 //
-TInt CEUiExitGuardian::IdleCallBack( TAny* aPtr )
+TInt CEUiExitGuardian::TryExitApplication()
     {
     FUNC_LOG;
-
-    reinterpret_cast<CEUiExitGuardian*>( aPtr )->iAppUi.ExitNow();
-    return KErrNone;
-    }
+    const TInt KDelay = 200*1000; // 200 ms
+    
+    TInt ret = KRequestPending;
 
-// ---------------------------------------------------------------------------
-// CEUiExitGuardian::ExitApplication
-//
-// ---------------------------------------------------------------------------
-//
-TInt CEUiExitGuardian::ExitApplication()
-    {
-    FUNC_LOG;
-
-    TInt result( KRequestPending );
-    iExitPending = ETrue;
-    if (!iEnterCount)
+    CActiveScheduler* scheduler = CActiveScheduler::Current();
+    TInt nestedLevelCount = scheduler->StackDepth();
+    if ( nestedLevelCount == 1 )
         {
-        result = KErrNone;
+        iPeriodicTimer->Cancel();
         iAppUi.ExitNow();
+        ret = KErrNone;
         }
-    return result;
+    else if ( !iPeriodicTimerStarted )
+        {
+        iPeriodicTimer->Start( KDelay, KDelay, TCallBack(PeriodicCallBack, this) );
+        iPeriodicTimerStarted = ETrue;
+        }
+    
+    return ret;
     }
 
 // end of file
--- a/emailuis/emailui/src/ncscomposeview.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/src/ncscomposeview.cpp	Tue May 25 12:23:16 2010 +0300
@@ -243,6 +243,17 @@
         iActiveHelper->Cancel();
         iActiveHelper->Start();
         }
+    else if ( iIncludeMessageTextAsync )
+    	{
+		if ( iContainer )
+			{
+    		iContainer->StopAsyncTextFormatter();
+			}
+		ResetComposer();
+		iAsyncCallback->Cancel(); // cancel any outstanding callback
+		iAsyncCallback->Set( TCallBack( AsyncExit, this ) );
+		iAsyncCallback->CallBack();
+    	}
     else
         {
         DoSafeExit( ESaveDraft );
@@ -277,6 +288,16 @@
     TUid aCustomMessageId, const TDesC8& aCustomMessage )
     {
     FUNC_LOG;
+    
+    // needed when "Opening" (replying/forwarding)note is shown and 
+    // we receive incoming call- Email application goes to background.
+    // When coming back to application the view is activated and reseted.
+    // That's why we prevent activation and the same is done in ChildDoDeactivate
+    if ( iIncludeMessageTextAsync )
+        {
+        return;
+        }
+
     if ( !iFirstStartCompleted )
         {
         DoFirstStartL();
@@ -412,6 +433,7 @@
         iViewReady = ETrue;
         Toolbar()->SetDimmed( EFalse );
         RefreshToolbar();
+        iContainer->ActivateL();
         }
         
     // if there is a embedded app in FSEmail.
@@ -434,6 +456,14 @@
         rwsSession.Close();
         CleanupStack::PopAndDestroy( &rwsSession );
         }
+    
+    if ( iIncludeMessageTextAsync )
+    	{
+		// including message body in async way
+		IncludeMessageTextAsyncL( ETrue );
+    	}
+    
+    iViewFullyActivated = ETrue;
         
     TIMESTAMP( "Editor launched" );
     }
@@ -735,6 +765,14 @@
 void CNcsComposeView::ChildDoDeactivate()
     {
     FUNC_LOG;
+    
+    // see comment in ChildDoActivate
+    if ( iIncludeMessageTextAsync && !iAppUi.AppUiExitOngoing() )
+        {
+        return;
+        }
+    
+    iViewFullyActivated = EFalse;
 
     iAppUi.StopEndKeyCapture();
 
@@ -1880,6 +1918,104 @@
     }
 
 // -----------------------------------------------------------------------------
+// CNcsComposeView::IncludeMessageTextAsyncL()
+//
+// -----------------------------------------------------------------------------
+//
+void CNcsComposeView::IncludeMessageTextAsyncL( TBool aEnsureSpaceInBegin /*= EFalse*/ )
+	{
+    FUNC_LOG;
+
+    __ASSERT_DEBUG( iContainer, Panic( ENcsBasicUi ) );
+
+    delete iBody;
+    iBody = NULL;
+    HBufC* rawBody = GetMessageBodyL();
+
+    // Ensure there's free space in the beginning of the message if required
+    if ( aEnsureSpaceInBegin && rawBody->Length() )
+        {
+        TText firstChar = (*rawBody)[0];
+        _LIT( KNewLines, "\r\n\x2028\x2029" );
+        if ( KNewLines().Locate( firstChar ) == KErrNotFound )
+            {
+			CleanupStack::PushL( rawBody );
+            // First character is not a new line character. Insert one.
+            iBody = HBufC::NewL( rawBody->Length() + KIMSLineFeed().Length() );
+            TPtr ptr = iBody->Des();
+            ptr.Append( KIMSLineFeed );
+            ptr.Append( *rawBody );
+            CleanupStack::PopAndDestroy( rawBody );
+            rawBody = NULL;
+            }
+        }
+    // If no modifications were needed, then just set body pointer to point
+    // the rawBody
+    if ( !iBody )
+        {
+        iBody = rawBody;
+        rawBody = NULL;
+        }
+    // Now we have possibly decorated message text in body pointer and
+    // in cleanup stack
+
+    // Divide the contents into normal body and the read-only quote fields
+    // Convert bytes length to words length
+    TInt readOnlyLength = iNewMessageTextPart->ReadOnlyPartSize() / 2;
+	//This check is unnecessary, but without that coverity complains
+    if ( iBody )
+    	{
+		TInt modifiableLength = iBody->Length() - readOnlyLength;
+	
+		// Remove one newline from the end of the modifiable body if there's
+		// read-only quote present. This is because the field boundary appears
+		// as newline on the screen. This newline is added back when saving
+		// the message.
+		TInt lfLength = KIMSLineFeed().Length();
+		if ( readOnlyLength && modifiableLength >= lfLength &&
+			 iBody->Mid( modifiableLength-lfLength, lfLength ) == KIMSLineFeed )
+			{
+			modifiableLength -= lfLength;
+			}
+	
+		iContainer->SetBodyContentAsyncL( iBody->Left( modifiableLength ),
+			iBody->Right( readOnlyLength ) );
+		
+		// callback: SetBodyContentCompleteL
+    	}
+	}
+
+// -----------------------------------------------------------------------------
+// CNcsComposeView::SetBodyContentComplete()
+//
+// -----------------------------------------------------------------------------
+//
+void CNcsComposeView::SetBodyContentComplete()
+	{
+	delete iBody;
+	iBody = NULL;
+	
+    if ( iOpeningWaitDialog )
+        {
+        TRAP_IGNORE( iOpeningWaitDialog->ProcessFinishedL() );
+        iOpeningWaitDialog = NULL;
+        }
+    
+    iOpeningWaitNoteVisible = EFalse;
+    iIncludeMessageTextAsync = EFalse;
+    }
+
+// -----------------------------------------------------------------------------
+// CNcsComposeView::IsOpeningWaitNoteVisible()
+//
+// -----------------------------------------------------------------------------
+//
+TBool CNcsComposeView::IsOpeningWaitNoteVisible() 
+    {
+    return iOpeningWaitNoteVisible;
+    }
+
+// -----------------------------------------------------------------------------
 // CNcsComposeView::InitForwardFieldsL()
 //
 // -----------------------------------------------------------------------------
@@ -2611,13 +2747,18 @@
     {
     FUNC_LOG;
     // Show "Opening" wait note if the message body is large
-    TInt waitNoteId = KErrNotFound;
+    iOpeningWaitNoteVisible = EFalse;
     if ( TFsEmailUiUtility::IsMessageBodyLargeL(iOrigMessage) )
         {
-        waitNoteId = TFsEmailUiUtility::ShowGlobalWaitNoteLC( 
-                R_FSE_WAIT_OPENING_TEXT );
+        TFsEmailUiUtility::ShowWaitNoteL( iOpeningWaitDialog, 
+                R_FSE_WAIT_OPENING_TEXT, EFalse, ETrue );
+        iOpeningWaitNoteVisible = ETrue;
         }
 
+    // disable this flag if "old style" sync mode is needed
+    // for including body of text
+    iIncludeMessageTextAsync = ETrue;
+    
     if ( iCustomMessageId == TUid::Uid( KEditorCmdReply ) )
         {
         GenerateReplyMessageL( EFalse );
@@ -2638,11 +2779,13 @@
         // This shouldn't ever happen. Panic in debug builds.
         ASSERT( EFalse );
         }
-
-    // Close the "Opening" wait note if it was shown
-    if ( waitNoteId != KErrNotFound )
+    
+    // Close the "Opening" wait note if it was shown 
+    // and include message text was done synchronously
+    if ( !iIncludeMessageTextAsync && iOpeningWaitDialog )
         {
-        CleanupStack::PopAndDestroy( (TAny*)waitNoteId );
+        iOpeningWaitDialog->ProcessFinishedL();
+        iOpeningWaitDialog = NULL;
         }
     }
 
@@ -2760,7 +2903,16 @@
     if ( iFirstStartCompleted ) // Safety check
         {
         InitReplyFieldsL( aReplyAll );
-        IncludeMessageTextL( ETrue );
+        // if flag is set -
+        // message text will be included asynchronously by calling method
+		// IncludeMessageTextAsyncL() at the end of view activation or when 
+		// all attachments are downloaded - this is done because formatting 
+		// text in CTextView with method FormatTextL() causes phone 
+		// irresponsive.
+        if ( !iIncludeMessageTextAsync )
+        	{
+			IncludeMessageTextL( ETrue );
+        	}
         iContainer->SetFocusToMessageFieldL();
         }
 	}
@@ -2800,7 +2952,16 @@
     if ( iFirstStartCompleted ) // Safety check
         {
         InitForwardFieldsL();
-        IncludeMessageTextL( ETrue );
+        // if flag is set - 
+        // message text will be included asynchronously by calling method
+		// IncludeMessageTextAsyncL() at the end of view activation or when 
+		// all attachments are downloaded - this is done because formatting 
+        // text in CTextView with method FormatTextL() causes phone 
+        // irresponsive.
+        if ( !iIncludeMessageTextAsync )
+        	{
+			IncludeMessageTextL( ETrue );
+        	}
         iContainer->SetFocusToToField();
         iContainer->SelectAllToFieldTextL();
         }
@@ -2971,6 +3132,29 @@
         TRAP_IGNORE( iFetchWaitDialog->ProcessFinishedL() );
         iFetchWaitDialog = NULL;
         }
+    
+    if ( iMailFetchingErrCode == KErrNone )
+        {
+        if ( iIncludeMessageTextAsync )
+            {
+            // in case the "Opening" wait note was closed by 
+            // wait note "Retrieving"
+            if ( !iOpeningWaitDialog && iOpeningWaitNoteVisible )
+                {
+                TRAP_IGNORE( TFsEmailUiUtility::ShowWaitNoteL( iOpeningWaitDialog, 
+                        R_FSE_WAIT_OPENING_TEXT, EFalse, ETrue ) );
+                }
+            }
+        
+        if ( iViewFullyActivated && iIncludeMessageTextAsync )
+            {
+            // include message body in async way.
+            // it is done here only if view was already activated
+            // this mean that attachments were added in async way
+            // and we couldn't start async including body text 
+            TRAP_IGNORE( IncludeMessageTextAsyncL( ETrue ) );
+            }
+        }
     return result;
 	}
 
--- a/emailuis/emailui/src/ncscomposeviewcontainer.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/src/ncscomposeviewcontainer.cpp	Tue May 25 12:23:16 2010 +0300
@@ -52,7 +52,7 @@
 #include "FreestyleEmailUi.hrh"
 #include "FSAutoSaver.h"
 #include "FreestyleEmailUiCLSItem.h"
-
+#include "FSAsyncTextFormatter.h"
 
 const TInt KHeaderVisibilityThreshold = -100;
 
@@ -169,14 +169,23 @@
 
     iLongTapDetector = CAknLongTapDetector::NewL( this );
 
-    ActivateL();
-    DrawDeferred();
-
     // activate auto save functionality
     iAutoSaver.Enable( ETrue );
     }
 
 // ---------------------------------------------------------------------------
+// CNcsComposeViewContainer::StopAsyncTextFormatter
+// ---------------------------------------------------------------------------
+//
+void CNcsComposeViewContainer::StopAsyncTextFormatter()
+    {
+    if ( iAsyncTextFormatter )
+        {
+        iAsyncTextFormatter->Cancel();
+        }
+    }
+
+// ---------------------------------------------------------------------------
 // CNcsComposeViewContainer::~CNcsComposeViewContainer
 // Destructor
 // ---------------------------------------------------------------------------
@@ -184,6 +193,13 @@
 CNcsComposeViewContainer::~CNcsComposeViewContainer()
     {
     FUNC_LOG;
+    
+    if ( iAsyncTextFormatter )
+        {
+        iAsyncTextFormatter->Cancel();
+        delete iAsyncTextFormatter;
+        }
+    
     if ( iContactHandler )
         {
         iContactHandler->ClearObservers();
@@ -503,8 +519,7 @@
         if ( iFocused )
             ret = iFocused->OfferKeyEventL( aKeyEvent, aType );
 
-        if( aType == EEventKeyUp )
-        	iView.HandleContainerChangeRequiringToolbarRefresh();
+        iView.HandleContainerChangeRequiringToolbarRefresh();
         
         // Report user activity to auto saver if editor field handled the
         // event. In case of message field (body text), EKeyWasConsumed
@@ -738,6 +753,7 @@
     const TPoint headerPos( 
             NcsUtility::HeaderControlPosition( cmailPaneRect, 0 ) );
     cmailPaneRect.Move( 0, iHeader->Position().iY - headerPos.iY );
+    iCmailPaneRect = cmailPaneRect;
 
     NcsUtility::LayoutHeaderControl( 
             iHeader, cmailPaneRect, 0, headerLineCount );
@@ -747,7 +763,13 @@
     NcsUtility::LayoutBodyEdwin( 
             iMessageField, cmailPaneRect, iHeader->LayoutLineCount(), 
             iMessageField->LineCount(), iSeparatorLineYPos );
-    TRAP_IGNORE( iMessageField->FormatAllTextNowL() );
+    
+    // we don't need format again when format was already done
+    // during creation of forward/reply message
+    if ( !iSwitchOffFormattingText )
+        {
+        TRAP_IGNORE( iMessageField->FormatAllTextNowL() );
+        }
 
     iMessageField->UpdateFontSize();
 
@@ -759,7 +781,12 @@
                 iReadOnlyQuoteField, cmailPaneRect, 
                 iHeader->LayoutLineCount() + iMessageField->LineCount(), 
                 iReadOnlyQuoteField->LineCount(), dummySeparatorPos );
-        TRAP_IGNORE( iReadOnlyQuoteField->FormatAllTextNowL() );
+        // we don't need format again when format was already done
+		// during creation of forward/reply message
+        if ( !iSwitchOffFormattingText )
+            {
+            TRAP_IGNORE( iReadOnlyQuoteField->FormatAllTextNowL() );
+            }
         iReadOnlyQuoteField->UpdateFontSize();
         readOnlyQuoteFieldHeight = iReadOnlyQuoteField->Rect().Height();
         }
@@ -782,8 +809,11 @@
         TSize newSize( iMessageField->Size().iWidth,
                        Max( iMessageField->Size().iHeight, 
                             iMessageEditorMinHeigth ) );
-            
-        iMessageField->SetSize( newSize );
+
+        if ( !iSwitchOffFormattingText ) 
+            {
+            iMessageField->SetSize( newSize );
+            }
         }
     else
         {
@@ -865,6 +895,94 @@
     }
 
 // -----------------------------------------------------------------------------
+// CNcsComposeViewContainer::SetBodyContentAsyncL()
+// -----------------------------------------------------------------------------
+//
+void CNcsComposeViewContainer::SetBodyContentAsyncL( const TDesC& aMessage,
+    const TDesC& aReadOnlyQuote )
+    {
+    FUNC_LOG;
+    delete iReadOnlyQuote;
+    iReadOnlyQuote = NULL;
+    if ( aReadOnlyQuote.Length() )
+        {
+        iReadOnlyQuote = aReadOnlyQuote.AllocL();
+        }
+
+    RMemReadStream inputStream( aMessage.Ptr(), aMessage.Size() );
+    CleanupClosePushL( inputStream );
+    iMessageField->RichText()->ImportTextL( 0, inputStream,
+        CPlainText::EOrganiseByParagraph );
+    CleanupStack::PopAndDestroy( &inputStream );
+    
+
+    // Activating the field will set the control to the end of the text
+    iMessageField->ActivateL();
+    iMessageField->SetCursorPosL( 0, EFalse );
+    
+    iProcessedField = iMessageField;
+    
+	iAsyncTextFormatter = CFSAsyncTextFormatter::NewL();
+    iAsyncTextFormatter->StartFormatting( iMessageField->TextLayout(), this );
+        
+    // callback from AO: FormatAllTextCompleteL
+}
+
+// -----------------------------------------------------------------------------
+// CNcsComposeViewContainer::FormatAllTextCancelled()
+// -----------------------------------------------------------------------------
+//
+void CNcsComposeViewContainer::FormatAllTextCancelled()
+	{
+	iView.SetBodyContentComplete();
+	}
+
+// -----------------------------------------------------------------------------
+// CNcsComposeViewContainer::FormatAllTextComplete()
+// -----------------------------------------------------------------------------
+//
+void CNcsComposeViewContainer::FormatAllTextComplete()
+	{
+    if ( iReadOnlyQuote && iProcessedField == iMessageField )
+        {
+        iProcessedField = iReadOnlyQuoteField;
+        if ( iReadOnlyQuote )
+            {
+			TInt dummySeparatorPos;
+			NcsUtility::LayoutBodyEdwin( iReadOnlyQuoteField, iCmailPaneRect, 
+					iHeader->LayoutLineCount() + iMessageField->LineCount(),
+					iReadOnlyQuoteField->LineCount(), dummySeparatorPos );
+	
+			RMemReadStream inputStream;
+            inputStream.Open( iReadOnlyQuote->Ptr(), iReadOnlyQuote->Size() );
+            TRAP_IGNORE( iReadOnlyQuoteField->RichText()->ImportTextL( 0, inputStream,
+                    CPlainText::EOrganiseByParagraph ) );
+            inputStream.Close();
+            
+            // Activating the field will set the control to the end of the text
+            TRAP_IGNORE( iReadOnlyQuoteField->ActivateL() );
+            TRAP_IGNORE( iReadOnlyQuoteField->SetCursorPosL( 0, EFalse ) );
+            
+            if ( !iAsyncTextFormatter )
+                {
+                TRAP_IGNORE( iAsyncTextFormatter = CFSAsyncTextFormatter::NewL() );
+                }
+            iAsyncTextFormatter->StartFormatting( 
+                    iReadOnlyQuoteField->TextLayout(), this );
+            }
+        }
+    else
+        {
+        // Recalculate the size of the body field
+        iSwitchOffFormattingText = ETrue;
+        SizeChanged();
+        iSwitchOffFormattingText = EFalse;
+        
+        iView.SetBodyContentComplete();
+        }
+    }
+
+// -----------------------------------------------------------------------------
 // CNcsComposeViewContainer::GetBodyContentLC()
 // -----------------------------------------------------------------------------
 //
@@ -1042,12 +1160,18 @@
         {
         if ( aDesirableEdwinSize.iHeight >= iMessageEditorMinHeigth )
             {
-            aEdwin->SetSize( aDesirableEdwinSize );
+            if ( !iSwitchOffFormattingText )
+                {
+                aEdwin->SetSize( aDesirableEdwinSize );
+                }
             }        
         }
     else
         {
-        aEdwin->SetSize( aDesirableEdwinSize );
+        if ( !iSwitchOffFormattingText )
+            {
+            aEdwin->SetSize( aDesirableEdwinSize );
+            }
         }
     if ( aEdwin == iMessageField )
         {
@@ -1966,14 +2090,14 @@
     FUNC_LOG;
     TInt scrollOffset = aNewPosition.iY - iVisibleAreaHeight / 2;
 
-	// when the composer view is overlapped by other view for instance task switcher or screensaver
-	// physics sends a faulty event to move the composer view down. 
-	// This action is ignored here.	
-	if (aNewPosition.iY != 0)
-		{    	
-    Scroll( scrollOffset, aDrawNow );
+    // when the composer view is overlapped by other view for instance task switcher or screensaver
+    // physics sends a faulty event to move the composer view down. 
+    // This action is ignored here.	
+    if (aNewPosition.iY != 0)
+        {
+        Scroll( scrollOffset, aDrawNow );
+        }
     }
-	}
 
 // -----------------------------------------------------------------------------
 // CNcsComposeViewContainer::PhysicEmulationEnded
@@ -2010,27 +2134,3 @@
     FUNC_LOG;
     return iHeader->IsRemoteSearchInprogress();
     }
-
-// -----------------------------------------------------------------------------
-// CNcsComposeViewContainer::DoUpdateSubjectL
-// -----------------------------------------------------------------------------
-//
-void CNcsComposeViewContainer::DoUpdateSubjectL()
-    {
-    FUNC_LOG;
-    // fix for ESLX-7Y4C2V, dissapearing subject
-    // get copy of subject
-    HBufC* subjectCopy = GetSubjectLC();
-    iHeader->SetFocus( EFalse, EDrawNow );
-    // get subject after focus lost
-    HBufC* subject = GetSubjectLC();
-    // restore subject from copy if necessary
-    if ( subject->Length() != subjectCopy->Length() )
-        {
-        iHeader->SetSubjectL( *subjectCopy );
-        }
-
-    // restore focus
-    iHeader->SetFocus( ETrue, EDrawNow );
-    CleanupStack::PopAndDestroy( 2, subjectCopy );
-    }
--- a/emailuis/emailui/src/ncsheadercontainer.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/emailui/src/ncsheadercontainer.cpp	Tue May 25 12:23:16 2010 +0300
@@ -1228,7 +1228,7 @@
 		{
 		if( aShow )
 			{
-			iMenuBar->SetCommandSetL( R_AVKON_SOFTKEYS_SELECT_CANCEL__SELECT );
+			iMenuBar->SetCommandSetL( R_AVKON_SOFTKEYS_CANCEL ); 
 			}
 		else
 			{
--- a/emailuis/uicomponents/src/fscontrolbuttonvisualiser.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/uicomponents/src/fscontrolbuttonvisualiser.cpp	Tue May 25 12:23:16 2010 +0300
@@ -1253,13 +1253,11 @@
     // If there is no text in the button, center the icon to the button
     if( !iLabelFirstLine || iLabelFirstLine->Text().Length() == 0 )
         {
-        TSize oldIconSize = iconA.Size();
-        iconA.SetRect( TPoint( 
-                            ( buttonSize.iWidth - oldIconSize.iWidth ) / 2, 
-                            ( buttonSize.iHeight - oldIconSize.iHeight ) / 2 ),
-                            oldIconSize );
+        TRect oldIconRect = iconA;
+        iconA.SetRect( TPoint(( buttonSize.iWidth - oldIconRect.Width())/2,
+                                oldIconRect.iTl.iY),
+                                oldIconRect.Size() );
         }
-    
     if ( iButtonModel->ContainsElement( ECBElemIconA ) )
         {
         const TSize& size( iconA.Size() );
--- a/emailuis/uicomponents/src/fstreeplainonelineitemvisualizer.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/uicomponents/src/fstreeplainonelineitemvisualizer.cpp	Tue May 25 12:23:16 2010 +0300
@@ -241,12 +241,6 @@
                 mainIconMetrics,
                 rect,
                 mainIconVariety );
-    // WORKAROUND FIX FOR LAYOUT PROBLEM -- RETURN THIS TO NORMAL WHEN LAYOUT'S ARE OK
-    if (rect.iTl.iY < 15)
-        {
-        rect.Move(0, 15 - rect.iTl.iY);    
-        }
-    // WORKAROUND FIX FOR LAYOUT PROBLEM -- RETURN THIS TO NORMAL WHEN LAYOUT'S ARE OK   
     tpMainIconTl.SetTarget(TAlfRealPoint(rect.iTl));
     tpMainIconBr.SetTarget(TAlfRealPoint(rect.iBr));
 
@@ -255,12 +249,6 @@
             markIconMetrics,
             rect,
             markIconVariety );
-    // WORKAROUND FIX FOR LAYOUT PROBLEM -- RETURN THIS TO NORMAL WHEN LAYOUT'S ARE OK
-    if (rect.iTl.iY < 15)
-        {
-        rect.Move(0, 15 - rect.iTl.iY);    
-        }
-    // WORKAROUND FIX FOR LAYOUT PROBLEM -- RETURN THIS TO NORMAL WHEN LAYOUT'S ARE OK   
     tpMarkIconTl.SetTarget(TAlfRealPoint(rect.iTl));
     tpMarkIconBr.SetTarget(TAlfRealPoint(rect.iBr));
 
@@ -269,12 +257,6 @@
             menuIconMetrics,
             rect,
             menuIconVariety );
-    // WORKAROUND FIX FOR LAYOUT PROBLEM -- RETURN THIS TO NORMAL WHEN LAYOUT'S ARE OK
-    if (rect.iTl.iY < 15)
-        {
-        rect.Move(0, 15 - rect.iTl.iY);    
-        }
-    // WORKAROUND FIX FOR LAYOUT PROBLEM -- RETURN THIS TO NORMAL WHEN LAYOUT'S ARE OK   
     tpMenuIconTl.SetTarget(TAlfRealPoint(rect.iTl));
     tpMenuIconBr.SetTarget(TAlfRealPoint(rect.iBr));
 
@@ -293,12 +275,6 @@
     CFsLayoutManager::LayoutMetricsText(textRect,
             textMetrics,
             textInfo, textPaneVariety);
-    // WORKAROUND FIX FOR LAYOUT PROBLEM -- RETURN THIS TO NORMAL WHEN LAYOUT'S ARE OK
-    if (textInfo.iTextRect.iTl.iY < 15)
-        {
-        textInfo.iTextRect.Move(0, 15 - textInfo.iTextRect.iTl.iY);    
-        }
-    // WORKAROUND FIX FOR LAYOUT PROBLEM -- RETURN THIS TO NORMAL WHEN LAYOUT'S ARE OK
     tpTextTl.SetTarget(TAlfRealPoint(textInfo.iTextRect.iTl));
     tpTextBr.SetTarget(TAlfRealPoint(textInfo.iTextRect.iBr));
 
--- a/emailuis/uicomponents/src/fstreevisualizerbase.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/emailuis/uicomponents/src/fstreevisualizerbase.cpp	Tue May 25 12:23:16 2010 +0300
@@ -88,7 +88,8 @@
 
 // check from aknphysicsconstants.h
 const TInt KFlickMaxDuration( 500000 );
-const TInt KDefaultFriction( 25 ); // avkon default is 10
+//const TInt KDefaultFriction( 25 ); // avkon default is 10
+const TInt KDefaultFriction( 5 ); // avkon default is 10
 
 // ======== LOCAL FUNCTIONS ========
 
--- a/ipsservices/ipssosplugin/group/IPSSosPlugin.mmp	Tue May 11 15:57:15 2010 +0300
+++ b/ipsservices/ipssosplugin/group/IPSSosPlugin.mmp	Tue May 25 12:23:16 2010 +0300
@@ -65,6 +65,7 @@
 SOURCE                  ipsplgtextsearcher.cpp
 SOURCE                  ipsplgconnectandrefreshfolderlist.cpp
 SOURCE                  ipsplgsyncstatehandler.cpp
+SOURCE                  cemailsettingsextensionimpl.cpp
 
 SOURCEPATH              ../data
 
--- a/ipsservices/ipssosplugin/group/bld.inf	Tue May 11 15:57:15 2010 +0300
+++ b/ipsservices/ipssosplugin/group/bld.inf	Tue May 25 12:23:16 2010 +0300
@@ -32,6 +32,7 @@
 ../inc/ipsplgbaseoperation.h |../../inc/ipsplgbaseoperation.h
 ../inc/ipsplgconnectandrefreshfolderlist.h |../../inc/ipsplgconnectandrefreshfolderlist.h
 ../inc/ipsplgpropertywatcher.h |../../inc/ipsplgpropertywatcher.h
+../inc/cemailsettingsextension.h |../../inc/cemailsettingsextension.h
 //</cmail>
 PRJ_MMPFILES
 ../group/IPSSosPlugin.mmp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsservices/ipssosplugin/inc/cemailsettingsextension.h	Tue May 25 12:23:16 2010 +0300
@@ -0,0 +1,62 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: mailbox settings extension
+*
+*/
+
+#ifndef CEMAILSETTINGSEXTENSION_H
+#define CEMAILSETTINGSEXTENSION_H
+
+#include "cemailextensionbase.h"
+#include "emailextensionuids.hrh"
+
+#include "cfsmailcommon.h"
+
+// interface UID value passed to CFSMailBox::ExtensionL
+_LIT( EmailSyncInterval, "EmailSyncInterval" );
+
+/**
+ * settings extension interface
+ * 
+ */
+class CEmailSettingsExtension : public CEmailExtension
+{
+public:
+    
+    /**
+    * setting value getter
+    */
+    virtual void GetSettingValue( const TDesC& aKey, TDesC8& aValue ) const = 0;
+
+    /**
+    * setting value setter
+    */    
+    virtual void SetSettingValue( const TDesC& aKey, const RBuf8& aValue ) = 0;
+
+    /**
+    * Test if setting is set
+    */    
+    virtual TBool IsSetL( const TDesC& aKey ) = 0;
+
+    /**
+    * mailbox id getter & setter
+    */    
+    virtual void SetMailBoxId( const TFSMailMsgId& aMailBoxId ) = 0;
+    virtual TFSMailMsgId GetMailBoxId( ) = 0;
+
+protected:    
+    CEmailSettingsExtension( const TUid& aUid );
+};
+
+#endif // CEMAILSETTINGSEXTENSION_H
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsservices/ipssosplugin/inc/cemailsettingsextensionimpl.h	Tue May 25 12:23:16 2010 +0300
@@ -0,0 +1,66 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  settings extension for mailbox
+*
+*/
+#ifndef CEMAILSETTINGSEXTENSIONIMPL_H
+#define CEMAILSETTINGSEXTENSIONIMPL_H
+                          
+#include "cemailsettingsextension.h" 
+#include "cemailextensionbase.h"
+
+/**
+* Implementation of mailbox settings extension
+*/
+NONSHARABLE_CLASS( CEmailSettingsExtensionImpl ) : public CEmailSettingsExtension
+{
+public:
+
+    CEmailSettingsExtensionImpl();
+    CEmailSettingsExtensionImpl(CMsvSession* iSession);    
+    ~CEmailSettingsExtensionImpl();
+    
+public: // from CEmailSettingsExtension
+    /**
+    * setting value getter
+    */
+    virtual void GetSettingValue( const TDesC& aKey, TDesC8& aValue  ) const;
+
+    /**
+    * setting value setter
+    */    
+    virtual void SetSettingValue( const TDesC& aKey, const RBuf8& aValue);
+    
+    /**
+    * Test setting value
+    */    
+    virtual TBool IsSetL( const TDesC& aKey );
+    
+    /**
+    * mailbox id getter & setter
+    */    
+    virtual void SetMailBoxId( const TFSMailMsgId& aMailBoxId );
+    virtual TFSMailMsgId GetMailBoxId( );
+    
+private: // data
+    
+    // owner mailbox id
+    TFSMailMsgId iMailBoxId;
+
+    // Symbian message server session
+    CMsvSession* iSession;
+
+};
+
+#endif // CEMAILSETTINGSEXTENSIONIMPL_H
--- a/ipsservices/ipssosplugin/inc/ipsplgheaders.h	Tue May 11 15:57:15 2010 +0300
+++ b/ipsservices/ipssosplugin/inc/ipsplgheaders.h	Tue May 25 12:23:16 2010 +0300
@@ -73,6 +73,8 @@
 //<cmail>
 #include "cfsmailcommon.h"
 #include "cfsmailmessage.h"
+#include "cemailsettingsextensionimpl.h"
+
 // sendui
 #include <SendUiConsts.h>
 #include <SenduiMtmUids.h>
--- a/ipsservices/ipssosplugin/inc/ipsplgimap4fetchattachmentop.h	Tue May 11 15:57:15 2010 +0300
+++ b/ipsservices/ipssosplugin/inc/ipsplgimap4fetchattachmentop.h	Tue May 25 12:23:16 2010 +0300
@@ -230,7 +230,6 @@
         TImImap4GetMailInfo                     iGetMailInfo;
         TInt                                    iFunctionId;
         TPckgBuf<TImap4CompoundProgress>        iProgress;
-        TMsvId                                  iService;
         TBool                                   iPopulated;
         CIpsFetchProgReport*                    iProgReport;
         // Temporary fix for handling KErrServerBusy errors from the
--- a/ipsservices/ipssosplugin/inc/ipsplgsosbaseplugin.h	Tue May 11 15:57:15 2010 +0300
+++ b/ipsservices/ipssosplugin/inc/ipsplgsosbaseplugin.h	Tue May 25 12:23:16 2010 +0300
@@ -387,6 +387,8 @@
        const TFSMailMsgId& aMailBoxId,
        const TDesC& aUsername,
        const TDesC& aPassword );
+    
+    virtual CEmailExtension* ExtensionL( const TUid& aInterfaceUid );
 
 public:
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ipsservices/ipssosplugin/src/cemailsettingsextensionimpl.cpp	Tue May 25 12:23:16 2010 +0300
@@ -0,0 +1,165 @@
+/*
+* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  implementation of settings extension for mailbox
+*
+*/
+
+#include <cemailaccounts.h>
+#include <imapset.h>
+#include "ipssetdataapi.h"
+#include "ipssetdataextension.h"
+
+#include "emailtrace.h"
+#include "cemailsettingsextensionimpl.h"          
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+CEmailSettingsExtension::CEmailSettingsExtension( const TUid& aUid ) : CEmailExtension( aUid )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+CEmailSettingsExtensionImpl::CEmailSettingsExtensionImpl() : 
+    CEmailSettingsExtension( KEmailSettingExtensionUid )
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+CEmailSettingsExtensionImpl::CEmailSettingsExtensionImpl(CMsvSession* aSession) : 
+    CEmailSettingsExtension( KEmailSettingExtensionUid )
+    {
+    iSession = aSession;
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+CEmailSettingsExtensionImpl::~CEmailSettingsExtensionImpl()
+    {
+    FUNC_LOG
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+void CEmailSettingsExtensionImpl::GetSettingValue( const TDesC& /*aKey*/, TDesC8& /*aValue*/  ) const
+    {
+    FUNC_LOG
+
+    }
+    
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+void CEmailSettingsExtensionImpl::SetSettingValue( const TDesC& /*aKey*/, const RBuf8& /*aValue*/ )
+    {
+    FUNC_LOG
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+TBool CEmailSettingsExtensionImpl::IsSetL( const TDesC& aKey )
+    {
+    FUNC_LOG
+        
+    TBool ret = EFalse;
+    if(!aKey.Compare(EmailSyncInterval))
+        {
+        // create account api and setting objects
+        CEmailAccounts* accounts = CEmailAccounts::NewL();
+        CleanupStack::PushL( accounts );
+        RArray<TImapAccount> imapBoxes;
+        accounts->GetImapAccountsL(imapBoxes);
+        TMsvId serviceId = iMailBoxId.Id();
+        TBool found = EFalse;
+        for(TInt i=0;i<imapBoxes.Count();i++)
+        {
+            if( serviceId == imapBoxes[i].iImapService)
+            {
+            found = ETrue;
+            break;
+            }
+        }
+        imapBoxes.Reset();
+        if(!found)
+            {
+            RArray<TPopAccount> popBoxes;
+            accounts->GetPopAccountsL(popBoxes);
+            for(TInt i=0;i<popBoxes.Count();i++)
+                {
+                if( serviceId == popBoxes[i].iPopService)
+                    {
+                    found = ETrue;
+                    break;
+                    }
+                }
+            popBoxes.Reset();
+            }
+        if(found)
+            {
+            //Set new password and signal (possible) ongoing connect operation
+            CIpsSetDataApi* api = CIpsSetDataApi::NewL( *iSession );
+            CleanupStack::PushL( api );
+            CIpsSetDataExtension* extentedSettings = CIpsSetDataExtension::NewL();
+            CleanupStack::PushL( extentedSettings );
+            api->LoadExtendedSettingsL(serviceId,*extentedSettings);
+            TInt syncTime = extentedSettings->InboxRefreshTime();
+            if(syncTime == KErrNotFound)
+                {
+                ret = ETrue;
+                }
+            else
+                {
+                ret = EFalse;
+                }
+            CleanupStack::PopAndDestroy( 2 );
+            }
+        CleanupStack::PopAndDestroy( );
+        }
+    return ret;
+    
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+TFSMailMsgId CEmailSettingsExtensionImpl::GetMailBoxId( )
+    {
+    FUNC_LOG
+    return iMailBoxId;
+    }
+
+// ---------------------------------------------------------------------------
+// 
+// ---------------------------------------------------------------------------
+//
+void CEmailSettingsExtensionImpl::SetMailBoxId( const TFSMailMsgId& aMailBoxId )
+    {
+    FUNC_LOG
+    iMailBoxId = aMailBoxId;
+    }
--- a/ipsservices/ipssosplugin/src/ipsplgimap4fetchattachmentop.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgimap4fetchattachmentop.cpp	Tue May 25 12:23:16 2010 +0300
@@ -231,11 +231,12 @@
         {
         case EStateConnecting:
             {
-            TBool connected = STATIC_CAST(
-                CIpsPlgImap4ConnectOp*, iOperation)->Connected();
-            if(!connected)
+            // get result of connect operation
+            TInt err = iStatus.Int();
+
+            if( err != KErrNone )
                 {
-                CompleteObserver( KErrCouldNotConnect );
+                CompleteObserver( err == KErrCancel ? err : KErrCouldNotConnect );
                 return;
                 }
             iRetryCount = 0;
--- a/ipsservices/ipssosplugin/src/ipsplgsosbaseplugin.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/ipsservices/ipssosplugin/src/ipsplgsosbaseplugin.cpp	Tue May 25 12:23:16 2010 +0300
@@ -2603,4 +2603,24 @@
             }
         }
     }
-
+// ---------------------------------------------------------------------------
+// finds and returns extension
+// ---------------------------------------------------------------------------
+//
+CEmailExtension* CIpsPlgSosBasePlugin::ExtensionL( const TUid& aInterfaceUid )
+    {
+    FUNC_LOG;
+    
+    // search for settings extension
+    CEmailExtension* extension = CExtendableEmail::ExtensionL( aInterfaceUid );
+    
+    // if not found create settings extension
+    if ( extension == NULL && aInterfaceUid == KEmailSettingExtensionUid)
+        {
+        extension = new (ELeave) CEmailSettingsExtensionImpl(iSession);
+        CleanupStack::PushL( extension );
+        iExtensions.AddL( extension );
+        CleanupStack::Pop(); 
+        }
+    return extension;
+    }
--- a/ipsservices/ipssossettings/inc/ipssetview.h	Tue May 11 15:57:15 2010 +0300
+++ b/ipsservices/ipssossettings/inc/ipssetview.h	Tue May 25 12:23:16 2010 +0300
@@ -24,8 +24,6 @@
 #include "esmailsettingsplugin.h"
 //</cmail>
 
-// Forward declarations
-class CAknLocalScreenClearer;
 
 // class declaration
 class CIpsSetView : public CESMailSettingsPlugin
@@ -87,7 +85,6 @@
     CAsyncCallBack* iAsyncCallback;
     TVwsViewId iPrevViewId;
     HBufC8* iCustomMessage;
-    CAknLocalScreenClearer* iLocalScreenClearer;
 	};
 
 #endif //IPSSETVIEW_H_
--- a/ipsservices/ipssossettings/src/ipssetview.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/ipsservices/ipssossettings/src/ipssetview.cpp	Tue May 25 12:23:16 2010 +0300
@@ -20,7 +20,6 @@
 #include <ecom/implementationproxy.h>
 #include <msvstd.h>
 #include <aknViewAppUi.h>
-#include <aknclearer.h>
 //<cmail>
 #include "FreestyleEmailUiConstants.h"
 //</cmail>
@@ -66,11 +65,6 @@
     FUNC_LOG;
     delete iAsyncCallback;
     delete iCustomMessage;
-    if (iLocalScreenClearer != NULL)
-        {
-        delete iLocalScreenClearer;
-        iLocalScreenClearer = NULL;
-        }
     }
 
 // Constructor
@@ -96,17 +90,11 @@
     iCustomMessage = NULL;
     iCustomMessage = aCustomMessage.AllocL();
     iAsyncCallback->CallBack();
-    iLocalScreenClearer = CAknLocalScreenClearer::NewL( EFalse );
     }
 
 void CIpsSetView::DoDeactivate()
     {
     FUNC_LOG;
-    if (iLocalScreenClearer != NULL)
-        {
-        delete iLocalScreenClearer;
-        iLocalScreenClearer = NULL;
-        }
     }
 
 TPtrC CIpsSetView::MailSettingsSubviewCaption(
@@ -196,9 +184,6 @@
         }
     else
         {
-        //refresh background
-        self->iLocalScreenClearer->DrawNow();
-        
     	//check if composer is active view; needed to handle special case when email is plugin settings and composer is activated externaly
     	TVwsViewId aViewId;
     	self->AppUi()->GetActiveViewId(aViewId);
--- a/meetingrequest/mrgui/data/esmrgui.rss	Tue May 11 15:57:15 2010 +0300
+++ b/meetingrequest/mrgui/data/esmrgui.rss	Tue May 25 12:23:16 2010 +0300
@@ -1801,6 +1801,14 @@
     {
     buf = qtn_calendar_opt_delete_entry;
     }
+RESOURCE TBUF r_meet_req_conflict_text_format
+    {
+    buf = "%0U[20]\n%1U[20]\n%2U\n%3U"; // qtn_meet_req_conflict_text_format
+    }
+RESOURCE TBUF r_meet_req_conflict_location_format
+    {
+    buf = "(%U)"; // qtn_meet_req_location_parenthesis
+    }
 
 // Viewer context menu bar
 RESOURCE MENU_BAR r_mr_viewer_context_menu
--- a/meetingrequest/mrgui/loc/mrui.loc	Tue May 11 15:57:15 2010 +0300
+++ b/meetingrequest/mrgui/loc/mrui.loc	Tue May 25 12:23:16 2010 +0300
@@ -1266,5 +1266,21 @@
 //
 #define qtn_meet_req_fw_recurrent_series  "Forward the series"
 
+// d: Conflict popup display text. Text must be wrapped at given locations.
+// d: %0U is replaced with qtn_meet_req_conflicts_with_label
+// d: %1U is replaced with conflict time information
+// d: %2U is replaced with title. Text may be wrapped to 3 lines.
+// d: %3U is replaced with location. Text may be wrapped to 2 lines.
+// l: popup_preview_text_window/opt5
+// r: TB9.2
+//
+#define qtn_meet_req_conflict_text_format "%0U[20]\n%1U[20]\n%2U\n%3U"
+
+// d: Conflict popup location text format
+// d: %U is replaced with location. Text may be wrapped to 3 lines.
+// l: fscal_mr_tooltip_text
+// r: TB9.2
+//
+#define qtn_meet_req_location_parenthesis "(%U)"
 
 // end of file
--- a/meetingrequest/mrgui/mrfieldbuilderplugin/group/esmrfieldbuilderplugin.mmp	Tue May 11 15:57:15 2010 +0300
+++ b/meetingrequest/mrgui/mrfieldbuilderplugin/group/esmrfieldbuilderplugin.mmp	Tue May 25 12:23:16 2010 +0300
@@ -119,7 +119,6 @@
 LIBRARY cdlengine.lib
 LIBRARY caleninterimutils2.lib
 LIBRARY eikcore.lib
-LIBRARY npdlib.lib
 LIBRARY apgrfx.lib
 LIBRARY efsrv.lib
 LIBRARY commonui.lib
--- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrattachmentcommandhandler.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrattachmentcommandhandler.cpp	Tue May 25 12:23:16 2010 +0300
@@ -468,21 +468,23 @@
             HandleAttachmentCommandInternalL(
                     EESMRViewerSaveAttachment, attachmentIndex );
 
-            if ( EESMRViewerSaveAllAttachments == iCommandInProgress &&
-                 iAttachmentInfo->AttachmentCount() )
+            if ( EESMRViewerSaveAllAttachments == iCommandInProgress )
                 {
                 iCommandInProgress = 0;
 
-                // There are more attachments to be downloaded --> Download next
-                SaveNextRemoteAttachmentL();
+                if ( iAttachmentInfo->AttachmentCount() > 0 )
+                    {
+                    // There are more attachments to be downloaded --> Download next
+                    SaveNextRemoteAttachmentL();
+                    }
+                else
+                    {
+                    // All remote attachments have been saved. Show info note.
+                    ShowInfoNoteL( iEntry.AttachmentCountL() );
+                    }
                 }
             else
                 {
-                if ( !iAttachmentInfo->AttachmentCount() )
-                    {
-                    // All remote attachments have been saved. Show info note. 
-                    ShowInfoNoteL( iEntry.AttachmentCountL() );
-                    }
                 iCommandInProgress = 0;
                 }
             }
@@ -555,7 +557,7 @@
         if ( error != KErrCancel )
             {
             User::LeaveIfError( error );
-            
+
             if ( aCommandId == EESMRViewerSaveAttachment
                  && iCommandInProgress != EESMRViewerSaveAllAttachments )
                 {
@@ -833,13 +835,13 @@
         User::LeaveIfError( error );
 
         // Proceed with remote attachments
-        if ( iAttachmentInfo->AttachmentCount() > 0 )
+        if ( iAttachmentInfo && iAttachmentInfo->AttachmentCount() > 0 )
             {
             SaveNextRemoteAttachmentL();
             }
         else // Show Save all info note
             {
-            ShowInfoNoteL( iEntry.AttachmentCountL() ); 
+            ShowInfoNoteL( iEntry.AttachmentCountL() );
             }
         }
     }
@@ -852,7 +854,7 @@
     {
     __ASSERT_DEBUG( iAttachmentInfo->AttachmentCount() > 0,
                     Panic( EMRAttachmentCommandHandlerRemoteAttachmentNotFound ) );
-    
+
     // Save first remote attachment of attachment info
     RPointerArray<MCalRemoteAttachment> attachmentArray;
     CleanupClosePushL( attachmentArray );
--- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmropenattachmentcommand.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmropenattachmentcommand.cpp	Tue May 25 12:23:16 2010 +0300
@@ -20,7 +20,6 @@
 #include <calattachment.h>
 #include <f32file.h>
 #include <esmrgui.rsg>
-#include <NpdApi.h>
 #include <aknnotewrappers.h>
 #include <StringLoader.h>
 #include <DocumentHandler.h>
@@ -28,13 +27,6 @@
 // DEBUG
 #include "emailtrace.h"
 
-// Unnamed namespace for local definitions
-namespace { // codescanner::namespace
-
-// Notepad data type
-_LIT8( KNotePadTextDataType, "text/plain" );
-
-}
 
 // ======== MEMBER FUNCTIONS ========
 
@@ -48,7 +40,7 @@
     {
     FUNC_LOG;
     }
-    
+
 // ---------------------------------------------------------------------------
 // CMROpenAttachmentCommand::CMROpenAttachmentCommand
 // ---------------------------------------------------------------------------
@@ -66,7 +58,7 @@
         CDocumentHandler& aDocHandler )
     {
     FUNC_LOG;
-    
+
     CMROpenAttachmentCommand* self =
             new (ELeave) CMROpenAttachmentCommand( aDocHandler );
     CleanupStack::PushL( self );
@@ -93,35 +85,21 @@
             TInt aAttachmentIndex )
     {
     FUNC_LOG;
-    
+
     // Ownership not gained
     CCalAttachmentFile* attachmentFile =
-            aEntry.AttachmentL( aAttachmentIndex )->FileAttachment(); 
+            aEntry.AttachmentL( aAttachmentIndex )->FileAttachment();
 
     RFile file;
     attachmentFile->FetchFileHandleL( file );
     CleanupClosePushL( file );
-    
-    TDataType datatype( 
+
+    TDataType datatype(
             aEntry.AttachmentL( aAttachmentIndex )->MimeType() );
-    
-    TInt err( KErrNone );
-    if( datatype == KNotePadTextDataType() )
-        {
-        // Notepad will try to open text/plain type data
-        err = CNotepadApi::ExecFileViewerL( 
-                file,
-                NULL,
-               ETrue,
-               EFalse,
-               KCharacterSetIdentifierIso88591 );
-        }
-    else
-        {
-        // Doc handler will try to open other than text files
-        TRAP( err, iDocHandler.OpenFileEmbeddedL( file, datatype ) );
-        }
-    
+
+    // Doc handler will try to open file
+    TRAPD( err, iDocHandler.OpenFileEmbeddedL( file, datatype ) );
+
     CleanupStack::PopAndDestroy( &file );
 
     if( err != KErrNone )
--- a/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrsaveandopenattachmentcommand.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/meetingrequest/mrgui/mrfieldbuilderplugin/src/cmrsaveandopenattachmentcommand.cpp	Tue May 25 12:23:16 2010 +0300
@@ -22,7 +22,6 @@
 #include <DocumentHandler.h>
 #include <coemain.h>
 #include <esmrgui.rsg>
-#include <NpdApi.h>
 #include <aknnotewrappers.h>
 #include <StringLoader.h>
 
@@ -30,13 +29,6 @@
 #include "emailtrace.h"
 
 
-namespace { // codescanner::namespace
-
-// Notepad data type
-_LIT8( KNotePadTextDataType, "text/plain" );
-
-}
-
 // ======== MEMBER FUNCTIONS ========
 
 // ---------------------------------------------------------------------------
@@ -134,21 +126,8 @@
     TDataType datatype(
             aEntry.AttachmentL( aAttachmentIndex )->MimeType() );
 
-    if( datatype == KNotePadTextDataType() )
-        {
-        // Notepad will try to open text/plain type data
-        err = CNotepadApi::ExecFileViewerL(
-                copiedFile,
-                NULL,
-               ETrue,
-               EFalse,
-               KCharacterSetIdentifierIso88591 );
-        }
-    else
-        {
-        // Doc handler will try to open other than text files
-        TRAP( err, iDocHandler.OpenFileEmbeddedL( copiedFile, datatype ) );
-        }
+    // Doc handler will try to open file
+    TRAP( err, iDocHandler.OpenFileEmbeddedL( copiedFile, datatype ) );
 
     CleanupStack::PopAndDestroy( &copiedFile );
     CleanupStack::PopAndDestroy( &file );
--- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/group/esmrfieldbuilderpluginextension.mmp	Tue May 11 15:57:15 2010 +0300
+++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/group/esmrfieldbuilderpluginextension.mmp	Tue May 25 12:23:16 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -42,7 +42,7 @@
 
 //implementations
 
-SOURCEPATH 		../src 
+SOURCEPATH 		../src
 
 SOURCE          cesmrfieldbuilderpluginextensionproxy.cpp
 SOURCE          cesmrfieldbuilderpluginextension.cpp
@@ -117,6 +117,7 @@
 LIBRARY ws32.lib //RWindowGroup
 LIBRARY cntmodel.lib //contactitem
 LIBRARY caleninterimutils2.lib
+LIBRARY featdiscovery.lib
 
 // needed by XML based LAF components
 LIBRARY cdlengine.lib
--- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/CESMRFieldBuilderPluginExtension.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/CESMRFieldBuilderPluginExtension.cpp	Tue May 25 12:23:16 2010 +0300
@@ -32,6 +32,8 @@
 #include "cfsmailcommon.h"
 
 #include <CalenInterimUtils2.h>
+#include <featdiscovery.h>
+#include <bldvariant.hrh>
 
 // DEBUG
 #include "emailtrace.h"
@@ -56,7 +58,7 @@
 CESMRFieldBuilderPluginExtension::~CESMRFieldBuilderPluginExtension()
     {
     FUNC_LOG;
-    if(iESMRStaticAccessed) 
+    if(iESMRStaticAccessed)
         {
         iESMRStatic.Close();
         }
@@ -81,7 +83,7 @@
         TMRCFSMailBoxCapability aCapa )
     {
     FUNC_LOG;
-    
+
     iESMRStatic.ConnectL();
     iESMRStaticAccessed = ETrue;
 
@@ -97,14 +99,14 @@
             TMRCFSMailBoxCapability aCapa )
     {
     FUNC_LOG;
-        
+
     iESMRStatic.ConnectL();
     iESMRStaticAccessed = ETrue;
 
     CFSMailBox* mailBox = iESMRStatic.MailBoxL( aEmailAddress );
     TBool result = HasCapability( *mailBox, aCapa );
     delete mailBox;
-    
+
     return result;
     }
 
@@ -117,26 +119,29 @@
     FUNC_LOG;
     TBool retValue( EFalse );
 
-    iESMRStatic.ConnectL();
-    iESMRStaticAccessed = ETrue;
+    if ( CFeatureDiscovery::IsFeatureSupportedL(
+            TUid::Uid( KFeatureIdFfCalMeetingRequestUi ) ) )
+        {
+        iESMRStatic.ConnectL();
+        iESMRStaticAccessed = ETrue;
 
-    CCalenInterimUtils2* calUtils2 = CCalenInterimUtils2::NewL();
-    CleanupStack::PushL( calUtils2 );
-    if ( calUtils2->MRViewersEnabledL() )
-        {
-        TRAPD( err, iESMRStatic.DefaultFSMailBoxL() );
+        CCalenInterimUtils2* calUtils2 = CCalenInterimUtils2::NewL();
+        CleanupStack::PushL( calUtils2 );
+        if ( calUtils2->MRViewersEnabledL() )
+            {
+            TRAPD( err, iESMRStatic.DefaultFSMailBoxL() );
 
-        if ( KErrNone == err )
-            {
-            // If can fetch the default FS mailbox -->
-            // We are able to originate MR as well.
-            retValue = ETrue;
+            if ( KErrNone == err )
+                {
+                // If can fetch the default FS mailbox -->
+                // We are able to originate MR as well.
+                retValue = ETrue;
+                }
             }
+
+        CleanupStack::PopAndDestroy( calUtils2 );
+        calUtils2 = NULL;
         }
-
-    CleanupStack::PopAndDestroy( calUtils2 );
-    calUtils2 = NULL;
-
     return retValue;
     }
 
@@ -285,19 +290,19 @@
                     EFSMBoxCapaMeetingRequestAttendeeStatus );
             break;
             }
-            
+
         case EMRCFSRemoveFromCalendar:
             {
             response = aMailBox.HasCapability( EFSMBoxCapaRemoveFromCalendar );
             break;
             }
-            
+
         case EMRCFSSupportsAttachmentsInMR:
             {
             response = aMailBox.HasCapability( EFSMboxCapaSupportsAttahmentsInMR );
             }
             break;
-            
+
         default:
             {
             break;
--- a/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrconflictpopup.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/meetingrequest/mrgui/mrfieldbuilderpluginextension/src/cesmrconflictpopup.cpp	Tue May 25 12:23:16 2010 +0300
@@ -23,6 +23,10 @@
 #include <eikenv.h>
 #include <esmrgui.rsg>
 #include <avkon.rsg>
+#include <ct/rcpointerarray.h>
+#include <AknUtils.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+#include <layoutmetadata.cdl.h>
 
 #include "emailtrace.h"
 
@@ -31,26 +35,89 @@
 
 const TInt KTimeDelayBeforeShow(0);  // 0 Seconds
 const TInt KTimeForView(5000);          // 5 Seconds
-const TInt KZero(0);
 const TInt KTimeStringLength(20);
-const TInt KMaxSummaryLength(25);
+const TInt KArrayGranularity( 4 );
+
+const TInt KPortraitWindowVariety( 4 );
+const TInt KLandscapeWindowVariety( 7 );
+const TInt KTextLineVariety( 5 );
+
+const TInt KNumTitleLines( 1 );
+const TInt KNumLocationLines( 2 );
+
+/**
+ * Clips given text and allocates new buffer if needed.
+ * @param aSource text to clip
+ * @param aNumLines number of popup note lines available for visual text.
+ * @return new buffer or NULL if aSource must not be clipped
+ */
+
+HBufC* ClipTextL( const TDesC& aSource, TInt aNumLines )
+    {
+    TRect mainPane;
+    AknLayoutUtils::LayoutMetricsRect(
+                AknLayoutUtils::EMainPane,
+                mainPane );
+
+    // Get the correct popup window text line layout
+    TInt windowVariety( KPortraitWindowVariety );
+    if ( Layout_Meta_Data::IsLandscapeOrientation() )
+        {
+        windowVariety = KLandscapeWindowVariety;
+        }
+
+    TAknWindowComponentLayout popupNoteWindow =
+            AknLayoutScalable_Avkon::popup_preview_text_window( windowVariety );
+    TAknLayoutRect popupNoteRect;
+    popupNoteRect.LayoutRect( mainPane, popupNoteWindow );
+
+    TAknTextComponentLayout popupNoteTextLine =
+            AknLayoutScalable_Avkon::popup_preview_text_window_t3( KTextLineVariety );
+    TAknLayoutText textLayout;
+    textLayout.LayoutText( popupNoteRect.Rect(), popupNoteTextLine );
 
-_LIT( KNewLine, "\n");
-_LIT( KMessageStart, "(");
-_LIT( KMessageEnd, ")");
-_LIT( KStringCont, "...\n");
-_LIT (KSpace , " " );
-const TInt KFullTimeStringSize(256);
+    TInt lineWidth( textLayout.TextRect().Width() );
+    const CFont* font = textLayout.Font();
+
+    HBufC* text = NULL;
+
+    if ( font->TextWidthInPixels( aSource ) > lineWidth )
+        {
+        // Text must be clipped to fit
+        // Allocate result buffer and reserve space for line feeds
+        text = HBufC::NewLC(
+                aSource.Length() + aNumLines );
+
+        CArrayFix<TInt>* lineWidthArray =
+                new( ELeave ) CArrayFixFlat<TInt>( aNumLines );
+        CleanupStack::PushL( lineWidthArray );
+        for ( TInt i = 0; i < aNumLines; ++i )
+            {
+            lineWidthArray->AppendL( lineWidth );
+            }
 
-void CalEntryPointerArrayCleanup( TAny* aArray )
-    {
-    RPointerArray<CCalEntry>* entryArray =
-        static_cast<RPointerArray<CCalEntry>*>( aArray );
+        CPtrC16Array* strings = new( ELeave ) CPtrC16Array( aNumLines );
+        CleanupStack::PushL( strings );
+        TPtr des( text->Des() );
+
+        // Wrap string
+        AknTextUtils::WrapToStringAndClipL(
+                aSource,
+                *lineWidthArray,
+                *font,
+                des );
 
-    entryArray->ResetAndDestroy();
-    entryArray->Close();
+        // Trim trailing line feeds
+        des.TrimRight();
+
+        CleanupStack::PopAndDestroy( 2, lineWidthArray );
+        CleanupStack::Pop( text );
+        }
+
+    return text;
     }
 
+
 }//namespace
 
 // ======== MEMBER FUNCTIONS ========
@@ -118,51 +185,56 @@
 void CESMRConflictPopup::PrepareDisplayStringL()
     {
     FUNC_LOG;
-    RPointerArray<CCalEntry> entryArray;
-    CleanupStack::PushL(
-            TCleanupItem(
-                CalEntryPointerArrayCleanup,
-                &entryArray ) );
-    
+    RCPointerArray<CCalEntry> entryArray;
+    CleanupClosePushL( entryArray );
+
     TInt ret = iEntry->FetchConflictingEntriesL( entryArray );
     if( ret == KErrNotFound )
         {
         User::Leave( KErrNotFound );
         }
 
-    TInt numEnteries = entryArray.Count();
-    TInt dispStrLength(KZero);
-    TBuf <KFullTimeStringSize> meetingTitle     ;
-    TBuf <KFullTimeStringSize> meetingLocation ;
-    TTime startTime     ;
-    TTime endTime       ;
+    // Pointer descriptor for R_QTN_MEET_REQ_CONFLICT_UNNAMED
+    TPtrC unnamedTitle( KNullDesC );
+
+    // Actual title to shown in popup
+    TPtrC meetingTitle( KNullDesC );
 
-    if (numEnteries != KZero)
+    // Location to show in popup
+    TPtrC meetingLocation( KNullDesC );
+
+    TTime startTime;
+    TTime endTime;
+
+    CCoeEnv* env = CCoeEnv::Static();
+
+    if ( entryArray.Count() > 0 )
         {// there is atleast one entry
         // get the first conflicting entry and set the string for display
-        meetingTitle    = entryArray[KZero]->SummaryL();
-        meetingLocation = entryArray[KZero]->LocationL();
+        meetingTitle.Set( entryArray[ 0 ]->SummaryL() );
+        meetingLocation.Set( entryArray[ 0 ]->LocationL() );
 
-        
-        if ( ( meetingLocation.Length()== 0 ) && ( meetingTitle.Length() == 0 ) )
+        if ( ( meetingLocation.Length() == 0 ) && ( meetingTitle.Length() == 0 ) )
         	{
             // if no title, set unnamed text:
-            HBufC* title = StringLoader::LoadLC ( R_QTN_MEET_REQ_CONFLICT_UNNAMED );
-            meetingTitle.Copy( *title );
-            CleanupStack::PopAndDestroy( title );
-        	}
-        
-        dispStrLength = meetingTitle.Length() + meetingLocation.Length();
-        startTime   = entryArray[KZero]->StartTimeL().TimeLocalL();
-        endTime     = entryArray[KZero]->EndTimeL().TimeLocalL();
+            HBufC* title = StringLoader::LoadLC(
+                    R_QTN_MEET_REQ_CONFLICT_UNNAMED,
+                    env );
+            unnamedTitle.Set( *title );
+            meetingTitle.Set( unnamedTitle );
+            }
+
+        startTime = entryArray[ 0 ]->StartTimeL().TimeLocalL();
+        endTime = entryArray[ 0 ]->EndTimeL().TimeLocalL();
         }
 
-    HBufC*  stringHolder =
-            StringLoader::LoadLC(R_QTN_MEET_REQ_CONFLICTS_WITH_LABEL);
-    dispStrLength = stringHolder->Length() + meetingTitle.Length()
-                    +  meetingLocation.Length() + KFullTimeStringSize;
+    HBufC*  conflictLabel = StringLoader::LoadLC(
+            R_QTN_MEET_REQ_CONFLICTS_WITH_LABEL,
+            env );
 
-    HBufC* timeFormatString = CCoeEnv::Static()->AllocReadResourceLC(R_QTN_TIME_USUAL_WITH_ZERO);
+    HBufC* timeFormatString = StringLoader::LoadLC(
+            R_QTN_TIME_USUAL_WITH_ZERO,
+            env );
 
     TBuf<KTimeStringLength> startBuf;
     TBuf<KTimeStringLength> endBuf;
@@ -170,49 +242,103 @@
     startTime.FormatL( startBuf, *timeFormatString );
     endTime.FormatL( endBuf, *timeFormatString );
 
-    CDesCArrayFlat* strings = new(ELeave) CDesCArrayFlat( 2 );
+    CPtrC16Array* strings = new( ELeave ) CPtrC16Array( KArrayGranularity );
     CleanupStack::PushL( strings );
-    strings->AppendL( startBuf ); //First string
-    strings->AppendL( endBuf ); //Second string
+    strings->AppendL( startBuf ); //start time string
+    strings->AppendL( endBuf ); //end time string
 
     HBufC* finalTimeBuf =
-        StringLoader::LoadL(
+        StringLoader::LoadLC(
                 R_QTN_MEET_REQ_TIME_SEPARATOR,
                 *strings,
-                CEikonEnv::Static() ); // codescanner::eikonenvstatic
-    CleanupStack::PopAndDestroy( strings );
-    CleanupStack::PushL( finalTimeBuf );
+                env );
 
-    HBufC* displayString = HBufC::NewLC(dispStrLength);
-    displayString->Des().Append(stringHolder->Des());
-    displayString->Des().Append(KNewLine);
-    displayString->Des().Append(finalTimeBuf->Des());
+    if ( meetingLocation.Length() > 0 )
+        {
+        // format Meeting location
+        HBufC* formatText = StringLoader::LoadLC(
+                R_MEET_REQ_CONFLICT_LOCATION_FORMAT,
+                meetingLocation,
+                env );
+        meetingLocation.Set( *formatText );
+        }
+
+    // Format final display string
+    strings->Reset();
+    strings->AppendL( *conflictLabel );
+    strings->AppendL( *finalTimeBuf );
+
+    HBufC* titleBuf = NULL;
+    HBufC* locationBuf = NULL;
 
+    if ( meetingTitle.Length() > 0 )
+        {
+        // Prepare title
+        titleBuf = ClipTextL( meetingTitle, KNumTitleLines );
+        if ( titleBuf )
+            {
+            CleanupStack::PushL( titleBuf );
+            meetingTitle.Set( *titleBuf );
+            }
+        strings->AppendL( meetingTitle );
 
-    displayString->Des().Append(KMessageStart);
-    // Check the length of meetingTitle
-    // If its greater than some KMaxSummaryLength value then
-    // truncate to some reasonable value & append KStringCont
-    if ( meetingTitle.Length() > KMaxSummaryLength )
-        {
-        displayString->Des().Append(meetingTitle.Ptr(),KMaxSummaryLength);
-        displayString->Des().Append(KStringCont);
+        // Prepare location
+        locationBuf = ClipTextL( meetingLocation, KNumLocationLines );
+        if ( locationBuf )
+            {
+            CleanupStack::PushL( locationBuf );
+            meetingLocation.Set( *locationBuf );
+            }
+        strings->AppendL( meetingLocation );
         }
     else
         {
-        displayString->Des().Append(meetingTitle);
-        displayString->Des().Append(KSpace);
+        // Prepare location
+        locationBuf = ClipTextL(
+                meetingLocation,
+                KNumTitleLines + KNumLocationLines );
+        if ( locationBuf )
+            {
+            CleanupStack::PushL( locationBuf );
+            meetingLocation.Set( *locationBuf );
+            }
+        strings->AppendL( meetingLocation );
+        strings->AppendL( KNullDesC() );
         }
 
-    displayString->Des().Append(meetingLocation);
-    displayString->Des().Append(KMessageEnd);
+    HBufC* displayString = StringLoader::LoadLC(
+            R_MEET_REQ_CONFLICT_TEXT_FORMAT,
+            *strings,
+            env );
 
-    iNote->SetTextL(displayString->Des() );
+    // Trim trailing white space
+    displayString->Des().TrimRight();
+
+    // Set display string to popup note
+    iNote->SetTextL( *displayString );
 
+    // Clean allocated buffers
     CleanupStack::PopAndDestroy( displayString );
+    if ( locationBuf )
+        {
+        CleanupStack::PopAndDestroy( locationBuf );
+        }
+    if ( titleBuf )
+        {
+        CleanupStack::PopAndDestroy( titleBuf );
+        }
+    if ( meetingLocation.Length() > 0 )
+        {
+        CleanupStack::PopAndDestroy(); // R_MEET_REQ_CONFLICT_LOCATION_FORMAT
+        }
     CleanupStack::PopAndDestroy( finalTimeBuf );
+    CleanupStack::PopAndDestroy( strings );
     CleanupStack::PopAndDestroy( timeFormatString );
-    CleanupStack::PopAndDestroy( stringHolder );
+    CleanupStack::PopAndDestroy( conflictLabel );
+    if ( unnamedTitle.Length() > 0 )
+        {
+        CleanupStack::PopAndDestroy(); // R_QTN_MEET_REQ_CONFLICT_UNNAMED
+        }
     CleanupStack::PopAndDestroy( &entryArray );
     }
 
--- a/meetingrequest/mrgui/mrlocationplugin/src/cesmrlocationpluginimpl.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/meetingrequest/mrgui/mrlocationplugin/src/cesmrlocationpluginimpl.cpp	Tue May 25 12:23:16 2010 +0300
@@ -212,6 +212,8 @@
     iLandMarks.AppendL( location );
     CleanupStack::Pop( location );
 
+    CreateMapViewL();
+
     iMapView->ResetLandmarksToShow();
     iMapView->AddLandmarksToShowL( iLandMarks );
     iMapView->ShowMapL();
--- a/meetingrequest/mrgui/src/cesmreditordialog.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/meetingrequest/mrgui/src/cesmreditordialog.cpp	Tue May 25 12:23:16 2010 +0300
@@ -2050,6 +2050,18 @@
                             CESMRGlobalNote::EESMRTodoEntrySaved );
                 note->ExecuteLD();
                 }
+			else if( entry->Type() == MESMRCalEntry::EESMRCalEntryMeetingRequest )
+				{
+				MESMRMeetingRequestEntry* mrEntry =
+									static_cast<MESMRMeetingRequestEntry*>( entry );
+				if( !mrEntry->IsForwardedL() )
+					{
+					CESMRGlobalNote* note =
+								CESMRGlobalNote::NewL(
+										CESMRGlobalNote::EESMREntrySaved );
+					note->ExecuteLD();
+					}
+				}
             else
                 {
                 CESMRGlobalNote* note =
--- a/meetingrequest/mrgui/src/cesmrviewerdialog.cpp	Tue May 11 15:57:15 2010 +0300
+++ b/meetingrequest/mrgui/src/cesmrviewerdialog.cpp	Tue May 25 12:23:16 2010 +0300
@@ -623,14 +623,11 @@
                     }
                 }
 
-            // If entry is recurring, we want to ask from user, if
-            // single instance or whole series will be forwarded
             if( aCommand == EESMRCmdForwardAsMail &&
             		iInfoProvider.EntryL()->IsRecurrentEventL() )
             	{
-				SetRecurrenceModRuleL(
-					*( iInfoProvider.EntryL() ),
-					CESMRListQuery::EESMRForwardThisOccurenceOrSeriesQuery );
+				iInfoProvider.EntryL()->SetModifyingRuleL(
+				                  MESMRMeetingRequestEntry::EESMRAllInSeries );
             	}
 
             TInt res = iCallback.ProcessCommandWithResultL( aCommand );