emailuis/emailui/src/FreestyleEmailUiSearchListVisualiser.cpp
changeset 2 5253a20d2a1e
parent 1 12c456ceeff2
child 4 e7aa27f58ae1
--- a/emailuis/emailui/src/FreestyleEmailUiSearchListVisualiser.cpp	Thu Jan 07 12:38:38 2010 +0200
+++ b/emailuis/emailui/src/FreestyleEmailUiSearchListVisualiser.cpp	Mon Jan 18 20:08:26 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). 
+* 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"
@@ -58,9 +58,9 @@
 // </cmail>
 #include <featmgr.h>
 //</cmail>
+#include <aknstyluspopupmenu.h>
 
 //<cmail>
-#include "cfsccontactactionmenu.h"
 #include "mfsccontactactionmenumodel.h"
 #include "fscontrolbar.h"
 #include "fscontrolbuttoninterface.h"
@@ -101,11 +101,14 @@
 //</cmail>
 static const TInt KItemExpansionDelay = 400;
 static const TInt KListScrollingDelay = 200;
-static const TInt KMaxPreviewPaneLength = 60; 
+static const TInt KMaxPreviewPaneLength = 60;
+
+//<cmail> define search required priorities
+#define KStandardSearchPriority   CActive::EPriorityStandard  
+#define KCallingSearchPriority   ( CActive::EPriorityIdle - 1 )
 
 
-
-CFSEmailUiSearchListVisualiser* CFSEmailUiSearchListVisualiser::NewL(CAlfEnv& aEnv, 
+CFSEmailUiSearchListVisualiser* CFSEmailUiSearchListVisualiser::NewL(CAlfEnv& aEnv,
 																 CFreestyleEmailUiAppUi* aAppUi,
 																 CAlfControlGroup& aSearchListControlGroup )
     {
@@ -115,7 +118,7 @@
     return self;
     }
 
-CFSEmailUiSearchListVisualiser* CFSEmailUiSearchListVisualiser::NewLC(CAlfEnv& aEnv, 
+CFSEmailUiSearchListVisualiser* CFSEmailUiSearchListVisualiser::NewLC(CAlfEnv& aEnv,
 																  CFreestyleEmailUiAppUi* aAppUi,
 																  CAlfControlGroup& aSearchListControlGroup)
 {
@@ -135,7 +138,7 @@
 	iThisViewActive = EFalse;
 	iFirstStartCompleted = EFalse;
    	}
-	
+
 // CFSEmailUiSearchListVisualiser::DoFirstStartL()
 // Purpose of this function is to do first start only when search list is
 // really needed to be shown. Implemented to make app startuo faster.
@@ -143,8 +146,8 @@
     {
     FUNC_LOG;
     TRect screenRect;
-    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect );   
-     
+    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect );
+
     // Create control and anchor layout
     iSearchListControl = CFreestyleEmailUiSearchListControl::NewL( *iEnv, this );
     iScreenAnchorLayout = CAlfAnchorLayout::AddNewL( *iSearchListControl );
@@ -152,7 +155,7 @@
     SetSearchListLayoutAnchors();
 
     // Create top bar layout
-    iSearchTopBarLayout = CAlfDeckLayout::AddNewL( *iSearchListControl, iScreenAnchorLayout );  
+    iSearchTopBarLayout = CAlfDeckLayout::AddNewL( *iSearchListControl, iScreenAnchorLayout );
     iBarBgVisual = CAlfImageVisual::AddNewL( *iSearchListControl, iSearchTopBarLayout );
         /*<cmail> paltform layout changes to cmail
     TAlfTimedValue barBgTextureOpacity;
@@ -167,11 +170,11 @@
     // Add bar image component
     iBarFindImage = CAlfImageVisual::AddNewL( *iSearchListControl, iScreenAnchorLayout );
     TAlfTimedValue barFindImageOpacity;
-    barFindImageOpacity.SetValueNow( 1 );   
+    barFindImageOpacity.SetValueNow( 1 );
     iBarFindImage->SetOpacity( barFindImageOpacity );
     CAlfTexture* barFindTexture = &iAppUi.FsTextureManager()->TextureByIndex( ESearchLookingGlassIcon );
     barFindTexture->Size().SetSize( 15, 15 );
-    iBarFindImage->SetImage( TAlfImage( *barFindTexture ) );    
+    iBarFindImage->SetImage( TAlfImage( *barFindTexture ) );
         */ //</cmail>
 
 	// <cmail>
@@ -180,69 +183,82 @@
     iBarTextVisual->EnableShadow(EFalse);
     iBarTextVisual->SetWrapping( CAlfTextVisual::ELineWrapTruncate );
 	// </cmail>
-	
+
 	/*<cmail> no initial text or opacity required in cmail
     HBufC* initialSearchText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_FIND_DLG_SEARCH );
-    iBarTextVisual->SetTextL( *initialSearchText );     
+    iBarTextVisual->SetTextL( *initialSearchText );
     CleanupStack::PopAndDestroy( initialSearchText );
     TAlfTimedValue barTextVisualOpacity;
     barTextVisualOpacity.SetValueNow( 1 );
     iBarTextVisual->SetOpacity( barTextVisualOpacity );
-        
+
     CAlfTextStyle* textStyle = iAppUi.LayoutHandler()->FSTextStyleFromIdL( EFSFontTypeSmallBold );
-    iBarTextVisual->SetTextStyle ( textStyle->Id() );*/ //</cmail>	
+    iBarTextVisual->SetTextStyle ( textStyle->Id() );*/ //</cmail>
     if ( !AknLayoutUtils::LayoutMirrored() )
         {
-        iBarTextVisual->SetAlign(EAlfAlignHLeft, EAlfAlignVCenter);         
+        iBarTextVisual->SetAlign(EAlfAlignHLeft, EAlfAlignVCenter);
         }
     else
         {
-        iBarTextVisual->SetAlign(EAlfAlignHRight, EAlfAlignVCenter);            
+        iBarTextVisual->SetAlign(EAlfAlignHRight, EAlfAlignVCenter);
         }
 
     // Create model
-    iModel = CFSEmailUiMailListModel::NewL( &iAppUi, ETrue );  
+    iModel = CFSEmailUiMailListModel::NewL( &iAppUi, ETrue );
 
     // Create list and append to control group and anchor layout
-    iSearchListLayout = CAlfDeckLayout::AddNewL( *iSearchListControl, iScreenAnchorLayout );  
+    iSearchListLayout = CAlfDeckLayout::AddNewL( *iSearchListControl, iScreenAnchorLayout );
     iSearchListLayout->SetSize( TSize( screenRect.Width(), screenRect.Height()-
             iAppUi.LayoutHandler()->ControlBarHeight() ) );
-    iSearchTreeListVisualizer = CFsTreeVisualizerBase::NewL(iSearchListControl, *iSearchListLayout);  
-    iSearchList = CFsTreeList::NewL(*iSearchTreeListVisualizer, *iEnv );   
+    iSearchTreeListVisualizer = CFsTreeVisualizerBase::NewL(iSearchListControl, *iSearchListLayout);
+    iSearchList = CFsTreeList::NewL(*iSearchTreeListVisualizer, *iEnv );
     iSearchList->SetScrollbarVisibilityL( EFsScrollbarHideAlways );
-  
+
     // Set mark type and icon
-    iSearchList->SetMarkTypeL( CFsTreeList::EFsTreeListMultiMarkable ); 
+    iSearchList->SetMarkTypeL( CFsTreeList::EFsTreeListMultiMarkable );
     iSearchTreeListVisualizer->SetMarkIcon( iAppUi.FsTextureManager()->TextureByIndex( EListControlMarkIcon ) );
-    iSearchTreeListVisualizer->SetMenuIcon( iAppUi.FsTextureManager()->TextureByIndex( EListControlMenuIcon ) );        
+    iSearchTreeListVisualizer->SetMenuIcon( iAppUi.FsTextureManager()->TextureByIndex( EListControlMenuIcon ) );
 	iSearchTreeListVisualizer->SetFlipState( iKeyboardFlipOpen );
 	iSearchTreeListVisualizer->SetFocusVisibility( iFocusVisible );
     iSearchList->SetIndentationL(0);
 
     //<cmail> events are now offered to controls in different order
     ControlGroup().AppendL( iSearchListControl );
-    ControlGroup().AppendL( iSearchList->TreeControl() ); 
+    ControlGroup().AppendL( iSearchList->TreeControl() );
     //</cmail>
     //<cmail> touch
-    iSearchList->AddObserverL(*this); 
+    iSearchList->AddObserverL(*this);
     //</cmail>
     iSearchOngoing = EFalse;
- 
-    // Set mail list background 
+
+
+    // Initializing the default stylus long tap popup menu
+    if( !iStylusPopUpMenu )
+        {
+        TPoint point( 0, 0 );
+        iStylusPopUpMenu = CAknStylusPopUpMenu::NewL( this , point );
+        TResourceReader reader;
+        iCoeEnv->CreateResourceReaderLC( reader,
+                R_STYLUS_POPUP_MENU_SEARCH_LIST_VIEW );
+        iStylusPopUpMenu->ConstructFromResourceL( reader );
+        CleanupStack::PopAndDestroy();
+        }
+
+    // Set mail list background
     //<cmail> S60 skin support
-    //iSearchTreeListVisualizer->SetBackgroundTextureL( iAppUi.FsTextureManager()->TextureByIndex( EBackgroundTextureMailList ) );  
+    //iSearchTreeListVisualizer->SetBackgroundTextureL( iAppUi.FsTextureManager()->TextureByIndex( EBackgroundTextureMailList ) );
     //</cmail>
-  
+
     iSearchTreeListVisualizer->SetItemExpansionDelay( KItemExpansionDelay );
     iSearchList->SetScrollTime( KListScrollingDelay, 0.5 );
 
     // Set empty text
     HBufC* emptyText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_EMPTY_MSG_LIST_TEXT );
-    iSearchTreeListVisualizer->SetEmptyListTextL( *emptyText ); 
+    iSearchTreeListVisualizer->SetEmptyListTextL( *emptyText );
     CleanupStack::PopAndDestroy( emptyText );
     TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor();
-    iSearchTreeListVisualizer->RootNodeVisualizer()->SetNormalStateTextColor( normalColor ); 
-     
+    iSearchTreeListVisualizer->RootNodeVisualizer()->SetNormalStateTextColor( normalColor );
+
     // Create startup timer
     iStartupCallbackTimer = CFSEmailUiGenericTimer::NewL( this );
 
@@ -252,30 +268,32 @@
 
     CAlfBrush* selectorBrush = iAppUi.FsTextureManager()->ListSelectorBrushL();
     iSearchTreeListVisualizer->SetSelectorPropertiesL( selectorBrush, 1.0, CFsTreeVisualizerBase::EFsSelectorMoveSmoothly );
-  
-    iAppUi.LayoutHandler()->SetListMarqueeBehaviour( iSearchList );    
-    
+
+    iAppUi.LayoutHandler()->SetListMarqueeBehaviour( iSearchList );
+
     iFirstStartCompleted = ETrue;
    	}
 
 void CFSEmailUiSearchListVisualiser::TimerEventL( CFSEmailUiGenericTimer* /*aTriggeredTimer*/ )
 	{
     FUNC_LOG;
-	LaunchSearchDialogL();	
+	LaunchSearchDialogL();
 	}
-	
-CFSEmailUiSearchListVisualiser::CFSEmailUiSearchListVisualiser( CFreestyleEmailUiAppUi* aAppUi, 
-                                                                CAlfEnv& aEnv, 
+
+CFSEmailUiSearchListVisualiser::CFSEmailUiSearchListVisualiser( CFreestyleEmailUiAppUi* aAppUi,
+                                                                CAlfEnv& aEnv,
                                                                 CAlfControlGroup& aSearchListControlGroup )
     :CFsEmailUiViewBase( aSearchListControlGroup, *aAppUi ),
     iEnv( &aEnv ),
-    iLatestSearchText(0),
-    iListAddedToControlGroup(EFalse), //<cmail>
-    iPreparedForExit(EFalse) //<cmail>
+    iLatestSearchText( 0 ),
+    iListAddedToControlGroup( EFalse ),
+    iConsumeStdKeyYes_KeyUp( EFalse ), // for consuming the call event if call for contact processed
+    iRequiredSearchPriority( KStandardSearchPriority ),  // for search email priority decreasing
+    iPreparedForExit( EFalse )
 	{
     FUNC_LOG;
 	}
-	
+
 CFSEmailUiSearchListVisualiser::~CFSEmailUiSearchListVisualiser()
 	{
     FUNC_LOG;
@@ -285,11 +303,11 @@
     	delete iStartupCallbackTimer;
     	}
 	iSearchStrings.ResetAndDestroy();
-	iSearchListItemArray.Reset(); 
+	iSearchListItemArray.Reset();
     delete iModel;
 	delete iLatestSearchText;
 	delete iSearchList;
-
+    delete iStylusPopUpMenu;
 	}
 
 void CFSEmailUiSearchListVisualiser::PrepareForExit()
@@ -302,15 +320,16 @@
             TRAP_IGNORE(ControlGroup().AppendL( iSearchList->TreeControl() ));
         if(iSearchListControl)
         TRAP_IGNORE(ControlGroup().AppendL( iSearchListControl ));
