emailuis/emailui/src/FreestyleEmailUiLauncherGridVisualiser.cpp
changeset 1 12c456ceeff2
parent 0 8466d47a6819
child 2 5253a20d2a1e
--- a/emailuis/emailui/src/FreestyleEmailUiLauncherGridVisualiser.cpp	Thu Dec 17 08:39:21 2009 +0200
+++ b/emailuis/emailui/src/FreestyleEmailUiLauncherGridVisualiser.cpp	Thu Jan 07 12:38:38 2010 +0200
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies). 
+* Copyright (c) 2007-2009 Nokia Corporation and/or its subsidiary(-ies).
 * All rights reserved.
 * This component and the accompanying materials are made available
 * under the terms of "Eclipse Public License v1.0"
@@ -27,25 +27,21 @@
 #include <e32math.h>
 #include <FreestyleEmailUi.rsg>
 #include <touchlogicalfeedback.h>
-// <cmail> SF path changes
 #include <alf/alfutil.h>
 #include <alf/alfenv.h>
 #include <alf/alfevent.h>
 #include <alf/alftextvisual.h>
-//</cmail>
-#include <aknnotewrappers.h>  
+#include <aknnotewrappers.h>
 #include <freestyleemailui.mbg>
 #include <gulicon.h>
-//<cmail>
+#include <akntoolbar.h>
 #include "CFSMailMessage.h"
 #include <alf/alfframebrush.h>
 #include "CFSMailBox.h"
 #include "CFSMailClient.h"
-//</cmail>
 #include <hlplch.h>
 #include <akntitle.h>
 #include <centralrepository.h>
-//<cmail>
 #include <alf/alfanchorlayout.h>
 #include <alf/alfbrusharray.h>
 #include <alf/alfstatic.h>
@@ -53,16 +49,13 @@
 #include <alf/alfconstants.h>
 #include "fsalfscrollbarlayout.h"
 #include <csxhelp/cmail.hlp.hrh>
-//</cmail>
 #include <featmgr.h>
-//</cmail>
 
 #include <aknmessagequerydialog.h>
-// <cmail> Use layout data instead of hard-coded values
+#include <aknstyluspopupmenu.h>
 #include <aknlayoutscalable_avkon.cdl.h>
 #include <aknlayoutscalable_apps.cdl.h>
 #include <layoutmetadata.cdl.h>
-// </cmail>
 
 // INTERNAL INCLUDE FILES
 #include "FSEmailBuildFlags.h"
@@ -88,14 +81,12 @@
 const TInt KStartupAnimationTime = 0;
 const TReal KScaleSelected = 1.0;
 const TReal KScaleNotSelected = 0.77;
-// <cmail> Use layout data instead of hard-coded values
-// </cmail>
 
 
 CFSEmailUiLauncherGridVisualiser* CFSEmailUiLauncherGridVisualiser::NewL(CAlfEnv& aEnv,
-												 CFSEmailUiLauncherGrid* aControl, 
+												 CFSEmailUiLauncherGrid* aControl,
 												 CFreestyleEmailUiAppUi* aAppUi,
-												 CAlfControlGroup& aControlGroup, 
+												 CAlfControlGroup& aControlGroup,
 												 TInt aColumns, TInt aRows)
     {
     FUNC_LOG;
@@ -104,10 +95,10 @@
     return self;
     }
 
-CFSEmailUiLauncherGridVisualiser* CFSEmailUiLauncherGridVisualiser::NewLC(CAlfEnv& aEnv, 
-												  CFSEmailUiLauncherGrid* aControl, 
+CFSEmailUiLauncherGridVisualiser* CFSEmailUiLauncherGridVisualiser::NewLC(CAlfEnv& aEnv,
+												  CFSEmailUiLauncherGrid* aControl,
 												  CFreestyleEmailUiAppUi* aAppUi,
-												  CAlfControlGroup& aControlGroup, 
+												  CAlfControlGroup& aControlGroup,
 												  TInt aColumns, TInt aRows)
     {
     FUNC_LOG;
@@ -117,12 +108,12 @@
     return self;
     }
 
-CFSEmailUiLauncherGridVisualiser::CFSEmailUiLauncherGridVisualiser(CAlfEnv& aEnv, 
-											 CFSEmailUiLauncherGrid* aControl, 
+CFSEmailUiLauncherGridVisualiser::CFSEmailUiLauncherGridVisualiser(CAlfEnv& aEnv,
+											 CFSEmailUiLauncherGrid* aControl,
 										     CFreestyleEmailUiAppUi* aAppUi,
 										     CAlfControlGroup& aControlGroup)
     : CFsEmailUiViewBase(aControlGroup, *aAppUi),
-    iEnv( aEnv ), 
+    iEnv( aEnv ),
     iVisibleRows( 0 ),
     iVisibleColumns( 0 ),
     iRowCount( 0 ),
@@ -149,84 +140,100 @@
     iConstructionCompleted = EFalse;
     iDoubleClickLock = EFalse;
     iUiOperationLaunched = EFalse;
-    
+
     iMailboxDeleter = CFSEmailUiMailboxDeleter::NewL( *iAppUi.GetMailClient(), *this );
     }
 
+// ----------------------------------------------------------------------------
 // CFSEmailUiLauncherGridVisualiser::DoFirstStartL()
-// Purpose of this function is to do first start only when grid is
-// really needed to be shown. Implemented to make app startuo faster.
+// Purpose of this function is to do first start only when grid is really
+// needed to be shown. Implemented to make app startup faster.
+// ----------------------------------------------------------------------------
+//
 void CFSEmailUiLauncherGridVisualiser::DoFirstStartL()
     {
     FUNC_LOG;
     iPluginIdIconIdPairs.Reset();
 
-// <cmail> Use layout data instead of hard-coded values
     TRect mainPaneRect;
-    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
-    
+    AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,
+									   mainPaneRect );
+
     TAknLayoutRect scrollBarRect;
-    scrollBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::aid_size_touch_scroll_bar());
+    scrollBarRect.LayoutRect( mainPaneRect,
+    	AknLayoutScalable_Avkon::aid_size_touch_scroll_bar() );
     TRect gridRect = mainPaneRect;
     gridRect.iBr.iX -= scrollBarRect.Rect().Width();
-    
+
     TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
-    iVisibleRows = AknLayoutScalable_Apps::cell_cmail_l_pane_ParamLimits(var).LastRow() + 1;
-    iVisibleColumns = AknLayoutScalable_Apps::cell_cmail_l_pane_ParamLimits(var).LastColumn() + 1;
-// </cmail>
-    
+    iVisibleRows = AknLayoutScalable_Apps::cell_cmail_l_pane_ParamLimits( var ).LastRow() + 1;
+    iVisibleColumns = AknLayoutScalable_Apps::cell_cmail_l_pane_ParamLimits( var ).LastColumn() + 1;
+
     iStartupAnimation = ETrue;
     iCurrentLevel.iSelected = KDefaultSelection;
     CAlfTextureManager& manager = iEnv.TextureManager();
 
-    iParentLayout = CAlfDeckLayout::AddNewL(*iControl);
-    iParentLayout->SetFlags(EAlfVisualFlagLayoutUpdateNotification);
+    iParentLayout = CAlfDeckLayout::AddNewL( *iControl );
+    iParentLayout->SetFlags( EAlfVisualFlagLayoutUpdateNotification );
 
     // Widget layout divides the screen between grid and scroll bar
     iWidgetLayout = CAlfAnchorLayout::AddNewL( *iControl, iParentLayout );
-    //<cmail>
-	TSize displaySize = mainPaneRect.Size(); //iControl->DisplayArea().Size();
-    //</cmail>    
+	TSize displaySize = mainPaneRect.Size();
     iWidgetLayout->SetSize( displaySize );
-     
+
     // Constructed here, updated later, #0 item in iWidgetLayout
     ConstructScrollbarL( iWidgetLayout );
 
-    // Grid layout is constructed here, #1 item in iWidgetLayout    
-    iCurrentLevel.iGridLayout = CAlfGridLayout::AddNewL( *iControl, iVisibleColumns, iVisibleRows, iWidgetLayout );
+    // Grid layout is constructed here, #1 item in iWidgetLayout
+    iCurrentLevel.iGridLayout =
+		CAlfGridLayout::AddNewL( *iControl, iVisibleColumns, iVisibleRows,
+								 iWidgetLayout );
     iCurrentLevel.iGridLayout->EnableScrollingL( ETrue );
     iCurrentLevel.iGridLayout->SetFlags( EAlfVisualFlagAutomaticLocaleMirroringEnabled );
-     
+
     // Selector is added to iGridLayout
-    iSelector = iControl->AppendLayoutL( EAlfLayoutTypeLayout, iCurrentLevel.iGridLayout );
+    iSelector = iControl->AppendLayoutL( EAlfLayoutTypeLayout,
+										 iCurrentLevel.iGridLayout );
     iSelector->SetFlags( EAlfVisualFlagManualLayout );
-     
-    iRingMovementXFunc = CAlfTableMappingFunction::NewL(iEnv);
-    iRingMovementYFunc = CAlfTableMappingFunction::NewL(iEnv);
+
+    iRingMovementXFunc = CAlfTableMappingFunction::NewL( iEnv );
+    iRingMovementYFunc = CAlfTableMappingFunction::NewL( iEnv );
 
     TAlfTimedPoint selectorPos = iSelector->Pos();
     selectorPos.iX.SetMappingFunctionIdentifier( iRingMovementXFunc->MappingFunctionIdentifier() );
-    selectorPos.iY.SetMappingFunctionIdentifier( iRingMovementYFunc->MappingFunctionIdentifier() ); 
+    selectorPos.iY.SetMappingFunctionIdentifier( iRingMovementYFunc->MappingFunctionIdentifier() );
     iSelector->SetPos( selectorPos );
-     
+
     UpdateFocusVisibility();
     iSelectorImageVisual = CAlfImageVisual::AddNewL( *iControl, iSelector );
     iSelectorImageVisual->SetScaleMode( CAlfImageVisual::EScaleFit );
-// <cmail> Use layout data instead of hard-coded values 
+
+    // Use layout data instead of hard-coded values
     iSelectorImageVisual->SetSize( iAppUi.LayoutHandler()->SelectorVisualSizeInThisResolution() );
     TAknLayoutRect itemRect;
