Revision: 201017 RCL_3
authorDremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 11 May 2010 16:10:04 +0300
branchRCL_3
changeset 28 fbb813aef148
parent 24 e00582ce7ecd
child 29 7e4e4bcc75b6
Revision: 201017 Kit: 201019
messagingappbase/mce/inc/MceBitmapResolver.h
messagingappbase/mce/inc/MceListItem.h
messagingappbase/mce/inc/MceMainViewListItemArray.h
messagingappbase/mce/inc/MceMainViewListView.h
messagingappbase/mce/src/MceBitmapResolver.cpp
messagingappbase/mce/src/MceMainViewListItemArray.cpp
messagingappbase/mce/src/MceMainViewListView.cpp
messagingappbase/mcesettings/inc/MceSettingsDialog.h
messagingappbase/msgavkon/msgindicatorplugin/inc/msgindicatorpluginimplementation.h
messagingappbase/msgavkon/muiu_internal/flagger/inc/MuiuFlagger.h
messagingappbase/msgavkon/muiu_internal/servicesinternal/inc/MuiuContactService.h
messagingappbase/msgavkon/muiu_internal/servicesinternal/inc/MuiuLock.h
messagingappbase/msgeditor/viewinc/MsgBodyControlEditor.h
messagingappbase/msgeditor/viewsrc/MsgAddressControl.cpp
messagingappbase/msgeditor/viewsrc/MsgAddressControlEditor.cpp
messagingappbase/msgeditor/viewsrc/MsgBodyControlEditor.cpp
messagingappbase/msgeditor/viewsrc/MsgEditorKeyCatcher.cpp
messagingappbase/msgeditor/viewsrc/MsgEditorView.cpp
messagingappbase/ncnlist/src/NcnModel.cpp
messagingappbase/smartmessaging/richbio/src/CRichBio.cpp
mobilemessaging/mmsui/viewersrc/UniMmsViewerAppUi.cpp
mobilemessaging/smsui/viewerinc/MsgSmsViewerAppUi.h
mobilemessaging/smsui/viewersrc/MsgSmsViewerAppUi.cpp
mobilemessaging/unieditor/application/src/UniEditorAppUi.cpp
mobilemessaging/unieditor/application/src/UniEditorProcessImageOperation.cpp
mobilemessaging/unieditor/inc/UniMsvEntry.h
msg_pub/messaging_editor_constants_api/inc/MsgEditor.hrh
--- a/messagingappbase/mce/inc/MceBitmapResolver.h	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/mce/inc/MceBitmapResolver.h	Tue May 11 16:10:04 2010 +0300
@@ -28,6 +28,9 @@
 #include "mcetemplate.h"
 #include <AknsUtils.h>
 
+//cmail update
+#define KUidMsgTypeFsMtmVal               0x2001F406
+
 // CONSTANTS
 const TInt KMceMmsPriority = 1;	// For loading the MMS priority icons
 
@@ -145,6 +148,26 @@
         * @return ETrue if unread children found.
         */
         TBool HasUnreadMessagesL( const TMsvId aId, TInt& aMessages, TInt& aUnreadMessages );
+		
+        /**
+         * Find Visible Count for local service Draft\sent\outbox folder
+         * Unread message check is not required.
+         * @param aId: folder ID of local service.
+         * @return TInt Return Message Count visble in messaging main view
+         */
+        TInt FindVisibleCountL(TMsvId aFolderId ) const;
+         
+        /**
+         * Find Visible Count for local service Inbox folder
+         * Unread message check is  required here to show Inbox icon with u
+         * @param aId: folder ID of local service.
+         * @param aUnreadMessages: It will be True if Inbox has atleast
+         *        one unread message.
+         * @return TInt Return Message Count visble in messaging main view
+         */
+        TInt FindVisibleCountWithUnreadMessageL(TMsvId aFolderId , TBool& aUnreadMessages) const;
+         
+        
 #else
 
         /**
@@ -253,8 +276,13 @@
         TInt                        iBitmapsLoaded;
         
         TInt                        iDescriptionLength;
-
-
+        
+        /**
+         * Email Framework Feature flag.
+         * ETure if Feature in ON
+         * otherwsie EFalse. 
+         */
+        TBool                       iEmailFramework;
     };
 
 
--- a/messagingappbase/mce/inc/MceListItem.h	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/mce/inc/MceListItem.h	Tue May 11 16:10:04 2010 +0300
@@ -40,6 +40,16 @@
         TBool                   iExtraItem;
         TMsvId                  iMsvId;
         TMcePrintableText       iPrintableText;
+        
+        /**
+         * It Refers to the complte string visble
+         * in main view for any folder.
+         * It is used as a chache to improve the
+         * performance when Flick is in progress
+         * in Main list view.
+         */
+        TMcePrintableText       iText;
+        
         TInt                    iIconIndex;
         TMcePrintableText       iSecondaryText;
         TInt                    iApplicationUid;
--- a/messagingappbase/mce/inc/MceMainViewListItemArray.h	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/mce/inc/MceMainViewListItemArray.h	Tue May 11 16:10:04 2010 +0300
@@ -65,6 +65,14 @@
         */
         virtual void MceListItemArrayChangedL(
         ) = 0;
+        
+        /**
+         * Called when Main view refresh is happening 
+         * and need to know flick is ON\OFF
+         */
+        virtual TBool MceListItemArrayFlickEvent(
+        ) = 0;
+        
     };
     
 
@@ -457,8 +465,6 @@
         */
         void ReadMainViewItemsFromRepositoryL();
     
-        //Calculates the visible count excluding FS email stuff
-        TInt FindVisibleCountL(TMsvId serviceId) const;
          /**
          * Creates Conversation string for main view listbox. 
          * @param aIndex: index of the message to be drawn
--- a/messagingappbase/mce/inc/MceMainViewListView.h	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/mce/inc/MceMainViewListView.h	Tue May 11 16:10:04 2010 +0300
@@ -165,6 +165,14 @@
         * From MMceMainViewListItemArrayObserver
         */
         virtual void MceListItemArrayChangedL( );
+        
+        /**
+         * Called Main view refresh is happening 
+         * and need to know flick is ON\OFF
+         * @return ETrue if flick is ON 
+         * otherwise OFF 
+         */
+        TBool MceListItemArrayFlickEvent();
 
     protected:  // Functions from base classes
 
@@ -298,6 +306,12 @@
          * KFeatureIdFfEmailFramework is enabled
          */
         TBool  iEmailFramework;        
+        /**
+         * Flag that shows Flicking status in Main View
+         * ETrue if ON
+         * otherwsie EFalse
+         */
+        TBool                           iFlick; 
     };
 
 #endif
--- a/messagingappbase/mce/src/MceBitmapResolver.cpp	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/mce/src/MceBitmapResolver.cpp	Tue May 11 16:10:04 2010 +0300
@@ -25,6 +25,8 @@
 #include "MtmRegistryObserver.h" // mmtmuidataregistryobserver
 #include <msvuids.h>
 #include <msvids.h>         // fixed entry ids
+#include <MTMStore.h>       // cmtmstore
+#include <miutset.h>
 #include <gulicon.h>        // CGulIcon
 #include <AknIconArray.h>   // cakniconarray
 #include <fbs.h>            // CFbsFont
@@ -32,6 +34,8 @@
 #include <avkon.mbg>        // bitmap enums
 #include <mtud.hrh>         // EMtudEntryStateOpen
 #include <SenduiMtmUids.h>  // mtm uids
+#include <bldvariant.hrh>
+#include <featmgr.h>
 #include "MceUtils.h"
 #include "MceListItem.h"
 #include "MceBitmapResolver.h"
@@ -39,7 +43,6 @@
 #include <mceextraicons.mbg>
 // security data caging
 #include <data_caging_path_literals.hrh>