-        iListAddedToControlGroup = ETrue;        
+        iListAddedToControlGroup = ETrue;
         }*/
     //<cmail>
     if ( iSearchOngoing )
         {
         TRAP_IGNORE( StopSearchL() );
-        }    
+        }
     delete iMailBox;
     iMailBox = NULL;
+    TRAP_IGNORE( ResetResultListL() );
     iPreparedForExit = ETrue;
     }
 
@@ -331,12 +350,12 @@
 	return ret;
 	}
 
-	
+
 TUid CFSEmailUiSearchListVisualiser::Id() const
 	{
     FUNC_LOG;
-	return SearchListViewId;	
-	}			   
+	return SearchListViewId;
+	}
 
 // <cmail> Toolbar
 /*void CFSEmailUiSearchListVisualiser::DoActivateL(const TVwsViewId& aPrevViewId,
@@ -350,16 +369,16 @@
     FUNC_LOG;
 	if ( !iFirstStartCompleted )
 	    {
-	    DoFirstStartL();	    
+	    DoFirstStartL();
 	    }
 
 	// <cmail>
     //iSearchList->SetScrollbarVisibilityL( EFsScrollbarHideAlways );
     if ( aCustomMessageId != KStartListReturnToPreviousFolder )
     	{
-    	iBarTextVisual->SetTextL(KNullDesC);	
+    	iBarTextVisual->SetTextL(KNullDesC);
     	}
-    
+
 	if ( &aCustomMessage && aCustomMessageId == KStartNewSearch )
 		{
 		// If new search, clear old search list
@@ -375,7 +394,7 @@
 	TSearchListActivationData subView;
 	TPckgBuf<TSearchListActivationData> viewData( subView );
 	viewData.Copy( aCustomMessage );
-	subView = viewData();		
+	subView = viewData();
 
 	// Update settings and set list mode according to settings
 	UpdateMailListSettingsL();
@@ -385,20 +404,20 @@
 		delete iMailBox;
 		iMailBox = NULL;
 		}
-	iMailBox = iAppUi.GetMailClient()->GetMailBoxByUidL( subView.iMailBoxId );			
+	iMailBox = iAppUi.GetMailClient()->GetMailBoxByUidL( subView.iMailBoxId );
 	// If mailbox data is not, try to get default MCE account
 	if ( !iMailBox )
 		{
 		CMsvSession* msvSession = iAppUi.GetMsvSession();
 		CFSMailClient* client = iAppUi.GetMailClient();
-		iMailBox = TFsEmailUiUtility::GetMceDefaultMailboxL( *client, *msvSession );				
+		iMailBox = TFsEmailUiUtility::GetMceDefaultMailboxL( *client, *msvSession );
 		}
-		
-	if ( iMailBox )	
+
+	if ( iMailBox )
 		{
 		iThisViewActive = ETrue;
                 //<cmail> visible/unvisible is not controlled by opacity in cmail
-		//TAlfTimedValue opacity; 
+		//TAlfTimedValue opacity;
 		//opacity.SetValueNow( 1 );
 		//iScreenAnchorLayout->SetOpacity( opacity );
                 //</cmail>
@@ -406,7 +425,7 @@
 		iSearchList->SetFocusedL(ETrue);
 		// Set empty text color
 	   	TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor();
-		iSearchTreeListVisualizer->RootNodeVisualizer()->SetNormalStateTextColor( normalColor );  			
+		iSearchTreeListVisualizer->RootNodeVisualizer()->SetNormalStateTextColor( normalColor );
 
 		// Launch search dialog automatically when activated
 		if ( &aCustomMessage && aCustomMessageId == KStartNewSearch )
@@ -415,15 +434,15 @@
 			// requeset async launching of the search dialog because DoActivateL must
 			// not be blocked
 			iStartupCallbackTimer->Cancel(); // just in case
-			iStartupCallbackTimer->Start( iAppUi.LayoutHandler()->ViewSlideEffectTime() );			
+			iStartupCallbackTimer->Start( iAppUi.LayoutHandler()->ViewSlideEffectTime() );
 			}
 		else if ( iModel && iModel->Count() )
 			{
 			// Need to make sure that return to this view works even if following function leaves.
-			TRAP_IGNORE( CheckAndUpdateFocusedMessageL() );		
+			TRAP_IGNORE( CheckAndUpdateFocusedMessageL() );
 			}
 		}
-    CAknEnv::Static()->GetCurrentGlobalUiZoom( iCurrentZoomLevel ); 	
+    CAknEnv::Static()->GetCurrentGlobalUiZoom( iCurrentZoomLevel );
 	// Set msk always empty when view is activated.
 	SetMskL();
 	// <cmail>
@@ -444,7 +463,7 @@
         iListAddedToControlGroup = EFalse;
         }
 	iThisViewActive = EFalse;
-	
+
     if ( !iAppUi.AppUiExitOngoing() )
         {
         if ( iSearchList->IsFocused() )
@@ -453,12 +472,12 @@
             }
         iSearchTreeListVisualizer->NotifyControlVisibilityChange( EFalse );
         }
-	}	
-	
+	}
+
 CFSEmailUiMailListModel* CFSEmailUiSearchListVisualiser::Model()
 	{
     FUNC_LOG;
-	return iModel;	
+	return iModel;
 	}
 
 void CFSEmailUiSearchListVisualiser::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane )
@@ -471,76 +490,76 @@
 		    if ( FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration ) )
 			   {
 			   // remove help support in pf5250
-			   aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue);      
+			   aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue);
 			   }
-		    
-		  	CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));    
-			if ( item && item->ModelItemType() == ETypeMailItem && 
-				 item->MessagePtr().IsFlagSet( EFSMsgFlag_CalendarMsg ) ) 
+
+		  	CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
+			if ( item && item->ModelItemType() == ETypeMailItem &&
+				 item->MessagePtr().IsFlagSet( EFSMsgFlag_CalendarMsg ) )
 				{
 				// Highlighted mail is calendar msg
-				aMenuPane->SetItemDimmed(EFsEmailUiCmdMailActions, ETrue);						
-				aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActions, EFalse);				
+				aMenuPane->SetItemDimmed(EFsEmailUiCmdMailActions, ETrue);
+				aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActions, EFalse);
 				}
 			else
 				{
 				// Highlighted mail is mail msg
-				aMenuPane->SetItemDimmed(EFsEmailUiCmdMailActions, EFalse);						
-				aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActions, ETrue);	
-				}															
-			aMenuPane->SetItemDimmed(EFsEmailUiCmdOpen, EFalse);								
+				aMenuPane->SetItemDimmed(EFsEmailUiCmdMailActions, EFalse);
+				aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActions, ETrue);
+				}
+			aMenuPane->SetItemDimmed(EFsEmailUiCmdOpen, EFalse);
 			}
 		}
 	else
 		{
 		if ( aResourceId == R_FSEMAILUI_SEARCHLIST_MENUPANE )
 			{
-			
+
 		    if (FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration ))
 			   {
 			   // remove help support in pf5250
-			   aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue);      
+			   aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue);
 			   }
-		    
-			aMenuPane->SetItemDimmed(EFsEmailUiCmdMore, ETrue);								
-			aMenuPane->SetItemDimmed(EFsEmailUiCmdMailActions, ETrue);								
-			aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActions, ETrue);								
-			aMenuPane->SetItemDimmed(EFsEmailUiCmdOpen, ETrue);	
-			aMenuPane->SetItemDimmed(EFsEmailUiCmdReadEmail, ETrue);								
-			}				
+
+			aMenuPane->SetItemDimmed(EFsEmailUiCmdMore, ETrue);
+			aMenuPane->SetItemDimmed(EFsEmailUiCmdMailActions, ETrue);
+			aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActions, ETrue);
+			aMenuPane->SetItemDimmed(EFsEmailUiCmdOpen, ETrue);
+			aMenuPane->SetItemDimmed(EFsEmailUiCmdReadEmail, ETrue);
+			}
 		}
-		
+
 	if ( aResourceId == R_FSEMAILUI_SEARCHLIST_SUBMENU_ACTIONS ||
 	     aResourceId == R_FSEMAILUI_SEARCHLIST_SUBMENU_CALEVENT_ACTIONS)
 		{
 		if ( iSearchList->Count() )
 			{
-		  	CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));    
+		  	CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
 			if ( item && item->ModelItemType() == ETypeMailItem )
 				{
 				CFSMailMessage* messagePtr = &item->MessagePtr();
 				if ( messagePtr && messagePtr->IsFlagSet( EFSMsgFlag_Read ) )
 					{
-					aMenuPane->SetItemDimmed(EFsEmailUiCmdMarkAsRead, ETrue);																	
+					aMenuPane->SetItemDimmed(EFsEmailUiCmdMarkAsRead, ETrue);
 					}
 				else
-					{					
-					aMenuPane->SetItemDimmed(EFsEmailUiCmdMarkAsUnread, ETrue);																	
-					}			
+					{
+					aMenuPane->SetItemDimmed(EFsEmailUiCmdMarkAsUnread, ETrue);
+					}
 				}
-			}	
-		}	
-		
+			}
+		}
+
 	if ( aResourceId == R_FSEMAILUI_SEARCHLIST_SUBMENU_CALEVENT_ACTIONS)
 		{
 		if ( iSearchList->Count() )
-			{		
-		  	CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));    
+			{
+		  	CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
 			if ( item && item->ModelItemType() == ETypeMailItem )
 				{
 				CFSMailMessage* messagePtr = &item->MessagePtr();
 				if ( messagePtr && messagePtr->IsFlagSet( EFSMsgFlag_CalendarMsg ) )
-					{											 
+					{
 				    TESMRMeetingRequestMethod mrMethod( EESMRMeetingRequestMethodUnknown );
 				    if ( iAppUi.MrViewerInstanceL() )
 				    	{
@@ -560,10 +579,10 @@
 							break;
 						case EESMRMeetingRequestMethodCancellation:
 						    {
-							aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsAccept, ETrue);						
-							aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsTentative, ETrue);						
-							aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsDecline, ETrue);	
-							
+							aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsAccept, ETrue);
+							aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsTentative, ETrue);
+							aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsDecline, ETrue);
+
 							TBool supportsRemove = iAppUi.GetActiveMailbox()->HasCapability( EFSMBoxCapaRemoveFromCalendar );
 							if( !supportsRemove )
                                 {
@@ -575,36 +594,36 @@
 						case EESMRMeetingRequestMethodUnknown:
 						case EESMRMeetingRequestMethodResponse:
 						    {
-							aMenuPane->SetItemDimmed(EFsEmailUiCmdCalRemoveFromCalendar, ETrue);						
-							aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsAccept, ETrue);						
-							aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsTentative, ETrue);						
+							aMenuPane->SetItemDimmed(EFsEmailUiCmdCalRemoveFromCalendar, ETrue);
+							aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsAccept, ETrue);
+							aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsTentative, ETrue);
 							aMenuPane->SetItemDimmed(EFsEmailUiCmdCalActionsDecline, ETrue);
 						    }
 							break;
-						}			
-					}			
+						}
+					}
 				}
-			
+
 			}
 		}
-		
+
 
 	if ( aResourceId == R_FSEMAILUI_SEARCHLIST_SUBMENU_MORE )
 		{
 // <cmail> Prevent Download Manager opening with attachments
 //		if ( iAppUi.DownloadInfoMediator() && !iAppUi.DownloadInfoMediator()->IsAnyAttachmentDownloads() )
 //			{
-//			aMenuPane->SetItemDimmed(EFsEmailUiCmdDownloadManager, ETrue);																				
+//			aMenuPane->SetItemDimmed(EFsEmailUiCmdDownloadManager, ETrue);
 //			}
 // </cmail>
 		}
-	
-	if (aResourceId == R_FSEMAILUI_SEARCHLIST_SUBMENU_ACTIONS) 
+
+	if (aResourceId == R_FSEMAILUI_SEARCHLIST_SUBMENU_ACTIONS)
 	    {
-        CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));    
+        CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
         CFSMailMessage* messagePtr = &item->MessagePtr();
-        TInt menuIndex( 0 );   
-        
+        TInt menuIndex( 0 );
+
         //Get # of recipients
         TInt numRecipients(0);
         if ( messagePtr )
@@ -634,10 +653,10 @@
                             {
                             numRecipients++;
                             }
-                        }                
+                        }
                 }
-            
-            }                    
+
+            }
         if ( numRecipients > 1 )
             {
             aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReplyAll, EFalse );
@@ -647,23 +666,23 @@
             aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReplyAll, ETrue );
             }
 	    }
-		
+
 	if ( !iSearchOngoing && aResourceId == R_FSEMAILUI_SEARCHLIST_MENUPANE )
 		{
 	    if (FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration ))
 		   {
 		   // remove help support in pf5250
-		   aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue);      
+		   aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue);
 		   }
-	    
-		aMenuPane->SetItemDimmed(EFsEmailUiCmdStopSearch, ETrue);						
+
+		aMenuPane->SetItemDimmed(EFsEmailUiCmdStopSearch, ETrue);
 		if ( iSearchCount == 0 )
 			{
-			aMenuPane->SetItemDimmed(EFsEmailUiCmdNewSearch, ETrue);		
+			aMenuPane->SetItemDimmed(EFsEmailUiCmdNewSearch, ETrue);
 			}
 		else
 			{
-			aMenuPane->SetItemDimmed(EFsEmailUiCmdSearch, ETrue);								
+			aMenuPane->SetItemDimmed(EFsEmailUiCmdSearch, ETrue);
 			}
 		}
 
@@ -672,13 +691,13 @@
 	    if (FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration ))
 		   {
 		   // remove help support in pf5250
-		   aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue);      
+		   aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue);
 		   }
-	    
-		aMenuPane->SetItemDimmed(EFsEmailUiCmdSearch, ETrue);						
-		aMenuPane->SetItemDimmed(EFsEmailUiCmdNewSearch, ETrue);						
-		}		
-		
+
+		aMenuPane->SetItemDimmed(EFsEmailUiCmdSearch, ETrue);
+		aMenuPane->SetItemDimmed(EFsEmailUiCmdNewSearch, ETrue);
+		}
+
 	iAppUi.ShortcutBinding().AppendShortcutHintsL( *aMenuPane, CFSEmailUiShortcutBinding::EContextSearchResults );
 	}
 
@@ -690,7 +709,7 @@
         if ( iModel && iModel->Count() )
              {
              // Check if zoom level has been switched and refresh items if so
-             TAknUiZoom prevZoomLevel = iCurrentZoomLevel;   
+             TAknUiZoom prevZoomLevel = iCurrentZoomLevel;
              CAknEnv::Static()->GetCurrentGlobalUiZoom( iCurrentZoomLevel );
              if ( prevZoomLevel != iCurrentZoomLevel )
                  {
@@ -698,15 +717,15 @@
                      {
                      // Set font height
                      iSearchListItemArray[i].iTreeItemVisualiser->
-                         SetFontHeight( iAppUi.LayoutHandler()->ListItemFontHeightInTwips() );               
+                         SetFontHeight( iAppUi.LayoutHandler()->ListItemFontHeightInTwips() );
                      iSearchTreeListVisualizer->UpdateItemL( iSearchListItemArray[i].iSearchListItemId );
-                     }                   
+                     }
                  }
-             }       
+             }
         }
 	}
 
-	
+
 void CFSEmailUiSearchListVisualiser::CreatePlainNodeL( const TDesC& aItemDataBuff,
                                                      CFsTreePlainOneLineNodeData* &aItemData,
                                                      CFsTreePlainOneLineNodeVisualizer* &aNodeVisualizer ) const
@@ -715,21 +734,21 @@
     aItemData = CFsTreePlainOneLineNodeData::NewL();
     aItemData->SetDataL( aItemDataBuff );
 	aItemData->SetIconExpanded( iAppUi.FsTextureManager()->TextureByIndex(EListTextureNodeExpanded) );
-    aItemData->SetIconCollapsed( iAppUi.FsTextureManager()->TextureByIndex(EListTextureNodeCollapsed) );	        
+    aItemData->SetIconCollapsed( iAppUi.FsTextureManager()->TextureByIndex(EListTextureNodeCollapsed) );
     aNodeVisualizer = CFsTreePlainOneLineNodeVisualizer::NewL( *iSearchList->TreeControl() );
    	TRect screenRect;
- 	AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect );	
+ 	AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect );
     TInt nodeHeight = iAppUi.LayoutHandler()->OneLineListNodeHeight();
     aNodeVisualizer->SetSize( TSize(screenRect.Width(), nodeHeight) );
     aNodeVisualizer->SetExtendable(EFalse);
-  	// Set correct skin text colors for the list items  
+  	// Set correct skin text colors for the list items
    	TRgb focusedColor = iAppUi.LayoutHandler()->ListFocusedStateTextSkinColor();
    	TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor();
     aNodeVisualizer->SetFocusedStateTextColor( focusedColor );
-    aNodeVisualizer->SetNormalStateTextColor( normalColor );	 
+    aNodeVisualizer->SetNormalStateTextColor( normalColor );
  	}
 
-	
+
 void CFSEmailUiSearchListVisualiser::HandleDynamicVariantSwitchL( CFsEmailUiViewBase::TDynamicSwitchType aType )
 	{
     FUNC_LOG;
@@ -740,13 +759,13 @@
             {
             SetStatusBarLayout();
             }
-    
+
         if ( iSearchTreeListVisualizer )
             {
             TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor();
-            iSearchTreeListVisualizer->RootNodeVisualizer()->SetNormalStateTextColor( normalColor );            
+            iSearchTreeListVisualizer->RootNodeVisualizer()->SetNormalStateTextColor( normalColor );
             }
-        ReScaleUiL();        
+        ReScaleUiL();
         }
 	}
 
@@ -774,6 +793,14 @@
         TBool aVisible )
     {
     CFsEmailUiViewBase::FocusVisibilityChange( aVisible );
+
+    if ( iStylusPopUpMenuVisible && !aVisible )
+        {
+        // Do not allow to remove the focus from a list element if the pop up
+        // menu was just launched.
+        return;
+        }
+
     iSearchTreeListVisualizer->SetFocusVisibility( aVisible );
     }
 
@@ -790,7 +817,7 @@
         // landscape must use different layout
         res = R_AVKON_STATUS_PANE_LAYOUT_IDLE_FLAT;
         }
-    
+
     if ( StatusPane()->CurrentLayoutResId() !=  res )
         {
         TRAP_IGNORE(
@@ -801,6 +828,8 @@
 void CFSEmailUiSearchListVisualiser::HandleCommandL( TInt aCommand )
     {
     FUNC_LOG;
+
+
     switch ( aCommand )
         {
        	case EAknSoftkeySelect:
@@ -808,22 +837,22 @@
 			TInt modelCount(0);
 			if ( iModel )
 				{
-				modelCount = iModel->Count();				
+				modelCount = iModel->Count();
 				}
 		 	if ( modelCount ) // Safety check
 		 		{
-			  	CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));    
+			  	CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
 				if ( item && item->ModelItemType() == ETypeMailItem )
 					{
 					CFSMailMessage* messagePtr = &item->MessagePtr();
 					if ( messagePtr )
 						{
-						OpenHighlightedMailL();							
+						OpenHighlightedMailL();
 						}
 					}
 		 		}
- 			}        	
-        	break;         	
+ 			}
+        	break;
         case EAknSoftkeyBack:
 			{
 			if ( !iAppUi.ViewSwitchingOngoing())
@@ -834,18 +863,18 @@
 					}
                                 //<cmail> useless code removed
 				//HBufC* searchText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_FIND_DLG_SEARCH );
-				//iBarTextVisual->SetTextL( *searchText );		
+				//iBarTextVisual->SetTextL( *searchText );
 				//CleanupStack::PopAndDestroy( searchText );
                                 //</cmail>
 		 		TVwsViewId viewId = TVwsViewId( KFSEmailUiUid, MailListId );
-				TMailListActivationData tmp;	
+				TMailListActivationData tmp;
 				if ( iMsgDataCouldBeChanged )
 					{
 					tmp.iRequestRefresh = ETrue;
 					iMsgDataCouldBeChanged = EFalse; // List starts a new search
-					}	
-				const TPckgBuf<TMailListActivationData> pkgOut( tmp );	
-				iAppUi.ReturnToPreviousViewL( pkgOut );        								
+					}
+				const TPckgBuf<TMailListActivationData> pkgOut( tmp );
+				iAppUi.ReturnToPreviousViewL( pkgOut );
 				}
 			}
 	       	break;
@@ -860,7 +889,7 @@
 			if ( iSearchList->Count() )
 				{
 				iMsgDataCouldBeChanged = ETrue;
-		   	 	ReplyL( NULL ); // Function will check marked/highlighted msg				
+		   	 	ReplyL( NULL ); // Function will check marked/highlighted msg
 				}
 			}
             break;
@@ -881,7 +910,7 @@
 				iMsgDataCouldBeChanged = ETrue;
 				ForwardL( NULL ); // Function will check marked/highlighted msg
 				}
-			}      
+			}
             break;
 		case EFsEmailUiCmdGoToTop:
 			{
@@ -933,36 +962,36 @@
         	{
  			if ( iSearchList->Count() )
 				{
-				OpenHighlightedMailL();	       	
+				OpenHighlightedMailL();
 				}
 			}
-        	break;	
+        	break;
        	case EFsEmailUiCmdNewSearch:
         case EFsEmailUiCmdSearch:
         	{
-			LaunchSearchDialogL();						 			        		
+			LaunchSearchDialogL();
         	}
-        	break;     	        	   	        	
+        	break;
         case EFsEmailUiCmdStopSearch:
         	{
 			StopSearchL();
         	}
-        	break;  
+        	break;
        	case EFsEmailUiCmdMessageDetails:
 			{
  			if ( iSearchList->Count() )
 				{
 				CFSEmailUiMailListModelItem* item =
-					static_cast<CFSEmailUiMailListModelItem*>( Model()->Item( HighlightedIndex() ) );		
+					static_cast<CFSEmailUiMailListModelItem*>( Model()->Item( HighlightedIndex() ) );
 				CFSMailMessage& msg = item->MessagePtr();
-				
+
 	  			TMsgDetailsActivationData msgDetailsData;
 	  			msgDetailsData.iMailBoxId = msg.GetMailBoxId();
 	  			msgDetailsData.iFolderId = msg.GetFolderId();
 	  			msgDetailsData.iMessageId = msg.GetMessageId();
-				
+
 				const TPckgBuf<TMsgDetailsActivationData> pkgOut( msgDetailsData );
-				iAppUi.EnterFsEmailViewL( MsgDetailsViewId, KStartMsgDetailsToBeginning,  pkgOut);					
+				iAppUi.EnterFsEmailViewL( MsgDetailsViewId, KStartMsgDetailsToBeginning,  pkgOut);
 				}
 			}
 			break;
@@ -970,27 +999,27 @@
   			{
 			TFsEmailUiUtility::LaunchHelpL( KFSE_HLP_LAUNCHER_GRID );
   			}
-  			break; 
+  			break;
        	case EFsEmailUiCmdActionsCallSender:
 			{
 			if ( iSearchList->Count() )
 				{
-				CallToSenderL();		
+				CallToSenderL();
 				}
 			}
 			break;
     	case EFsEmailUiCmdActionsAddContact:
     		{
-			if ( iSearchList->Count() ) 
+			if ( iSearchList->Count() )
 				{
-			    CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));    			
+			    CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
 				if ( item && item->ModelItemType() == ETypeMailItem )
 					{
 					CFSMailAddress* fromAddress = item->MessagePtr().GetSender();
 					TDesC* emailAddress(0);
 					if ( fromAddress )
 						{
-						emailAddress = &fromAddress->GetEmailAddress();		
+						emailAddress = &fromAddress->GetEmailAddress();
 						}
 					if ( emailAddress && emailAddress->Length() )
 						{
@@ -998,19 +1027,19 @@
 						//Query to "update existing" or "Create new" --> EFALSE = user choosed "cancel"
 						if ( CFsDelayedLoader::InstanceL()->GetContactHandlerL()->AddtoContactsQueryL( aType ) )
 							{
-							CFsDelayedLoader::InstanceL()->GetContactHandlerL()->AddToContactL( 
-									*emailAddress, EContactUpdateEmail, aType, this );		
-							}										
+							CFsDelayedLoader::InstanceL()->GetContactHandlerL()->AddToContactL(
+									*emailAddress, EContactUpdateEmail, aType, this );
+							}
 						}
 					}
 				}
-    		}			
+    		}
 			break;
         case EFsEmailUiCmdMarkAsReadUnreadToggle:
             {
             if ( iSearchList->Count() )
                 {
-           		CFSEmailUiMailListModelItem* item = 
+           		CFSEmailUiMailListModelItem* item =
         			static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ));
         		if ( item && item->ModelItemType() == ETypeMailItem )
         			{
@@ -1041,37 +1070,55 @@
         case EFsEmailUiCmdCalActionsDecline:
         case EFsEmailUiCmdCalRemoveFromCalendar:
 			{
-		    CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));    			
-			if ( item && item->ModelItemType() == ETypeMailItem && 
+		    CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
+			if ( item && item->ModelItemType() == ETypeMailItem &&
 				 item->MessagePtr().IsFlagSet( EFSMsgFlag_CalendarMsg ) )
 				{
 			    ChangeReadStatusOfHighlightedL( ETrue );
-                iAppUi.MailViewer().HandleMrCommandL( aCommand, 
+                iAppUi.MailViewer().HandleMrCommandL( aCommand,
                                                        iAppUi.GetActiveMailbox()->GetId(),
                                                        item->MessagePtr().GetFolderId(),
                                                        item->MessagePtr().GetMessageId() );
-				}				
+				}
 			}
-        	break;							
+        	break;
 // <cmail> Prevent Download Manager opening with attachments
 //       	case EFsEmailUiCmdDownloadManager:
 //       		{
 //			if (iSearchOngoing)
 //				{
 //				StopSearchL();
-//				}	
-//  			iAppUi.EnterFsEmailViewL( DownloadManagerViewId );       			
-//       		}       		
+//				}
+//  			iAppUi.EnterFsEmailViewL( DownloadManagerViewId );
+//       		}
 //			break;
 // </cmail>
        	case EFsEmailUiCmdReadEmail:
 			{
 			iAppUi.StartReadingEmailsL();
-			}  			    		
+			}
 			break;
         default:
         	break;
-        }	
+        }
+
+    // Check if the focus needs to be removed after selecting an command from
+    // the stylus popup menu.
+    if ( ( iStylusPopUpMenuVisible ) &&
+         ( aCommand == KErrCancel ||
+           aCommand == EFsEmailUiCmdActionsDelete ||
+           aCommand == EFsEmailUiCmdMarkAsRead ||
+           aCommand == EFsEmailUiCmdMarkAsUnread ||
+           aCommand == EFsEmailUiCmdActionsMove ||
+           aCommand == EFsEmailUiCmdMarkUnmarkToggle ) )
+        {
+        // We end up here if the user selects an option from the pop up menu
+        // or exits the menu by tapping outside of it's area.
+        // Remove the focus from a list item if an item is focused.
+        iStylusPopUpMenuVisible = EFalse;
+        iAppUi.SetFocusVisibility( EFalse );
+        }
+
     }
 
 
@@ -1094,7 +1141,7 @@
 		if ( iSearchOngoing )
 		    {
 		    StopSearchL();
-		    }	        
+		    }
               //<cmail> make list and header visible by showing control group
 		else if( !iListAddedToControlGroup )
             {
@@ -1105,15 +1152,15 @@
 		iSearchList->SetScrollbarVisibilityL( EFsScrollbarAuto );
              //</cmail>
 		// Set searching text
-		HBufC* searchText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_FIND_DLG_SEARCHING );	
+		HBufC* searchText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_FIND_DLG_SEARCHING );
 		HBufC* finalText = HBufC::NewLC( searchText->Length() + iLatestSearchText->Length() + KSpace().Length() );
 		finalText->Des().Append( *searchText );
 		finalText->Des().Append( KSpace );
-		finalText->Des().Append( *iLatestSearchText );			
-		iBarTextVisual->SetTextL( *finalText );		
-		CleanupStack::PopAndDestroy( finalText );		
-		CleanupStack::PopAndDestroy( searchText );				
-		StartSearchL();		
+		finalText->Des().Append( *iLatestSearchText );
+		iBarTextVisual->SetTextL( *finalText );
+		CleanupStack::PopAndDestroy( finalText );
+		CleanupStack::PopAndDestroy( searchText );
+		StartSearchL();
 		}
 	return ret;
 	}
@@ -1147,7 +1194,7 @@
 			else
 				{
 				iListMode = EListControlTypeDoubleLinePreviewOn;
-				}					
+				}
 			}
 		}
 	else
@@ -1156,13 +1203,22 @@
 		iListMode = EListControlTypeDoubleLinePreviewOff;
 		}
 	}
-	
-	
+
+
 TBool CFSEmailUiSearchListVisualiser::OfferEventL(const TAlfEvent& aEvent)
     {
     FUNC_LOG;
     TBool result(EFalse);
-  
+    // On KeyUp of EStdKeyYes usually Call application is called - prevent it if call for contact was previously called
+    if ( iConsumeStdKeyYes_KeyUp && aEvent.IsKeyEvent() && (aEvent.Code() == EEventKeyUp )) 
+		{
+		iConsumeStdKeyYes_KeyUp = EFalse; // in case call button was consumed elsewhere first key up enables calling Call application
+		if ( EStdKeyYes == aEvent.KeyEvent().iScanCode) 
+			{
+			  result = ETrue; // consume not to switch to Call application when call to contact was processed
+			}
+		}
+
     if ( aEvent.IsKeyEvent() && aEvent.Code() == EEventKey )
         {
         TInt scanCode = aEvent.KeyEvent().iScanCode;
@@ -1186,7 +1242,7 @@
                 {
                 return ETrue;
                 }
-            
+
 			}
         switch ( scanCode )
             {
@@ -1196,32 +1252,24 @@
                 {
                 if ( iSearchList->Count() )
                     {
-                    OpenHighlightedMailL();         		
+                    OpenHighlightedMailL();
                     }
-                result = ETrue;         	
+                result = ETrue;
                 }
                 break;
             case EStdKeyYes:
                 {
                 if ( iSearchList->Count() )
                     {
-                    CallToSenderL();				
+                    result = CallToSenderL();	
+                    iConsumeStdKeyYes_KeyUp = result;
                     }
                 }
                 break;
-            case EStdKeyRightArrow:
-                 {     
-                 if ( iSearchList->Count() )
-                      {
-                      LaunchActionMenuL();                       
-                      }                
-                 result = ETrue; 
-                 }
-                 break;
             default:
                 {
                 // check keyboard shortcuts:
-                TInt command = 
+                TInt command =
                     iAppUi.ShortcutBinding().CommandForShortcutKey( aEvent.KeyEvent(),
                         CFSEmailUiShortcutBinding::EContextSearchResults );
                 if ( command >= 0 )
@@ -1237,8 +1285,8 @@
         {
         iSearchList->TreeControl()->OfferEventL(aEvent);
         }
-    
-    return result;   
+
+    return result;
     }
 
 
@@ -1251,20 +1299,20 @@
         SetSearchListLayoutAnchors();
         iScreenAnchorLayout->UpdateChildrenLayout();
         iSearchListLayout->UpdateChildrenLayout();
-        // Set bar text color from skin 
+        // Set bar text color from skin
         if ( iBarTextVisual )
             {
 			//<cmail>
 			SetHeaderAttributesL();
 			/*TRgb barTextColor( KRgbBlack );
-		    AknsUtils::GetCachedColor( AknsUtils::SkinInstance(), 
+		    AknsUtils::GetCachedColor( AknsUtils::SkinInstance(),
 		                               barTextColor, KAknsIIDFsTextColors, EAknsCIFsTextColorsCG10 );
 			iBarTextVisual->SetColor( barTextColor );*/
 			//</cmail>
             }
         RefreshL();
         //iSearchTreeListVisualizer->HideList();