-    itemRect.LayoutRect(gridRect, AknLayoutScalable_Apps::cell_cmail_l_pane(var,0,0));
+    itemRect.LayoutRect( gridRect,
+    	AknLayoutScalable_Apps::cell_cmail_l_pane( var, 0, 0 ) );
     iSelectorImageVisual->SetSize( itemRect.Rect().Size() );
-// </cmail>
-     
     iSelectorImageVisual->EnableBrushesL();
     CAlfFrameBrush* brush = iAppUi.FsTextureManager()->GridSelectorBrushL();
     iSelectorImageVisual->Brushes()->AppendL( brush, EAlfDoesNotHaveOwnership );
     iStartupEffectStyle = EFalse;
-  
+
     iAiwSHandler = CAiwServiceHandler::NewL();
     iAiwSHandler->AttachL( R_AIW_INTEREST_LAUNCH_SETUP_WIZARD );
 
+    if( !iStylusPopUpMenu )
+        {
+        // Construct the long tap pop-up menu.
+        TPoint point( 0, 0 );
+        iStylusPopUpMenu = CAknStylusPopUpMenu::NewL( this , point );
+		TResourceReader reader;
+		iCoeEnv->CreateResourceReaderLC( reader,
+			R_STYLUS_POPUP_MENU_LAUNCHER_GRID_VIEW );
+		iStylusPopUpMenu->ConstructFromResourceL( reader );
+		CleanupStack::PopAndDestroy(); // reader
+        }
+
     // Initial visual layout update is done when the view gets activated.
     iRefreshNeeded = ETrue;
 
@@ -246,7 +253,7 @@
     iItemIdInButtonDownEvent.iLaunchSelection = EFalse;
 
     UpdateFocusVisibility();
-    
+
 	if( !IsFocusShown() )
 		{
         // No items are focused anymore. Shrink the icon.
@@ -296,18 +303,17 @@
     delete iRingMovementYFunc;
     delete iModel;
     delete iAiwSHandler;
-    // <cmail>
     delete iScrollbar;
-    // </cmail> 
     delete iMailboxDeleter;
+    delete iStylusPopUpMenu;
     }
 
 void CFSEmailUiLauncherGridVisualiser::CreateModelL()
     {
     FUNC_LOG;
-    
+
     RArray<TBool> itemInModel;
-    CleanupClosePushL( itemInModel );    
+    CleanupClosePushL( itemInModel );
     iIconArray.Reset();
 
 	iPluginTextureId = EGridPluginIconFirst;
@@ -316,7 +322,7 @@
     delete iModel;
     iModel = NULL;
     iModel = new (ELeave) CFSEmailUiLauncherGridModel();
-    iModel->ConstructL();   
+    iModel->ConstructL();
 	CAlfTexture* iconTexture = 0;
 
 	// Get item ordering from resources
@@ -333,24 +339,24 @@
 
     TInt count = reader.ReadInt16();
 
-// <cmail> Use layout data instead of hard-coded values    
+// <cmail> Use layout data instead of hard-coded values
     TRect mainPaneRect;
     AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
-    
+
     TAknLayoutRect scrollBarRect;
     scrollBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::aid_size_touch_scroll_bar());
     TRect gridRect = mainPaneRect;
     gridRect.iBr.iX -= scrollBarRect.Rect().Width();
-    
+
     TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
     TAknLayoutRect itemRect;
     itemRect.LayoutRect(gridRect, AknLayoutScalable_Apps::cell_cmail_l_pane(var,0,0));
-    
+
     TAknLayoutRect gridIconLRect;
     gridIconLRect.LayoutRect(itemRect.Rect(), AknLayoutScalable_Apps::cell_cmail_l_pane_g1(var));
     TSize iconSize = gridIconLRect.Rect().Size();
 // </cmail>
-    
+
     for ( TInt itemIndex = 0; itemIndex < count; itemIndex++ )
         {
         TInt itemId = reader.ReadInt16();
@@ -358,10 +364,10 @@
             {
             case EDefaultMailboxItem:
                 {
-                
+
                 RPointerArray<CFSMailBox> mailBoxes;
                 CleanupResetAndDestroyClosePushL( mailBoxes );
-                TFSMailMsgId id; 
+                TFSMailMsgId id;
                 TInt err = iAppUi.GetMailClient()->ListMailBoxes(
                     id,
                     mailBoxes );
@@ -370,13 +376,13 @@
                     {
                     // Try to get branded graphic
                     CGulIcon* mbIcon(0);
-		         	TRAPD( err, mbIcon = brandManager.GetGraphicL( EFSMailboxIcon, mailBoxes[0]->GetId() ) ); 
+		         	TRAPD( err, mbIcon = brandManager.GetGraphicL( EFSMailboxIcon, mailBoxes[0]->GetId() ) );
 					if ( err == KErrNone && mbIcon )
 						{
 						CleanupStack::PushL( mbIcon );
 				    	AknIconUtils::SetSize(mbIcon->Bitmap(), iconSize);
-					    AknIconUtils::SetSize(mbIcon->Mask(), iconSize);				
-		
+					    AknIconUtils::SetSize(mbIcon->Mask(), iconSize);
+
 					    // Create texture into TextureManager, If not already existing
 					    // Note: size(0,0) means original icon size
 					    iAppUi.FsTextureManager()->CreateBrandedMailboxTexture( mbIcon,
@@ -390,10 +396,10 @@
 
 						CleanupStack::PopAndDestroy( mbIcon );
 						}
-					else 
+					else
 						{
-	                    iconTexture = &iAppUi.FsTextureManager()->TextureByIndex( EGridInboxTexture );									
-						}					                 	
+	                    iconTexture = &iAppUi.FsTextureManager()->TextureByIndex( EGridInboxTexture );
+						}
 
    			        iIconArray.AppendL( iconTexture );
 
@@ -405,8 +411,8 @@
                         mailBoxes[0]->GetName(),
                         *iconTexture,
                         mailBoxes[0]->GetId(),
-                        mailBoxes[0]->GetStandardFolderId( EFSInbox ) ); 						
-   			        
+                        mailBoxes[0]->GetStandardFolderId( EFSInbox ) );
+
    			        iAppUi.SubscribeMailboxL( mailBoxes[0]->GetId() );
                     }
 
@@ -417,22 +423,22 @@
                 {
                 RPointerArray<CFSMailBox> mailBoxes;
                 CleanupResetAndDestroyClosePushL( mailBoxes );
-                TFSMailMsgId id; 
+                TFSMailMsgId id;
                 TInt err = iAppUi.GetMailClient()->ListMailBoxes(
                     id,
                     mailBoxes );
-                
+
                 for ( TInt i = 1; i < mailBoxes.Count(); i++ )
                     {
                    // Try to get branded graphic
                     CGulIcon* mbIcon(0);
-		         	TRAPD( err, mbIcon = brandManager.GetGraphicL( EFSMailboxIcon,  mailBoxes[i]->GetId() ) ); 
+		         	TRAPD( err, mbIcon = brandManager.GetGraphicL( EFSMailboxIcon,  mailBoxes[i]->GetId() ) );
 					if ( err == KErrNone && mbIcon )
 						{
 						CleanupStack::PushL( mbIcon );
 				    	AknIconUtils::SetSize(mbIcon->Bitmap(), iconSize);
-					    AknIconUtils::SetSize(mbIcon->Mask(), iconSize);				
-					    
+					    AknIconUtils::SetSize(mbIcon->Mask(), iconSize);
+
 					    // Create texture into TextureManager, If not already existing
 					    iAppUi.FsTextureManager()->CreateBrandedMailboxTexture( mbIcon,
 					    		                                                 mailBoxes[i]->GetId().PluginId(),
@@ -444,11 +450,11 @@
 					    		                                                        TSize(0,0));
 						CleanupStack::PopAndDestroy( mbIcon );
 						}
-					else 
+					else
 						{
-	                    iconTexture = &iAppUi.FsTextureManager()->TextureByIndex( EGridInboxTexture );				
+	                    iconTexture = &iAppUi.FsTextureManager()->TextureByIndex( EGridInboxTexture );
 						}
-  	                iIconArray.AppendL( iconTexture );	          
+  	                iIconArray.AppendL( iconTexture );
                     // Branded mailbox name is nowadays set in new mailbox event
                     // handling, so we don't need to use brand manager here anymore.
                     iModel->AddL(
@@ -458,10 +464,10 @@
                         *iconTexture,
                         mailBoxes[i]->GetId(),
                         mailBoxes[i]->GetStandardFolderId( EFSInbox ) );
-                    
+
                     iAppUi.SubscribeMailboxL( mailBoxes[i]->GetId() );
                     }
-                    
+
                 CleanupStack::PopAndDestroy( &mailBoxes );
                 }
                 break;
@@ -469,11 +475,11 @@
                 {
                 RPointerArray<CFSMailBox> mailBoxes;
                 CleanupResetAndDestroyClosePushL( mailBoxes );
-                TFSMailMsgId id; 
+                TFSMailMsgId id;
                 TInt err = iAppUi.GetMailClient()->ListMailBoxes(
                     id,
                     mailBoxes );
-                
+
                 for ( TInt i = 0; i < mailBoxes.Count(); i++ )
                     {
                     if ( TFsEmailUiUtility::IsRemoteLookupSupported( *mailBoxes[i] ) )
@@ -496,7 +502,7 @@
                 iconTexture = &iAppUi.FsTextureManager()->TextureByIndex( EGridSettingsTexture );
                 iModel->AddL(EShortcut, ESettingsItem, *text, *iconTexture );
                 CleanupStack::PopAndDestroy( text );
-                iIconArray.AppendL( iconTexture );		
+                iIconArray.AppendL( iconTexture );
                 }
                 break;
             case EAddNewMailboxItem:
@@ -505,19 +511,19 @@
                 iconTexture = &iAppUi.FsTextureManager()->TextureByIndex( EGridAddNewBoxTexture );
                 iModel->AddL(EShortcut, EAddNewMailboxItem, *text, *iconTexture );
                 CleanupStack::PopAndDestroy( text );
-                iIconArray.AppendL( iconTexture );		
+                iIconArray.AppendL( iconTexture );
                 }
                 break;
             case EHelpItem:
                 {
-     		   // remove help support in pf5250                
+     		   // remove help support in pf5250
         	    if (! FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration ) )
         		   {
                    HBufC* text = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_GRIDITEM_HELP );
                    iconTexture = &iAppUi.FsTextureManager()->TextureByIndex( EGridHelpTexture );
                    iModel->AddL(EShortcut, EHelpItem, *text, *iconTexture );
                    CleanupStack::PopAndDestroy( text );
-                   iIconArray.AppendL( iconTexture );        		   
+                   iIconArray.AppendL( iconTexture );
         		   }
                 }
                 break;