-#include <bldvariant.hrh>
 #include <AknIconUtils.h>
 
 
@@ -148,8 +151,8 @@
     CreateAndAppendIconL( KAknsIIDQgnIndiConnectionAlwaysAdd, iFilenameMuiu, EMbmMuiuQgn_indi_connection_always_add, &listItem, ETrue );
     CreateAndAppendIconL( KAknsIIDQgnIndiConnectionInactiveAdd, iFilenameMuiu, EMbmMuiuQgn_indi_connection_inactive_add, &listItem, ETrue );
     CreateAndAppendIconL( KAknsIIDQgnIndiConnectionInactiveAdd, iFilenameMuiu, EMbmMuiuQgn_indi_connection_on_roam_add, &listItem, ETrue );
-    CreateAndAppendIconL( KAknsIIDQgnIndiMcePriorityHigh, iFilenameAvkon, EMbmAvkonQgn_indi_mce_priority_high, &listItem );
-    CreateAndAppendIconL( KAknsIIDQgnIndiMcePriorityLow, iFilenameAvkon, EMbmAvkonQgn_indi_mce_priority_low, &listItem );
+    CreateAndAppendIconL( KAknsIIDQgnIndiMcePriorityHigh, iFilenameAvkon, EMbmAvkonQgn_indi_mce_priority_high, &listItem, ETrue );
+    CreateAndAppendIconL( KAknsIIDQgnIndiMcePriorityLow, iFilenameAvkon, EMbmAvkonQgn_indi_mce_priority_low, &listItem, ETrue );
     
    _LIT( KMceExtraIconsDirAndFile,"MceExtraIcons.mbm" );
     TParse cvfp;
@@ -162,6 +165,13 @@
     CreateAndAppendIconL( KAknsIIDQgnPropMceUnknownRead, EMbmMuiuQgn_prop_mce_unknown_read );
     
     iDescriptionLength = MceUtils::DescriptionLengthL();
+    FeatureManager::InitializeLibL();
+    iEmailFramework = EFalse;
+    if ( FeatureManager::FeatureSupported( KFeatureIdFfEmailFramework ) )
+        {
+        iEmailFramework = ETrue;
+        }
+    FeatureManager::UnInitializeLib();
     }
 
 // ----------------------------------------------------
@@ -208,8 +218,6 @@
         {
         if ( aColorSkinnedIcon )
             {
-            TRgb rgb; // What to add here?
-                    
             AknsUtils::CreateColorIconL(
                 skins, 
                 aId, 
@@ -220,7 +228,7 @@
                 aFileName, 
                 aBitmapIndex, 
                 aBitmapIndex + 1,
-                rgb );  
+                KRgbBlack);  
             }
         else
             {
@@ -396,7 +404,7 @@
         {
         foundIndex = LocalEntryBitmapIndex( id );        
 
-        // check if folder has unread messages
+        //Get count and check if inbox folder has  unread messages
         if ( id ==  KMsvGlobalInBoxIndexEntryId ||
             id ==  KMceDocumentsEntryId ||
             id == KMsvDraftEntryIdValue ||
@@ -405,10 +413,39 @@
             id >= KFirstFreeEntryId
             )
             {
-            TRAPD(err, ( unreadMessages = HasUnreadMessagesL( id, aMessageCount, unreadCount ) ) );
-            if (err == KErrNone && unreadMessages )
+            // In case of  inbox, need to know message count and is  
+            // there at least one unread message. 
+            // No need of unread count and sub folder checking
+        
+            if(id == KMsvGlobalInBoxIndexEntryId )
                 {
-                foundIndex++;
+                TRAPD(err, aMessageCount = 
+                    FindVisibleCountWithUnreadMessageL(id, unreadMessages)); 
+    
+                if (err == KErrNone && unreadMessages )
+                    {
+                    foundIndex++;
+                    }
+                }
+            // for Draft/outbox/sent no need to go for sub folder checking 
+            // and unread count checking
+            else if(id == KMsvDraftEntryIdValue ||
+               id == KMsvSentEntryIdValue ||
+               id == KMsvGlobalOutBoxIndexEntryIdValue)
+                {
+                TRAP_IGNORE(aMessageCount = FindVisibleCountL(id));                
+                }
+            
+            else if(id ==  KMceDocumentsEntryId)
+                {
+                // no logic change for draft
+                // need total count, including sub folder count
+                // need unread message info also to show proper icon.
+                TRAPD(err, ( unreadMessages = HasUnreadMessagesL( id, aMessageCount, unreadCount ) ) );
+                if (err == KErrNone && unreadMessages )
+                    {
+                    foundIndex++;
+                    }
                 }
             }
         }
@@ -653,7 +690,7 @@
             }
         }
 
-    CleanupStack::PopAndDestroy(); // entry
+    CleanupStack::PopAndDestroy(entry); // entry
     return aUnreadMessages;
     }
     
@@ -959,4 +996,122 @@
     return iDescriptionLength;
     }
 
+#ifdef RD_MSG_NAVIPANE_IMPROVEMENT
+// ----------------------------------------------------
+// CMceBitmapResolver::FindVisibleCountL
+// ----------------------------------------------------
+TInt CMceBitmapResolver::FindVisibleCountL(TMsvId aFolderId ) const
+    {
+    // This function can be optimzied further 
+    // after the new optimized API from message store
+    // This is applicable for Draft\sent\outbox
+    
+    TInt visiblecount=0;
+    TInt emailcount=0;
+    TInt itemcount;
+    
+    // Cmail message count needs to be filtered 
+    CMsvEntry* entry = iSession->GetEntryL( aFolderId );
+    CleanupStack::PushL( entry );
+    itemcount=entry->Count();
+         
+    //Find email messages 
+    CMsvEntrySelection *smtpselection = entry->ChildrenWithMtmL( KUidMsgTypeSMTP );
+    CleanupStack::PushL( smtpselection );
+
+    CMsvEntrySelection *pop3selection = NULL;
+    CMsvEntrySelection *imapselection = NULL ;
+    CMsvEntrySelection *cmailselection = NULL ;
+    
+    if(!iEmailFramework)
+        {
+        pop3selection = entry->ChildrenWithMtmL( KUidMsgTypePOP3 );
+        CleanupStack::PushL( pop3selection );
+        imapselection = entry->ChildrenWithMtmL( KUidMsgTypeIMAP4 );
+        CleanupStack::PushL( imapselection );
+        }
+    else
+        {
+        cmailselection = entry->ChildrenWithMtmL( 
+                TUid::Uid(KUidMsgTypeFsMtmVal));
+        CleanupStack::PushL( cmailselection );
+        }
+
+    if ( smtpselection!=0 && smtpselection->Count()>0 )
+        {
+        emailcount=emailcount+smtpselection->Count();
+        }
+
+    if(!iEmailFramework)
+        {
+        if ( pop3selection!=0 && pop3selection->Count()>0 )
+            {
+            emailcount=emailcount+pop3selection->Count();
+            }
+        if ( imapselection!=0 && imapselection->Count()>0 )
+            {
+            emailcount=emailcount+imapselection->Count();
+            }        
+        }
+    else
+        {
+        if ( cmailselection!=0 && cmailselection->Count()>0 )
+            {
+            emailcount=emailcount+cmailselection->Count();
+            }
+        }
+
+    visiblecount = itemcount - emailcount;
+
+    if(iEmailFramework)
+        {
+        CleanupStack::PopAndDestroy( cmailselection );       
+        }
+    else
+        {
+        CleanupStack::PopAndDestroy(imapselection);
+        CleanupStack::PopAndDestroy( pop3selection );
+        }
+    CleanupStack::PopAndDestroy( smtpselection );
+    CleanupStack::PopAndDestroy( entry );
+    return visiblecount; 
+    }
+
+// ----------------------------------------------------
+// CMceBitmapResolver::FindVisibleCountWithUnreadMessageL
+// ----------------------------------------------------
+TInt CMceBitmapResolver::FindVisibleCountWithUnreadMessageL(TMsvId aFolderId 
+                                             , TBool& aUnreadMessages) const
+    {
+    // This function can be optimzied further 
+    // after the new optimized API from message store
+    // This is applicable for Inbox
+    
+    aUnreadMessages = EFalse;    
+    TInt itemcount;
+    CMsvEntry* entry = iSession->GetEntryL( aFolderId );
+    CleanupStack::PushL( entry );
+    itemcount=entry->Count();
+        
+    // No need of cmail filtering, because Mailbox has its own
+    // Inbox folder    
+    // Check at least one Unread message
+    for ( TInt loop = 0; loop < itemcount; loop++ )
+        {
+        const TMsvEntry& tEntry = (*entry)[loop];
+        if ( tEntry.iType == KUidMsvMessageEntry )
+            {
+            if ( tEntry.Unread() )
+                {
+                aUnreadMessages= ETrue;
+                break;
+                }
+            }
+         }
+    CleanupStack::PopAndDestroy( entry );
+    
+    return itemcount; 
+    }
+
+#endif //RD_MSG_NAVIPANE_IMPROVEMENT
 //  End of File