-        iSearchTreeListVisualizer->ShowListL();                
+        iSearchTreeListVisualizer->ShowListL();
         }
  	}
 
@@ -1275,39 +1323,39 @@
 
 	// The anchor layout mirrors itself automatically when necessary.
 	// There's no need to mirror anything manually here.
-	
+
 	// BAR BACGROUND IMAGE
     TRect contBarRect = iAppUi.LayoutHandler()->GetControlBarRect();
     TPoint& tl( contBarRect.iTl );
-    iScreenAnchorLayout->SetAnchor(EAlfAnchorTopLeft, 0, 
+    iScreenAnchorLayout->SetAnchor(EAlfAnchorTopLeft, 0,
         EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
         EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
         TAlfTimedPoint( tl.iX, tl.iY ));
     TPoint& br( contBarRect.iBr );
-    iScreenAnchorLayout->SetAnchor(EAlfAnchorBottomRight, 0, 
+    iScreenAnchorLayout->SetAnchor(EAlfAnchorBottomRight, 0,
         EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
         EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
         TAlfTimedPoint( br.iX, br.iY ));
-        
+
 	// TEXT
     TRect textRect =  iAppUi.LayoutHandler()->GetSearchListHeaderTextLayout().TextRect();
     tl = textRect.iTl;
-    iScreenAnchorLayout->SetAnchor(EAlfAnchorTopLeft, 1, 
+    iScreenAnchorLayout->SetAnchor(EAlfAnchorTopLeft, 1,
         EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
         EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
         TAlfTimedPoint( tl.iX, tl.iY ));
     br = textRect.iBr;
-    iScreenAnchorLayout->SetAnchor(EAlfAnchorBottomRight, 1, 
+    iScreenAnchorLayout->SetAnchor(EAlfAnchorBottomRight, 1,
         EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
         EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
         TAlfTimedPoint( br.iX, br.iY ));
 
     TRect listRect = iAppUi.LayoutHandler()->GetListRect( ETrue );
-    iScreenAnchorLayout->SetAnchor(EAlfAnchorTopLeft, 2, 
+    iScreenAnchorLayout->SetAnchor(EAlfAnchorTopLeft, 2,
         EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
         EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
         TAlfTimedPoint(listRect.iTl.iX, listRect.iTl.iY));
-    iScreenAnchorLayout->SetAnchor(EAlfAnchorBottomRight, 2, 
+    iScreenAnchorLayout->SetAnchor(EAlfAnchorBottomRight, 2,
         EAlfAnchorOriginLeft, EAlfAnchorOriginTop,
         EAlfAnchorMetricAbsolute, EAlfAnchorMetricAbsolute,
         TAlfTimedPoint(listRect.iBr.iX, listRect.iBr.iY));
@@ -1320,24 +1368,24 @@
 	TFSMailMsgId msgId; // constructs null ID
     if ( 0 <= aItemIdx && aItemIdx < iModel->Count() )
         {
-        CFSEmailUiMailListModelItem* item = 
+        CFSEmailUiMailListModelItem* item =
     			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(aItemIdx));
     	if ( item->ModelItemType() == ETypeMailItem )
     	    {
     	    msgId = item->MessagePtr().GetMessageId();
     	    }
         }
-        
+
     return msgId;
     }
-	
+
 TFSMailMsgId CFSEmailUiSearchListVisualiser::MsgIdFromListId( TFsTreeItemId aListId ) const
 	{
     FUNC_LOG;
 	TFSMailMsgId msgId;
 	for ( TInt i=0; i<iModel->Count();i++)
 		{
-		CFSEmailUiMailListModelItem* item = 
+		CFSEmailUiMailListModelItem* item =
 			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i));
 		if ( item->ModelItemType() == ETypeMailItem &&
 		     aListId == item->CorrespondingListId() )
@@ -1345,7 +1393,7 @@
 			msgId = item->MessagePtr().GetMessageId();
 			break;
 			}
-		}	
+		}
 	return msgId;
 	}
 