@@ -533,7 +539,7 @@
                     if ( iLauncherItems[i]->Id() == itemId )
                         {
                         itemInModel[i] = ETrue;
-                        AddItemToModelL( iLauncherItems[i], i );                      
+                        AddItemToModelL( iLauncherItems[i], i );
                         break;
                         }
                     }
@@ -554,7 +560,7 @@
             AddItemToModelL( iLauncherItems[i], i );
             }
         }
-    
+
     CleanupStack::PopAndDestroy( &itemInModel );
 	}
 
@@ -585,14 +591,9 @@
 TUid CFSEmailUiLauncherGridVisualiser::Id() const
 	{
     FUNC_LOG;
-	return AppGridId;	
-	}			   
+	return AppGridId;
+	}
 
-// <cmail> Toolbar
-/*
-void CFSEmailUiLauncherGridVisualiser::DoActivateL(const TVwsViewId& aPrevViewId,
-                     TUid aCustomMessageId,
-                     const TDesC8& aCustomMessage)*/
 void CFSEmailUiLauncherGridVisualiser::ChildDoActivateL(const TVwsViewId& aPrevViewId,
                      TUid /*aCustomMessageId*/,
                      const TDesC8& /*aCustomMessage*/)
@@ -602,7 +603,12 @@
         {
         DoFirstStartL();
         }
-    
+
+    if( iAppUi.CurrentFixedToolbar() )
+        {
+        iAppUi.CurrentFixedToolbar()->SetToolbarVisibility( EFalse );
+        }
+
     // For initial mailbox query
 	TBool startedFromOds = EFalse;
 	// NULL wizard started parameter every time when activated again.
@@ -634,7 +640,7 @@
             {
             iAppUi.EnterFsEmailViewL( iAppUi.CurrentActiveView()->Id() );
             }
-        
+
         return;
         }
 
@@ -651,23 +657,23 @@
         }
 
     SetDefaultStatusPaneTextL();
-    
+
     // Mailbox query is called here but shown only once in appui if needed
     // doNotshowQuery is ETrue when started from wizard
   	if ( !iFirstStartComplete )
   		{
   		iFirstStartComplete = ETrue;
 	  	iAppUi.GridStarted( startedFromOds );
-	    iAppUi.ShowMailboxQueryL();  		
+	    iAppUi.ShowMailboxQueryL();
   		}
-  	// <cmail>    
+  	// <cmail>
   	else
   	    {
   	    // Ensure that FSMailServer is running, but don't do it on first
   	    // activation, as it's done anyway in AppUi's ConstructL
   	    TFsEmailUiUtility::EnsureFsMailServerIsRunning( iEikonEnv->WsSession() );
   	    }
-    
+
     if( iRowCount > iVisibleRows )
         {
         iScrollbar->MakeVisible(ETrue);
@@ -676,41 +682,38 @@
         {
         iScrollbar->MakeVisible(EFalse);
         }
-    
+
     iAppUi.HideTitlePaneConnectionStatus();
-  	
+
   	// Erase the navigation history when main grid activated. This is the default view
   	// of the application and back navigation is never possible from here. The view stack
   	// might be in inconsistent state because of some unexpected error in view switching.
   	// Erasing the history helps recovering from such situations.
   	iAppUi.EraseViewHistory();
-
+  	FocusVisibilityChange( iAppUi.IsFocusShown() );
   	UpdateFocusVisibility();
     }
-// </cmail> Toolbar
 
 void CFSEmailUiLauncherGridVisualiser::ChildDoDeactivate()
     {
     FUNC_LOG;
     iScrollbar->MakeVisible(EFalse);
-    // </cmail>
     }
 
-
 void CFSEmailUiLauncherGridVisualiser::DynInitMenuPaneL(TInt aResourceId, CEikMenuPane* aMenuPane)
 	{
     FUNC_LOG;
-    
+
 	if ( aResourceId == R_FSEMAILUI_MAINUIGRID_MENUPANE )
 		{
 	    if ( FeatureManager::FeatureSupported( KFeatureIdFfCmailIntegration ) )
 		   {
 		   // remove help support in pf5250
-		   aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue);      
+		   aMenuPane->SetItemDimmed( EFsEmailUiCmdHelp, ETrue);
 		   }
-	    
+
 	    TFSLauncherGridMailboxStatus mbStatus = CheckMailboxStatusL();
-	    
+
 	    // Checks if a device has a keyboard or not.
 		if( !iKeyboardFlipOpen )
 			{
@@ -719,7 +722,7 @@
 				// If no mailboxes configured, dim all mailbox related items.
 				aMenuPane->SetItemDimmed( EFsEmailUiCmdDeleteMailbox, ETrue );
 				}
-			
+
 		   	aMenuPane->SetItemDimmed( EFsEmailUiCmdOpen, ETrue );
 		   	aMenuPane->SetItemDimmed( EFsEmailUiCmdSync, ETrue );
 		   	aMenuPane->SetItemDimmed( EFsEmailUiCmdSyncAll, ETrue );
@@ -732,15 +735,15 @@
 			}
 		else
 			{
-		    // <cmail>	    
-		   	aMenuPane->SetItemDimmed( EFsEmailUiCmdAbout, ETrue ); 
+		    // <cmail>
+		   	aMenuPane->SetItemDimmed( EFsEmailUiCmdAbout, ETrue );
 		   	// </cmail>
-		   	
+
 		   	if( mbStatus.iMailboxCount <= 0 )
 		   	    {
 		   	    // If no mailboxes configured, dimm all mailbox related items
 		   	    aMenuPane->SetItemDimmed( EFsEmailUiCmdDeleteMailbox, ETrue );
-	            aMenuPane->SetItemDimmed( EFsEmailUiCmdCancelSync, ETrue);      
+	            aMenuPane->SetItemDimmed( EFsEmailUiCmdCancelSync, ETrue);
 	            aMenuPane->SetItemDimmed( EFsEmailUiCmdSync, ETrue );
 	            aMenuPane->SetItemDimmed( EFsEmailUiCmdSyncAll, ETrue );
 	            aMenuPane->SetItemDimmed( EFsEmailUiCmdGoOnline, ETrue );
@@ -756,7 +759,7 @@
 		   	        // All mailboxes are already not syncing
 	                aMenuPane->SetItemDimmed( EFsEmailUiCmdCancelSync, ETrue );
 		   	        }
-		   	    
+
 	            // Handle items related to sync starting
 		   	    if( mbStatus.iMailboxesSyncing == mbStatus.iMailboxCount )
 		   	        {
@@ -774,7 +777,7 @@
 		   	        // Several mailboxes configured, dimm "Synchronise"
 	                aMenuPane->SetItemDimmed( EFsEmailUiCmdSync, ETrue );
 		   	        }
-		   	        
+
 	            // Handle items related to online
 		   	    if( mbStatus.iMailboxesOnline == mbStatus.iMailboxCount )
 		   	        {
@@ -792,11 +795,11 @@
 	                // Several mailboxes configured, dimm "Connect"
 	                aMenuPane->SetItemDimmed( EFsEmailUiCmdGoOnline, ETrue );
 		   	        }
-		   	    
+
 	            // Handle pop accounts that can't sync
 	            RPointerArray<CFSMailBox> mailBoxes;
 	            CleanupResetAndDestroyClosePushL( mailBoxes );
-	            TFSMailMsgId id; 
+	            TFSMailMsgId id;
 	            bool onlyPop = true;
 	            TInt err = iAppUi.GetMailClient()->ListMailBoxes(
 	                id,
@@ -815,7 +818,7 @@
                     aMenuPane->SetItemDimmed( EFsEmailUiCmdSync, ETrue );
                     aMenuPane->SetItemDimmed( EFsEmailUiCmdSyncAll, ETrue );
                     }
-                
+
                 CleanupStack::PopAndDestroy( &mailBoxes );
 
                 // Handle items related to offline
@@ -838,58 +841,54 @@
                 }
 
             // Add shortcut hints
-            iAppUi.ShortcutBinding().AppendShortcutHintsL( *aMenuPane, 
-    	                             CFSEmailUiShortcutBinding::EContextMainGrid );	
+            iAppUi.ShortcutBinding().AppendShortcutHintsL( *aMenuPane,
+    	                             CFSEmailUiShortcutBinding::EContextMainGrid );
             }
         }
 	}
 