--- a/messagingappbase/mce/src/MceMainViewListItemArray.cpp	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/mce/src/MceMainViewListItemArray.cpp	Tue May 11 16:10:04 2010 +0300
@@ -229,7 +229,8 @@
 
     aListItem.iMsvId = id;
     aListItem.iExtraItem = EFalse;
-    aListItem.iIconIndex = KErrNotFound;    
+    aListItem.iIconIndex = KErrNotFound;  
+    aListItem.iText.Zero();
     }
 
 // ---------------------------------------------------------------------------
@@ -353,7 +354,7 @@
     aNewItem.iPrintableText.AppendNum( index );
     aNewItem.iPrintableText.Append( KColumnListSeparator );
     aNewItem.iPrintableText.Append( tempText );
-
+    aNewItem.iText.Zero();
     InsertL( aIndex, aNewItem );
     }
 
@@ -407,7 +408,7 @@
     aNewItem.iPrintableText.Append( tempText );
     aNewItem.iPrintableText.Append( KColumnListSeparator );
     aNewItem.iPrintableText.Append( secondarytxt );
-
+    aNewItem.iText.Zero();
     InsertL( aIndex, aNewItem );
     }
 
@@ -457,7 +458,7 @@
     tempText.Zero();
     TMsvEntry entry;
     TMsvId serviceId;
-    TInt  visiblecount=0;
+    
     const TMceListItem& item = At( aIndex );
     if ( iSession->GetEntry( item.iMsvId, serviceId, entry ) == KErrNone )
         {
@@ -465,38 +466,26 @@
             {
             TInt messageCount = 0;
             TMsvId id = entry.Id();
+            CONST_CAST( TMceListItem*, &item)->iIconIndex = iBitmapResolver.BitmapIndex( entry, messageCount );
             if(iDefaultViewSettings == KMceConversationview && id == KMsvGlobalInBoxIndexEntryId )
                 {
                 CONST_CAST( TMceListItem*, &item)->iIconIndex = EMceBitmapIndexInbox;
-                }
-            else
-                {
-                CONST_CAST( TMceListItem*, &item)->iIconIndex = iBitmapResolver.BitmapIndex( entry, messageCount );
-                }
+                }            
             CONST_CAST( TMceListItem*, &item)->iMessageCount = messageCount;
             }
+        else if(iListItemArrayObserver )
+            {
+             if(iListItemArrayObserver->MceListItemArrayFlickEvent())
+                 {
+                 return item.iText;
+                 }
+            }
+        
         tempText.AppendNum( item.iIconIndex );
         tempText.Append( KColumnListSeparator );
         tempText.Append( item.iPrintableText );
-        if((iSelectableEmail)||(iEmailFramework))
-            {
-         if( item.iMsvId == KMsvDraftEntryId || 
-                item.iMsvId == KMsvSentEntryId || 
-                item.iMsvId == KMsvDeletedEntryFolderEntryId || 
-                item.iMsvId == KMsvGlobalInBoxIndexEntryId || item.iMsvId == KMsvGlobalOutBoxIndexEntryId )
-               {
-         TRAP_IGNORE( visiblecount = FindVisibleCountL(item.iMsvId) );
-        AppendMessageCountString( tempText, visiblecount );
-               }
-			 else
-			 {
-			 AppendMessageCountString( tempText, item.iMessageCount );
-			 }
-         }
-        else
-        {
-            AppendMessageCountString( tempText, item.iMessageCount );
-        }
+        AppendMessageCountString( tempText, item.iMessageCount );
+               
         if ( entry.Connected() )
             {
             if ( iRoaming )
@@ -542,7 +531,6 @@
                     tempText.AppendNum( (TInt) EMceBitmapIndexInactiveAdd );
                     }
                 }
-
             }
         }
     else
@@ -551,8 +539,11 @@
         __ASSERT_DEBUG( 0, Panic(EMceListItemArrayEntryNotFound ) );
         tempText.AppendNum( (TInt)EMceBitmapIndexUnknown );
         tempText.Append( KColumnListSeparator );
-        tempText.Append( item.iPrintableText );
+        tempText.Append( item.iPrintableText );        
         }
+    //save the complete string as chache, will be used when flick will start
+    CONST_CAST( TMceListItem*, &item)->iText.Zero();
+    CONST_CAST( TMceListItem*, &item)->iText.Copy(tempText);
     return tempText;
     }
 