@@ -1355,17 +1403,17 @@
 	CFSMailMessage* msgPtr(NULL);
 	for ( TInt i=0; i<iModel->Count();i++)
 		{
-		CFSEmailUiMailListModelItem* item = 
+		CFSEmailUiMailListModelItem* item =
 			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i));
 		if ( aListId == item->CorrespondingListId() )
 			{
 			msgPtr = &item->MessagePtr();
 			}
 		}
-	return *msgPtr;	
+	return *msgPtr;
 	}
-	
-	// Item data and visualiser helper functions 
+
+	// Item data and visualiser helper functions
 MFsTreeItemData* CFSEmailUiSearchListVisualiser::ItemDataFromItemId( TFsTreeItemId aItemId )
 	{
     FUNC_LOG;
@@ -1380,7 +1428,7 @@
 		}
 	return itemData;
 	}
-	
+
 MFsTreeItemVisualizer* CFSEmailUiSearchListVisualiser::ItemVisualiserFromItemId( TFsTreeItemId aItemId )
 	{
     FUNC_LOG;
@@ -1401,10 +1449,10 @@
     {
     FUNC_LOG;
 	TInt idx = KErrNotFound;
-	
+
 	for ( TInt i=0; i<iModel->Count() ; i++ )
 		{
-		CFSEmailUiMailListModelItem* item = 
+		CFSEmailUiMailListModelItem* item =
 			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i));
 		if ( item->ModelItemType() == ETypeMailItem &&
 		     aMessageId == item->MessagePtr().GetMessageId() )
@@ -1412,49 +1460,49 @@
 			idx = i;
 			break;
 			}
-		}	
-	
+		}
+
 	return idx;
     }
-	
+
 TInt CFSEmailUiSearchListVisualiser::NextMessageIndex( TInt aCurMsgIdx ) const
     {
     FUNC_LOG;
 	TInt idx = KErrNotFound;
-	
+
 	for ( TInt i=aCurMsgIdx+1 ; i<iModel->Count() ; i++ )
 		{
-		CFSEmailUiMailListModelItem* item = 
+		CFSEmailUiMailListModelItem* item =
 			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i));
 		if ( item && item->ModelItemType() == ETypeMailItem )
 			{
 			idx = i;
 			break;
 			}
-		}	
-	
+		}
+
 	return idx;
     }
-	
+
 TInt CFSEmailUiSearchListVisualiser::PreviousMessageIndex( TInt aCurMsgIdx ) const
     {
     FUNC_LOG;
 	TInt idx = KErrNotFound;
-	
+
 	if ( aCurMsgIdx < iModel->Count() )
 	    {
     	for ( TInt i=aCurMsgIdx-1 ; i>=0 ; i-- )
     		{
-    		CFSEmailUiMailListModelItem* item = 
+    		CFSEmailUiMailListModelItem* item =
     			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item(i));
     		if ( item && item->ModelItemType() == ETypeMailItem )
     			{
     			idx = i;
     			break;
     			}
-    		}	
+    		}
 	    }
-	
+
 	return idx;
     }
 