-void CFSEmailUiLauncherGridVisualiser::HandleCommandL(TInt aCommand)
+void CFSEmailUiLauncherGridVisualiser::HandleCommandL( TInt aCommand )
     {
     FUNC_LOG;
+
     switch ( aCommand )
         {
 		case EAknSoftkeyOpen:
 			{
-			if (!iAppUi.IsTimerFocusShown())
+			if( !iAppUi.IsFocusShown() )
 				{
-				int wasActive = iAppUi.StartFocusRemovalTimer();
-
-	        	if (!wasActive)
-	        		{
-					UpdateFocusVisibility();
-					ResizeItemIcon( EFalse );
-	        		}
-				
+				// No need to handle return value
+                iAppUi.SetFocusVisibility( ETrue );
+                UpdateFocusVisibility();
+                ResizeItemIcon( EFalse );
 				break;
 				}
 			}
        	case EFsEmailUiCmdOpen:
 			{
 			SelectL();
+			break;
 			}
-			break;
-// <cmail> Hiding is disabled in Cmail
-//       	case EFsEmailUiCmdHide:
-//        	{     	
-//			TApaTaskList taskList( iEikonEnv->WsSession() );
-//			TApaTask task = taskList.FindApp( KFSEmailUiUid );
-//			if ( task.Exists() )
-//			    {
-//			    task.SendToBackground(); // Send self to background				
-//			    }
-//			}
-//			break;   
-// </cmail>
 		case EFsEmailUiCmdDeleteMailbox:
 			{
+			// Deletion by using the option menu.
 			iMailboxDeleter->DeleteMailboxL();
 			break;
-			}		
+			}
+		case EFsEmailUiCmdDeleteSelectedMailbox:
+			{
+			// Deletion by using the long tap pop-up menu.
+			iMailboxDeleter->DeleteMailboxL( iMailboxToDelete );
+
+	    	// Hide the focus.
+	        iAppUi.SetFocusVisibility( EFalse );
+	        HandleButtonReleaseEvent(); // Finishes the focus removal.
+			break;
+			}
 		case EFsEmailUiCmdSync:
         case EFsEmailUiCmdSyncAll:
 			{
-			if (aCommand == EFsEmailUiCmdSyncAll) 
+			if (aCommand == EFsEmailUiCmdSyncAll)
 				{
 			   	iAppUi.ManualMailBoxSyncAll(ETrue);
 				}
@@ -899,7 +898,7 @@
 			    }
             RPointerArray<CFSMailBox> mailBoxes;
             CleanupResetAndDestroyClosePushL( mailBoxes );
-            TFSMailMsgId id; 
+            TFSMailMsgId id;
             TInt err = iAppUi.GetMailClient()->ListMailBoxes(
                 id,
                 mailBoxes );
@@ -907,9 +906,7 @@
             for ( TInt i = 0; i < mailBoxes.Count(); i++ )
                 {
                 iAppUi.SubscribeMailboxL( mailBoxes[i]->GetId() );
-                // <cmail> 
                 mailBoxes[i]->GetMailBoxStatus();
-                // </cmail>
                 mailBoxes[i]->RefreshNowL( iAppUi );
                 }
 
@@ -920,7 +917,7 @@
 			{
             RPointerArray<CFSMailBox> mailBoxes;
             CleanupResetAndDestroyClosePushL( mailBoxes );
-            TFSMailMsgId id; 
+            TFSMailMsgId id;
             TInt err = iAppUi.GetMailClient()->ListMailBoxes(
                 id,
                 mailBoxes );
@@ -938,13 +935,13 @@
 		case EFsEmailUiCmdGoOffline:
         case EFsEmailUiCmdGoOfflineAll:
 			{
-            if (aCommand == EFsEmailUiCmdGoOfflineAll) 
+            if (aCommand == EFsEmailUiCmdGoOfflineAll)
             	{
                 iAppUi.ManualMailBoxDisconnectAll(ETrue);
             	}
             RPointerArray<CFSMailBox> mailBoxes;
             CleanupResetAndDestroyClosePushL( mailBoxes );
-            TFSMailMsgId id; 
+            TFSMailMsgId id;
             TInt err = iAppUi.GetMailClient()->ListMailBoxes(
                 id,
                 mailBoxes );
@@ -961,7 +958,7 @@
 		case EFsEmailUiCmdGoOnline:
         case EFsEmailUiCmdGoOnlineAll:
 			{
-            if (aCommand == EFsEmailUiCmdGoOnlineAll) 
+            if (aCommand == EFsEmailUiCmdGoOnlineAll)
             	{
                	iAppUi.ManualMailBoxConnectAll(ETrue);
             	}
@@ -983,7 +980,7 @@
             break;
        	case EFsEmailUiCmdAbout:
 			{
-			DisplayProductInfoL();	
+			DisplayProductInfoL();
 			}
 			break;
        	case EFsEmailUiCmdHelp:
@@ -991,9 +988,14 @@
             TFsEmailUiUtility::LaunchHelpL( KFSE_HLP_LAUNCHER_GRID );
 			}
 			break;
-        // <cmail>
+       	case KErrCancel:
+       		{
+        	// The pop-up menu was closed. Hide the focus.
+            iAppUi.SetFocusVisibility( EFalse );
+            HandleButtonReleaseEvent(); // Finishes the focus removal.
+       		break;
+       		}
         case EFsEmailUiCmdHide:
-        // </cmail>
         case EEikCmdExit:
         case EAknSoftkeyExit:
         case EFsEmailUiCmdExit:
@@ -1003,21 +1005,21 @@
             break;
         default:
             break;
-        }
+        } // switch ( aCommand )
     }
- 
+
 TBool CFSEmailUiLauncherGridVisualiser::OfferEventL(const TAlfEvent& aEvent)
     {
     FUNC_LOG;
     if ( aEvent.IsKeyEvent() && aEvent.Code() == EEventKey )
-        {       
+        {
         // If wait note is being shown while a mailbox is being created,
         // then do not react to key presses.
         if ( iWizardWaitnoteShown )
             {
             return ETrue; // key consumed
             }
-        
+
         // Swap right and left controls in mirrored layout
         TInt scanCode = aEvent.KeyEvent().iScanCode;
         if ( AknLayoutUtils::LayoutMirrored() )
@@ -1025,17 +1027,17 @@
             if (scanCode == EStdKeyRightArrow) scanCode = EStdKeyLeftArrow;
             else if (scanCode == EStdKeyLeftArrow ) scanCode = EStdKeyRightArrow;
             }
-        
-        if ((scanCode == EStdKeyRightArrow) 
-        		|| (scanCode == EStdKeyLeftArrow) 
-        		|| (scanCode == EStdKeyUpArrow) 
+
+        if ((scanCode == EStdKeyRightArrow)
+        		|| (scanCode == EStdKeyLeftArrow)
+        		|| (scanCode == EStdKeyUpArrow)
         		|| (scanCode == EStdKeyDownArrow)
         		|| (scanCode == EStdKeyEnter)
         		|| (scanCode == EStdKeyDeviceA)
         		|| (scanCode ==EStdKeyDevice3))
         	{
-			TBool wasActive = iAppUi.StartFocusRemovalTimer();
-        	if (!wasActive)
+
+        	if ( !iAppUi.SetFocusVisibility( ETrue ) )
         		{
 				// focus is now activated. ignore key press.
 				UpdateFocusVisibility();
@@ -1043,7 +1045,7 @@
 				return ETrue;
         		}
         	}
-                
+
         switch(scanCode)
             {
             case EStdKeyRightArrow:
@@ -1062,11 +1064,11 @@
             case EStdKeyDeviceA:
             case EStdKeyDevice3:
             	HandleButtonReleaseEvent();
-                SelectL();                
+                SelectL();
                 return ETrue;
             default:
 	       	    // Check keyboard shortcuts.
-	       	    TInt shortcutCommand = 
+	       	    TInt shortcutCommand =
 	       	        iAppUi.ShortcutBinding().CommandForShortcutKey( aEvent.KeyEvent(),
 	       	                                                         CFSEmailUiShortcutBinding::EContextMainGrid );
 	       	    if ( shortcutCommand != KErrNotFound )
@@ -1080,45 +1082,55 @@
     return EFalse; // was not consumed
     }
 
-// <cmail>
+
 // ---------------------------------------------------------------------------
 // CFSEmailUiLauncherGridVisualiser::HandlePointerEventL
 //
 // ---------------------------------------------------------------------------
-//      
-TBool CFSEmailUiLauncherGridVisualiser::HandlePointerEventL(const TAlfEvent& aEvent)
+//
+TBool CFSEmailUiLauncherGridVisualiser::HandlePointerEventL(
+	const TAlfEvent& aEvent )
     {
     FUNC_LOG;
     TBool result( EFalse );
     TInt currentlyFocused( iCurrentLevel.iSelected );
     TPointerEvent::TType type = aEvent.PointerEvent().iType;
     TInt id = FindPointedItem( aEvent );
+
     if( KErrNotFound != id )
         {
+        // The event coordinates correspond with an item.
         switch( type )
             {
             case TPointerEvent::EButton1Down:
                 {
                 iItemIdInButtonDownEvent.iItemId = id;
                 iItemIdInButtonDownEvent.iLaunchSelection = ETrue;
-				UpdateFocusVisibility();
-				
                 SetFocusedItemL( id );
+                UpdateFocusVisibility();
                 break;
                 }
             case TPointerEvent::EButton1Up:
                 {
+                if ( iStylusPopUpMenuLaunched )
+                	{
+                	// A pop-up menu was launched. Do not open the selected
+                	// item.
+                	iStylusPopUpMenuLaunched = EFalse;
+                	break;
+                	}
+
+                // Hide focus always after pointer up event.
+                iAppUi.SetFocusVisibility( EFalse );
+
                 // If key was released on item that had focus
                 // trigger selection.
                 if( iItemIdInButtonDownEvent.iItemId == id &&
                     iItemIdInButtonDownEvent.iLaunchSelection )
                     {
-                    // keyboard focus is now hidden 
-                    iAppUi.CancelFocusRemovalTimer();
-
                     HandleButtonReleaseEvent();
-
-                    // LAUNCH OPENING. This may leave if user cancels the operation
+                    // LAUNCH OPENING. This may leave if user cancels the
+                    // operation
                     SelectL();
                     }
                 else
@@ -1146,11 +1158,28 @@
                     }
                 break;
                 }
+            case TPointerEvent::EButtonRepeat:
+            	{
+            	// Long tap.
+            	// Check the type of the currently selected item.
+    			TInt itemType = iCurrentLevel.iItems[id].iId;
+
+				if ( itemType == EDefaultMailboxItem ||
+					 itemType == EOtherMailboxItems )
+    				{
+    				// The selected item is a mail box. Launch the pop-up
+    				// menu.
+    	            LaunchStylusPopupMenu( id );
+    				}
+
+            	break;
+            	}
             default:
                 {
                 break;
                 }
             }
+
         result = ETrue;
         }
     // if event do not concern any of items.
@@ -1158,6 +1187,7 @@
         {
         iItemIdInButtonDownEvent.iLaunchSelection = EFalse;
         ResizeItemIcon( ETrue );
+
         switch( type )
             {
             case TPointerEvent::EButton1Down:
@@ -1168,6 +1198,8 @@
                 }
             case TPointerEvent::EButton1Up:
                 {
+                // Hide focus always after pointer up event.
+                iAppUi.SetFocusVisibility( EFalse );
                 iItemIdInButtonDownEvent.iItemId = KErrNotFound;
                 HandleButtonReleaseEvent();
                 break;
@@ -1178,6 +1210,15 @@
                 }
             }
         }
+    else
+        {
+        if( aEvent.IsPointerEvent() && aEvent.PointerUp() )
+            {
+            // Hide focus always after pointer up event.
+            iAppUi.SetFocusVisibility( EFalse );
+            }
+        }
+
     return result;
     }
 
@@ -1185,24 +1226,24 @@
 // CFSEmailUiLauncherGridVisualiser::FindPointedItem
 //
 // ---------------------------------------------------------------------------
-//      
+//
 TInt CFSEmailUiLauncherGridVisualiser::FindPointedItem( const TAlfEvent& aEvent )
     {
     FUNC_LOG;
-    TInt result = KErrNotFound; 
-            
-    TInt count = iCurrentLevel.iItemVisualData.Count();         
+    TInt result = KErrNotFound;
+
+    TInt count = iCurrentLevel.iItemVisualData.Count();
     const TPoint pos = aEvent.PointerEvent().iParentPosition;
-    
+
     for(TInt a = 0; count > a; a++)
         {
-        const TRect rect(iCurrentLevel.iItemVisualData[a].iBase->DisplayRect());                 
+        const TRect rect(iCurrentLevel.iItemVisualData[a].iBase->DisplayRect());
         if(rect.Contains( pos ))
             {
             result = a;
-            break; 
-            }        
-        }                
+            break;
+            }
+        }
     return result;
     }
 