@@ -1029,15 +1020,12 @@
                 {
                 TInt messageCount = 0;
                 TMsvId id = entry.Id();
+                item.iIconIndex = iBitmapResolver.BitmapIndex( entry, messageCount );  
                 if(iDefaultViewSettings == KMceConversationview && id == KMsvGlobalInBoxIndexEntryId )
                     {
-                    item.iIconIndex = EMceBitmapIndexInbox;
+                    item.iIconIndex = EMceBitmapIndexInbox;                    
                     }
-                else
-                    {
-                    item.iIconIndex = iBitmapResolver.BitmapIndex( entry, messageCount );     
-                    }              
-                item.iMessageCount = messageCount;
+                  item.iMessageCount = messageCount;
 //                        item.iUnreadMessageCount = unreadMessageCount;
                 if ( iListItemArrayObserver )
                     {
@@ -1200,104 +1188,40 @@
     }
 
 // ----------------------------------------------------
-// CMceMainViewListItemArray::FindVisibleCountL()
-// ----------------------------------------------------
-TInt CMceMainViewListItemArray::FindVisibleCountL(TMsvId serviceId ) const
-    {
-    TInt visiblecount=0;
-    TInt emailcount=0;
-    TInt itemcount;
-    CMsvEntry* entry = iSession->GetEntryL( serviceId );
-    CleanupStack::PushL( entry );
-    itemcount=entry->Count();
-      
-    //Find email messages 
-    CMsvEntrySelection *smtpselection = entry->ChildrenWithMtmL( KUidMsgTypeSMTP );
-    CleanupStack::PushL( smtpselection );
-
-    CMsvEntrySelection *pop3selection = NULL;
-    CMsvEntrySelection *imapselection = NULL ;
-    CMsvEntrySelection *cmailselection = NULL ;
-    
-    if(!iEmailFramework)
-        {
-        pop3selection = entry->ChildrenWithMtmL( KUidMsgTypePOP3 );
-        CleanupStack::PushL( pop3selection );
-        imapselection = entry->ChildrenWithMtmL( KUidMsgTypeIMAP4 );
-        CleanupStack::PushL( imapselection );
-        }
-    else
-        {
-        cmailselection = entry->ChildrenWithMtmL( 
-                TUid::Uid(KUidMsgTypeFsMtmVal));
-        CleanupStack::PushL( cmailselection );
-        }
-
-    if ( smtpselection!=0 && smtpselection->Count()>0 )
-        {
-        emailcount=emailcount+smtpselection->Count();
-        }
-
-    if(!iEmailFramework)
-        {
-        if ( pop3selection!=0 && pop3selection->Count()>0 )
-            {
-            emailcount=emailcount+pop3selection->Count();
-            }
-        if ( imapselection!=0 && imapselection->Count()>0 )
-            {
-            emailcount=emailcount+imapselection->Count();
-            }        
-        }
-    else
-        {
-        if ( cmailselection!=0 && cmailselection->Count()>0 )
-            {
-            emailcount=emailcount+cmailselection->Count();
-            }
-        }
-
-    visiblecount = itemcount - emailcount;
-
-    if(iEmailFramework)
-        {
-        CleanupStack::PopAndDestroy( cmailselection );       
-        }
-    else
-        {
-        CleanupStack::PopAndDestroy(imapselection);
-        CleanupStack::PopAndDestroy( pop3selection );
-        }
-    CleanupStack::PopAndDestroy( smtpselection );
-    CleanupStack::PopAndDestroy( entry );
-    return visiblecount; 
-    }
-// ----------------------------------------------------
 // CMceMainViewListItemArray::CreateConversationsListItem()
 // ----------------------------------------------------
 TPtrC CMceMainViewListItemArray::CreateConversationsListItem( TInt aIndex ) const
     {
     const TMceListItem& item = At( aIndex );
-    TPtr tempText = iListBoxText->Des();        
-    tempText.Zero();
-    TInt bitmapidx = EMceBitmapIndexConversation;
-    if(iDefaultViewSettings == KMceConversationview )
-       {
-       TInt msgCount = 0;
-       TInt unreadCount = 0;
-       iBitmapResolver.HasUnreadMessagesL(KMsvGlobalInBoxIndexEntryId,msgCount,unreadCount);
-       if( unreadCount > 0 ) 
+    if(!iListItemArrayObserver->MceListItemArrayFlickEvent())
+       {       
+        TPtr tempText = iListBoxText->Des();        
+        tempText.Zero();
+        TInt bitmapidx = EMceBitmapIndexConversation;
+        if(iDefaultViewSettings == KMceConversationview )
            {
-           bitmapidx =  EMceBitmapIndexConversationNew ;
-           }
-       }    
-   tempText.AppendNum(bitmapidx);
-   TPtrC Ptr(item.iPrintableText); 
-   TInt len = Ptr.Length();
-   TInt  pos = Ptr.Locate(KColumnListSeparator);
-   TPtrC Ptr1(Ptr.Mid(pos));
-   tempText.Append(Ptr1);                
-   return tempText;    
+           TInt msgCount = 0;
+           TInt unreadCount = 0;
+           iBitmapResolver.HasUnreadMessagesL(KMsvGlobalInBoxIndexEntryId,msgCount,unreadCount);
+           if( unreadCount > 0 ) 
+               {
+               bitmapidx =  EMceBitmapIndexConversationNew ;
+               }
+           }    
+        tempText.AppendNum(bitmapidx);
+        TPtrC Ptr(item.iPrintableText); 
+        TInt len = Ptr.Length();
+        TInt  pos = Ptr.Locate(KColumnListSeparator);
+        TPtrC Ptr1(Ptr.Mid(pos));
+        tempText.Append(Ptr1);                
+        CONST_CAST( TMceListItem*, &item)->iText.Zero();
+        CONST_CAST( TMceListItem*, &item)->iText.Copy(tempText);
+        return tempText;
+       }
+    else
+       {
+       return item.iText;
+       }      
    }
 
 // ----------------------------------------------------
--- a/messagingappbase/mce/src/MceMainViewListView.cpp	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/mce/src/MceMainViewListView.cpp	Tue May 11 16:10:04 2010 +0300
@@ -113,9 +113,10 @@
     iSelectedIndex( KErrNotFound ),
     iTopItemIndex( 0 ),
     iSelectionFolderId( KMsvNullIndexEntryId ), 
-		iEmailClientIntegration(EFalse),
-		iSelectableEmail(EFalse),
-		iEmailFramework(EFalse)
+    iEmailClientIntegration(EFalse),
+    iSelectableEmail(EFalse),
+    iEmailFramework(EFalse),
+    iFlick(EFalse)
     {
     iSessionHolder.AddClient();
     }
@@ -453,6 +454,12 @@
                 iMsgListContainer->SetMskL();                
                 }
         break;
+        case EEventFlickStarted:
+            iFlick = ETrue;
+            break;        
+        case EEventFlickStopped:
+            iFlick = EFalse;
+            break;
         default:
         break;
 
@@ -1102,6 +1109,14 @@
     }
 
 // ----------------------------------------------------
+// CMceMainViewListView::MceListItemArrayFlickEvent
+// ----------------------------------------------------
+TBool CMceMainViewListView::MceListItemArrayFlickEvent()
+    {
+    return iFlick;
+    }
+
+// ----------------------------------------------------
 // CMceMainViewListView::AiwSyncParamListLC
 // ----------------------------------------------------
 CAiwGenericParamList* CMceMainViewListView::AiwSyncParamListLC(TInt /*aId*/, const TDesC& aText)
--- a/messagingappbase/mcesettings/inc/MceSettingsDialog.h	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/mcesettings/inc/MceSettingsDialog.h	Tue May 11 16:10:04 2010 +0300
@@ -25,7 +25,7 @@
 
 #include <ConeResLoader.h>
 #include <msvapi.h>
-#include "MceSettingsTitlePaneHandlerDialog.h"
+#include "mcesettingstitlepanehandlerdialog.h"
 #include <MsgArrays.h>
 
 
--- a/messagingappbase/msgavkon/msgindicatorplugin/inc/msgindicatorpluginimplementation.h	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/msgavkon/msgindicatorplugin/inc/msgindicatorpluginimplementation.h	Tue May 11 16:10:04 2010 +0300
@@ -24,7 +24,7 @@
 // Until aknstylusactivatedpopupcontent.h is fixed
 
 //  INCLUDES
-#include <aknlayout2scalabledef.h>
+#include <AknLayout2ScalableDef.h>
 #include <AknIndicatorPlugin.h> // CAknIndicatorPlugin
 #include <AknPreviewPopUpController.h> // Controlling the preview pop-up component
 #include <aknstylusactivatedpopupcontent.h> // Stylus activated pop-up conten
--- a/messagingappbase/msgavkon/muiu_internal/flagger/inc/MuiuFlagger.h	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/msgavkon/muiu_internal/flagger/inc/MuiuFlagger.h	Tue May 11 16:10:04 2010 +0300
@@ -22,7 +22,7 @@
 #define CMUIUFLAGGER_H
 
 //  INCLUDES
-#include "MuiuFlags.h"
+#include "muiuflags.h"
 #include <e32cmn.h>
 
 // CONSTANTS
--- a/messagingappbase/msgavkon/muiu_internal/servicesinternal/inc/MuiuContactService.h	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/msgavkon/muiu_internal/servicesinternal/inc/MuiuContactService.h	Tue May 11 16:10:04 2010 +0300
@@ -21,7 +21,7 @@
 #define MUIUCONTACTSERVICE_H
 
 #include <e32base.h> // CBase
-#include "MuiuMsvUiServiceUtilitiesInternal.h"
+#include "muiumsvuiserviceutilitiesinternal.h"
 
 class CMuiuContactAddressMatcher;
 class CMsgVoIPExtension;
--- a/messagingappbase/msgavkon/muiu_internal/servicesinternal/inc/MuiuLock.h	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/msgavkon/muiu_internal/servicesinternal/inc/MuiuLock.h	Tue May 11 16:10:04 2010 +0300
@@ -22,7 +22,7 @@
 
 class CRepository;
 