@@ -1465,29 +1513,29 @@
 	if (iSearchOngoing)
 		{
 		StopSearchL();
-		}		
-	
+		}
+
 	CFSEmailUiMailListModelItem* item =
 		static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ) );
 	if ( item->ModelItemType() == ETypeMailItem )
 		{
 		// First make sure that the highlighted message really exists in the store
-		// Get confirmed msg ptr 
+		// Get confirmed msg ptr
 		CFSMailMessage* confirmedMsgPtr(0);
-		TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL(iAppUi.GetActiveMailboxId(), 
+		TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL(iAppUi.GetActiveMailboxId(),
 							item->MessagePtr().GetFolderId(), item->MessagePtr().GetMessageId(), EFSMsgDataEnvelope ) );
 		if ( confirmedMsgPtr && err == KErrNone )
 			{
-		 	CFSMailFolder* highlightedMsgFolder = 
+		 	CFSMailFolder* highlightedMsgFolder =
 		 		iAppUi.GetMailClient()->GetFolderByUidL( iAppUi.GetActiveMailboxId(), confirmedMsgPtr->GetFolderId() );
-			CleanupStack::PushL( highlightedMsgFolder ); 
+			CleanupStack::PushL( highlightedMsgFolder );
 			TInt msgFolderType = highlightedMsgFolder->GetFolderType();
 			TFSMailMsgId highlightedMsgFolderId = highlightedMsgFolder->GetFolderId();
-			CleanupStack::PopAndDestroy( highlightedMsgFolder );			
+			CleanupStack::PopAndDestroy( highlightedMsgFolder );
 			// Pointer confirmed, store Id and delete not needed anymore
 			TFSMailMsgId confirmedId = confirmedMsgPtr->GetMessageId();
 			delete confirmedMsgPtr;
-			
+
 			// Open to editor from drafts
 			if ( msgFolderType == EFSDraftsFolder )
 				{
@@ -1496,7 +1544,7 @@
 				params.iActivatedExternally = EFalse;
 				params.iMsgId = confirmedId;
 				params.iFolderId = highlightedMsgFolderId;
-			    iAppUi.LaunchEditorL( KEditorCmdOpen, params );						
+			    iAppUi.LaunchEditorL( KEditorCmdOpen, params );
 				}
 			else if ( msgFolderType == EFSOutbox )
 				{
@@ -1504,19 +1552,19 @@
 				}
 			else
 				{
-				THtmlViewerActivationData tmp;	
+				THtmlViewerActivationData tmp;
 				tmp.iMailBoxId = iAppUi.GetActiveMailbox()->GetId();
 				tmp.iMessageId = confirmedId;
-				tmp.iFolderId = highlightedMsgFolderId;	
-				
-				const TPckgBuf<THtmlViewerActivationData> pkgOut( tmp );	
-				ChangeReadStatusOfHighlightedL( ETrue ); 									
-				iAppUi.EnterFsEmailViewL( HtmlViewerId, KStartViewerWithMsgId, pkgOut );								
-				}					
+				tmp.iFolderId = highlightedMsgFolderId;
+
+				const TPckgBuf<THtmlViewerActivationData> pkgOut( tmp );
+				ChangeReadStatusOfHighlightedL( ETrue );
+				iAppUi.EnterFsEmailViewL( HtmlViewerId, KStartViewerWithMsgId, pkgOut );
+				}
 			}
 		else if ( err == KErrNotFound )
 			{
-			TRAP_IGNORE( CheckAndUpdateFocusedMessageL() );							
+			TRAP_IGNORE( CheckAndUpdateFocusedMessageL() );
 			}
 		}
 	}
@@ -1528,13 +1576,13 @@
     FUNC_LOG;
 	DoReplyForwardL( KEditorCmdReply, aMsgPtr );
 	}
-	
+
 void CFSEmailUiSearchListVisualiser::ReplyAllL(  CFSMailMessage* aMsgPtr )
 	{
     FUNC_LOG;
 	DoReplyForwardL( KEditorCmdReplyAll, aMsgPtr );
 	}
-	
+
 void CFSEmailUiSearchListVisualiser::ForwardL( CFSMailMessage* aMsgPtr )
 	{
     FUNC_LOG;
@@ -1548,14 +1596,14 @@
 	if ( iSearchOngoing )
 		{
 		StopSearchL();
-		} 
-    
+		}
+
     if ( iModel->Count() )
         {
        	CFSMailMessage* messagePointer = aMsgPtr;
     	if ( !messagePointer  )
     		{
-            RFsTreeItemIdList markedEntries;	
+            RFsTreeItemIdList markedEntries;
     		iSearchList->GetMarkedItemsL( markedEntries );
     		TInt markedCount = markedEntries.Count();
     		if ( markedCount == 0 )
@@ -1570,19 +1618,19 @@
     		else if ( markedCount == 1)
     			{
     			messagePointer = &MsgPtrFromListId( markedEntries[0] );
-    			}	
+    			}
     		}
     	if ( messagePointer )
     		{
     		// No reply/Forward for calendar messages, at least not in 1.0
-	   		if ( !messagePointer->IsFlagSet( EFSMsgFlag_CalendarMsg ) ) 
+	   		if ( !messagePointer->IsFlagSet( EFSMsgFlag_CalendarMsg ) )
     			{
 	    		TEditorLaunchParams params;
 	    		params.iMailboxId = iAppUi.GetActiveMailboxId();
-	    		params.iActivatedExternally = EFalse;								
+	    		params.iActivatedExternally = EFalse;
 	    		params.iMsgId = messagePointer->GetMessageId();
-	    		iAppUi.LaunchEditorL( aMode, params );			    			
-    			}      				
+	    		iAppUi.LaunchEditorL( aMode, params );
+    			}
     		}
         }
     }
@@ -1591,7 +1639,7 @@
 	{
     FUNC_LOG;
 	iSearchCount++;
-	
+
     // Reset previous results before starting new search
 	// <cmail> fixed CS high cat. finding
 	ResetResultListL();
@@ -1599,12 +1647,12 @@
     while ( !lex.Eos() )
         {
         HBufC* token = lex.NextToken().AllocLC();
-      
+
         iSearchStrings.AppendL( token );
-        
+
         CleanupStack::Pop( token );
         }
-    
+
 	TFSMailSortCriteria sortCriteria;
     sortCriteria.iField = EFSMailSortByDate;
     sortCriteria.iOrder = EFSMailDescending;
@@ -1612,7 +1660,7 @@
 	// Model and list is set to be empty, set also MSK to empty
 	SetMskL();
 	// Initialisr TextSearcher
-	
+
 	// Start search.
 	iMailBox->SearchL( iSearchStrings, sortCriteria, *this );
 	}
@@ -1622,25 +1670,31 @@
     FUNC_LOG;
 	iSearchOngoing = EFalse;
 	if ( iMailBox )
-		{		
+		{
 		iMailBox->CancelSearch();
-		}		
+		}
 	HBufC* searchText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_FIND_DLG_SEARCH_RESULTS );
 	HBufC* finalText = HBufC::NewLC( searchText->Length() + iLatestSearchText->Length() + 4 );
 	finalText->Des().Append( *searchText );
 	finalText->Des().Append( KSpace );
-	finalText->Des().Append( *iLatestSearchText );			
-	iBarTextVisual->SetTextL( *finalText );		
+	finalText->Des().Append( *iLatestSearchText );
+	iBarTextVisual->SetTextL( *finalText );
 	CleanupStack::PopAndDestroy( finalText );
-	CleanupStack::PopAndDestroy( searchText );	
+	CleanupStack::PopAndDestroy( searchText );
+	iRequiredSearchPriority = KStandardSearchPriority; // <cmail> return back
 	}
 
 void CFSEmailUiSearchListVisualiser::ResetResultListL()
     {
-	// <cmail> fixed CS high cat. finding    
     FUNC_LOG;
-    iModel->Reset();
-    iSearchList->RemoveAllL();
+    if( iModel )
+        {
+        iModel->Reset();
+        }
+    if( iSearchList )
+        {
+        iSearchList->RemoveAllL();
+        }
     iSearchListItemArray.Reset();
     iSearchStrings.ResetAndDestroy();
     }
@@ -1648,7 +1702,7 @@
 void CFSEmailUiSearchListVisualiser::MatchFoundL( CFSMailMessage* aMatchMessage )
 	{
     FUNC_LOG;
-    
+
 	if ( !iSearchList->IsFocused() )
 		{
 		iSearchList->SetFocusedL( ETrue );
@@ -1658,29 +1712,29 @@
 	// This is done because it seems that matched message objects seems to be different
 	// in some protocols than original messages
 	CleanupStack::PushL( aMatchMessage );
-	CFSMailMessage* confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL( iAppUi.GetActiveMailboxId(), 
+	CFSMailMessage* confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL( iAppUi.GetActiveMailboxId(),
 						aMatchMessage->GetFolderId(), aMatchMessage->GetMessageId(), EFSMsgDataEnvelope );
 	CleanupStack::PopAndDestroy( aMatchMessage );
-	
+
 	if ( confirmedMsgPtr ) // Append item into model and list if msg pointer was confirmed
 		{
 		// Append to model
-		CFSEmailUiMailListModelItem* newItem = CFSEmailUiMailListModelItem::NewL( confirmedMsgPtr, ETypeMailItem);		    				    	
+		CFSEmailUiMailListModelItem* newItem = CFSEmailUiMailListModelItem::NewL( confirmedMsgPtr, ETypeMailItem);
 		iModel->AppendL(newItem);
 
 		// Append to list
 	   	TRect screenRect;
-	 	AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect );	 
+	 	AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect );
 
-		CFSMailAddress* fromAddress = confirmedMsgPtr->GetSender();		
-		TDesC* diplayName(0);
+		CFSMailAddress* fromAddress = confirmedMsgPtr->GetSender();
+		TDesC* diplayName = NULL;
 		if ( fromAddress )
 			{
-			diplayName = &fromAddress->GetDisplayName();				
+			diplayName = &fromAddress->GetDisplayName();
 			}
-			
+
 		// Set first line of data
-		HBufC* dispName(0);
+		HBufC* dispName = NULL;
 		if ( fromAddress && diplayName && diplayName->Length() != 0 )
 			{
 			dispName = HBufC::NewLC( diplayName->Length() );
@@ -1694,79 +1748,67 @@
 		else
 			{
 			dispName = HBufC::NewLC( 0 );
-			dispName->Des().Append( KNullDesC );				
+			dispName->Des().Append( KNullDesC );
 			}
-			
+
 		// Drop out unwanted characters from display name such as <> and ""
 		// And set display name data
 		if ( dispName )
 			{
-			TFsEmailUiUtility::StripDisplayName( *dispName );		
+			TFsEmailUiUtility::StripDisplayName( *dispName );
 			}
-		// Create item data and 
-		CFsTreePlainTwoLineItemData* itemData = CFsTreePlainTwoLineItemData::NewL();			
+		// Create item data and
+		CFsTreePlainTwoLineItemData* itemData = CFsTreePlainTwoLineItemData::NewL();
 
-		itemData->SetDataL( *dispName );				
+		itemData->SetDataL( *dispName );
 		CleanupStack::PopAndDestroy( dispName );
-		
+
 		// Set time text data
-		HBufC* timeText = TFsEmailUiUtility::ListMsgTimeTextFromMsgLC( confirmedMsgPtr, EFalse );			
-		itemData->SetDateTimeDataL ( *timeText );	 			
+		HBufC* timeText = TFsEmailUiUtility::ListMsgTimeTextFromMsgLC( confirmedMsgPtr, EFalse );
+		itemData->SetDateTimeDataL ( *timeText );
 		CleanupStack::PopAndDestroy();
 
 		// Set second line of data
-	
 		HBufC* subjectText = TFsEmailUiUtility::CreateSubjectTextLC( confirmedMsgPtr );
-
-		
-		    itemData->SetSecondaryDataL( *subjectText);
-	
-              
-              
-		
+		itemData->SetSecondaryDataL( *subjectText );
 		CleanupStack::PopAndDestroy( subjectText );
 
-		
 		// Set message icon
-		CAlfTexture* itemTexture = &TFsEmailUiUtility::GetMsgIcon( confirmedMsgPtr, *iAppUi.FsTextureManager() );	
+		CAlfTexture* itemTexture = &TFsEmailUiUtility::GetMsgIcon( confirmedMsgPtr, *iAppUi.FsTextureManager() );
 		itemData->SetIcon ( *itemTexture );
 	    CFsTreePlainTwoLineItemVisualizer* itemVisualizer = CFsTreePlainTwoLineItemVisualizer::NewL(*iSearchList->TreeControl());
-	   
-	    
-		itemVisualizer->SetExtendable( ETrue );     		 
+
+		itemVisualizer->SetExtendable( ETrue );
 		TInt itemHeight = iAppUi.LayoutHandler()->OneLineListItemHeight();
 
-		itemVisualizer->SetSize(TSize(screenRect.Width(), itemHeight));
-	 	itemVisualizer->SetExtendedSize(TSize(screenRect.Width(), 2*itemHeight));	 
-	    
-	 	// Set menu icon
-	 	itemVisualizer->SetFlags( itemVisualizer->Flags() | KFsTreeListItemHasMenu );
-	    
+		itemVisualizer->SetSize( TSize( screenRect.Width(), itemHeight ) );
+	 	itemVisualizer->SetExtendedSize( TSize( screenRect.Width(), 2*itemHeight ) );
+
 		// Set font height
-		itemVisualizer->SetFontHeight( iAppUi.LayoutHandler()->ListItemFontHeightInTwips() );		
+		itemVisualizer->SetFontHeight( iAppUi.LayoutHandler()->ListItemFontHeightInTwips() );
 
 		// Set font bolding
 		if ( confirmedMsgPtr->IsFlagSet( EFSMsgFlag_Read ) )
-			{	
+			{
 			itemVisualizer->SetTextBold( EFalse );
 			}
 		else
 			{
 			itemVisualizer->SetTextBold( ETrue );
-			}		
+			}
 
-	  	// Set correct skin text colors for the list items  
+	  	// Set correct skin text colors for the list items
 	   	TRgb focusedColor = iAppUi.LayoutHandler()->ListFocusedStateTextSkinColor();
 	   	TRgb normalColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor();
 	    itemVisualizer->SetFocusedStateTextColor( focusedColor );
 	    itemVisualizer->SetNormalStateTextColor( normalColor );
-	    
+
 		switch ( iListMode )
 		    {
 		    case EListControlTypeDoubleLinePreviewOn:
 		    case EListControlTypeSingleLinePreviewOn:
-				itemVisualizer->SetPreviewPaneOn( ETrue ); 
-				itemVisualizer->SetPreviewPaneEnabledSize( TSize(screenRect.Width(), 3*itemHeight) ); 
+				itemVisualizer->SetPreviewPaneOn( ETrue );
+				itemVisualizer->SetPreviewPaneEnabledSize( TSize(screenRect.Width(), 3*itemHeight) );
 		        // fall through
 		    case EListControlTypeDoubleLinePreviewOff:
 		    case EListControlTypeSingleLinePreviewOff:
@@ -1778,7 +1820,7 @@
 		    }
 
 		// Update initial preview pane text for items if needed
-	  	if ( iListMode == EListControlTypeSingleLinePreviewOn || 
+	  	if ( iListMode == EListControlTypeSingleLinePreviewOn ||
 			 iListMode == EListControlTypeDoubleLinePreviewOn )
 			{
 			UpdatePreviewPaneTextForItemL( itemData, confirmedMsgPtr );
@@ -1790,35 +1832,35 @@
 			if ( confirmedMsgPtr->IsFlagSet( EFSMsgFlag_FollowUp ) )
 				{
 			 	itemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagList ) );
-				itemVisualizer->SetFlagIconVisible( ETrue );		 		
+				itemVisualizer->SetFlagIconVisible( ETrue );
 				}
 			else if ( confirmedMsgPtr->IsFlagSet( EFSMsgFlag_FollowUpComplete ) )
 				{
 			 	itemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagCompleteList ) );
-				itemVisualizer->SetFlagIconVisible( ETrue );				 		
+				itemVisualizer->SetFlagIconVisible( ETrue );
 				}
 			else
 				{
-		 	    itemVisualizer->SetFlagIconVisible( EFalse );			
-				}		
+		 	    itemVisualizer->SetFlagIconVisible( EFalse );
+				}
 			}
 	 	else
 	 	    {
 	 	    itemVisualizer->SetFlagIconVisible( EFalse );
 	 	    }
 