@@ -1210,16 +1251,15 @@
 // CFSEmailUiLauncherGridVisualiser::SetFocusedItemL
 //
 // ---------------------------------------------------------------------------
-//      
+//
 void CFSEmailUiLauncherGridVisualiser::SetFocusedItemL( TInt aId )
     {
     FUNC_LOG;
     TInt oldSelection = iCurrentLevel.iSelected;
-    
+
     HandleRowMovement( EDirectionTouch, aId );
-    
-    FocusItem( EFalse, oldSelection );             
-//    iCurrentLevel.iSelected = aId; 
+
+    FocusItem( EFalse, oldSelection );
     FocusItem( ETrue, iCurrentLevel.iSelected );
     MoveSelectorToCurrentItem( EDirectionTouch );
     }
@@ -1229,11 +1269,11 @@
     FUNC_LOG;
     // NULL double click flag just be sure that the UI does not
     // go into state that wizard cannot be started.
-    iDoubleClickLock = EFalse; 
+    iDoubleClickLock = EFalse;
     // Store old selection
     TInt oldSelection = iCurrentLevel.iSelected;
     TInt itemCount = iCurrentLevel.iItemVisualData.Count();
-    
+
     HandleRowMovement( aDir, iCurrentLevel.iSelected );
 
     // Set the correct icon focuses (i.e. enlarged)
@@ -1253,7 +1293,7 @@
     FUNC_LOG;
     // NULL double click flag just be sure that the UI does not
     // go into state that wizard cannot be started.
-    iDoubleClickLock = EFalse; 
+    iDoubleClickLock = EFalse;
     // Store old selection
     TInt oldSelection = iCurrentLevel.iSelected;
     TInt itemCount = iCurrentLevel.iItemVisualData.Count();
@@ -1291,7 +1331,7 @@
                 if ( iCurrentLevel.iSelected < 0 )
                     {
                     iCurrentLevel.iSelected += (iRowCount*iVisibleColumns);
-                    if ( iCurrentLevel.iSelected >= itemCount ) 
+                    if ( iCurrentLevel.iSelected >= itemCount )
                         {
                         // Wrapping is about to move the cursor on empty spot.
                         // To be consistent with S60 app grid, move selection to the last item.
@@ -1321,11 +1361,11 @@
 
             case EDirectionNone:
                 break;
-                
+
             case EDirectionTouch:
-                iCurrentLevel.iSelected = aSelected; 
+                iCurrentLevel.iSelected = aSelected;
                 break;
-                            
+
             }
 
         if ( iCurrentLevel.iSelected < 0 )
@@ -1344,7 +1384,7 @@
     ScrollToRow( y );
 
     }
-// </cmail>
+
 
 void CFSEmailUiLauncherGridVisualiser::MoveSelectorToCurrentItem( TDirection aDir )
     {
@@ -1363,7 +1403,7 @@
     TPoint ringWrapOffset( 0, 0 );
     const TInt KGridWrapWidth = (iVisibleColumns+2)*iColumnWidth;
     const TInt KGridWrapHeight = (iRowCount+2)*iRowHeight;
-    
+
     if ( aDir == EDirectionRight && ( targetPos.iX <= curPos.iX || iCurrentLevel.iSelected == 0 ) )
         {
         ringWrapOffset.iX = KGridWrapWidth;
@@ -1402,7 +1442,7 @@
         // Invalid item index
         return;
         }
-    
+
     if( aHasFocus && ( IsFocusShown() || iItemIdInButtonDownEvent.iItemId >= 0 ) )
         {
         TAlfTimedValue scaleValue;
@@ -1458,7 +1498,7 @@
 
 
     offset = iFirstVisibleRow * iRowHeight;
-    
+
     TAlfTimedPoint alfScrollOffset;
     alfScrollOffset.iY.SetTarget( offset , KScrollTransitionTimeMs );
     iCurrentLevel.iGridLayout->SetScrollOffset(alfScrollOffset);
@@ -1466,7 +1506,7 @@
     iScrollbarModel.SetFocusPosition(iFirstVisibleRow);
     TRAP_IGNORE( iScrollbar->SetModelL(&iScrollbarModel) );
     iScrollbar->DrawNow();
-// </cmail>    
+// </cmail>
     }
 
 void CFSEmailUiLauncherGridVisualiser::RefreshLauncherViewL()
@@ -1489,13 +1529,13 @@
             FocusItem( ETrue, iCurrentLevel.iSelected );
             }
         UpdateScrollBarRangeL();
-        }  
+        }
     }
 
 TBool CFSEmailUiLauncherGridVisualiser::UiOperationLaunched()
     {
     FUNC_LOG;
-    return iUiOperationLaunched;  
+    return iUiOperationLaunched;
     }
 
 void CFSEmailUiLauncherGridVisualiser::PopulateL( TLevel& aLevel )
@@ -1506,30 +1546,30 @@
         for( TInt i = 0; i < aLevel.iItemVisualData.Count(); i++ )
             {
             aLevel.iItemVisualData[i].iBase->RemoveAndDestroyAllD();
-            }        
+            }
         aLevel.iItemVisualData.Reset();
         aLevel.iItems.Reset();
-	    
-// <cmail> Use layout data instead of hard-coded values    
+
+// <cmail> Use layout data instead of hard-coded values
 	    TRect mainPaneRect;
 	    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
-	    
+
 	    TAknLayoutRect scrollBarRect;
 	    scrollBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::aid_size_touch_scroll_bar());
 	    TRect gridRect = mainPaneRect;
 	    gridRect.iBr.iX -= scrollBarRect.Rect().Width();
-	    
+
 	    TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
-	    
+
 	    TAknLayoutRect itemRect;
 	    itemRect.LayoutRect(gridRect, AknLayoutScalable_Apps::cell_cmail_l_pane(var, 0, 0));
 
 	    TRect itemrc = itemRect.Rect();
 	    itemrc.SetRect(TPoint(0,0), itemRect.Rect().Size());
-	    
+
 	    TAknLayoutRect gridIconRect;
 	    gridIconRect.LayoutRect(itemrc, AknLayoutScalable_Apps::cell_cmail_l_pane_g1(var));
-	    
+
 	    TAknLayoutText gridText;
 	    gridText.LayoutText(itemrc, AknLayoutScalable_Apps::cell_cmail_l_pane_t1(var));
 // </cmail>