-#include "MessagingInternalCRKeys.h"
+#include "messaginginternalcrkeys.h"
 
 
 // Lock identifier for messaging settings access
--- a/messagingappbase/msgeditor/viewinc/MsgBodyControlEditor.h	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/msgeditor/viewinc/MsgBodyControlEditor.h	Tue May 11 16:10:04 2010 +0300
@@ -23,6 +23,7 @@
 // ========== INCLUDE FILES ================================
 
 #include <ItemFinder.h>
+#include <itemfinderobserver.h>
 #include "MsgExpandableControlEditor.h"            // for CMsgExpandableControlEditor
 #include "MsgEditor.hrh"
 
@@ -44,7 +45,8 @@
 * Defines an editor for the body control.
 */
 class CMsgBodyControlEditor : public CMsgExpandableControlEditor,
-                              public MItemFinderObserver
+                              public MItemFinderObserver,
+                              public MAknItemFinderObserver
     {
     public:
 
@@ -138,6 +140,13 @@
     public: // from MItemFinderObserver
 
         void HandleParsingComplete();
+        
+    public: // from MAknItemFinderObserver  
+       
+        void HandleFindItemEventL(
+                        const CItemFinder::CFindItemExt& aItem,
+                        MAknItemFinderObserver::TEventFlag aEvent,
+                        TUint aFlags = 0 );
 
     public: // new
 
--- a/messagingappbase/msgeditor/viewsrc/MsgAddressControl.cpp	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/msgeditor/viewsrc/MsgAddressControl.cpp	Tue May 11 16:10:04 2010 +0300
@@ -742,7 +742,6 @@
 EXPORT_C void CMsgAddressControl::SetAddressFieldAutoHighlight( TBool aValidHighlightable )
     {
     iAddressControlEditor->SetAddressFieldAutoHighlight( aValidHighlightable );    
-    TRAP_IGNORE( iAddressControlEditor->CheckHighlightingL() );
     DrawDeferred();
     }
 
@@ -821,8 +820,6 @@
             {
             iAddressControlEditor->PrepareForViewing();
             
-            // TODO: Implement better error handling?
-            TRAP_IGNORE( iAddressControlEditor->CheckHighlightingL() );
             }
         }
     }
@@ -1149,15 +1146,6 @@
     {
     CMsgExpandableControl::FocusChanged( aDrawNow );
 
-    // TODO: Implement better error handling?
-    if ( !IsFocused() )
-        {
-        TRAP_IGNORE( iAddressControlEditor->TurnHighlightingOffL() );
-        }
-    else
-        {
-        TRAP_IGNORE( iAddressControlEditor->CheckHighlightingL() );
-        }
     }
 
 // ---------------------------------------------------------
--- a/messagingappbase/msgeditor/viewsrc/MsgAddressControlEditor.cpp	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/msgeditor/viewsrc/MsgAddressControlEditor.cpp	Tue May 11 16:10:04 2010 +0300
@@ -1667,9 +1667,16 @@
     const TKeyEvent& aKeyEvent, TEventCode aType )
     {
     if ( IsReadOnly() && 
-        aKeyEvent.iCode == EKeyUpArrow &&
+        ( aKeyEvent.iCode == EKeyUpArrow ||
+          aKeyEvent.iCode == EKeyEnter ||
+          aKeyEvent.iCode == EKeyDevice3 ) &&
         iValidHighlightable )
         {
+        if ( !SelectionLength() )
+            {
+            // Enable highlight if hw keys used
+            CheckHighlightingL();
+            }
         return EKeyWasConsumed;
         }
     return CMsgExpandableControlEditor::OfferKeyEventL( aKeyEvent, aType );
@@ -1723,16 +1730,28 @@
                 else
                     {
                     forwardRequest = EFalse;
-                    }
+                    
+                    if ( docPos < TextLength() )
+                        {
+                        // Enable highlight on pointer down
+                        CheckHighlightingL();
+                        } 
+                    }                
                 }
             else if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
                 {
                 if ( currentField &&
                      iPreviousField == currentField )
                     {
+                    // We will send new EMsgFindItemEvent so that we can separate 
+                    // single click item activation and old key based activation.
+                    // This is just quick fix for doing it, other implementations should
+                    // be considered(e.g. storing state in editor or using some flags).
+                    // This is done because in AppUI::HandleKeyEvent we must separate
+                    // activation methods for enabling highlight when using keys. 
                     TKeyEvent event;
-                    event.iCode = EKeyDevice3;
-                    event.iScanCode = EStdKeyDevice3;
+                    event.iCode = EMsgFindItemKeyEvent;
+                    event.iScanCode = EMsgFindItemKeyEvent;
                     event.iModifiers = 0;
                     event.iRepeats = 0;
                     
@@ -1740,6 +1759,12 @@
                     
                     forwardRequest = EFalse;
                     }
+                
+                if ( SelectionLength() )
+                    {
+                    // Disable highlight on pointer up
+                    ClearSelectionL();
+                    }
                 }
             }
         }
@@ -1772,7 +1797,8 @@
         CMsgExpandableControlEditor::HandlePointerEventL( aPointerEvent );
         }
 #ifdef RD_TACTILE_FEEDBACK         
-    else if(aPointerEvent.iType == TPointerEvent::EButton1Down)
+    else if( aPointerEvent.iType == TPointerEvent::EButton1Down 
+             && SelectionLength() )
         {                                
         MTouchFeedback* feedback = MTouchFeedback::Instance();
         if ( feedback )
@@ -1977,10 +2003,6 @@
 #endif   
         
         SetWordWrapL( EFalse );
-        if ( AddressFieldAutoHighlight() )
-            {
-            SelectAllL(); // for automatic highlight
-            }
         }
     
     CMsgExpandableControlEditor::PrepareForReadOnlyL( aReadOnly );
--- a/messagingappbase/msgeditor/viewsrc/MsgBodyControlEditor.cpp	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/msgeditor/viewsrc/MsgBodyControlEditor.cpp	Tue May 11 16:10:04 2010 +0300
@@ -37,6 +37,8 @@
 #include "MsgBaseControl.h"                // for TMsgEditPermissionFlags
 #include "MsgBaseControlObserver.h"        // for MMsgBaseControlObserver
 #include "MsgEditorCustomDraw.h"           // for CMsgEditorCustomDraw
+#include "MsgEditor.hrh"
+#include <MmsViewer.rsg>            // resouce identifiers
 
 // ========== EXTERNAL DATA STRUCTURES =====================
 
@@ -81,7 +83,10 @@
 //
 CMsgBodyControlEditor::~CMsgBodyControlEditor()
     {
- 
+    if (iItemFinder)
+        {
+        TRAP_IGNORE(iItemFinder->SetItemFinderObserverL( NULL ));
+        }
     }
 
 // ---------------------------------------------------------
@@ -114,6 +119,8 @@
                                       CItemFinder::EUriScheme );
 
     iItemFinder->AddObserver( *this );
+    iItemFinder->SetItemFinderObserverL( this );  
+    
     iFocusChangedBeforeParseFinish = EFalse;
 
     CEikRichTextEditor::ConstructL( iParentControl, 0, iMaxNumberOfChars, edwinFlags );