-		TFsTreeItemId itemId = iSearchList->InsertItemL( *itemData, *itemVisualizer, KFsTreeRootID );    		  
+		TFsTreeItemId itemId = iSearchList->InsertItemL( *itemData, *itemVisualizer, KFsTreeRootID );
 		if (iSearchList->FocusedItem() == KFsTreeNoneID)
 		    {
 		    iSearchList->SetFocusedItemL(itemId);
 		    }
-		
+
 		SSearchListItem searchListItem;
 		searchListItem.iSearchListItemId = itemId;
 		searchListItem.iTreeItemData = itemData;
-		searchListItem.iTreeItemVisualiser = itemVisualizer;			
+		searchListItem.iTreeItemVisualiser = itemVisualizer;
 	    iSearchListItemArray.AppendL( searchListItem );
-	    newItem->AddCorrespondingListId( itemId );      
+	    newItem->AddCorrespondingListId( itemId );
 
 		if ( iSearchList->Count() == 1 ) // Call only once, temp fix because of error in generic
 			{
@@ -1830,14 +1872,14 @@
 			else
 				{
 				// Set the extendedability and extended size
-		   		iSearchTreeListVisualizer->SetItemsAlwaysExtendedL( EFalse ); 		
-				}		
-			
+		   		iSearchTreeListVisualizer->SetItemsAlwaysExtendedL( EFalse );
+				}
+
 			// Set msk to "Open when first is found".
 			SetMskL();
-			}	
+			}
 		}
-        
+
 	}
 
 // ---------------------------------------------------------------------------
@@ -1853,7 +1895,7 @@
     if ( iFirstStartCompleted ) // Safety
         {
         CFSMailBox* activeMailbox = iAppUi.GetActiveMailbox();
-        if ( activeMailbox && aMailbox.Id() == activeMailbox->GetId().Id() ) // Safety, in list events that only concern active mailbox are handled 
+        if ( activeMailbox && aMailbox.Id() == activeMailbox->GetId().Id() ) // Safety, in list events that only concern active mailbox are handled
             {
             if ( iModel && iModel->Count() && aEvent == TFSEventMailDeleted )
                 {
@@ -1861,7 +1903,7 @@
                 if ( removedEntries && removedEntries->Count() )
                     {
                     RemoveMsgItemsFromListIfFoundL( *removedEntries );
-                    }               
+                    }
                 }
             else if ( iModel && iModel->Count() && aEvent == TFSEventMailChanged )
                 {
@@ -1870,16 +1912,16 @@
                 // Get ID of the folder that this cahnge concerns.
                 TFSMailMsgId* parentFolderId = static_cast<TFSMailMsgId*>( aParam2 );
                 for ( TInt i=0 ; i < entries->Count() ; i++)
-                    {           
+                    {
                     TFSMailMsgId entryId = (*entries)[i];
-                    CFSMailMessage* confirmedMsgPtr(0); 
-                    TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL( iAppUi.GetActiveMailboxId(), 
+                    CFSMailMessage* confirmedMsgPtr(0);
+                    TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL( iAppUi.GetActiveMailboxId(),
                                             *parentFolderId, entryId, EFSMsgDataEnvelope ) );
                     if ( confirmedMsgPtr && err == KErrNone )
                         {
                         CleanupStack::PushL( confirmedMsgPtr );
                         UpdateMsgIconAndBoldingL( confirmedMsgPtr );
-                        CleanupStack::PopAndDestroy( confirmedMsgPtr ); 
+                        CleanupStack::PopAndDestroy( confirmedMsgPtr );
                         }
                     }
                 }
@@ -1891,7 +1933,7 @@
 // RemoveMsgItemsFromListIfFoundL
 // Message removing from list if found. Does not panic or return found status.
 // ---------------------------------------------------------------------------
-//	
+//
 void CFSEmailUiSearchListVisualiser::RemoveMsgItemsFromListIfFoundL( const RArray<TFSMailMsgId>& aEntryIds )
 	{
     FUNC_LOG;
@@ -1905,12 +1947,12 @@
 	        	TInt idx = ItemIndexFromMessageId( entryId );
 	        	if ( idx >= 0 )
 	        	    {
-	    			iSearchList->RemoveL( iSearchListItemArray[idx].iSearchListItemId ); // remove from list			
-	    			iSearchListItemArray.Remove( idx ); // remove from internal array.		 				 	
+	    			iSearchList->RemoveL( iSearchListItemArray[idx].iSearchListItemId ); // remove from list
+	    			iSearchListItemArray.Remove( idx ); // remove from internal array.
 	    	 		iModel->RemoveAndDestroy( idx ); // Remove from model
-	        	    }    	
+	        	    }
 	    		}
-		    }					
+		    }
 		}
 	}
 
@@ -1923,7 +1965,7 @@
 	{
     FUNC_LOG;
 	// Preview pane data update
-	if ( aMsgPtr && ( iListMode == EListControlTypeSingleLinePreviewOn || 
+	if ( aMsgPtr && ( iListMode == EListControlTypeSingleLinePreviewOn ||
 		 iListMode == EListControlTypeDoubleLinePreviewOn ) )
 		{
 		CFSMailMessagePart* textPart = aMsgPtr->PlainTextBodyPartL();
@@ -1935,12 +1977,12 @@
             HBufC* plainTextData16 = HBufC::NewLC( previewSize );
             TPtr textPtr = plainTextData16->Des();
 
-            textPart->GetContentToBufferL( textPtr, 0 ); // Zero is start offset                
-            // Crop out line feed, paragraph break, and tabulator           
+            textPart->GetContentToBufferL( textPtr, 0 ); // Zero is start offset
+            // Crop out line feed, paragraph break, and tabulator
             TFsEmailUiUtility::FilterListItemTextL( textPtr );
             aItemData->SetPreviewPaneDataL( *plainTextData16 );
 
-            CleanupStack::PopAndDestroy( plainTextData16 );                     
+            CleanupStack::PopAndDestroy( plainTextData16 );
 			}
 
 		// Else display message size in preview pane
@@ -1949,7 +1991,7 @@
 			TUint contentSize = aMsgPtr->ContentSize();
 			HBufC* sizeDesc = TFsEmailUiUtility::CreateSizeDescLC( contentSize );
 			HBufC* msgSizeText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_PREV_PANE_MSG_SIZE, *sizeDesc );
-			aItemData->SetPreviewPaneDataL( *msgSizeText ); 				
+			aItemData->SetPreviewPaneDataL( *msgSizeText );
 			CleanupStack::PopAndDestroy( msgSizeText );
 			CleanupStack::PopAndDestroy( sizeDesc );
 			}
@@ -1965,10 +2007,11 @@
 	HBufC* finalText = HBufC::NewLC( searchText->Length() + iLatestSearchText->Length() + 4 );
 	finalText->Des().Append( *searchText );
 	finalText->Des().Append( KSpace );
-	finalText->Des().Append( *iLatestSearchText );			
-	iBarTextVisual->SetTextL( *finalText );		
+	finalText->Des().Append( *iLatestSearchText );
+	iBarTextVisual->SetTextL( *finalText );
 	CleanupStack::PopAndDestroy( finalText );
-	CleanupStack::PopAndDestroy( searchText );	
+	CleanupStack::PopAndDestroy( searchText );
+	iRequiredSearchPriority = KStandardSearchPriority; //<cmail> return back
 	}
 
 
@@ -1977,9 +2020,9 @@
     FUNC_LOG;
 	if ( iSearchList->Count() )
 		{
-		CFSEmailUiMailListModelItem* selectedItem = 
+		CFSEmailUiMailListModelItem* selectedItem =
 	 		static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ));
-	 		
+
 	 	TBool wasRead = selectedItem->MessagePtr().IsFlagSet( EFSMsgFlag_Read );
 	 	if ( (wasRead && !aRead) || (!wasRead && aRead) )
 	 	    {
@@ -2001,22 +2044,22 @@
     		UpdateMsgIconAndBoldingL( HighlightedIndex() );
 	 	    }
 		}
-	} 
-	
+	}
+
 void CFSEmailUiSearchListVisualiser::CheckAndUpdateFocusedMessageL()
 	{
     FUNC_LOG;
 	if ( iModel && iModel->Count() ) // Needed safety check
 		{
 		TInt highlightedIndex = HighlightedIndex();
-		CFSEmailUiMailListModelItem* selectedItem = 
-	 		static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( highlightedIndex ));	
+		CFSEmailUiMailListModelItem* selectedItem =
+	 		static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( highlightedIndex ));
 		if ( selectedItem->ModelItemType() == ETypeMailItem )
 			{
-			CFSMailMessage* msgPtr = &selectedItem->MessagePtr();		
+			CFSMailMessage* msgPtr = &selectedItem->MessagePtr();
 			if ( msgPtr )
 				{
-				CFSMailFolder* folderPtr = 
+				CFSMailFolder* folderPtr =
 				    iAppUi.GetMailClient()->GetFolderByUidL( iAppUi.GetActiveMailboxId(), msgPtr->GetFolderId() );
 				CleanupStack::PushL( folderPtr );
 
@@ -2024,28 +2067,28 @@
 	    			{
 	    			// Pointer is not valid anymore, msg has been delete,
 	    			// so it must be removed from the search list
-	    			RemoveFocusedFromListL();    			
+	    			RemoveFocusedFromListL();
 	    			}
-	    		else 
+	    		else
 	    			{
 	    			CFSMailMessage* confirmedMsgPtr(0);
-	    			TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL( iAppUi.GetActiveMailboxId(), 
+	    			TRAPD( err, confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL( iAppUi.GetActiveMailboxId(),
 	    										folderPtr->GetFolderId(), msgPtr->GetMessageId(), EFSMsgDataEnvelope ) );
 	    			if ( confirmedMsgPtr && err == KErrNone)
 	    				{
 	    				CleanupStack::PushL( confirmedMsgPtr );
 	    				UpdateMsgIconAndBoldingL( confirmedMsgPtr );
-	    				CleanupStack::PopAndDestroy( confirmedMsgPtr );	
+	    				CleanupStack::PopAndDestroy( confirmedMsgPtr );
 	    				}
 	    			else
 	    				{
-	    				RemoveFocusedFromListL();	
+	    				RemoveFocusedFromListL();
 	    				}
 	    			}
-	    			
+
 	    		CleanupStack::PopAndDestroy( folderPtr );
 				}
-			}		
+			}
 		}
 	}
 
@@ -2055,10 +2098,10 @@
 	iMsgDataCouldBeChanged = ETrue;
 	SSearchListItem item;
 	item.iSearchListItemId = iSearchList->FocusedItem();