@@ -1537,7 +1577,7 @@
         if( aLevel.iParent >= 0 )
             {
             iModel->FindChildren( aLevel.iParent, aLevel.iItems );
-            
+
             for( TInt i = 0; i < aLevel.iItems.Count(); i++ )
                 {
                 TItemVisualData newItem;
@@ -1545,7 +1585,7 @@
                 newItem.iBase = CAlfAnchorLayout::AddNewL( *iControl, aLevel.iGridLayout );
                 newItem.iBase->SetTactileFeedbackL( ETouchEventStylusDown,  ETouchFeedbackBasic );
 
-// <cmail> Use layout data instead of hard-coded values    
+// <cmail> Use layout data instead of hard-coded values
                 // Set anchors for text
                 newItem.iBase->SetAnchor(
                     EAlfAnchorTopLeft,
@@ -1589,20 +1629,20 @@
 				TRgb itemColor (KRgbGray);
 			    // text #9 application grid unfocused application title texts #215
 				if( AknsUtils::GetCachedColor( AknsUtils::SkinInstance(),
-					itemColor, KAknsIIDQsnTextColors, 
+					itemColor, KAknsIIDQsnTextColors,
 					EAknsCIQsnTextColorsCG9 ) != KErrNone )
 					{
-				itemColor = gridText.Color();//iAppUi.LayoutHandler()->ListNormalStateTextSkinColor(); 
+				itemColor = gridText.Color();//iAppUi.LayoutHandler()->ListNormalStateTextSkinColor();
 					}
 				newItem.iText->SetColor(itemColor);
 // </cmail>
-					
-                newItem.iText->SetTextL( *aLevel.iItems[i].iCaption );      
-                
+
+                newItem.iText->SetTextL( *aLevel.iItems[i].iCaption );
+
                 TAlfTimedValue opacity;
                 opacity.SetValueNow ( KDefaultCaptionOpacity );
                 newItem.iText->SetOpacity( opacity );
-                
+
                 newItem.iText->SetTextStyle( iAppUi.LayoutHandler()->FSTextStyleFromLayoutL(AknLayoutScalable_Apps::cell_cmail_l_pane_t1(var)).Id() );//FSTextStyleFromIdL( EFSFontTypeSmall )->Id() );
                 newItem.iText->SetWrapping( CAlfTextVisual::ELineWrapTruncate );
                 newItem.iText->SetAlign( EAlfAlignHCenter, EAlfAlignVTop );
@@ -1612,7 +1652,7 @@
                 newItem.iImage->SetImage( TAlfImage( *aLevel.iItems[i].iIconTexture ) );
                 newItem.iImage->SetFlag( EAlfVisualFlagManualSize );
 
-// <cmail> Use layout data instead of hard-coded values  
+// <cmail> Use layout data instead of hard-coded values
                 newItem.iImage->SetSize( gridIconRect.Rect().Size() );
                 newItem.iImage->SetScale( KScaleNotSelected );
 // </cmail>
@@ -1621,7 +1661,7 @@
                 }
             }
 
-// <cmail> Use layout data instead of hard-coded values  
+// <cmail> Use layout data instead of hard-coded values
         // Set columns and rows
         //iVisibleColumns = iAppUi.LayoutHandler()->GridColumnsInThisResolution();
         //iVisibleRows = iAppUi.LayoutHandler()->GridRowsInThisResolution();
@@ -1641,7 +1681,7 @@
 		{
         iItemIdInButtonDownEvent.iItemId = KErrNotFound;
         UpdateFocusVisibility();
-	
+
 		CFSEmailLauncherItem* launcherItem =
 		    iCurrentLevel.iItems[iCurrentLevel.iSelected].iLauncherItem;
 		if ( launcherItem )
@@ -1657,12 +1697,12 @@
 				case EOtherMailboxItems:
 					{
 					TMailListActivationData tmp;
-					tmp.iFolderId = iCurrentLevel.iItems[iCurrentLevel.iSelected].iMailBoxInboxId; 
-					tmp.iMailBoxId = iCurrentLevel.iItems[iCurrentLevel.iSelected].iMailBoxId; 
+					tmp.iFolderId = iCurrentLevel.iItems[iCurrentLevel.iSelected].iMailBoxInboxId;
+					tmp.iMailBoxId = iCurrentLevel.iItems[iCurrentLevel.iSelected].iMailBoxId;
 					const TPckgBuf<TMailListActivationData> pkgOut( tmp );
 					iAppUi.ShowTitlePaneConnectionStatus();
 					iAppUi.EnterFsEmailViewL( MailListId, KStartListWithFolderId, pkgOut );
-					}				
+					}
 					break;
 				case EDirectoryItem:
 				    {
@@ -1671,14 +1711,14 @@
                     if ( !iDoubleClickLock )
                         {
                         // Lock to make sure that wizard is not started twice in a row
-                        iDoubleClickLock = ETrue; 
+                        iDoubleClickLock = ETrue;
                         RPointerArray<CFSMailBox> mailBoxes;
                         CleanupResetAndDestroyClosePushL( mailBoxes );
-                        TFSMailMsgId id; 
+                        TFSMailMsgId id;
                         TInt err = iAppUi.GetMailClient()->ListMailBoxes(
                             id,
                             mailBoxes );
-                        
+
                         // Remove mailboxes that doesn't support RCL
                         for ( TInt i = mailBoxes.Count()-1; i >= 0 ; i-- )
                             {
@@ -1705,9 +1745,9 @@
                         if ( mailBox )
                             {
                             CFsDelayedLoader::InstanceL()->GetContactHandlerL()->LaunchRemoteLookupL( *mailBox );
-                            }                    
+                            }
                         iDoubleClickLock = EFalse;
-                        CleanupStack::PopAndDestroy( &mailBoxes );                  
+                        CleanupStack::PopAndDestroy( &mailBoxes );
                         }
 				    }
 					break;
@@ -1715,7 +1755,7 @@
 	                {
 	                TInt tmp = 0;
 	                const TPckgBuf<TInt> pkgBuf( tmp );
-	      			iAppUi.EnterFsEmailViewL(  
+	      			iAppUi.EnterFsEmailViewL(
 	      					SettingsViewId,
 	      					TUid::Uid(KMailSettingsOpenMainList),
 	      					pkgBuf );
@@ -1727,7 +1767,7 @@
 	                // wizard would crash without this
 	                if ( !iDoubleClickLock )
 	                    {
-	                    iDoubleClickLock = ETrue; 
+	                    iDoubleClickLock = ETrue;
 	                    LaunchWizardL();
     	                }
 	                }
@@ -1744,9 +1784,9 @@
 	                }
 	            	break;
 				default:
-					return;	
+					return;
 				}
-		    }		
+		    }
 		}
 	}
 
@@ -1760,7 +1800,7 @@
     // Toggle safety lock always when receiving foreground back.
     if ( iFirstStartComplete && iDoubleClickLock )
         {
-        iDoubleClickLock = EFalse;        
+        iDoubleClickLock = EFalse;
         }
     }
 
@@ -1788,10 +1828,10 @@
     TInt selectedOption;
     CAknListQueryDialog* dlg = new ( ELeave ) CAknListQueryDialog( &selectedOption );
     dlg->PrepareLC( R_FSEMAILUI_LAUNCHER_GRID_MAILBOX_SELECTION_DIALOG  );
-    
+
     dlg->SetItemTextArray( array );
     dlg->SetOwnershipType( ELbmDoesNotOwnItemArray );
-    
+
     CFSMailBox* mailbox = NULL;
     if( dlg->RunLD() )
         {
@@ -1802,7 +1842,7 @@
             mailbox = aMailBoxes[selectedOption];
             }
         }
-    
+
     CleanupStack::PopAndDestroy( array );
     return mailbox;
     }
@@ -1825,20 +1865,20 @@
         }
 
     iAiwSHandler->ExecuteServiceCmdL( KAiwCmdSettingWizardFsEmail.iUid,
-                                      iAiwSHandler->InParamListL(), 
+                                      iAiwSHandler->InParamListL(),
                                       iAiwSHandler->OutParamListL() );
     }
 
 void CFSEmailUiLauncherGridVisualiser::GoToInboxL( TFSMailMsgId& aMailboxId, TFSMailMsgId& aMailboxInboxId )
     {
     FUNC_LOG;
-	TMailListActivationData tmp;	
-	
+	TMailListActivationData tmp;
+
 	tmp.iMailBoxId = aMailboxId;
 	tmp.iFolderId = aMailboxInboxId;
-		
-	const TPckgBuf<TMailListActivationData> pkgOut( tmp );	
-	
+
+	const TPckgBuf<TMailListActivationData> pkgOut( tmp );
+
 	iAppUi.EnterFsEmailViewL( MailListId, KStartListWithFolderId, pkgOut );
     }
 
@@ -1851,23 +1891,23 @@
 		TRect mainPaneRect;
 	    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
 	    TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
-	    
+
 	    TAknLayoutRect scrollBarRect;
 	    scrollBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::aid_size_touch_scroll_bar());
 	    TRect gridRect = mainPaneRect;
 	    gridRect.iBr.iX -= scrollBarRect.Rect().Width();
-	    
+
 	    TAknLayoutRect itemRect;
 	    itemRect.LayoutRect(gridRect, AknLayoutScalable_Apps::cell_cmail_l_pane(var, 0, 0));
-	    
+
 	    TAknLayoutRect gridIconRect;
 	    gridIconRect.LayoutRect(itemRect.Rect(), AknLayoutScalable_Apps::cell_cmail_l_pane_g1(var));
-		
+
 	   	//TInt gridIconSize = iAppUi.LayoutHandler()->GridIconSize();
 		TSize iconSize = gridIconRect.Rect().Size();
 		//iconSize.SetSize( gridIconSize, gridIconSize );
 	// </cmail>
-		
+
         // Scale bitmaps
         for( TInt i = 0 ; i < iIconArray.Count() ; i++ )
             {
@@ -1877,7 +1917,7 @@
         for ( TInt item = 0; item < iCurrentLevel.iItemVisualData.Count() ; item++ )
             {
             iCurrentLevel.iItemVisualData[item].iImage->SetSize( iconSize );
-            }        
+            }
         }
 	}
 
@@ -1894,61 +1934,61 @@
 // <cmail> Use layout data instead of hard-coded values
             TRect mainPaneRect;
             AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
-            
+
             TAknLayoutRect scrollBarRect;
             scrollBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::aid_size_touch_scroll_bar());
             TRect gridRect = mainPaneRect;
             gridRect.iBr.iX -= scrollBarRect.Rect().Width();
-            
+
             TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
-            
+
             TAknLayoutRect itemRect;
             itemRect.LayoutRect(gridRect, AknLayoutScalable_Apps::cell_cmail_l_pane(var, 0, 0));
-            
+
             TAknLayoutRect gridIconRect;
             gridIconRect.LayoutRect(itemRect.Rect(), AknLayoutScalable_Apps::cell_cmail_l_pane_g1(var));
-            
+
             TSize iconSize = gridIconRect.Rect().Size();
 // </cmail>
-               
+
             const CFbsBitmap* bitmap = launcherItemIcon->Bitmap();
-            const CFbsBitmap* mask = launcherItemIcon->Mask();    
+            const CFbsBitmap* mask = launcherItemIcon->Mask();
 
 			// First add plugin id and icon id pair to array, needed in provide bitmap
 			TPluginIdIconIdPair idPair;
 			idPair.iPluginArrayIndex = aPluginArrayIndex;
-			idPair.iIconId = iPluginTextureId;	
-			iPluginIdIconIdPairs.Append( idPair );	
+			idPair.iIconId = iPluginTextureId;
+			iPluginIdIconIdPairs.Append( idPair );
 
 			// Create texture, goes to provide bitmap
-			CAlfTexture* texture = &CAlfStatic::Env().TextureManager().CreateTextureL( iPluginTextureId, this, EAlfTextureFlagDefault );		
-			// Update texture id 
-			iPluginTextureId++; // Id is updated dynamically					
+			CAlfTexture* texture = &CAlfStatic::Env().TextureManager().CreateTextureL( iPluginTextureId, this, EAlfTextureFlagDefault );
+			// Update texture id
+			iPluginTextureId++; // Id is updated dynamically
 			// Set initiel size
 // <cmail> Use layout data instead of hard-coded values
 			//TSize iconSize(iAppUi.LayoutHandler()->GridIconSize(), iAppUi.LayoutHandler()->GridIconSize() );
 // <cmail>