@@ -250,6 +257,27 @@
         {
         switch ( aKeyEvent.iCode )
             {
+            case EKeyDevice3:   
+            case EKeyEnter:
+                {
+                // Restore highlight
+                const CItemFinder::CFindItemExt& item =
+                    iItemFinder->CurrentItemExt();
+                                                            
+                if ( item.iItemType != CItemFinder::ENoneSelected )
+                    {
+                    SetSelectionL( item.iStart, item.iEnd + 1 );
+                    }
+                else if ( iInitTop )
+                    {
+                    SetHighlightL( 0, EMsgFocusDown, ETrue ); 
+                    }
+                else
+                    {
+                    SetHighlightL( TextLength(), EMsgFocusUp, ETrue ); 
+                    }
+                return EKeyWasConsumed;
+                }
             case EKeyUpArrow:
             case EKeyDownArrow:
                 break;
@@ -271,6 +299,35 @@
     }
 
 // ---------------------------------------------------------
+// CMsgBodyControlEditor::HandleFindItemEventL
+//
+// Handles finditem events. 
+// ---------------------------------------------------------
+//
+void CMsgBodyControlEditor::HandleFindItemEventL(
+                        const CItemFinder::CFindItemExt& aItem,
+                        MAknItemFinderObserver::TEventFlag aEvent,
+                        TUint aFlags)
+    {     
+    // We will send new EMsgFindItemEvent so that we can separate 
+    // single click item activation and old key based activation.
+    // This is just quick fix for doing it, other implementations should
+    // be considered(e.g. storing state in editor or using some flags).
+    // This is done because in AppUI::HandleKeyEvent we must separate
+    // activation methods for enabling highlight when using keys.    
+    if ( MAknItemFinderObserver::EPointerEvent == aEvent )
+        {
+        TKeyEvent event;
+        event.iCode = EMsgFindItemKeyEvent;
+        event.iScanCode = EMsgFindItemKeyEvent;
+        event.iModifiers = 0;
+        event.iRepeats = 0;
+
+        iCoeEnv->WsSession().SimulateKeyEvent( event );
+        }
+    }
+
+// ---------------------------------------------------------
 // CMsgBodyControlEditor::HandlePointerEventL
 //
 // Handles pointer events. 
@@ -297,39 +354,14 @@
             
         if ( aPointerEvent.iType == TPointerEvent::EButton1Down )
             {
-            iPreviousItemStart = -1;
-            iPreviousItemLength = -1;
-            
-            if ( tappedOverTag )
+            if ( !tappedOverTag )
                 {
-                TPoint relativeTapPoint( aPointerEvent.iPosition - iPosition );
-                if ( iItemFinder->ItemWasTappedL( relativeTapPoint ) )
-                    {                
-                    iPreviousItemStart = start;
-                    iPreviousItemLength = length;
-                    
-                    forwardRequest = EFalse;
-                    }
+                // Reset current finditem
+                iItemFinder->ResetCurrentItem();
                 }
             else
                 {
-                iItemFinder->ResetCurrentItem();
-                }
-            }
-        else if ( aPointerEvent.iType == TPointerEvent::EButton1Up )
-            {
-            if ( tappedOverTag &&
-                 start >= iPreviousItemStart &&
-                 length <= iPreviousItemLength )
-                {
-                TKeyEvent event;
-                event.iCode = EKeyDevice3;
-                event.iScanCode = EStdKeyDevice3;
-                event.iModifiers = 0;
-                event.iRepeats = 0;
-                
-                iCoeEnv->WsSession().SimulateKeyEvent( event );
-                
+                // Find item tapped, do not forward event
                 forwardRequest = EFalse;
                 }
             }
--- a/messagingappbase/msgeditor/viewsrc/MsgEditorKeyCatcher.cpp	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/msgeditor/viewsrc/MsgEditorKeyCatcher.cpp	Tue May 11 16:10:04 2010 +0300
@@ -104,10 +104,13 @@
         // All printable characters except # which means user is changing case.
         // SCT of address control contains less characters, however.
         // There is a drawback here: pressing cancel in SCT still may add delimiters.
-        if ( aKeyEvent.iCode >= 32 &&
-            aKeyEvent.iCode <= 255 &&
-            aKeyEvent.iCode != '#' )
-            {
+        if(aKeyEvent.iCode == ';')
+          {
+        	return EKeyWasNotConsumed;
+          }
+        else if ( aKeyEvent.iCode >= 32 && aKeyEvent.iCode <= 255 &&
+	          aKeyEvent.iCode != '#')
+          {
             iEditor->PreInsertEditorFormattingL( aKeyEvent );
             return EKeyWasNotConsumed;
             }
--- a/messagingappbase/msgeditor/viewsrc/MsgEditorView.cpp	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/msgeditor/viewsrc/MsgEditorView.cpp	Tue May 11 16:10:04 2010 +0300
@@ -2248,7 +2248,7 @@
 
     if ( lineRect.Height() )
         {
-        if ( lineRect.iBr.iY > iViewRect.Height() )
+		if (lineRect.Height() >= iViewRect.Height())
             {
             // the view must be scrolled up.
             delta = iViewRect.Height() - lineRect.iBr.iY;
--- a/messagingappbase/ncnlist/src/NcnModel.cpp	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/ncnlist/src/NcnModel.cpp	Tue May 11 16:10:04 2010 +0300
@@ -26,8 +26,8 @@
 #include    "CVoiceMailManager.h"
 
 #include    <msgsimscnumberdetector.h>
-#include	<RSatRefresh.h>
-#include	<RSatSession.h>
+#include	<rsatrefresh.h>
+#include	<rsatsession.h>
 
 // ================= LOCAL CONSTANTS =======================
 namespace
--- a/messagingappbase/smartmessaging/richbio/src/CRichBio.cpp	Tue Apr 27 16:33:37 2010 +0300
+++ b/messagingappbase/smartmessaging/richbio/src/CRichBio.cpp	Tue May 11 16:10:04 2010 +0300
@@ -25,7 +25,7 @@
 #include <calslbs.h>                        // Fonts
 #include <MsgExpandableControlEditor.h>     // CMsgExpandableControlEditor
 #include <MsgEditorCommon.h>                // MaxBodyHeight
-#include <aknlayoutdef.h>       // TAknLayoutId
+#include <AknLayoutDef.h>       // TAknLayoutId
 #include <AknUtils.h>
 
 #include    <applayout.cdl.h> // LAF
--- a/mobilemessaging/mmsui/viewersrc/UniMmsViewerAppUi.cpp	Tue Apr 27 16:33:37 2010 +0300
+++ b/mobilemessaging/mmsui/viewersrc/UniMmsViewerAppUi.cpp	Tue May 11 16:10:04 2010 +0300
@@ -170,6 +170,7 @@
 #include <mmsclient.h>              // CMmsClientMtm, mmsconst.h
 #include <mmsgenutils.h>
 #include <mmsmsventry.h>
+#include <mmsversion.h>
 
 #include "MmsViewer.hrh"            // application specific commands & enums
 #include "UniMmsViewerDocument.h"      // CMmsViewerDocument
@@ -1160,10 +1161,24 @@
                 return;
                 }
                     
-            TInt focusedControl = FocusedControlId( ); 
+            TInt focusedControl = FocusedControlId( );
+                      
+            TBool senderHighlighted = EFalse;
+            if ( focusedControl == EMsgComponentIdFrom )
+                {
+                CMsgAddressControl* address = static_cast<CMsgAddressControl*>(
+                    iView->ControlById( EMsgComponentIdFrom ) );
+                
+                if ( address && address->Editor().SelectionLength() )
+                    {
+                    senderHighlighted = ETrue;
+                    }
+                }
+            
             if ( !IsOwnMessage( ) )
                 {    
-                if( (FocusedControlId( ) == EMsgComponentIdFrom) && ( ( iMtm->Sender( ) ).Length() ) )
+                if( ( FocusedControlId( ) == EMsgComponentIdFrom) && ( ( iMtm->Sender( ) ).Length() ) 
+                      && senderHighlighted )
                     {
                     iFindItemMenu->SetSenderHighlightStatus( ETrue );
                     iFindItemMenu->SetSenderDisplayText( TMmsGenUtils::PureAddress( iMtm->Sender( ) ) );                
@@ -1173,11 +1188,14 @@
                     iFindItemMenu->SetSenderHighlightStatus( EFalse );
 		            }
                 }
- 			iFindItemMenu->AddItemFindMenuL( 
-                ( focusedControl == EMsgComponentIdBody ) ? iView->ItemFinder( ) : 0,
+            
+            iFindItemMenu->AddItemFindMenuL( 
+                ( iView->ItemFinder()->CurrentSelection().Length() ) 
+                ? iView->ItemFinder( ) : 0,
                 aMenuPane, 
                 EFindItemMenuPlaceHolder,
-                TMmsGenUtils::PureAddress( iMtm->Sender( ) ),
+                senderHighlighted ? 
+                TMmsGenUtils::PureAddress( iMtm->Sender( ) ) : KNullDesC(),
                 iHeader->Alias( ) && !iHeader->IsRemoteAlias( ) ? ETrue : EFalse, //"Is sender known"
                 EFalse );
                 
@@ -1606,7 +1624,39 @@
             break;
         case EKeyDevice3:       //Selection key
         case EKeyEnter:         //Enter Key
-            {           
+            {                    
+            if( iView->FocusedControl()->ControlType() == EMsgAddressControl )
+                {
+                CMsgAddressControl* address = static_cast<CMsgAddressControl*>(
+                    iView->FocusedControl() );
+                if ( address && !address->Editor().SelectionLength() )
+                    {
+                    // restore highlight to address field
+                    return address->Editor().OfferKeyEventL( aKeyEvent, aType );
+                    }               
+                }
+            else if ( iView->FocusedControl()->ControlType() == EMsgBodyControl )
+                {       
+                CItemFinder* itemFinder = iView->ItemFinder();
+                if ( FocusedControlId() == EMsgComponentIdBody 
+                     && itemFinder )
+                    {                                                                          
+                    if ( !itemFinder->CurrentSelection().Length() )
+                        {
+                        CMsgBodyControl* body = static_cast<CMsgBodyControl*>(
+                            iView->FocusedControl() );
+                        if ( body )
+                            {                     
+                             // restore highlight to current itemfinder item
+                            return body->Editor().OfferKeyEventL( aKeyEvent, aType );
+                            }
+                        }
+                    }
+                }
+            // fall through
+            } 
+        case EMsgFindItemKeyEvent:
+            {
             TInt focusedControl = FocusedControlId( );
             CMsgMediaControl* control = MediaControlById(focusedControl);
             if (control)
@@ -1985,6 +2035,12 @@
             }
         }
     TBool objectsOk = CanForwardObjectsL( aResourceId );
+	TInt conformanceSize = KClassMaxSizeVideoRich;
+	if(iMmsConformance->ConformanceVersion() > KMmsVersion12)
+	{
+		conformanceSize = KClassMaxSizeMegapixel;
+	}
+		
     if ( objectsOk && Document( )->CreationMode( ) == EMmsCreationModeWarning )
         {
         if ( Document( )->SmilType( ) != EMmsSmil ||
@@ -1993,7 +2049,7 @@
             aResourceId = 0;
             return ShowGuidedModeConfirmationQueryL( R_MMSVIEWER_QUEST_GUIDED_PRESENTATION );
             }
-        else if ( msgSize > KClassMaxSizeVideoRich )
+        else if ( msgSize > conformanceSize )
             {
             aResourceId = 0;
             return ShowGuidedModeConfirmationQueryL( R_MMSVIEWER_QUEST_GUIDED_INC_OBJ );
--- a/mobilemessaging/smsui/viewerinc/MsgSmsViewerAppUi.h	Tue Apr 27 16:33:37 2010 +0300
+++ b/mobilemessaging/smsui/viewerinc/MsgSmsViewerAppUi.h	Tue May 11 16:10:04 2010 +0300
@@ -561,6 +561,18 @@
           */
          void QuickSmsMsgNaviHandlingL( CMsvStore* aStore );
          
+         /**
+         * Checks wheter current find item is highlighted
+         * @return ETrue if highlight enabled
+         */
+         TBool FindItemHighlighted();
+         
+         /**
+         * Returns id of focused control
+         * @return id of focused control
+         */
+         TInt FocusedControlId();
+         
     protected:     // Data
 
         // Note:
--- a/mobilemessaging/smsui/viewersrc/MsgSmsViewerAppUi.cpp	Tue Apr 27 16:33:37 2010 +0300
+++ b/mobilemessaging/smsui/viewersrc/MsgSmsViewerAppUi.cpp	Tue May 11 16:10:04 2010 +0300
@@ -965,7 +965,20 @@
         case R_SMSV_OPTIONSMENUPANE_CLASS0:
             {
             TPtrC senderNumber = KNullDesC();
-            if ( iFlags.iValidSenderNumber )
+            
+            TBool senderHighlighted = EFalse;
+            if ( FocusedControlId( ) == EMsgComponentIdFrom )
+                {
+                CMsgAddressControl* address = static_cast<CMsgAddressControl*>(
+                    iView->ControlById( EMsgComponentIdFrom ) );
+                           
+                if ( address && address->Editor().SelectionLength() )
+                    {
+                    senderHighlighted = ETrue;
+                    }
+                }               
+            if ( iFlags.iValidSenderNumber 
+                 && senderHighlighted )
                 {
                 senderNumber.Set( iNumber );
                 }
@@ -978,7 +991,7 @@
             else if(iFindItemMenu)
 	            {              
 	            iFindItemMenu->AddItemFindMenuL( 
-                IsBodyFocused() ? iView->ItemFinder() : 0,
+                FindItemHighlighted() ? iView->ItemFinder() : 0,
                 aMenuPane, EFindItemMenuPlaceHolder,
                 senderNumber, 
                 iRecipientstring.Length() != 0 ? ETrue : EFalse,
@@ -1078,14 +1091,31 @@
 
         // add automatic highlight menus
         TPtrC senderNumber = KNullDesC();
+             
+        TBool senderHighlighted = EFalse;
+        if ( FocusedControlId( ) == EMsgComponentIdFrom )
+            {
+            CMsgAddressControl* address = static_cast<CMsgAddressControl*>(
+                iView->ControlById( EMsgComponentIdFrom ) );
+                       
+            if ( address && address->Editor().SelectionLength() )
+                {
+                senderHighlighted = ETrue;
+                }
+            }          
+        
         if ( iFlags.iIsEmailMessage ) // SMS originating address is email address 
             {  
-            senderNumber.Set( iRecipientstring );
+            if ( senderHighlighted )
+                {
+                senderNumber.Set( iRecipientstring );
+                }
             iFindItemMenu->SetSenderDescriptorType( CItemFinder::EEmailAddress );
             }            
         else 
             {// SMS originating adddress is Phone number
-            if ( iFlags.iValidSenderNumber )
+            if ( iFlags.iValidSenderNumber
+                 && senderHighlighted )
                 {
                 senderNumber.Set( iNumber );
                 }
@@ -1099,7 +1129,7 @@
 	                iView->ControlById( EMsgComponentIdFrom ) == iView->FocusedControl() );
 	            iFindItemMenu->SetSenderDisplayText( senderNumber );
 	            iFindItemMenu->AddItemFindMenuL( 
-	                IsBodyFocused() ? iView->ItemFinder() : 0,
+	                FindItemHighlighted() ? iView->ItemFinder() : 0,
 	                aMenuPane, EFindItemMenuPlaceHolder,
 	                senderNumber, 
 	                iFlags.iIsEmailMessage ? EFalse : ( iRecipientstring.Length() != 0 ) );
@@ -1110,7 +1140,7 @@
 	                iView->ControlById( EMsgComponentIdFrom ) == iView->FocusedControl() );
 	            iFindItemMenu->SetSenderDisplayText( senderNumber );
 	            iFindItemMenu->AddItemFindMenuL( 
-	                IsBodyFocused() ? iView->ItemFinder() : 0,
+	                FindItemHighlighted() ? iView->ItemFinder() : 0,
 	                aMenuPane, EFindItemMenuPlaceHolder,
 	                senderNumber, 
 	                ETrue );
@@ -1580,7 +1610,40 @@
                 }
             case EKeyDevice3:
             case EKeyEnter:	
-                {// Selection-key checking (Context sensitive menu)
+                {             
+                if( iView->FocusedControl()->ControlType() == EMsgAddressControl )
+                    {
+                    CMsgAddressControl* address = static_cast<CMsgAddressControl*>(
+                        iView->FocusedControl() );
+                    if ( address && !address->Editor().SelectionLength() )
+                        {
+                        // restore highlight to address field
+                        return address->Editor().OfferKeyEventL( aKeyEvent, aType );
+                        }               
+                    }
+                else if ( iView->FocusedControl()->ControlType() == EMsgBodyControl )
+                    {       
+                    CItemFinder* itemFinder = iView->ItemFinder();
+                    if ( FocusedControlId() == EMsgComponentIdBody 
+                         && itemFinder )
+                        {                                                                          
+                        if ( !itemFinder->CurrentSelection().Length() )
+                            {
+                            CMsgBodyControl* body = static_cast<CMsgBodyControl*>(
+                                iView->FocusedControl() );
+                            if ( body )
+                                {                     
+                                 // restore highlight to current itemfinder item
+                                return body->Editor().OfferKeyEventL( aKeyEvent, aType );
+                                }
+                            }
+                        }
+                    }
+                // fall through
+                }
+            case EMsgFindItemKeyEvent:
+                {
+                // Selection-key checking (Context sensitive menu)
                 // (with Class 0 just show the menu)
                 if ( !iClass0CBA )
                     {
@@ -3064,4 +3127,34 @@
     iTypeMsg = pduType; //for successful launch save the PDU Type.
     }
 
+// ---------------------------------------------------------
+// CMsgSmsViewerAppUi::FindItemHighlighted
+// Checks wheter current find item is highlighted
+// ---------------------------------------------------------
+//
+TBool CMsgSmsViewerAppUi::FindItemHighlighted()
+    {
+    if ( iView->ItemFinder() && 
+         iView->ItemFinder()->CurrentSelection().Length() )
+        {
+        return ETrue;
+        }
+    return EFalse;
+    }
+
+// ---------------------------------------------------------
+// CMsgSmsViewerAppUi::FocusedControlId
+// Returns id of focused control
+// ---------------------------------------------------------
+//
+TInt CMsgSmsViewerAppUi::FocusedControlId( )
+    {
+    TInt controlType = EMsgComponentIdNull;
+    if ( iView && iView->FocusedControl( ) )
+        {
+        controlType = iView->FocusedControl( )->ControlId( );
+        }
+    return controlType;
+    }
+
 //  End of File  
--- a/mobilemessaging/unieditor/application/src/UniEditorAppUi.cpp	Tue Apr 27 16:33:37 2010 +0300
+++ b/mobilemessaging/unieditor/application/src/UniEditorAppUi.cpp	Tue May 11 16:10:04 2010 +0300
@@ -4656,7 +4656,8 @@
                 //Enable the insert toolbar 
             if( iFixedToolbar )
                 {
-                iFixedToolbar->SetItemDimmed( EUniCmdFixedToolbarInsert, EFalse, ETrue );    
+                iFixedToolbar->SetItemDimmed( EUniCmdFixedToolbarInsert, EFalse, ETrue );
+                HandleResourceChangeL(KEikDynamicLayoutVariantSwitch);
                 }
             }
                                  
@@ -4724,7 +4725,8 @@
                 //Enable the insert toolbar 
             if( iFixedToolbar )
                 {
-            iFixedToolbar->SetItemDimmed( EUniCmdFixedToolbarInsert, EFalse, ETrue );    
+                iFixedToolbar->SetItemDimmed( EUniCmdFixedToolbarInsert, EFalse, ETrue );    
+                HandleResourceChangeL(KEikDynamicLayoutVariantSwitch);
                 }
             }
                          
@@ -4791,7 +4793,8 @@
                 //Enable the insert toolbar 
             if( iFixedToolbar )
                 {
-            iFixedToolbar->SetItemDimmed( EUniCmdFixedToolbarInsert, EFalse, ETrue );    
+                iFixedToolbar->SetItemDimmed( EUniCmdFixedToolbarInsert, EFalse, ETrue );    
+                HandleResourceChangeL(KEikDynamicLayoutVariantSwitch);
                 }
             }
                          
--- a/mobilemessaging/unieditor/application/src/UniEditorProcessImageOperation.cpp	Tue Apr 27 16:33:37 2010 +0300
+++ b/mobilemessaging/unieditor/application/src/UniEditorProcessImageOperation.cpp	Tue May 11 16:10:04 2010 +0300
@@ -44,6 +44,8 @@
 
 #include <mmssettingsdefs.h>
 
+#include <mmsversion.h>
+
 #include "UniClientMtm.h"
 #include "UniEditorEnum.h"
 #include "UniEditorDocument.h"
@@ -464,12 +466,20 @@
         }
     
     TBool largeImageQuery = EFalse;
+    TInt conformanceWidth = KImageRichWidth;
+    TInt conformanceHeight = KImageRichHeight;
+    
+    if (iDocument.DataModel()->MmsConformance().ConformanceVersion()> KMmsVersion12)
+        {
+        conformanceWidth = KImageMegapixelWidth;
+        conformanceHeight = KImageMegapixelHeight;    
+        }
     
     if ( iProcessMethod == EUniProcessImgMethodNone )
         {
         // Image won't be processed
-        if ( ( origSize.iWidth > KImageRichWidth ||
-               origSize.iHeight > KImageRichHeight ) &&
+        if ( ( origSize.iWidth > conformanceWidth ||
+               origSize.iHeight > conformanceHeight ) &&
              ( iImageInfo->FileSize() + iMessageSize ) < iDocument.MaxMessageSize() )
             {
             // Original image width or height is "non-conformant" and original image would 
@@ -480,8 +490,8 @@
     else
         {
         // Image will be processed
-        if ( scaleSize.iWidth > KImageRichWidth ||
-             scaleSize.iHeight > KImageRichHeight )
+        if ( scaleSize.iWidth > conformanceWidth ||
+             scaleSize.iHeight > conformanceHeight )
             {
             // Processed image is "non-conformant" after processing.
             largeImageQuery = ETrue;
--- a/mobilemessaging/unieditor/inc/UniMsvEntry.h	Tue Apr 27 16:33:37 2010 +0300
+++ b/mobilemessaging/unieditor/inc/UniMsvEntry.h	Tue May 11 16:10:04 2010 +0300
@@ -24,7 +24,7 @@
 
 #include <msvstd.h>
 #include <mmsconst.h>
-#include <unieditorconsts.h>
+#include <UniEditorConsts.h>
 
 // CONSTANTS
 
@@ -112,7 +112,7 @@
 
     };
 
-#include <unimsventry.inl>
+#include <UniMsvEntry.inl>
 
 #endif      // __UNIMSVENTRY_H
             
--- a/msg_pub/messaging_editor_constants_api/inc/MsgEditor.hrh	Tue Apr 27 16:33:37 2010 +0300
+++ b/msg_pub/messaging_editor_constants_api/inc/MsgEditor.hrh	Tue May 11 16:10:04 2010 +0300
@@ -173,6 +173,13 @@
     EMsgDispSizeSmall,
     EMsgFirstFreeComponentSpecificCommand = 2000
     };
+    
+    
+//Internal Enumeration for find item functionality
+enum TMsgFindItemKeyCommands
+    {
+    EMsgFindItemKeyEvent = 0x55555555 
+    };
 
 #endif