-	TInt IndexToBeDestroyed = iSearchListItemArray.Find( item );								
-	iSearchListItemArray.Remove( IndexToBeDestroyed ); // remove from internal array.		 				 	
-	iModel->RemoveAndDestroy( IndexToBeDestroyed ); // Remove from model												
-	iSearchList->RemoveL( iSearchList->FocusedItem() );		// remove from list						
+	TInt IndexToBeDestroyed = iSearchListItemArray.Find( item );
+	iSearchListItemArray.Remove( IndexToBeDestroyed ); // remove from internal array.
+	iModel->RemoveAndDestroy( IndexToBeDestroyed ); // Remove from model
+	iSearchList->RemoveL( iSearchList->FocusedItem() );		// remove from list
 	}
 
 
@@ -2073,7 +2116,7 @@
 			{
 			CFSEmailUiMailListModelItem* item =
 				static_cast<CFSEmailUiMailListModelItem*>( Model()->Item(i) );
-			if ( item && item->ModelItemType()==ETypeMailItem && 
+			if ( item && item->ModelItemType()==ETypeMailItem &&
 				 item->MessagePtr().GetMessageId() == aMsgPtr->GetMessageId() )
 				{
 				// Update all flags
@@ -2083,12 +2126,12 @@
 				    {
     				item->MessagePtr().ResetFlag( prevFlags );
     				item->MessagePtr().SetFlag( newFlags );
-    				
-    				// Save changed flags in internal model array					
+
+    				// Save changed flags in internal model array
     				item->MessagePtr().SaveMessageL();
     				iMsgDataCouldBeChanged = ETrue;
 				    }
-				
+
 				// Update the list item graphics
 				UpdateMsgIconAndBoldingL( i );
 				break;
@@ -2108,18 +2151,18 @@
 	    if ( item && item->ModelItemType()==ETypeMailItem )
 		    {
 		    CFSMailMessage* msgPtr = &item->MessagePtr();
-		    CAlfTexture* itemTexture = &TFsEmailUiUtility::GetMsgIcon( msgPtr, *iAppUi.FsTextureManager() );	
-		    CFsTreePlainTwoLineItemData* itemData = 
+		    CAlfTexture* itemTexture = &TFsEmailUiUtility::GetMsgIcon( msgPtr, *iAppUi.FsTextureManager() );
+		    CFsTreePlainTwoLineItemData* itemData =
                 static_cast<CFsTreePlainTwoLineItemData*>( iSearchListItemArray[aListIndex].iTreeItemData );
-		    CFsTreePlainTwoLineItemVisualizer* itemVis = 
-                static_cast<CFsTreePlainTwoLineItemVisualizer*>( iSearchListItemArray[aListIndex].iTreeItemVisualiser );			
-		    itemData->SetIcon( *itemTexture );		
+		    CFsTreePlainTwoLineItemVisualizer* itemVis =
+                static_cast<CFsTreePlainTwoLineItemVisualizer*>( iSearchListItemArray[aListIndex].iTreeItemVisualiser );
+		    itemData->SetIcon( *itemTexture );
 		    if ( msgPtr->IsFlagSet( EFSMsgFlag_Read ) )
-			    {			
+			    {
 			    itemVis->SetTextBold( EFalse );
 			    }
 		    else
-			   {	
+			   {
 			   itemVis->SetTextBold( ETrue );
 			   }
 		    // Set follow up flag icon correctly
@@ -2128,29 +2171,29 @@
 			    if ( msgPtr->IsFlagSet( EFSMsgFlag_FollowUp ) )
 				    {
 			 	    itemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagList ) );
-				    itemVis->SetFlagIconVisible( ETrue );		 		
+				    itemVis->SetFlagIconVisible( ETrue );
 				    }
 			    else if ( msgPtr->IsFlagSet( EFSMsgFlag_FollowUpComplete ) )
 				    {
 			 	    itemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagCompleteList ) );
-				    itemVis->SetFlagIconVisible( ETrue );				 		
+				    itemVis->SetFlagIconVisible( ETrue );
 				    }
 			    else
 				    {
-		 	        itemVis->SetFlagIconVisible( EFalse );			
-				    }		
+		 	        itemVis->SetFlagIconVisible( EFalse );
+				    }
 			    }
 		    else
 		        {
 		        itemVis->SetFlagIconVisible( EFalse );
-		        }		    
+		        }
 		    iSearchTreeListVisualizer->UpdateItemL( iSearchListItemArray[aListIndex].iSearchListItemId );
 		    }
     	}
     }
-    
+
 
-// Delete messages 
+// Delete messages
 void CFSEmailUiSearchListVisualiser::DeleteFocusedMessageL()
 	{
     FUNC_LOG;
@@ -2179,32 +2222,32 @@
                okToDelete = TFsEmailUiUtility::ShowConfirmationQueryL( queryTextId, *msgSubject );
                }
             CleanupStack::PopAndDestroy( msgSubject );
-			
+
 			if ( okToDelete )
  				{
  				iMsgDataCouldBeChanged = ETrue; // Refresh
  				// Delete message from framework, and perform internal housekeeping
- 				TFSMailMsgId msgId = messagePtr.GetMessageId();					
+ 				TFSMailMsgId msgId = messagePtr.GetMessageId();
  				RArray<TFSMailMsgId> msgIds;
- 				msgIds.Append( msgId ); 			
+ 				msgIds.Append( msgId );
 				TFSMailMsgId folderId = messagePtr.GetFolderId();
-				TFSMailMsgId mailBox = iAppUi.GetActiveMailbox()->GetId(); 
-				iAppUi.GetMailClient()->DeleteMessagesByUidL( mailBox, folderId, msgIds );			
-	 			msgIds.Reset();						
+				TFSMailMsgId mailBox = iAppUi.GetActiveMailbox()->GetId();
+				iAppUi.GetMailClient()->DeleteMessagesByUidL( mailBox, folderId, msgIds );
+	 			msgIds.Reset();
 				SSearchListItem item;
 				item.iSearchListItemId = iSearchList->FocusedItem();
-				TInt IndexToBeDestroyed = iSearchListItemArray.Find( item );								
-				iSearchListItemArray.Remove( IndexToBeDestroyed ); // remove from internal array.		 				 	
-		 		iModel->RemoveAndDestroy( IndexToBeDestroyed ); // Remove from model												
-				iSearchList->RemoveL( iSearchList->FocusedItem() );		// remove from list			
-				}					
+				TInt IndexToBeDestroyed = iSearchListItemArray.Find( item );
+				iSearchListItemArray.Remove( IndexToBeDestroyed ); // remove from internal array.
+		 		iModel->RemoveAndDestroy( IndexToBeDestroyed ); // Remove from model
+				iSearchList->RemoveL( iSearchList->FocusedItem() );		// remove from list
+				}
 			}
-		}			
+		}
 	}
 
 
 // Navigation functions, used mainly from viewer
-TBool CFSEmailUiSearchListVisualiser::IsNextMsgAvailable( TFSMailMsgId aCurrentMsgId, 
+TBool CFSEmailUiSearchListVisualiser::IsNextMsgAvailable( TFSMailMsgId aCurrentMsgId,
 														  TFSMailMsgId& aFoundNextMsgId,
 														  TFSMailMsgId& aFoundNextMsgFolderId ) const
 	{
@@ -2219,26 +2262,26 @@
 	        {
 	        ret = ETrue;
 	        aFoundNextMsgId = MsgIdFromIndex(nextIdx);
-	        CFSEmailUiMailListModelItem* item = 
+	        CFSEmailUiMailListModelItem* item =
     			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item( nextIdx ));
     		if ( item->ModelItemType() == ETypeMailItem )
     	  	  {
     	 	   aFoundNextMsgFolderId = item->MessagePtr().GetFolderId();
-    	 	   }	        
+    	 	   }
 	        }
 	    }
-		
+
 	return ret;
 	}
 
 
-TBool CFSEmailUiSearchListVisualiser::IsPreviousMsgAvailable( TFSMailMsgId aCurrentMsgId, 
+TBool CFSEmailUiSearchListVisualiser::IsPreviousMsgAvailable( TFSMailMsgId aCurrentMsgId,
 														  	  TFSMailMsgId& aFoundPreviousMsgId,
 														  	  TFSMailMsgId& aFoundPrevMsgFolderId ) const
 	{
     FUNC_LOG;
 	TBool ret(EFalse);
-	
+
 	TInt curIdx = ItemIndexFromMessageId( aCurrentMsgId );
 	if ( curIdx >= 0 )
 	    {
@@ -2247,15 +2290,15 @@
 	        {
 	        ret = ETrue;
 	        aFoundPreviousMsgId = MsgIdFromIndex(prevIdx);
-	     	CFSEmailUiMailListModelItem* item = 
+	     	CFSEmailUiMailListModelItem* item =
     			static_cast<CFSEmailUiMailListModelItem*>(iModel->Item( prevIdx ));
     		if ( item->ModelItemType() == ETypeMailItem )
     	  	  {
     	 	   aFoundPrevMsgFolderId = item->MessagePtr().GetFolderId();
-    	 	   }   
+    	 	   }
 	        }
 	    }
-				
+
     return ret;
 	}
 
@@ -2263,10 +2306,10 @@
 	{
     FUNC_LOG;
 	TInt ret(KErrNotFound);
-	
+
 	TInt curIdx = ItemIndexFromMessageId( aCurrentMsgId );
 	TInt nextIdx = NextMessageIndex( curIdx );
-	
+
 	if ( curIdx >= 0 && nextIdx >= 0 )
 	    {
 	    // Focus the new message
@@ -2278,7 +2321,7 @@
 	if ( ret == KErrNone )
 		{
 		OpenHighlightedMailL();
-		}		
+		}
 	return ret;
 	}
 
@@ -2286,10 +2329,10 @@
 	{
     FUNC_LOG;
 	TInt ret(KErrNotFound);
-	
+
 	TInt curIdx = ItemIndexFromMessageId( aCurrentMsgId );
 	TInt prevIdx = PreviousMessageIndex( curIdx );
-	
+
 	if ( curIdx >= 0 && prevIdx >= 0 )
 	    {
 	    // Focus the new message
@@ -2298,33 +2341,33 @@
         aFoundPreviousMsgId = MsgIdFromIndex( prevIdx );
 	    ret = KErrNone;
 	    }
-	
+
 	if ( ret == KErrNone )
 		{
 		OpenHighlightedMailL();
-		}		
+		}
 	return ret;
 	}
 
 TInt CFSEmailUiSearchListVisualiser::MoveToPreviousMsgAfterDeleteL( TFSMailMsgId aFoundPreviousMsgId )
 	{
 	FUNC_LOG;
-	TInt ret(KErrNotFound);	
-	
-	TInt idx = ItemIndexFromMessageId( aFoundPreviousMsgId );	
+	TInt ret(KErrNotFound);
+
+	TInt idx = ItemIndexFromMessageId( aFoundPreviousMsgId );
 	if ( idx >= 0 )
-		{		
+		{
 		// Focus the previous message
 		iSearchTreeListVisualizer->SetFocusedItemL( iSearchListItemArray[idx].iSearchListItemId );
 		ChangeReadStatusOfHighlightedL( ETrue );
-		ret = KErrNone;		
+		ret = KErrNone;
 		}
 
 	if ( ret == KErrNone )
 		{
 		OpenHighlightedMailL();
 		}
-	
+
 	return ret;
 	}
 
@@ -2335,11 +2378,11 @@
 	TFSMailMsgId ret;
  	if ( iSearchList->Count() && iModel )
 		{
-	  	CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));    
+	  	CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
 		if ( item && item->ModelItemType() == ETypeMailItem )
 			{
 			ret = item->MessagePtr().GetFolderId();
-			}			
+			}
 		}
 	return ret;
 	}
@@ -2350,11 +2393,11 @@
 	TFSMailMsgId ret;
 	if ( iSearchList->Count() && iModel )
 		{
-	  	CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));    
+	  	CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
 		if ( item && item->ModelItemType() == ETypeMailItem )
 			{
 			ret = item->MessagePtr().GetMessageId();
-			}		
+			}
 		}
 	return ret;
 	}
@@ -2366,26 +2409,28 @@
 // From MFsTreeListObserver
 // ---------------------------------------------------------------------------
 //
-void CFSEmailUiSearchListVisualiser::TreeListEventL( const TFsTreeListEvent aEvent, const TFsTreeItemId /*aId*/ )
+void CFSEmailUiSearchListVisualiser::TreeListEventL( const TFsTreeListEvent aEvent,
+                                                     const TFsTreeItemId /*aId*/,
+                                                     const TPoint& aPoint )
     {
     FUNC_LOG;
-    
+
     switch(aEvent)
         {
         case MFsTreeListObserver::EFsTreeListItemTouchAction:
-            DoHandleActionL(); 
-            break; 
+            DoHandleActionL();
+            break;
         case MFsTreeListObserver::EFsTreeListItemTouchLongTap:
             if ( iSearchList->Count() )
-                 {
-                 LaunchActionMenuL();                       
-                 }                
-            break; 
+                {
+                LaunchStylusPopupMenuL( aPoint );
+                }
+            break;
         case MFsTreeListObserver::EFsTreeListItemWillGetFocused:
             {
-            SetMskL(); 
+            SetMskL();
             break;
-            }            
+            }
         case MFsTreeListObserver::EFsFocusVisibilityChange:
         	{
         	iAppUi.SetFocusVisibility( EFalse );
@@ -2394,8 +2439,8 @@
         case MFsTreeListObserver::EFsTreeListItemTouchFocused:
         default:
             //Just ignore rest of events
-            break;             
-        }                   
+            break;
+        }
     }
 
 // ---------------------------------------------------------------------------