-  			texture->Size().SetSize( iconSize.iHeight, iconSize.iWidth );  
+  			texture->Size().SetSize( iconSize.iHeight, iconSize.iWidth );
            iModel->AddL(
                 EShortcut,
                 aItem->Id(),
                 *launcherItemText,
                 *texture,
                 0,
-                aItem );        
-	        iIconArray.AppendL( texture ); 
+                aItem );
+	        iIconArray.AppendL( texture );
             }
         else
             {
             CAlfTexture* texture = &iAppUi.FsTextureManager()->TextureByIndex( EGridInboxTexture );
-            
+
             iModel->AddL(
                 EShortcut,
                 aItem->Id(),
                 *launcherItemText,
                 *texture,
                 0,
-                aItem );         
+                aItem );
             iIconArray.AppendL( texture );
             }
 
@@ -1962,12 +2002,12 @@
     if ( iConstructionCompleted )
         {
 	    iCurrentLevel.iParent = 0;
-	    
+
 	// <cmail> Use layout data instead of hard-coded values
 	    TRect mainPaneRect;
 	    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
 	    TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
-	    
+
 	    TAknLayoutRect scrollBarRect;
 	    // <cmail>
 //	    scrollBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::aid_size_touch_scroll_bar());
@@ -1975,16 +2015,16 @@
 	    // </cmail>
 	    TRect gridRect = mainPaneRect;
 	    gridRect.iBr.iX -= scrollBarRect.Rect().Width();
-	    
+
 	    TAknLayoutRect cellRect;
 	    cellRect.LayoutRect(gridRect, AknLayoutScalable_Apps::aid_size_cell_cmail_l(var, 0, 0));
-	    
+
 	    TAknLayoutRect itemRect;
 	    itemRect.LayoutRect(gridRect, AknLayoutScalable_Apps::cell_cmail_l_pane(var, 0, 0));
-	    
+
 	    TAknLayoutRect gridIconRect;
 	    gridIconRect.LayoutRect(itemRect.Rect(), AknLayoutScalable_Apps::cell_cmail_l_pane_g1(var));
-	    
+
 	    TAknLayoutRect selectorRect;
 	    selectorRect.LayoutRect(itemRect.Rect(), AknLayoutScalable_Apps::grid_highlight_pane_cp018(var));
 
@@ -1992,10 +2032,10 @@
 	    iSelectorImageVisual->SetSize( selectorRect.Rect().Size() ); // layoutHandler->SelectorVisualSizeInThisResolution() );
 
 	    TSize displaySize = mainPaneRect.Size();//iControl->DisplayArea().Size();
-	    
+
 	    TInt columns = iVisibleColumns = AknLayoutScalable_Apps::cell_cmail_l_pane_ParamLimits(var).LastColumn() + 1; //layoutHandler->GridColumnsInThisResolution();
 	    TInt rows = iVisibleRows = AknLayoutScalable_Apps::cell_cmail_l_pane_ParamLimits(var).LastRow() + 1; //layoutHandler->GridRowsInThisResolution();
-	    
+
 	// </cmail>
 
         iCurrentLevel.iGridLayout->SetSize( gridRect.Size() );
@@ -2016,7 +2056,7 @@
             iScrollbar->MakeVisible(EFalse);
             }
         // </cmail>
-	    
+
         TInt scrollbarTopLeftX = displaySize.iWidth - scrollbarWidth;
         TInt scrollbarTopLeftY = 0;
         TInt scrollbarBottomRightX = displaySize.iWidth;
@@ -2050,17 +2090,17 @@
             TAlfTimedPoint( scrollbarTopLeftX, scrollbarTopLeftY ) );
         iWidgetLayout->SetAnchor(
             EAlfAnchorBottomRight,
-            0, 
+            0,
             EAlfAnchorOriginLeft,
             EAlfAnchorOriginTop,
             EAlfAnchorMetricAbsolute,
             EAlfAnchorMetricAbsolute,
             TAlfTimedPoint( scrollbarBottomRightX, scrollbarBottomRightY ) );
-          
+
         // Set anchors for the grid
         iWidgetLayout->SetAnchor(
             EAlfAnchorTopLeft,
-            1, 
+            1,
             EAlfAnchorOriginLeft,
             EAlfAnchorOriginTop,
             EAlfAnchorMetricAbsolute,
@@ -2068,7 +2108,7 @@
             TAlfTimedPoint( gridTopLeftX, gridTopLeftY ) );
         iWidgetLayout->SetAnchor(
             EAlfAnchorBottomRight,
-            1, 
+            1,
             EAlfAnchorOriginLeft,
             EAlfAnchorOriginTop,
             EAlfAnchorMetricAbsolute,
@@ -2076,9 +2116,9 @@
             TAlfTimedPoint( gridBottomRightX, gridBottomRightY ) );
 
         iParentLayout->UpdateChildrenLayout();
-          
+
         TSize gridSize = iCurrentLevel.iGridLayout->Size().IntTarget().AsSize();
-        iColumnWidth = gridSize.iWidth / iVisibleColumns; 
+        iColumnWidth = gridSize.iWidth / iVisibleColumns;
         iRowHeight = gridSize.iHeight / iVisibleRows;
 
         // Selector ring wrap limits can be calculated when row and column sizes are known.
@@ -2104,9 +2144,9 @@
         iRingMovementXFuncMappingDataProvider.SetEnd((iVisibleColumns+1)*iColumnWidth);
         iRingMovementYFuncMappingDataProvider.SetStart(-iRowHeight);
         iRingMovementYFuncMappingDataProvider.SetEnd((iRowCount+1)*iRowHeight);
-        
+
         iRingMovementXFunc->SetMappingTableValues( -(iVisibleColumns+2)*iColumnWidth, (iVisibleColumns*2+2)*iColumnWidth, &iRingMovementXFuncMappingDataProvider );
-        iRingMovementYFunc->SetMappingTableValues( -(iRowCount+2)*iRowHeight, (iRowCount*2+2)*iRowHeight, &iRingMovementYFuncMappingDataProvider );      
+        iRingMovementYFunc->SetMappingTableValues( -(iRowCount+2)*iRowHeight, (iRowCount*2+2)*iRowHeight, &iRingMovementYFuncMappingDataProvider );
         }
     }
 
@@ -2123,13 +2163,13 @@
     HBufC* text_7 = StringLoader::LoadLC( R_DISCLAIMER_PART_7 );
     HBufC* text_8 = StringLoader::LoadLC( R_DISCLAIMER_PART_8 );
     HBufC* text_9 = StringLoader::LoadLC( R_DISCLAIMER_PART_9 );
-    HBufC* text_10 = StringLoader::LoadLC( R_DISCLAIMER_PART_10 );    
+    HBufC* text_10 = StringLoader::LoadLC( R_DISCLAIMER_PART_10 );
     HBufC* text_11 = StringLoader::LoadLC( R_DISCLAIMER_PART_11 );
-    
+
     //Create a buffer for dialog content
-    HBufC* text = HBufC::NewLC( text_1->Length() + text_2->Length() + text_3->Length() + 
-                                text_4->Length() + text_5->Length() + text_6->Length() + 
-                                text_7->Length() + text_8->Length() + text_9->Length() + 
+    HBufC* text = HBufC::NewLC( text_1->Length() + text_2->Length() + text_3->Length() +
+                                text_4->Length() + text_5->Length() + text_6->Length() +
+                                text_7->Length() + text_8->Length() + text_9->Length() +
                                 text_10->Length() + text_11->Length() );
     //Copy the disclaimer text parts to dialog content
     text->Des() += *text_1;
@@ -2142,8 +2182,8 @@
     text->Des() += *text_8;
     text->Des() += *text_9;
     text->Des() += *text_10;
-    text->Des() += *text_11;    
-    
+    text->Des() += *text_11;
+
     CAknMessageQueryDialog* dlg = CAknMessageQueryDialog::NewL( *text );
     CleanupStack::PopAndDestroy( text );
     CleanupStack::PopAndDestroy( text_11 );
@@ -2158,21 +2198,21 @@
     CleanupStack::PopAndDestroy( text_2 );
     CleanupStack::PopAndDestroy( text_1 );
     dlg->PrepareLC( R_DISCLAIMER_MESSAGE );
-    
+
     //Create heading for the dialog, load and create the heading text
     CAknPopupHeadingPane* headingPane = dlg->Heading();
     HBufC* appName = StringLoader::LoadLC(R_FSEMAIL_APP_NAME );
     HBufC* version = StringLoader::LoadLC( R_DISCLAIMER_FSEMAIL_VERSION );
     HBufC* title = HBufC::NewLC(version->Length() + appName->Length() + 1);
-    title->Des() += *appName;    
+    title->Des() += *appName;
     title->Des() += KSpace;
     title->Des() += *version;
     headingPane->SetTextL( *title );
     CleanupStack::PopAndDestroy( title );
     CleanupStack::PopAndDestroy( version );
-    CleanupStack::PopAndDestroy( appName );  
+    CleanupStack::PopAndDestroy( appName );
     dlg->ButtonGroupContainer().SetCommandSetL( R_AVKON_SOFTKEYS_OK_EMPTY );
-    //show dialog  
+    //show dialog
     TInt ret = dlg->RunLD();
 	}
 
@@ -2185,25 +2225,23 @@
     if ( iConstructionCompleted )
         {
         iItemIdInButtonDownEvent.iItemId = KErrNotFound;
-    
-	// <cmail> Use layout data instead of hard-coded values
+
 	    TRect mainPaneRect;
 	    AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
 	    TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
-	    
+
 	    TAknLayoutRect scrollBarRect;
 	    scrollBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::aid_size_touch_scroll_bar());
 	    TRect gridRect = mainPaneRect;
 	    gridRect.iBr.iX -= scrollBarRect.Rect().Width();
-	    
+
 	    TAknLayoutRect cellRect;
 	    cellRect.LayoutRect(gridRect, AknLayoutScalable_Apps::aid_size_cell_cmail_l(var, 0, 0));
-	    
+
 		TSize displaySize = cellRect.Rect().Size();
-	// </cmail>
         iParentLayout->SetSize( displaySize );
-        RescaleIconsL(); 
-        VisualLayoutUpdatedL();        
+        RescaleIconsL();
+        VisualLayoutUpdatedL();
 
         UpdateFocusVisibility();
         }
@@ -2213,7 +2251,7 @@
     {
     FUNC_LOG;
     iRefreshNeeded = ETrue;
-    
+
     CFsEmailUiViewBase::HandleDynamicVariantSwitchOnBackgroundL( aType );
     }
 
@@ -2245,7 +2283,7 @@
     TRect scrollbarRect = aParent->DisplayRectTarget();
     scrollbarRect.Move(mainPaneRect.iTl);
     iScrollbar->SetRect(scrollbarRect);
-    
+
     iScrollbar->MakeVisible(EFalse);
     iScrollbar->SetModelL(&iScrollbarModel);
 	}
@@ -2253,7 +2291,7 @@
 void CFSEmailUiLauncherGridVisualiser::UpdateScrollBarRangeL()
 	{
     FUNC_LOG;
-	
+
 	iScrollbarModel.SetScrollSpan(iRowCount);
 	iScrollbarModel.SetWindowSize(iVisibleRows);
 	iScrollbarModel.SetFocusPosition(iFirstVisibleRow);
@@ -2267,7 +2305,7 @@
     const TInt KScrollTransitionTimeMs = KSelectTransitionTimeMs;
     if (aScrollBar == iScrollbar)
          {
-         
+
          switch( aEventType )
              {
              case EEikScrollHome :
@@ -2290,7 +2328,7 @@
 void CFSEmailUiLauncherGridVisualiser::UpdateLauncherItemListL()
     {
     FUNC_LOG;
-    
+
     // Read info about all implementations into infoArray
     RImplInfoPtrArray infoArray;
     CleanupResetAndDestroyClosePushL( infoArray );
@@ -2310,7 +2348,7 @@
     for ( TInt infoIndex = 0; infoIndex < infoCount; infoIndex++ )
         {
         TUid implementationUid = infoArray[infoIndex]->ImplementationUid();
-        
+
         // Check whether item can be found from current laucher items
         TBool itemFound = EFalse;
         for ( TInt itemIndex = 0; itemIndex < iLauncherItemUids.Count(); itemIndex++ )
@@ -2353,7 +2391,7 @@
     CleanupStack::PopAndDestroy( &infoArray );
     }
 
-/** 
+/**
  * Sets application title when leaving this view
  */
 void CFSEmailUiLauncherGridVisualiser::SetDefaultStatusPaneTextL()
@@ -2368,7 +2406,7 @@
     iWizardWaitnoteShown = aWaitnoteShown;
     }
 
-/** 
+/**
  * Check status of all configured mailboxes
  */
 TFSLauncherGridMailboxStatus CFSEmailUiLauncherGridVisualiser::CheckMailboxStatusL()
@@ -2376,7 +2414,7 @@
     FUNC_LOG;
     RPointerArray<CFSMailBox> mailBoxes;
     CleanupResetAndDestroyClosePushL( mailBoxes );
-    TFSMailMsgId id; 
+    TFSMailMsgId id;
     TInt err = iAppUi.GetMailClient()->ListMailBoxes(
         id,
         mailBoxes );
@@ -2385,7 +2423,7 @@
     returnStatus.iMailboxCount = mailBoxes.Count();
     // Reset counters
     returnStatus.iMailboxesOnline = returnStatus.iMailboxesOffline = returnStatus.iMailboxesSyncing = 0;
-    
+
     for ( TInt i = 0; i < mailBoxes.Count(); i++ )
         {
         // First check online/offline status
@@ -2398,7 +2436,7 @@
             {
             returnStatus.iMailboxesOnline++;
             }
-        
+
         // Then check sync state
         TSSMailSyncState latestSyncstate = mailBoxes[i]->CurrentSyncState();
         if( latestSyncstate == InboxSyncing ||
@@ -2408,12 +2446,12 @@
             returnStatus.iMailboxesSyncing++;
             }
         }
-    
+
     CleanupStack::PopAndDestroy( &mailBoxes );
     return returnStatus;
     }
 
-// Bitmap provider for grid ecom plugins icons 
+// Bitmap provider for grid ecom plugins icons
 void CFSEmailUiLauncherGridVisualiser::ProvideBitmapL(TInt aId, CFbsBitmap*& aBitmap, CFbsBitmap*& aMaskBitmap)
 	{
     FUNC_LOG;
@@ -2421,31 +2459,31 @@
     TRect mainPaneRect;
     AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
     TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
-    
+
     TAknLayoutRect scrollBarRect;
     scrollBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::aid_size_touch_scroll_bar());
     TRect gridRect = mainPaneRect;
     gridRect.iBr.iX -= scrollBarRect.Rect().Width();
-    
+
     TAknLayoutRect itemRect;
     itemRect.LayoutRect(gridRect, AknLayoutScalable_Apps::cell_cmail_l_pane(var, 0, 0));
-    
+
     TAknLayoutRect gridIconRect;
     gridIconRect.LayoutRect(itemRect.Rect(), AknLayoutScalable_Apps::cell_cmail_l_pane_g1(var));
-// </cmail> 
-    
-	CAknIcon* launcherItemIcon(0);	
+// </cmail>
+
+	CAknIcon* launcherItemIcon(0);
 	for ( TInt i=0; i<iPluginIdIconIdPairs.Count(); i++ )
 		{
 		if ( aId == iPluginIdIconIdPairs[i].iIconId )
 			{
 			launcherItemIcon = iLauncherItems[iPluginIdIconIdPairs[i].iPluginArrayIndex]->Icon();
-			}		
+			}
 		}
-		
+
 	if ( launcherItemIcon )
 		{
-// <cmail> Use layout data instead of hard-coded values		
+// <cmail> Use layout data instead of hard-coded values
 		// Set bitmap size
 	    //TSize iconSize(iAppUi.LayoutHandler()->GridIconSize(), iAppUi.LayoutHandler()->GridIconSize() );
 
@@ -2460,15 +2498,15 @@
             {
             AknIconUtils::DisableCompression( launcherItemIcon->Mask());
             AknIconUtils::SetSize( launcherItemIcon->Mask(), iconSize, EAspectRatioPreserved );
-            }       
+            }
         // Create duplicate sof original for alf
         CFbsBitmap* bitmap = new (ELeave) CFbsBitmap;
-     	bitmap->Duplicate( launcherItemIcon->Bitmap()->Handle() );	    
+     	bitmap->Duplicate( launcherItemIcon->Bitmap()->Handle() );
 	    CFbsBitmap* mask = new (ELeave) CFbsBitmap;
-     	mask->Duplicate( launcherItemIcon->Mask()->Handle() );	    
-	
+     	mask->Duplicate( launcherItemIcon->Mask()->Handle() );
+
         aBitmap = bitmap;
-  		aMaskBitmap = mask; 
+  		aMaskBitmap = mask;
 		}
 	else
 		{
@@ -2483,7 +2521,7 @@
 	iDoubleClickLock = EFalse;
 	}
 
-TReal32 CFSEmailUiLauncherGridVisualiser::TRingMovementFuncMappingDataProvider::MapValue(TReal32 aValue, TInt /*aMode*/) const   
+TReal32 CFSEmailUiLauncherGridVisualiser::TRingMovementFuncMappingDataProvider::MapValue(TReal32 aValue, TInt /*aMode*/) const
     {
     FUNC_LOG;
     AlfUtil::WrapValue(aValue, iStart, iEnd);
@@ -2497,7 +2535,7 @@
         {
         TAlfTimedPoint selectorPos;
         selectorPos.iX.SetMappingFunctionIdentifier( 0 );
-        selectorPos.iY.SetMappingFunctionIdentifier( 0 ); 
+        selectorPos.iY.SetMappingFunctionIdentifier( 0 );
         iSelector->SetPos( selectorPos );
         }
     }
@@ -2507,7 +2545,7 @@
     if( iSelector )
         {
         TAlfTimedValue selectorOpacity;
-        if( IsFocusShown() || iItemIdInButtonDownEvent.iItemId >= 0 ) 
+        if( IsFocusShown() || iItemIdInButtonDownEvent.iItemId >= 0 )
             {
             selectorOpacity.SetValueNow( 1 );
             }
@@ -2527,16 +2565,39 @@
 
 void CFSEmailUiLauncherGridVisualiser::MailboxDeletionComplete()
     {
-    TRAP_IGNORE( HandleContentChangeL() );    
+    TRAP_IGNORE( HandleContentChangeL() );
     }
 
-void CFSEmailUiLauncherGridVisualiser::HandleTimerFocusStateChange( TBool aShow )
+void CFSEmailUiLauncherGridVisualiser::FocusVisibilityChange( TBool aVisible )
+	{
+    CFsEmailUiViewBase::FocusVisibilityChange( aVisible );
+    UpdateFocusVisibility();
+    ResizeItemIcon( !aVisible );
+	}
+
+
+// ----------------------------------------------------------------------------
+// LaunchStylusPopupMenuL()
+// Launches and displays the pop-up menu invoked by a long tap event.
+// ----------------------------------------------------------------------------
+//
+void CFSEmailUiLauncherGridVisualiser::LaunchStylusPopupMenu(
+	const TInt aItemId )
 	{
-    CFsEmailUiViewBase::HandleTimerFocusStateChange( aShow );
-	if (!aShow)
-		{
-		UpdateFocusVisibility();
-		ResizeItemIcon( ETrue );
-		}
+	// Get the ID of the mailbox in case the user wants to delete it.
+	iMailboxToDelete = iCurrentLevel.iItems[aItemId].iMailBoxId;
+
+	// Get the item position and use it to determine the position of the menu.
+	const TRect rect(
+		iCurrentLevel.iItemVisualData[aItemId].iBase->DisplayRect() );
+	TPoint position( rect.iTl.iX + rect.Width() / 2,
+					 rect.iTl.iY + rect.Height() / 2 );
+	iStylusPopUpMenu->SetPosition( position );
+
+	// Display the menu.
+	iStylusPopUpMenu->ShowMenu();
+	iStylusPopUpMenuLaunched = ETrue;
 	}
-// End of file
+
+
+// End of file.