@@ -2405,27 +2450,27 @@
 void CFSEmailUiSearchListVisualiser::DoHandleActionL()
     {
     FUNC_LOG;
-    TInt modelCount = 0; 
-    
+    TInt modelCount = 0;
+
     if ( iModel )
         {
-        modelCount = iModel->Count();               
+        modelCount = iModel->Count();
         }
     if ( modelCount ) // Safety check
         {
-        CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));    
+        CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
         if ( item && item->ModelItemType() == ETypeMailItem )
             {
             CFSMailMessage* messagePtr = &item->MessagePtr();
             if ( messagePtr )
                 {
-                OpenHighlightedMailL();                         
+                OpenHighlightedMailL();
                 }
             }
-        }    
+        }
     }
 
-//</cmail> 
+//</cmail>
 
 // ---------------------------------------------------------------------------
 // From MFSEmailUiContactHandlerObserver
@@ -2437,6 +2482,7 @@
     TContactHandlerCmd /*aCmd*/, const RPointerArray<CFSEmailUiClsItem>& /*aContacts*/ )
     {
     FUNC_LOG;
+    iRequiredSearchPriority = KStandardSearchPriority; //<cmail> return back
     }
 
 // ---------------------------------------------------------------------------
@@ -2448,9 +2494,10 @@
     TContactHandlerCmd /*aCmd*/, TInt /*aError*/ )
     {
     FUNC_LOG;
+    iRequiredSearchPriority = KStandardSearchPriority; //<cmail> return back
     }
 
-void CFSEmailUiSearchListVisualiser::CallToSenderL()
+TBool CFSEmailUiSearchListVisualiser::CallToSenderL()
 	{
     FUNC_LOG;
 	CFSEmailUiMailListModelItem* item =
@@ -2462,22 +2509,25 @@
 		TDesC* emailAddress(0);
 		if ( fromAddress )
 			{
-			emailAddress = &fromAddress->GetEmailAddress();		
+			emailAddress = &fromAddress->GetEmailAddress();
 			}
 		if ( emailAddress && emailAddress->Length() )
 			{
 			CFsDelayedLoader::InstanceL()->GetContactHandlerL()->
 				FindAndCallToContactByEmailL( *emailAddress,
-					iAppUi.GetActiveMailbox(), this, ETrue );									
+					iAppUi.GetActiveMailbox(), this, ETrue );
+                   iRequiredSearchPriority = KCallingSearchPriority; //decrease priority to enable search for contact
+                   return ETrue; // searching started - consume keyup event
 			}
-		}		
+		}
+  return EFalse; //no calling key up will execute Call app
 	}
 
 
 // ---------------------------------------------------------------------------
 // Logic for changing msk
 // ---------------------------------------------------------------------------
-// 
+//
 void CFSEmailUiSearchListVisualiser::SetMskL()
 	{
     FUNC_LOG;
@@ -2485,217 +2535,15 @@
 	    {
 	    if ( iSearchList && iSearchList->Count() )
 	        {
-	        ChangeMskCommandL( R_FSE_QTN_MSK_OPEN );    
+	        ChangeMskCommandL( R_FSE_QTN_MSK_OPEN );
 	        }
 	    else
 	        {
-	        ChangeMskCommandL( R_FSE_QTN_MSK_EMPTY );           
+	        ChangeMskCommandL( R_FSE_QTN_MSK_EMPTY );
 	        }
 	    }
 	}
 
-
-// ---------------------------------------------------------------------------
-// LaunchActionMenuL
-// Function launches action menu based on the highlighted or marked messages
-// ---------------------------------------------------------------------------
-//
-void CFSEmailUiSearchListVisualiser::LaunchActionMenuL()
-    {
-    FUNC_LOG;
-    if ( iModel && iModel->Count() )
-        {
-        // Remove old items from action menu
-        CFSEmailUiActionMenu::RemoveAllL();
-        // Construct item list
-        RFsEActionMenuIdList itemList;
-        CleanupClosePushL( itemList );
-        
-        CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));    
-        // Right click action menu for calendar events
-        if ( item && item->ModelItemType() == ETypeMailItem && 
-              item->MessagePtr().IsFlagSet( EFSMsgFlag_CalendarMsg ) ) 
-             {
-             TESMRMeetingRequestMethod mrMethod( EESMRMeetingRequestMethodUnknown );
-             if ( iAppUi.MrViewerInstanceL() )
-                 {
-                 // Search must be stopped, otherwise resolve will lead to crash
-                 if ( iSearchOngoing )
-                      {
-                      StopSearchL();
-                      }
-                 mrMethod = iAppUi.MrViewerInstanceL()->ResolveMeetingRequestMethodL( item->MessagePtr() );
-                 }
-             switch ( mrMethod )
-                 {
-                 case EESMRMeetingRequestMethodRequest:
-                     itemList.AppendL( FsEActionMenuAccept );
-                     itemList.AppendL( FsEActionMenuTentative );
-                     itemList.AppendL( FsEActionMenuDecline );                      
-                     break;
-                 case EESMRMeetingRequestMethodCancellation:
-                     {
-                     TBool supportsRemove = iAppUi.GetActiveMailbox()->HasCapability( EFSMBoxCapaRemoveFromCalendar );
-                     if( supportsRemove )
-                         {
-                         itemList.AppendL( FsEActionMenuRemoveFormCal );                                          
-                         }
-                     break;
-                     }
-                 default:
-                 case EESMRMeetingRequestMethodUnknown:
-                 case EESMRMeetingRequestMethodResponse:
-                     itemList.AppendL( FsEActionMenuOpen);
-                     break;
-                 }             
-             }
-        // Right click action menu for normal mail items
-        else
-             {
-             itemList.AppendL( FsEActionMenuReply );
-            //Get # of recipients
-            TInt numRecipients(0);
-            CFSMailMessage* messagePtr = &item->MessagePtr();
-            if ( messagePtr )
-                {
-                numRecipients =TFsEmailUiUtility::CountRecepients( messagePtr );
-                if ( numRecipients == 1 )
-                    {
-                    //check if the malbox ownmailaddress is same as the recipients email address. If not, then assume that the
-                    //email is a distribution list and we need to inc num of Recipients so that "Reply ALL" option appears in UI.
-                    if ( messagePtr->GetToRecipients().Count() )
-                        {
-                        if ( iAppUi.GetActiveMailbox()->OwnMailAddress().GetEmailAddress().Compare(messagePtr->GetToRecipients()[0]->GetEmailAddress()) )
-                            {
-                            numRecipients++;
-                            }
-                        }
-                    if ( messagePtr->GetCCRecipients().Count() )
-                        {
-                        if ( iAppUi.GetActiveMailbox()->OwnMailAddress().GetEmailAddress().Compare(messagePtr->GetCCRecipients()[0]->GetEmailAddress()) )
-                            {
-                            numRecipients++;
-                            }
-                        }
-                    if ( messagePtr->GetBCCRecipients().Count() )
-                        {
-                        if ( iAppUi.GetActiveMailbox()->OwnMailAddress().GetEmailAddress().Compare(messagePtr->GetBCCRecipients()[0]->GetEmailAddress()) )
-                            {
-                            numRecipients++;
-                            }
-                        }                
-                    }
-                
-                }
-              
-             if ( numRecipients > 1 )
-                 {
-                 itemList.AppendL( FsEActionMenuReplyAll );
-                 }          
-             itemList.AppendL( FsEActionMenuForward );            
-             }  
-        // Add mark as read/unread options
-        if ( item->MessagePtr().IsFlagSet(EFSMsgFlag_Read) )
-            {
-            itemList.AppendL( FsEActionMenuMarkUnread );
-            }
-        else 
-            {
-            itemList.AppendL( FsEActionMenuMarkRead );
-            }           
-        itemList.AppendL( FsEActionMenuDelete );     
-        
-// <cmail> Touch
-        TActionMenuCustomItemId itemId = CFSEmailUiActionMenu::ExecuteL( itemList, EFscCustom, 0, this );
-// </cmail>
-        CleanupStack::PopAndDestroy( &itemList );
-        HandleActionMenuCommandL( itemId ); 
-        }
-    }
-
-
-// <cmail>
-// ---------------------------------------------------------------------------
-// ActionMenuPosition
-// ---------------------------------------------------------------------------
-//
-TPoint CFSEmailUiSearchListVisualiser::ActionMenuPosition()
-    {
-    TAlfRealRect focusRect;
-    TFsTreeItemId listItemId = iSearchList->FocusedItem();
-    iSearchList->GetItemDisplayRectTarget(listItemId, focusRect);
-    return focusRect.iTl;
-    }
-// </cmail>
-
-
-// ---------------------------------------------------------------------------
-// HandleActionMenuCommandL
-// Action menu command callback handler
-// ---------------------------------------------------------------------------
-//
-void CFSEmailUiSearchListVisualiser::HandleActionMenuCommandL( TActionMenuCustomItemId itemId )
-    {
-    FUNC_LOG;
-    // Map each Action Menu ID to correcponding command ID.
-    TInt commandId = KErrNotFound;
-    
-    switch( itemId )
-        {
-        case FsEActionMenuOpenCalendarEvent:
-        case FsEActionMenuOpen:
-            commandId = EFsEmailUiCmdOpen;
-            break;
-        case FsEActionMenuAccept:
-            commandId = EFsEmailUiCmdCalActionsAccept;
-            break;
-        case FsEActionMenuTentative:
-            commandId = EFsEmailUiCmdCalActionsTentative;
-            break;
-        case FsEActionMenuDecline:
-            commandId = EFsEmailUiCmdCalActionsDecline;
-            break;
-        case FsEActionMenuRemoveFormCal:
-            commandId = EFsEmailUiCmdCalRemoveFromCalendar;
-            break;
-        case FsEActionMenuMarkRead:
-            commandId = EFsEmailUiCmdMarkAsRead;
-            break;
-        case FsEActionMenuMarkUnread:
-            commandId = EFsEmailUiCmdMarkAsUnread;
-            break;          
-        case FsEActionMenuDelete:
-            commandId = EFsEmailUiCmdActionsDelete;
-            break;                          
-        case FsEActionMenuReply:
-            commandId = EFsEmailUiCmdActionsReply;
-            break;
-        case FsEActionMenuReplyAll:
-            commandId = EFsEmailUiCmdActionsReplyAll;
-            break;
-        case FsEActionMenuForward:
-            commandId = EFsEmailUiCmdActionsForward;
-            break;
-        case FsEActionMenuMove:
-            commandId = EFsEmailUiCmdActionsMoveMessage;
-            break;
-        case FsEActionMenuMoveToDrafts:
-            commandId = EFsEmailUiCmdActionsMoveToDrafts;
-            break;
-        case FsEActionMenuDismissed:
-            commandId = KErrCancel;
-            break;
-        default:
-            __ASSERT_DEBUG( EFalse, Panic( EFSEmailUiUnexpectedValue ) );
-            break;
-        }
-    
-    if ( commandId >= 0 )
-        {
-        HandleCommandL( commandId );
-        }
-    }
-
 //<cmail>
 // ---------------------------------------------------------------------------
 // CFSEmailUiSearchListVisualiser::SetHeaderTextAttributesL()
@@ -2706,7 +2554,7 @@
 //
 void CFSEmailUiSearchListVisualiser::SetHeaderAttributesL()
 	{
-	// Set bar text color/style from skin	
+	// Set bar text color/style from skin
 	iBarTextVisual->SetTextStyle( iAppUi.LayoutHandler()->
 	        FSTextStyleFromLayoutL( AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_t1( 0 ) ).Id() );
 	iBarTextVisual->SetColor( iAppUi.LayoutHandler()->
@@ -2727,5 +2575,46 @@
 
 
 
+// ---------------------------------------------------------------------------
+// LaunchStylusPopupMenuL
+// Function launches avkon stylus popup menu based for the tapped item
+// ---------------------------------------------------------------------------
+//
+void CFSEmailUiSearchListVisualiser::LaunchStylusPopupMenuL( const TPoint& aPoint )
+    {
+    // Verify that the item's type is correct
+    CFSEmailUiMailListModelItem* item =
+        static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ) );
+    if ( item && ( item->ModelItemType() == ETypeMailItem ) )
+        {
+        // Add mark as read / unread options
+        const CFSMailMessage& message = item->MessagePtr();
+
+        TBool messageRead( message.IsFlagSet( EFSMsgFlag_Read ) );
+        iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdMarkAsUnread, !messageRead );
+        iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdMarkAsRead, messageRead );
+
+        // Set the position for the popup
+        iStylusPopUpMenu->SetPosition( aPoint );
+
+        // Display the popup and set the flag to indicate that the menu was
+        // launched so that list focus stays visible.
+        iStylusPopUpMenu->ShowMenu();
+        iStylusPopUpMenuVisible = ETrue;
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// ClientRequiredSearchPriority
+// the email searching priority may be decreased to enable searching for contacts
+// ---------------------------------------------------------------------------
+//
+void CFSEmailUiSearchListVisualiser::ClientRequiredSearchPriority( TInt *apRequiredSearchPriority )
+    {
+    FUNC_LOG;
+    if (iRequiredSearchPriority != (*apRequiredSearchPriority))
+    *apRequiredSearchPriority = iRequiredSearchPriority; 
+    return;
+    }
 
 // End of file