emailuis/emailui/src/FreestyleEmailUiMailListVisualiser.cpp
branchRCL_3
changeset 12 4ce476e64c59
parent 11 0396474f30f5
child 13 8592a65ad3fb
equal deleted inserted replaced
11:0396474f30f5 12:4ce476e64c59
    74 #include "FreestyleEmailUiFileSystemInfo.h"
    74 #include "FreestyleEmailUiFileSystemInfo.h"
    75 #include "FreestyleEmailUiAppui.h"
    75 #include "FreestyleEmailUiAppui.h"
    76 #include "FreestyleEmailUi.hrh"
    76 #include "FreestyleEmailUi.hrh"
    77 #include "FreestyleEmailUiTextureManager.h"
    77 #include "FreestyleEmailUiTextureManager.h"
    78 #include "FreestyleEmailUiMailListControl.h"
    78 #include "FreestyleEmailUiMailListControl.h"
    79 #include "FreestyleEmailUiMailViewerVisualiser.h"
       
    80 #include "FreestyleEmailUiStatusIndicator.h"
    79 #include "FreestyleEmailUiStatusIndicator.h"
    81 #include "freestyleemailcenrephandler.h"
    80 #include "freestyleemailcenrephandler.h"
    82 #include "FreestyleEmailUiFolderListVisualiser.h"
    81 #include "FreestyleEmailUiFolderListVisualiser.h"
    83 #include "FreestyleEmailUiShortcutBinding.h"
    82 #include "FreestyleEmailUiShortcutBinding.h"
    84 #include "FreestyleEmailUiMsgDetailsVisualiser.h"
    83 #include "FreestyleEmailUiMsgDetailsVisualiser.h"
   418     iDeleteTask = new (ELeave) TDeleteTask<CFSEmailUiMailListVisualiser> (*this, HandleDeleteTaskL);
   417     iDeleteTask = new (ELeave) TDeleteTask<CFSEmailUiMailListVisualiser> (*this, HandleDeleteTaskL);
   419 
   418 
   420 	iTouchFeedBack = MTouchFeedback::Instance();
   419 	iTouchFeedBack = MTouchFeedback::Instance();
   421  	}
   420  	}
   422 
   421 
       
   422 // ---------------------------------------------------------------------------
       
   423 // Second phase constructor.
       
   424 // ---------------------------------------------------------------------------
       
   425 //
   423 // CFSEmailUiMailListVisualiser::DoFirstStartL()
   426 // CFSEmailUiMailListVisualiser::DoFirstStartL()
   424 // Purpose of this function is to do first start things only when list is
   427 // Purpose of this function is to do first start things only when list is
   425 // really needed to be shown. Implemented to make app startuo faster.
   428 // really needed to be shown. Implemented to make app startuo faster.
   426 void CFSEmailUiMailListVisualiser::DoFirstStartL()
   429 void CFSEmailUiMailListVisualiser::DoFirstStartL()
   427     {
   430     {
   436     // Create screen control and anchor layout
   439     // Create screen control and anchor layout
   437     iMailListControl = CFreestyleEmailUiMailListControl::NewL( iEnv, this );
   440     iMailListControl = CFreestyleEmailUiMailListControl::NewL( iEnv, this );
   438     iScreenAnchorLayout = CAlfAnchorLayout::AddNewL( *iMailListControl );
   441     iScreenAnchorLayout = CAlfAnchorLayout::AddNewL( *iMailListControl );
   439     iScreenAnchorLayout->SetFlags(EAlfVisualFlagAutomaticLocaleMirroringEnabled);
   442     iScreenAnchorLayout->SetFlags(EAlfVisualFlagAutomaticLocaleMirroringEnabled);
   440 
   443 
   441     //<cmail>
       
   442     iTouchManager = CEUiEmailListTouchManager::NewL(*this);
   444     iTouchManager = CEUiEmailListTouchManager::NewL(*this);
   443     //</cmail>
       
   444 
   445 
   445     // Create control bar control and append to control group and anchor layout
   446     // Create control bar control and append to control group and anchor layout
   446     iControlBarControl = CFsControlBar::NewL( iEnv );
   447     iControlBarControl = CFsControlBar::NewL( iEnv );
   447     iControlBarControl->AddObserverL( *this );
   448     iControlBarControl->AddObserverL( *this );
   448     //<cmail>
       
   449     iControlBarControl->AddObserverL( *iTouchManager );
   449     iControlBarControl->AddObserverL( *iTouchManager );
   450     //</cmail>
       
   451 
   450 
   452     CreateControlBarLayoutL();
   451     CreateControlBarLayoutL();
   453     SetMailListLayoutAnchors();
   452     SetMailListLayoutAnchors();
   454 
   453 
   455     iControlBarControl->SetSelectorTransitionTimeL( KControlBarTransitionTime );
   454     iControlBarControl->SetSelectorTransitionTimeL( KControlBarTransitionTime );
   467 
   466 
   468     // Set mark type and icon
   467     // Set mark type and icon
   469     iMailList->SetMarkTypeL( CFsTreeList::EFsTreeListMultiMarkable );
   468     iMailList->SetMarkTypeL( CFsTreeList::EFsTreeListMultiMarkable );
   470     iMailList->SetIndentationL(0);
   469     iMailList->SetIndentationL(0);
   471 
   470 
   472     //<cmail> Compared to S60 3.2.3 in S60 5.0 Alf offers the key events in
       
   473     // opposite order.
       
   474     ControlGroup().AppendL( iMailListControl );
   471     ControlGroup().AppendL( iMailListControl );
   475     ControlGroup().AppendL( iControlBarControl );
   472     ControlGroup().AppendL( iControlBarControl );
   476     ControlGroup().AppendL( iMailList->TreeControl() );
   473     ControlGroup().AppendL( iMailList->TreeControl() );
   477     //</cmail>
       
   478 
   474 
   479     iTreeItemArray.Reset();
   475     iTreeItemArray.Reset();
   480 
   476 
   481     // Set empty text
   477     // Set empty text
   482     HBufC* emptyText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_EMPTY_MSG_LIST_TEXT );
   478     HBufC* emptyText = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_EMPTY_MSG_LIST_TEXT );
   501     iNewEmailText = StringLoader::LoadL( R_COMMAND_AREA_NEW_EMAIL );
   497     iNewEmailText = StringLoader::LoadL( R_COMMAND_AREA_NEW_EMAIL );
   502 
   498 
   503     // Set menu, mark and background icons
   499     // Set menu, mark and background icons
   504     iMailTreeListVisualizer->SetMarkIcon( iAppUi.FsTextureManager()->TextureByIndex( EListControlMarkIcon ) );
   500     iMailTreeListVisualizer->SetMarkIcon( iAppUi.FsTextureManager()->TextureByIndex( EListControlMarkIcon ) );
   505     iMailTreeListVisualizer->SetMenuIcon( iAppUi.FsTextureManager()->TextureByIndex( EListControlMenuIcon ) );
   501     iMailTreeListVisualizer->SetMenuIcon( iAppUi.FsTextureManager()->TextureByIndex( EListControlMenuIcon ) );
   506     //<cmail> s60 skin support
       
   507     //iMailTreeListVisualizer->SetBackgroundTextureL( iAppUi.FsTextureManager()->TextureByIndex( EBackgroundTextureMailList ) );
       
   508     //</cmail>
       
   509     iMailList->AddObserverL( *this );
   502     iMailList->AddObserverL( *this );
   510     //<cmail>
       
   511     iMailList->AddObserverL( *iTouchManager );
   503     iMailList->AddObserverL( *iTouchManager );
   512     //</cmail>
       
   513     // Initializing the default stylus long tap popup menu
   504     // Initializing the default stylus long tap popup menu
   514     if( !iStylusPopUpMenu )
   505     if( !iStylusPopUpMenu )
   515         {
   506         {
   516         TPoint point( 0, 0 );
   507         TPoint point( 0, 0 );
   517         iStylusPopUpMenu = CAknStylusPopUpMenu::NewL( this , point );
   508         iStylusPopUpMenu = CAknStylusPopUpMenu::NewL( this , point );
   547     : CFsEmailUiViewBase( aMailListControlGroup, *aAppUi ),
   538     : CFsEmailUiViewBase( aMailListControlGroup, *aAppUi ),
   548     iEnv( aEnv ),
   539     iEnv( aEnv ),
   549     iListMarkItemsState( ETrue ), //Initlly list has no markings
   540     iListMarkItemsState( ETrue ), //Initlly list has no markings
   550     iMoveToFolderOngoing( EFalse ),
   541     iMoveToFolderOngoing( EFalse ),
   551     iConsumeStdKeyYes_KeyUp( EFalse ), // use to prevent Call application execution if call for contact processed
   542     iConsumeStdKeyYes_KeyUp( EFalse ), // use to prevent Call application execution if call for contact processed
   552     iMailOpened(EFalse)
   543     iMailOpened( EFalse ),
       
   544 	iMarkingMode( EFalse ),
       
   545     iMarkingModeWaitingToExit( EFalse ),
       
   546     iMarkingModeTextVisual( NULL )
   553 	{
   547 	{
   554     FUNC_LOG;
   548     FUNC_LOG;
   555 	}
   549 	}
   556 
   550 
   557 // ---------------------------------------------------------------------------
   551 // ---------------------------------------------------------------------------
  1583         if (forwardNavigation)
  1577         if (forwardNavigation)
  1584             {
  1578             {
  1585             iAppUi.StartMonitoringL();
  1579             iAppUi.StartMonitoringL();
  1586             }
  1580             }
  1587         SetListAndCtrlBarFocusL(); // ShowListL() makes list focused and this may need to be reverted
  1581         SetListAndCtrlBarFocusL(); // ShowListL() makes list focused and this may need to be reverted
  1588         UnmarkAllItemsL();
       
  1589         if ( aCustomMessageId == TUid::Uid(KMailSettingsReturnFromPluginSettings) )
  1582         if ( aCustomMessageId == TUid::Uid(KMailSettingsReturnFromPluginSettings) )
  1590             {
  1583             {
  1591             // Better to refresh launcher grid view because mailbox branding might be changed.
  1584             // Better to refresh launcher grid view because mailbox branding might be changed.
  1592             iAppUi.LauncherGrid().SetRefreshNeeded();
  1585             iAppUi.LauncherGrid().SetRefreshNeeded();
  1593             }
  1586             }
  1719 	if ( iMailFolder )
  1712 	if ( iMailFolder )
  1720 	    {
  1713 	    {
  1721 	    currentFolderType = iMailFolder->GetFolderType();
  1714 	    currentFolderType = iMailFolder->GetFolderType();
  1722 	    }
  1715 	    }
  1723 
  1716 
       
  1717 	if ( aResourceId == R_FSEMAILUI_MAILLIST_MARKING_MODE_MENUPANE )
       
  1718 	    {
       
  1719         if (!CountMarkedItemsL())
       
  1720             {
       
  1721             aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeDelete, ETrue );
       
  1722             aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeUnread, ETrue );
       
  1723             aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeRead, ETrue );
       
  1724             aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeMove, ETrue );
       
  1725             aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeFollowUp, ETrue );
       
  1726             aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeMarkAll, EFalse );
       
  1727             aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeUnmarkAll, ETrue );
       
  1728             }
       
  1729         else
       
  1730             {
       
  1731             aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeDelete, EFalse );
       
  1732             if ( AreAllMarkedItemsUnreadL() )
       
  1733                 {
       
  1734                 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeUnread, ETrue );
       
  1735                 }
       
  1736             else
       
  1737                 {
       
  1738                 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeUnread, EFalse );
       
  1739                 }
       
  1740             if ( AreAllMarkedItemsReadL() )
       
  1741                 {            
       
  1742                 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeRead, ETrue );
       
  1743                 }
       
  1744             else
       
  1745                 {
       
  1746                 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeRead, EFalse );
       
  1747                 }
       
  1748             aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeMove, !supportsMoving );
       
  1749             aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeFollowUp, !supportsFlag );            
       
  1750             if ( AreAllItemsMarked() )
       
  1751                 {
       
  1752                 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeMarkAll, ETrue );
       
  1753                 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeUnmarkAll, EFalse );
       
  1754                 }
       
  1755             else if ( AreAllItemsUnmarked() )
       
  1756                 {
       
  1757                 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeMarkAll, EFalse );
       
  1758                 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeUnmarkAll, ETrue );
       
  1759                 }
       
  1760             else
       
  1761                 {
       
  1762                 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeMarkAll, EFalse );
       
  1763                 aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingModeUnmarkAll, EFalse );
       
  1764                 }                
       
  1765             }
       
  1766 	    }
       
  1767 	
  1724     // MAIN MENU ***************************************************************************
  1768     // MAIN MENU ***************************************************************************
  1725 	if ( aResourceId == R_FSEMAILUI_MAILLIST_MENUPANE )
  1769 	if ( aResourceId == R_FSEMAILUI_MAILLIST_MENUPANE )
  1726 	    {
  1770 	    {
  1727             // Sync/cancel sync
  1771             // Sync/cancel sync
  1728 	    CFSMailBox* activeMailbox = iAppUi.GetActiveMailbox();
  1772 	    CFSMailBox* activeMailbox = iAppUi.GetActiveMailbox();
  1780             // Hide all the normal email message specific actions
  1824             // Hide all the normal email message specific actions
  1781             aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReply, ETrue );
  1825             aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReply, ETrue );
  1782             aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReplyAll, ETrue );
  1826             aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReplyAll, ETrue );
  1783             aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsForward, ETrue );
  1827             aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsForward, ETrue );
  1784             aMenuPane->SetItemDimmed( EFsEmailUiCmdMailActions, ETrue);
  1828             aMenuPane->SetItemDimmed( EFsEmailUiCmdMailActions, ETrue);
  1785 
       
  1786             TInt markedCount = CountMarkedItemsL();
       
  1787             // Hide mark/unmark all when not applicable
       
  1788             if ( markedCount == EmailsInModelL() ) // Hide mark all
       
  1789 		       {
       
  1790 		       aMenuPane->SetItemDimmed( EFsEmailUiCmdSubMenuMark, ETrue );
       
  1791 		       }
       
  1792             if ( markedCount == 0 ) // Hide unmark all
       
  1793 		       {
       
  1794 		       aMenuPane->SetItemDimmed( EFsEmailUiCmdSubMenuUnmark, ETrue );
       
  1795 		       }
       
  1796 
       
  1797             }
  1829             }
  1798         else
  1830         else
  1799     	    {
  1831     	    {
  1800     		CFSMailMessage* targetMessage = NULL;
  1832     		CFSMailMessage* targetMessage = NULL;
  1801             if ( targetEntries.Count() == 1 )
  1833             if ( targetEntries.Count() == 1 )
  1823             // Reply all is hidden also when the single target message has multiple recipients
  1855             // Reply all is hidden also when the single target message has multiple recipients
  1824             else if ( !targetMessage || numRecipients <= 1 )
  1856             else if ( !targetMessage || numRecipients <= 1 )
  1825                 {
  1857                 {
  1826                 aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReplyAll, ETrue );
  1858                 aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsReplyAll, ETrue );
  1827                 }
  1859                 }
  1828 
       
  1829             aMenuPane->SetItemDimmed( EFsEmailUiCmdSubMenuUnmark, ETrue);
       
  1830             }
  1860             }
  1831 
  1861 
  1832 	    // EMPTY LIST, MOST OPTIONS ARE HIDDEN
  1862 	    // EMPTY LIST, MOST OPTIONS ARE HIDDEN
  1833 	    if ( !iModel->Count() || !iMailFolder )
  1863 	    if ( !iModel->Count() || !iMailFolder )
  1834 	        {
  1864 	        {
  1835 	        aMenuPane->SetItemDimmed( EFsEmailUiCmdMailActions, ETrue );
  1865 	        aMenuPane->SetItemDimmed( EFsEmailUiCmdMailActions, ETrue );
  1836 	        aMenuPane->SetItemDimmed( EFsEmailUiCmdSubMenuMark, ETrue );
       
  1837 	        aMenuPane->SetItemDimmed( EFsEmailUiCmdSubMenuUnmark, ETrue );
       
  1838 	        aMenuPane->SetItemDimmed( EFsEmailUiCmdSearch, ETrue );
  1866 	        aMenuPane->SetItemDimmed( EFsEmailUiCmdSearch, ETrue );
       
  1867 	        aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkingMode, ETrue );
  1839 	        }
  1868 	        }
  1840 
  1869 
  1841 	    // FOLDER SPECIFIC COMMAND HIDING
  1870 	    // FOLDER SPECIFIC COMMAND HIDING
  1842 	    // "Clear deleted folder" command is available only in Deleted folder
  1871 	    // "Clear deleted folder" command is available only in Deleted folder
  1843 	    if ( currentFolderType != EFSDeleted || !iModel->Count() )
  1872 	    if ( currentFolderType != EFSDeleted || !iModel->Count() )
  1902             aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsFlag, ETrue );
  1931             aMenuPane->SetItemDimmed( EFsEmailUiCmdActionsFlag, ETrue );
  1903             }
  1932             }
  1904 		}
  1933 		}
  1905     // ACTIONS SUBMENU *********************************************************************
  1934     // ACTIONS SUBMENU *********************************************************************
  1906 
  1935 
  1907 
       
  1908 	// MARK SUBMENU ************************************************************************
       
  1909 	// Mark submenu show only when focus is visible
       
  1910 	if ( aResourceId == R_FSEMAILUI_MAILLIST_SUBMENU_MARK)
       
  1911 		{
       
  1912 	    // Checks if a device has a keyboard or not.
       
  1913 		if( !iLastFocus )
       
  1914        	    {
       
  1915             aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkMark, ETrue );
       
  1916             aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkMarkAll, ETrue );
       
  1917 	        }
       
  1918          else
       
  1919        	    {
       
  1920             aMenuPane->SetItemDimmed( EFsEmailUiCmdMarkSubAll, ETrue );
       
  1921 	        }
       
  1922 		}
       
  1923 
       
  1924     // MARK SUBMENU ************************************************************************
       
  1925 
       
  1926 
       
  1927 	// UNMARK SUBMENU ************************************************************************
       
  1928 	// Unmark submenu show only when focus is not visible
       
  1929 	if ( aResourceId == R_FSEMAILUI_MAILLIST_SUBMENU_UNMARK)
       
  1930 		{
       
  1931 		// Nothing to do yet
       
  1932 		}
       
  1933     // UNMARK SUBMENU ************************************************************************
       
  1934 
       
  1935 
       
  1936 	CleanupStack::PopAndDestroy( &targetEntries );
  1936 	CleanupStack::PopAndDestroy( &targetEntries );
  1937 
  1937 
  1938 	// Add shortcut hints
  1938 	// Add shortcut hints
  1939 	iAppUi.ShortcutBinding().AppendShortcutHintsL( *aMenuPane,
  1939 	iAppUi.ShortcutBinding().AppendShortcutHintsL( *aMenuPane,
  1940 	                             CFSEmailUiShortcutBinding::EContextMailList );
  1940 	                             CFSEmailUiShortcutBinding::EContextMailList );
  1989     CleanupClosePushL( markedEntries );
  1989     CleanupClosePushL( markedEntries );
  1990     iMailList->GetMarkedItemsL( markedEntries );
  1990     iMailList->GetMarkedItemsL( markedEntries );
  1991     TInt count = markedEntries.Count();
  1991     TInt count = markedEntries.Count();
  1992     CleanupStack::PopAndDestroy( &markedEntries );
  1992     CleanupStack::PopAndDestroy( &markedEntries );
  1993     return count;
  1993     return count;
       
  1994     }
       
  1995 
       
  1996 // ---------------------------------------------------------------------------
       
  1997 //
       
  1998 //
       
  1999 // ---------------------------------------------------------------------------
       
  2000 //
       
  2001 TBool CFSEmailUiMailListVisualiser::AreAllItemsMarked()
       
  2002     {
       
  2003     FUNC_LOG;
       
  2004 
       
  2005     TBool ret(ETrue);
       
  2006     
       
  2007 	if ( iTreeItemArray.Count() )
       
  2008 		{
       
  2009 		for ( TInt i=0;i<iTreeItemArray.Count(); i++ )
       
  2010 			{
       
  2011 			if ( !iMailList->IsNode(iTreeItemArray[i].iListItemId ) &&
       
  2012 			     !iMailList->IsMarked( iTreeItemArray[i].iListItemId ))
       
  2013                 {
       
  2014 				ret = EFalse;
       
  2015 				break;    
       
  2016 				}
       
  2017 			}
       
  2018 		}
       
  2019     return ret;
       
  2020     }
       
  2021 
       
  2022 // ---------------------------------------------------------------------------
       
  2023 //
       
  2024 //
       
  2025 // ---------------------------------------------------------------------------
       
  2026 //
       
  2027 TBool CFSEmailUiMailListVisualiser::AreAllItemsUnmarked()
       
  2028     {
       
  2029     FUNC_LOG;
       
  2030 
       
  2031     TBool ret(ETrue);
       
  2032     
       
  2033 	if ( iTreeItemArray.Count() )
       
  2034 		{
       
  2035 		for ( TInt i=0;i<iTreeItemArray.Count(); i++ )
       
  2036 			{
       
  2037 			if ( !iMailList->IsNode(iTreeItemArray[i].iListItemId ) &&
       
  2038 			     iMailList->IsMarked( iTreeItemArray[i].iListItemId ))
       
  2039                 {
       
  2040 				ret = EFalse;
       
  2041 				break;    
       
  2042 				}
       
  2043 			}
       
  2044 		}
       
  2045     return ret;
       
  2046     }
       
  2047 
       
  2048 // ---------------------------------------------------------------------------
       
  2049 //
       
  2050 //
       
  2051 // ---------------------------------------------------------------------------
       
  2052 //
       
  2053 TBool CFSEmailUiMailListVisualiser::AreAllMarkedItemsReadL()
       
  2054     {
       
  2055     FUNC_LOG;
       
  2056 
       
  2057     TBool ret(ETrue);
       
  2058     
       
  2059 	if ( iTreeItemArray.Count() )
       
  2060 		{
       
  2061         for ( TInt i=0;i<iTreeItemArray.Count(); i++ )
       
  2062             {
       
  2063             if ( !iMailList->IsNode(iTreeItemArray[i].iListItemId ) &&
       
  2064                 iMailList->IsMarked( iTreeItemArray[i].iListItemId ))
       
  2065                 {
       
  2066                 CFSEmailUiMailListModelItem* item =
       
  2067                         static_cast<CFSEmailUiMailListModelItem*>( Model()->Item(i) );
       
  2068                 CFSMailMessage* confirmedMsgPtr(0);
       
  2069                 confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL(iAppUi.GetActiveMailboxId(),
       
  2070                 iMailFolder->GetFolderId(), item->MessagePtr().GetMessageId(), EFSMsgDataEnvelope );
       
  2071                 TBool isReadMessage = confirmedMsgPtr->IsFlagSet( EFSMsgFlag_Read );
       
  2072                 delete confirmedMsgPtr;
       
  2073                 if ( !isReadMessage )
       
  2074                     {
       
  2075                     ret = EFalse;
       
  2076                     break;
       
  2077                     }
       
  2078                 }
       
  2079             }
       
  2080 		}
       
  2081     return ret;
       
  2082     }
       
  2083 
       
  2084 // ---------------------------------------------------------------------------
       
  2085 //
       
  2086 //
       
  2087 // ---------------------------------------------------------------------------
       
  2088 //
       
  2089 TBool CFSEmailUiMailListVisualiser::AreAllMarkedItemsUnreadL()
       
  2090     {
       
  2091     FUNC_LOG;
       
  2092 
       
  2093     TBool ret(ETrue);
       
  2094     
       
  2095     if ( iTreeItemArray.Count() )
       
  2096         {
       
  2097         for ( TInt i=0;i<iTreeItemArray.Count(); i++ )
       
  2098             {
       
  2099             if ( !iMailList->IsNode(iTreeItemArray[i].iListItemId ) &&
       
  2100                 iMailList->IsMarked( iTreeItemArray[i].iListItemId ))
       
  2101                 {
       
  2102                 CFSEmailUiMailListModelItem* item =
       
  2103                         static_cast<CFSEmailUiMailListModelItem*>( Model()->Item(i) );
       
  2104                 CFSMailMessage* confirmedMsgPtr(0);
       
  2105                 confirmedMsgPtr = iAppUi.GetMailClient()->GetMessageByUidL(iAppUi.GetActiveMailboxId(),
       
  2106                 iMailFolder->GetFolderId(), item->MessagePtr().GetMessageId(), EFSMsgDataEnvelope );
       
  2107                 TBool isReadMessage = confirmedMsgPtr->IsFlagSet( EFSMsgFlag_Read );
       
  2108                 delete confirmedMsgPtr;
       
  2109                 if ( isReadMessage )
       
  2110                     {
       
  2111                     ret = EFalse;
       
  2112                     break;
       
  2113                     }
       
  2114                 }
       
  2115             }
       
  2116         }
       
  2117     return ret;
  1994     }
  2118     }
  1995 
  2119 
  1996 // ---------------------------------------------------------------------------
  2120 // ---------------------------------------------------------------------------
  1997 //
  2121 //
  1998 //
  2122 //
  2045 // ---------------------------------------------------------------------------
  2169 // ---------------------------------------------------------------------------
  2046 //
  2170 //
  2047 //
  2171 //
  2048 // ---------------------------------------------------------------------------
  2172 // ---------------------------------------------------------------------------
  2049 //
  2173 //
       
  2174 void CFSEmailUiMailListVisualiser::ExitMarkingModeL()
       
  2175     {
       
  2176     FUNC_LOG;	
       
  2177     iMarkingMode = EFalse;
       
  2178     UnmarkAllItemsL();
       
  2179     // Change softkeys back to normal
       
  2180     SetViewSoftkeysL( R_FREESTYLE_EMAUIL_UI_SK_OPTIONS_BACK );
       
  2181     // Change options menu back to normal
       
  2182     CEikMenuBar* menu = iAppUi.CurrentActiveView()->MenuBar();
       
  2183     menu->StopDisplayingMenuBar();
       
  2184     menu->SetMenuTitleResourceId(R_FSEMAILUI_MAILLIST_MENUBAR);
       
  2185     // Change background back to normal
       
  2186     DisplayMarkingModeBgL( EFalse );   
       
  2187     // Display drop down menu buttons
       
  2188     iNewEmailButton->ShowButtonL();
       
  2189     iFolderListButton->ShowButtonL();
       
  2190     iSortButton->ShowButtonL();
       
  2191     iNewEmailButton->SetDimmed( EFalse );
       
  2192     iFolderListButton->SetDimmed( EFalse );   
       
  2193     iSortButton->SetDimmed( EFalse );
       
  2194     // Hide marking mode text on the place of drop down menus
       
  2195     RemoveMarkingModeTitleTextL();
       
  2196     }
       
  2197 
       
  2198 // ---------------------------------------------------------------------------
       
  2199 //
       
  2200 //
       
  2201 // ---------------------------------------------------------------------------
       
  2202 //
       
  2203 void CFSEmailUiMailListVisualiser::EnterMarkingModeL()
       
  2204     {
       
  2205     FUNC_LOG;	
       
  2206     iMarkingMode = ETrue;
       
  2207 	iListMarkItemsState = ETrue; // shift-scrolling does marking after one item is marked
       
  2208     HandleCommandL( EFsEmailUiCmdActionsExpandAll );
       
  2209     // Change softkeys for marking mode
       
  2210     SetViewSoftkeysL( R_FREESTYLE_EMAUIL_UI_SK_OPTIONS_CANCEL );
       
  2211     // Change options menu for marking mode
       
  2212     CEikMenuBar* menu = iAppUi.CurrentActiveView()->MenuBar();
       
  2213     menu->StopDisplayingMenuBar();
       
  2214     menu->SetMenuTitleResourceId(R_FSEMAILUI_MAILLIST_MENUBAR_MARKING_MODE);
       
  2215     // Change background to marking mode
       
  2216     DisplayMarkingModeBgL( ETrue );       
       
  2217     // Hide drop down menu buttons
       
  2218     if( Layout_Meta_Data::IsLandscapeOrientation() )
       
  2219         {
       
  2220         iNewEmailButton->SetDimmed();
       
  2221         iFolderListButton->SetDimmed();   
       
  2222         iSortButton->SetDimmed();
       
  2223         }
       
  2224     else
       
  2225         {
       
  2226         iNewEmailButton->HideButton();
       
  2227         iFolderListButton->HideButton();
       
  2228         iSortButton->HideButton();
       
  2229         }
       
  2230     // Display marking mode text on the place of drop down menus   
       
  2231     DisplayMarkingModeTitleTextL();
       
  2232     }
       
  2233 
       
  2234 // ---------------------------------------------------------------------------
       
  2235 //
       
  2236 //
       
  2237 // ---------------------------------------------------------------------------
       
  2238 //
       
  2239 void CFSEmailUiMailListVisualiser::RefreshMarkingModeL()
       
  2240     {
       
  2241     FUNC_LOG;
       
  2242     if ( iMarkingMode )
       
  2243         {
       
  2244         // Hide drop down menu buttons    
       
  2245         if( !Layout_Meta_Data::IsLandscapeOrientation() )
       
  2246             {
       
  2247             iNewEmailButton->ShowButtonL();
       
  2248             iNewEmailButton->HideButton();
       
  2249             iFolderListButton->ShowButtonL();
       
  2250             iFolderListButton->HideButton();
       
  2251             iSortButton->ShowButtonL();    
       
  2252             iSortButton->HideButton();
       
  2253             }
       
  2254         else
       
  2255             {
       
  2256             iNewEmailButton->ShowButtonL();
       
  2257             iNewEmailButton->SetDimmed();
       
  2258             iFolderListButton->ShowButtonL();
       
  2259             iFolderListButton->SetDimmed();
       
  2260             iSortButton->ShowButtonL();    
       
  2261             iSortButton->SetDimmed();
       
  2262             }
       
  2263   
       
  2264         RemoveMarkingModeTitleTextL();
       
  2265         DisplayMarkingModeTitleTextL();
       
  2266         }
       
  2267     }
       
  2268 
       
  2269 // ---------------------------------------------------------------------------
       
  2270 //
       
  2271 //
       
  2272 // ---------------------------------------------------------------------------
       
  2273 //
       
  2274 void CFSEmailUiMailListVisualiser::DisplayMarkingModeTitleTextL()
       
  2275     {
       
  2276     FUNC_LOG;     
       
  2277     if (!iMarkingModeTextVisual)
       
  2278         {
       
  2279         const TRect sortButtonRect( iAppUi.LayoutHandler()->GetControlBarSortButtonRect() );
       
  2280         const TRect newMailButtonRect( iAppUi.LayoutHandler()->GetControlBarNewEmailButtonRect() );
       
  2281 
       
  2282         iMarkingModeTextRect = TRect( newMailButtonRect.iTl, sortButtonRect.iBr );
       
  2283         iMarkingModeTextParentLayout = CAlfDeckLayout::AddNewL( *iMailListControl );
       
  2284         iMarkingModeTextParentLayout->SetFlags( EAlfVisualFlagManualLayout );
       
  2285         iMarkingModeTextParentLayout->SetRect( iMarkingModeTextRect );
       
  2286 
       
  2287         iMarkingModeTextContentLayout = CAlfAnchorLayout::AddNewL( *iMailListControl, iMarkingModeTextParentLayout );
       
  2288 
       
  2289         iMarkingModeTextVisual = CAlfTextVisual::AddNewL( *iMailListControl, iMarkingModeTextContentLayout );
       
  2290         iMarkingModeTextVisual->SetWrapping( CAlfTextVisual::ELineWrapTruncate );
       
  2291         if ( AknLayoutUtils::LayoutMirrored() )
       
  2292             {
       
  2293             iMarkingModeTextVisual->SetAlign( EAlfAlignHRight, EAlfAlignVCenter );
       
  2294             }
       
  2295         else
       
  2296             {
       
  2297             iMarkingModeTextVisual->SetAlign( EAlfAlignHLeft, EAlfAlignVCenter );
       
  2298             }    
       
  2299         iMarkingModeTextVisual->SetStyle( EAlfTextStyleTitle );
       
  2300         TRgb color = iAppUi.LayoutHandler()->ListNodeTextColor();
       
  2301         iMarkingModeTextVisual->SetColor ( color );
       
  2302         if( !Layout_Meta_Data::IsLandscapeOrientation() )
       
  2303             {
       
  2304             HBufC* msg = StringLoader::LoadLC( R_FREESTYLE_EMAIL_UI_MARKINGMODE );
       
  2305             iMarkingModeTextVisual->SetTextL( *msg );
       
  2306             CleanupStack::PopAndDestroy( msg );
       
  2307             }
       
  2308         else
       
  2309             {
       
  2310             iMarkingModeTextVisual->SetTextL( KNullDesC );
       
  2311             }
       
  2312         }        
       
  2313     }
       
  2314 
       
  2315 // ---------------------------------------------------------------------------
       
  2316 //
       
  2317 //
       
  2318 // ---------------------------------------------------------------------------
       
  2319 //
       
  2320 void CFSEmailUiMailListVisualiser::RemoveMarkingModeTitleTextL()
       
  2321     {
       
  2322     FUNC_LOG;
       
  2323     if (iMarkingModeTextVisual)
       
  2324         {
       
  2325         iMarkingModeTextVisual->SetTextL( KNullDesC );
       
  2326         iMarkingModeTextVisual->RemoveAndDestroyAllD();
       
  2327         iMarkingModeTextVisual = NULL;
       
  2328         iMarkingModeTextContentLayout->RemoveAndDestroyAllD();
       
  2329         iMarkingModeTextContentLayout = NULL;
       
  2330         iMarkingModeTextParentLayout->RemoveAndDestroyAllD();
       
  2331         iMarkingModeTextParentLayout = NULL;
       
  2332         }
       
  2333     }
       
  2334 
       
  2335 // ---------------------------------------------------------------------------
       
  2336 //
       
  2337 //
       
  2338 // ---------------------------------------------------------------------------
       
  2339 //
       
  2340 void CFSEmailUiMailListVisualiser::DisplayMarkingModeBgL( TBool aDisplay )
       
  2341     {
       
  2342     FUNC_LOG;
       
  2343     if (aDisplay)
       
  2344         {
       
  2345         CAlfBrush* brush = iAppUi.FsTextureManager()->NewMailListMarkingModeBgBrushLC();
       
  2346         iMailTreeListVisualizer->SetBackgroundBrushL( brush );
       
  2347         CleanupStack::Pop( brush );
       
  2348         }
       
  2349     else
       
  2350         {
       
  2351         iMailTreeListVisualizer->ClearBackground();
       
  2352         }
       
  2353     }
       
  2354 
       
  2355 // ---------------------------------------------------------------------------
       
  2356 //
       
  2357 //
       
  2358 // ---------------------------------------------------------------------------
       
  2359 //
  2050 void CFSEmailUiMailListVisualiser::RefreshL( TFSMailMsgId* aFocusToMessage )
  2360 void CFSEmailUiMailListVisualiser::RefreshL( TFSMailMsgId* aFocusToMessage )
  2051 	{
  2361 	{
  2052     FUNC_LOG;
  2362     FUNC_LOG;
  2053 	iMailList->RemoveAllL();
  2363 	iMailList->RemoveAllL();
  2054 	iTreeItemArray.Reset();
  2364 	iTreeItemArray.Reset();
  2204         {
  2514         {
  2205         iAsyncRedrawer->Cancel();
  2515         iAsyncRedrawer->Cancel();
  2206         DoRefresh( this );
  2516         DoRefresh( this );
  2207         }
  2517         }
  2208 
  2518 
       
  2519     if (iMarkingModeWaitingToExit)
       
  2520         {
       
  2521         if ( iAppUi.CurrentActiveView()->Id() == MailListId )
       
  2522             {
       
  2523             iMarkingModeWaitingToExit = EFalse;
       
  2524             TRAP_IGNORE( ExitMarkingModeL() );
       
  2525             }
       
  2526         }
  2209     }
  2527     }
  2210 
  2528 
  2211 // ---------------------------------------------------------------------------
  2529 // ---------------------------------------------------------------------------
  2212 //
  2530 //
  2213 //
  2531 //
  2718             UpdateButtonTextsL();
  3036             UpdateButtonTextsL();
  2719         	}
  3037         	}
  2720 
  3038 
  2721         if ( aType == ESkinChanged )
  3039         if ( aType == ESkinChanged )
  2722             {
  3040             {
  2723             UpdateTheme();
  3041             UpdateThemeL();
  2724             }
  3042             }
  2725         else
  3043         else
  2726             {
  3044             {
  2727             iMailTreeListVisualizer->HideList();
  3045             iMailTreeListVisualizer->HideList();
  2728             // screen layout changed
  3046             // screen layout changed
  2740         if ( iAppUi.FolderList().IsPopupShown() )
  3058         if ( iAppUi.FolderList().IsPopupShown() )
  2741             {
  3059             {
  2742             iAppUi.FolderList().HandleDynamicVariantSwitchL( aType );
  3060             iAppUi.FolderList().HandleDynamicVariantSwitchL( aType );
  2743             }
  3061             }
  2744         }
  3062         }
       
  3063     if (iMarkingMode)
       
  3064         {
       
  3065         RefreshMarkingModeL();
       
  3066         }    
  2745 	}
  3067 	}
  2746 
  3068 
  2747 // ---------------------------------------------------------------------------
  3069 // ---------------------------------------------------------------------------
  2748 //
  3070 //
  2749 //
  3071 //
  2754     {
  3076     {
  2755     FUNC_LOG;
  3077     FUNC_LOG;
  2756     CFsEmailUiViewBase::HandleDynamicVariantSwitchOnBackgroundL( aType );
  3078     CFsEmailUiViewBase::HandleDynamicVariantSwitchOnBackgroundL( aType );
  2757     if ( aType == ESkinChanged )
  3079     if ( aType == ESkinChanged )
  2758         {
  3080         {
  2759         UpdateTheme();
  3081         UpdateThemeL();
  2760         }
  3082         }
  2761     else if ( aType == EScreenLayoutChanged )
  3083     else if ( aType == EScreenLayoutChanged )
  2762         {
  3084         {
  2763         UpdateButtonTextsL();
  3085         UpdateButtonTextsL();
  2764         }
  3086         }
  3127 
  3449 
  3128 // ---------------------------------------------------------------------------
  3450 // ---------------------------------------------------------------------------
  3129 //
  3451 //
  3130 // ---------------------------------------------------------------------------
  3452 // ---------------------------------------------------------------------------
  3131 //
  3453 //
  3132 void CFSEmailUiMailListVisualiser::UpdateTheme(const TBool aSystemUpdate)
  3454 void CFSEmailUiMailListVisualiser::UpdateThemeL(const TBool aSystemUpdate)
  3133     {
  3455     {
  3134     iSkinChanged = aSystemUpdate;
  3456     iSkinChanged = aSystemUpdate;
  3135 
  3457 
  3136     TRgb focusedTextColor = iAppUi.LayoutHandler()->ListFocusedStateTextSkinColor();
  3458     TRgb focusedTextColor = iAppUi.LayoutHandler()->ListFocusedStateTextSkinColor();
  3137     TRgb normalTextColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor();
  3459     TRgb normalTextColor = iAppUi.LayoutHandler()->ListNormalStateTextSkinColor();
  3142     iFolderListButton->SetNormalTextColor( normalTextColor );
  3464     iFolderListButton->SetNormalTextColor( normalTextColor );
  3143     iFolderListButton->SetFocusedTextColor( focusedTextColor );
  3465     iFolderListButton->SetFocusedTextColor( focusedTextColor );
  3144 
  3466 
  3145     iSortButton->SetNormalTextColor( normalTextColor );
  3467     iSortButton->SetNormalTextColor( normalTextColor );
  3146     iSortButton->SetFocusedTextColor( focusedTextColor );
  3468     iSortButton->SetFocusedTextColor( focusedTextColor );
       
  3469     
       
  3470     //TJOS-83DELP fix/workaround 
       
  3471     //sometimes theme wasn't properly refreshed on buttons, this helps
       
  3472     iNewEmailButton->HideButton();
       
  3473     iNewEmailButton->ShowButtonL();
       
  3474     
       
  3475     iFolderListButton->HideButton();
       
  3476     iFolderListButton->ShowButtonL();
       
  3477     
       
  3478     iSortButton->HideButton();
       
  3479     iSortButton->ShowButtonL();
  3147     }
  3480     }
  3148 
  3481 
  3149 // ---------------------------------------------------------------------------
  3482 // ---------------------------------------------------------------------------
  3150 // HandleForegroundEventL
  3483 // HandleForegroundEventL
  3151 // Function checks in foregroundevent that whether settings have changed and
  3484 // Function checks in foregroundevent that whether settings have changed and
  3223 	            }
  3556 	            }
  3224 	        CleanupStack::PopAndDestroy( &markedMessages );
  3557 	        CleanupStack::PopAndDestroy( &markedMessages );
  3225 	        iSkinChanged = EFalse; // Toggle handled
  3558 	        iSkinChanged = EFalse; // Toggle handled
  3226 	        iDateChanged = EFalse; // Toggle handled
  3559 	        iDateChanged = EFalse; // Toggle handled
  3227 	        }
  3560 	        }
       
  3561         if (iMarkingMode)
       
  3562             {
       
  3563             RefreshMarkingModeL();
       
  3564             }
  3228 	    }
  3565 	    }
  3229 	}
  3566 	}
  3230 
  3567 
  3231 
  3568 
  3232 // ---------------------------------------------------------------------------
  3569 // ---------------------------------------------------------------------------
  3279            aCommand == EFsEmailUiCmdActionsDelete ||
  3616            aCommand == EFsEmailUiCmdActionsDelete ||
  3280     	   aCommand == EFsEmailUiCmdMarkAsRead ||
  3617     	   aCommand == EFsEmailUiCmdMarkAsRead ||
  3281     	   aCommand == EFsEmailUiCmdMarkAsUnread ||
  3618     	   aCommand == EFsEmailUiCmdMarkAsUnread ||
  3282     	   aCommand == EFsEmailUiCmdActionsMove ||
  3619     	   aCommand == EFsEmailUiCmdActionsMove ||
  3283     	   aCommand == EFsEmailUiCmdActionsMoveMessage ||
  3620     	   aCommand == EFsEmailUiCmdActionsMoveMessage ||
  3284     	   aCommand == EFsEmailUiCmdMarkUnmarkToggle ||
  3621     	   aCommand == EFsEmailUiCmdMarkingModeFromPopUp ||
  3285     	   aCommand == EFsEmailUiCmdActionsCollapseAll ||
  3622     	   aCommand == EFsEmailUiCmdActionsCollapseAll ||
  3286     	   aCommand == EFsEmailUiCmdActionsExpandAll ) )
  3623     	   aCommand == EFsEmailUiCmdActionsExpandAll ) )
  3287     	{
  3624     	{
  3288    		// We end up here if the user selects an option from the pop up menu
  3625    		// We end up here if the user selects an option from the pop up menu
  3289     	// or exits the menu by tapping outside of it's area.
  3626     	// or exits the menu by tapping outside of it's area.
  3371        		if ( !iAppUi.ViewSwitchingOngoing() )
  3708        		if ( !iAppUi.ViewSwitchingOngoing() )
  3372 				{
  3709 				{
  3373 				NavigateBackL();
  3710 				NavigateBackL();
  3374 				}
  3711 				}
  3375         	break;
  3712         	break;
       
  3713         case EAknSoftkeyCancel:
       
  3714             if (iMarkingMode)
       
  3715                 {
       
  3716                 ExitMarkingModeL();
       
  3717                 }
       
  3718             break;
  3376         case EEikCmdExit:
  3719         case EEikCmdExit:
  3377         case EAknSoftkeyExit:
  3720         case EAknSoftkeyExit:
  3378         case EFsEmailUiCmdExit:
  3721         case EFsEmailUiCmdExit:
  3379             TIMESTAMP( "Exit selected from message list" );
  3722             TIMESTAMP( "Exit selected from message list" );
  3380             iAppUi.Exit();
  3723             iAppUi.Exit();
  3654 // <cmail> Prevent Download Manager opening with attachments
  3997 // <cmail> Prevent Download Manager opening with attachments
  3655 //       	case EFsEmailUiCmdDownloadManager:
  3998 //       	case EFsEmailUiCmdDownloadManager:
  3656 //  			iAppUi.EnterFsEmailViewL( DownloadManagerViewId );
  3999 //  			iAppUi.EnterFsEmailViewL( DownloadManagerViewId );
  3657 //			break;
  4000 //			break;
  3658 // </cmail>
  4001 // </cmail>
  3659        	case EFsEmailUiCmdMarkMark:
  4002         case EFsEmailUiCmdMarkingModeFromPopUp:
  3660        		{
  4003             {
  3661             iListMarkItemsState = ETrue; // shift-scrolling does marking after one item is marked
  4004             EnterMarkingModeL();
  3662   	        iMailList->MarkItemL( iMailList->FocusedItem(), ETrue );
  4005             // Mark current item first
  3663        		}
  4006             TInt focusedItem = iMailList->FocusedItem();
  3664 			break;
  4007             if ( focusedItem > 0 && iFocusedControl == EMailListComponent )
  3665 		case EFsEmailUiCmdMarkMarkAll:
  4008                 {
  3666 			{
  4009                 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
  3667 			MarkAllItemsL();
  4010 				if ( item && item->ModelItemType() == ETypeMailItem )
  3668 			}
  4011 				    {
  3669 			break;
  4012                     iMailList->MarkItemL( iMailList->FocusedItem(), ETrue );
  3670 		case EFsEmailUiCmdMarkUnmark:
  4013 					}
  3671 			{
  4014 				else if ( item && item->ModelItemType() == ETypeSeparator )
  3672             iListMarkItemsState = EFalse; // shift-scrolling does unmarking after one item is unmarked
  4015 					{
  3673   	        iMailList->MarkItemL( iMailList->FocusedItem(), EFalse );
  4016 					TInt index = HighlightedIndex();
  3674 			}
  4017 					MarkItemsUnderSeparatorL( ETrue, index );
  3675 			break;
  4018 					}
  3676 		case EFsEmailUiCmdMarkUnmarkAll:
  4019                 }
  3677 			{
  4020             }
  3678 			UnmarkAllItemsL();
  4021             break;        
  3679 			}
  4022         case EFsEmailUiCmdMarkingMode:
  3680 			break;
  4023             {
  3681 
  4024             EnterMarkingModeL();
  3682 		case EFsEmailUiCmdMarkSubAll:
  4025             }
  3683 			{
  4026             break;
  3684 			MarkAllItemsL();
  4027         case EFsEmailUiCmdMarkingModeDelete:
  3685 			}
  4028             {
  3686 			break;
  4029             DeleteMessagesL();
  3687 		case EFsEmailUiCmdUnmarkSubAll:
  4030             }
  3688 			{
  4031             break;
  3689 			UnmarkAllItemsL();
  4032         case EFsEmailUiCmdMarkingModeUnread:
  3690 			}
  4033             {
  3691 			break;
  4034             ChangeReadStatusOfMarkedL( EFalse );
       
  4035             ExitMarkingModeL();
       
  4036             }
       
  4037             break;
       
  4038         case EFsEmailUiCmdMarkingModeRead:
       
  4039             {
       
  4040             ChangeReadStatusOfMarkedL( ETrue );
       
  4041             ExitMarkingModeL();
       
  4042             }
       
  4043             break;            
       
  4044         case EFsEmailUiCmdMarkingModeFollowUp:
       
  4045             {
       
  4046             SetMessageFollowupFlagL();
       
  4047             }
       
  4048             break;            
       
  4049         case EFsEmailUiCmdMarkingModeMarkAll:
       
  4050             {
       
  4051             MarkAllItemsL();
       
  4052             }
       
  4053             break;
       
  4054         case EFsEmailUiCmdMarkingModeUnmarkAll:
       
  4055             {
       
  4056             UnmarkAllItemsL();
       
  4057             }
       
  4058             break;
  3692 		case EFsEmailUiCmdReadEmail:
  4059 		case EFsEmailUiCmdReadEmail:
  3693 			{
  4060 			{
  3694 			iAppUi.StartReadingEmailsL();
  4061 			iAppUi.StartReadingEmailsL();
  3695 			}
  4062 			}
  3696 			break;
  4063 			break;
  3791 				        }
  4158 				        }
  3792 				    }
  4159 				    }
  3793 				}
  4160 				}
  3794     		}
  4161     		}
  3795 			break;
  4162 			break;
       
  4163     	case EFsEmailUiCmdMarkingModeMove:
       
  4164             {
       
  4165 			iMarkingModeWaitingToExit = ETrue;
       
  4166 			}
       
  4167 			// Flow through			
  3796        	case EFsEmailUiCmdActionsMove:
  4168        	case EFsEmailUiCmdActionsMove:
  3797        	case EFsEmailUiCmdActionsMoveMessage:
  4169        	case EFsEmailUiCmdActionsMoveMessage:
  3798 			{
  4170 			{
  3799 			TFSMailMsgId folderID;
  4171 			TFSMailMsgId folderID;
  3800 			folderID.SetNullId(); // Selection is popped up with NULL
  4172 			folderID.SetNullId(); // Selection is popped up with NULL
  3816             }
  4188             }
  3817             break;
  4189             break;
  3818         case EFsEmailUiCmdMarkAsReadUnreadToggle:
  4190         case EFsEmailUiCmdMarkAsReadUnreadToggle:
  3819             {
  4191             {
  3820 			ShortcutReadUnreadToggleL();
  4192 			ShortcutReadUnreadToggleL();
  3821             }
       
  3822             break;
       
  3823         case EFsEmailUiCmdMarkUnmarkToggle:
       
  3824             {
       
  3825             TInt focusedItem = iMailList->FocusedItem();
       
  3826             if ( focusedItem > 0 && iFocusedControl == EMailListComponent )
       
  3827                 {
       
  3828                 CFSEmailUiMailListModelItem* item = dynamic_cast<CFSEmailUiMailListModelItem*>(iModel->Item(HighlightedIndex()));
       
  3829 				if ( item && item->ModelItemType() == ETypeMailItem )
       
  3830 				    {
       
  3831                     if ( iMailList->IsMarked( focusedItem ) )
       
  3832                         {
       
  3833                         HandleCommandL(EFsEmailUiCmdMarkUnmark);
       
  3834                         }
       
  3835                     else
       
  3836                         {
       
  3837                         HandleCommandL(EFsEmailUiCmdMarkMark);
       
  3838                         }
       
  3839 					}
       
  3840 				else if ( item && item->ModelItemType() == ETypeSeparator )
       
  3841 					{
       
  3842 					// Currently only mark is done since mark should activate
       
  3843 					// marking mode for messages. Unmark can be done via message long tap menu.
       
  3844 					TInt index = HighlightedIndex();
       
  3845 					MarkItemsUnderSeparatorL( ETrue, index );
       
  3846 					}
       
  3847                 }
       
  3848             }
  4193             }
  3849             break;
  4194             break;
  3850         case EFsEmailUiCmdGoToSwitchFolder:
  4195         case EFsEmailUiCmdGoToSwitchFolder:
  3851             {
  4196             {
  3852             iControlBarControl->SetFocusByIdL( iFolderListButtonId );
  4197             iControlBarControl->SetFocusByIdL( iFolderListButtonId );
  4199 	                            iListOrderMayBeOutOfDate = ETrue;
  4544 	                            iListOrderMayBeOutOfDate = ETrue;
  4200 	                            }
  4545 	                            }
  4201 	                        }
  4546 	                        }
  4202 	                    }
  4547 	                    }
  4203 				    }
  4548 				    }
       
  4549                 if ( iMarkingMode ) 
       
  4550                     {
       
  4551                     ExitMarkingModeL();
       
  4552                     }
  4204 				}
  4553 				}
  4205 			CleanupStack::PopAndDestroy( &targetMsgIds );
  4554 			CleanupStack::PopAndDestroy( &targetMsgIds );
  4206 			}
  4555 			}
  4207 		CleanupStack::PopAndDestroy( &targetItems );
  4556 		CleanupStack::PopAndDestroy( &targetItems );
  4208 		}
  4557 		}
  4510                     if ( iFocusedControl == EMailListComponent )
  4859                     if ( iFocusedControl == EMailListComponent )
  4511                         {
  4860                         {
  4512                         TInt modelCount( modelCount = iModel->Count() );
  4861                         TInt modelCount( modelCount = iModel->Count() );
  4513                         if ( modelCount ) // Safety check
  4862                         if ( modelCount ) // Safety check
  4514                             {
  4863                             {
  4515                             CFSEmailUiMailListModelItem* item =
  4864                             if (iMarkingMode)
  4516                                 dynamic_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ) );
       
  4517                             // MAIL ITEM; OPEN MAIL
       
  4518                             if ( item && item->ModelItemType() == ETypeMailItem )
       
  4519                                 {
  4865                                 {
  4520                                 CFSMailMessage* messagePtr = &item->MessagePtr();
  4866                                 //Do not open mail or expand/collapse separator in marking mode
  4521                                 if ( messagePtr )
  4867                                 DoHandleListItemOpenL();
       
  4868                                 }
       
  4869                             else
       
  4870                                 {
       
  4871                                 CFSEmailUiMailListModelItem* item =
       
  4872                                         dynamic_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ) );
       
  4873                                 // MAIL ITEM; OPEN MAIL
       
  4874                                 if ( item && item->ModelItemType() == ETypeMailItem )
  4522                                     {
  4875                                     {
  4523                                     TIMESTAMP( "Open email selected from message list" );
  4876                                     CFSMailMessage* messagePtr = &item->MessagePtr();
  4524                                     OpenHighlightedMailL();
  4877                                     if ( messagePtr )
       
  4878                                         {
       
  4879                                         TIMESTAMP( "Open email selected from message list" );
       
  4880                                         OpenHighlightedMailL();
       
  4881                                         return EKeyWasConsumed;
       
  4882                                         }
       
  4883                                     }
       
  4884                                 // SEPARAOR ITEM; COLLAPSE / EXPAND NODE
       
  4885                                 else if ( item && item->ModelItemType() == ETypeSeparator )
       
  4886                                     {
       
  4887                                     ExpandOrCollapseL();
  4525                                     return EKeyWasConsumed;
  4888                                     return EKeyWasConsumed;
  4526                                     }
  4889                                     }
  4527                                 }
       
  4528                             // SEPARAOR ITEM; COLLAPSE / EXPAND NODE
       
  4529                             else if ( item && item->ModelItemType() == ETypeSeparator )
       
  4530                                 {
       
  4531                                 if ( iMailList->IsExpanded( iMailList->FocusedItem()) )
       
  4532                                     {
       
  4533                                     ExpandOrCollapseL();
       
  4534                                     }
       
  4535                                 else
       
  4536                                     {
       
  4537                                     ExpandOrCollapseL();
       
  4538                                     }
       
  4539                                 return EKeyWasConsumed;
       
  4540                                 }
  4890                                 }
  4541                             }
  4891                             }
  4542                         }
  4892                         }
  4543                     else
  4893                     else
  4544                         {
  4894                         {
  4725     FUNC_LOG;
  5075     FUNC_LOG;
  4726     if ( 0 < iModel->Count() ) // Safety check
  5076     if ( 0 < iModel->Count() ) // Safety check
  4727         {
  5077         {
  4728         CFSEmailUiMailListModelItem* item =
  5078         CFSEmailUiMailListModelItem* item =
  4729             dynamic_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ) );
  5079             dynamic_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ) );
  4730         // MAIL ITEM; OPEN MAIL
  5080         if ( iMarkingMode )
  4731         if ( item && item->ModelItemType() == ETypeMailItem )
  5081 			{
  4732             {
  5082             // In marking mode. Mark/unmark it instead of opening it.
  4733             CFSMailMessage* messagePtr = &item->MessagePtr();
  5083 			if ( item && item->ModelItemType() == ETypeMailItem )
  4734             if ( messagePtr )
  5084 				{
  4735                 {
  5085 				if (iMailList->IsMarked( iMailList->FocusedItem() ))
  4736                 TIMESTAMP( "Open email selected from message list" );
  5086                     {
  4737                 OpenHighlightedMailL();
  5087 				    iMailList->MarkItemL( iMailList->FocusedItem(), EFalse );
  4738                 }
  5088                     }
  4739 
  5089 				else
  4740             // Give feedback to user (vibration)
  5090 				    {
  4741             iTouchFeedBack->InstantFeedback(ETouchFeedbackBasic);
  5091                     iMailList->MarkItemL( iMailList->FocusedItem(), ETrue );
  4742             }
  5092 				    }
  4743         // SEPARATOR ITEM; COLLAPSE / EXPAND NODE
  5093 				}
  4744         else if ( item && item->ModelItemType() == ETypeSeparator )
  5094 			else if ( item && item->ModelItemType() == ETypeSeparator )
  4745             {
  5095 			    {
  4746                 ExpandOrCollapseL();
  5096                 TInt index = HighlightedIndex();
  4747                 SetMskL();
  5097                 if ( AreAllItemsMarkedUnderSeparatorL( index ) )
  4748             }
  5098                     {
       
  5099                     MarkItemsUnderSeparatorL( EFalse, index );
       
  5100                     }
       
  5101                 else
       
  5102                     {
       
  5103                     MarkItemsUnderSeparatorL( ETrue, index );
       
  5104                     }
       
  5105 			    }
       
  5106 			}
       
  5107 		else
       
  5108 			{
       
  5109 		
       
  5110 			// MAIL ITEM; OPEN MAIL
       
  5111 			if ( item && item->ModelItemType() == ETypeMailItem )
       
  5112 				{
       
  5113 				CFSMailMessage* messagePtr = &item->MessagePtr();
       
  5114 				if ( messagePtr )
       
  5115 					{
       
  5116 					TIMESTAMP( "Open email selected from message list" );
       
  5117 					OpenHighlightedMailL();
       
  5118 					}
       
  5119 
       
  5120 				// Give feedback to user (vibration)
       
  5121 				iTouchFeedBack->InstantFeedback(ETouchFeedbackBasic);
       
  5122 				}
       
  5123 			// SEPARATOR ITEM; COLLAPSE / EXPAND NODE
       
  5124 			else if ( item && item->ModelItemType() == ETypeSeparator )
       
  5125 				{
       
  5126 					ExpandOrCollapseL();
       
  5127 					SetMskL();
       
  5128 				}
       
  5129 			}
  4749         }
  5130         }
  4750     }
  5131     }
  4751 
  5132 
  4752 // ---------------------------------------------------------------------------
  5133 // ---------------------------------------------------------------------------
  4753 // CFSEmailUiMailListVisualiser::DoHandleControlBarOpenL
  5134 // CFSEmailUiMailListVisualiser::DoHandleControlBarOpenL
  4803     {
  5184     {
  4804     FUNC_LOG;
  5185     FUNC_LOG;
  4805 
  5186 
  4806     if ( 0 < iModel->Count() ) // Safety check
  5187     if ( 0 < iModel->Count() ) // Safety check
  4807         {
  5188         {
  4808         RFsTreeItemIdList markedEntries;
  5189         if ( iMarkingMode )
  4809         iMailList->GetMarkedItemsL( markedEntries );
  5190 			{
  4810         if ( markedEntries.Count() >= 0 )
  5191             iMailTreeListVisualizer->SetFocusVisibility( EFalse );
  4811             {
  5192             TInt currentFocusState = iMailList->IsFocused();
       
  5193             iMailList->SetFocusedL( EFalse );
       
  5194             iMailList->SetFocusedL( currentFocusState );
       
  5195 			CFSEmailUiMailListModelItem* item =
       
  5196                 dynamic_cast<CFSEmailUiMailListModelItem*>( iModel->Item( HighlightedIndex() ) );
       
  5197             // In marking mode. Mark/unmark it instead of open popup.
       
  5198 			if ( item && item->ModelItemType() == ETypeMailItem )
       
  5199 				{
       
  5200 				if (iMailList->IsMarked( iMailList->FocusedItem() ))
       
  5201                     {
       
  5202 				    iMailList->MarkItemL( iMailList->FocusedItem(), EFalse );
       
  5203                     }
       
  5204 				else
       
  5205 				    {
       
  5206                     iMailList->MarkItemL( iMailList->FocusedItem(), ETrue );
       
  5207 				    }
       
  5208 				}
       
  5209 			else if ( item && item->ModelItemType() == ETypeSeparator )
       
  5210 			    {
       
  5211                 TInt index = HighlightedIndex();
       
  5212                 if ( AreAllItemsMarkedUnderSeparatorL( index ) )
       
  5213                     {
       
  5214                     MarkItemsUnderSeparatorL( EFalse, index );
       
  5215                     }
       
  5216                 else
       
  5217                     {
       
  5218                     MarkItemsUnderSeparatorL( ETrue, index );
       
  5219                     }
       
  5220 			    }
       
  5221 			}
       
  5222 		else
       
  5223 		    {
  4812             LaunchStylusPopupMenuL( aPoint );
  5224             LaunchStylusPopupMenuL( aPoint );
  4813             }
  5225             }
  4814         }
  5226         }
  4815     }
  5227     }
  4816 
  5228 
  5183         horizontalAlign = EAlfAlignHRight;
  5595         horizontalAlign = EAlfAlignHRight;
  5184         }
  5596         }
  5185 
  5597 
  5186     // Icons and sort button text
  5598     // Icons and sort button text
  5187     iFolderListButton->SetIconL( iAppUi.FsTextureManager()->TextureByIndex( EListControlBarMailboxDefaultIcon ) );
  5599     iFolderListButton->SetIconL( iAppUi.FsTextureManager()->TextureByIndex( EListControlBarMailboxDefaultIcon ) );
  5188     iNewEmailButton->SetIconL( iAppUi.FsTextureManager()->TextureByIndex( EListTextureNewEmailDefaultIcon ) );
  5600     iNewEmailButton->SetIconL( iAppUi.FsTextureManager()->TextureByIndex( EListTextureCreateNewMessageIcon ) );
  5189     SetSortButtonTextAndIconL();
  5601     SetSortButtonTextAndIconL();
  5190 
  5602 
  5191     iNewEmailButton->SetElemAlignL(
  5603     iNewEmailButton->SetElemAlignL(
  5192         ECBElemIconA,
  5604         ECBElemIconA,
  5193         EAlfAlignHCenter,
  5605         EAlfAlignHCenter,
  5242 	textLayout.LayoutText(TRect(0,0,0,0), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_ddmenu_pane_t1(var));
  5654 	textLayout.LayoutText(TRect(0,0,0,0), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_ddmenu_pane_t1(var));
  5243 	iNewEmailButton->SetTextFontL( textLayout.Font()->FontSpecInTwips() );
  5655 	iNewEmailButton->SetTextFontL( textLayout.Font()->FontSpecInTwips() );
  5244  	iFolderListButton->SetTextFontL( textLayout.Font()->FontSpecInTwips() );
  5656  	iFolderListButton->SetTextFontL( textLayout.Font()->FontSpecInTwips() );
  5245  	iSortButton->SetTextFontL( textLayout.Font()->FontSpecInTwips() );
  5657  	iSortButton->SetTextFontL( textLayout.Font()->FontSpecInTwips() );
  5246 
  5658 
  5247  	UpdateTheme(EFalse);
  5659  	UpdateThemeL(EFalse);
  5248 
  5660  	if (!iMarkingMode)
  5249 	iNewEmailButton->ShowButtonL();
  5661  	    {
  5250   	iFolderListButton->ShowButtonL();
  5662         iNewEmailButton->ShowButtonL();
  5251 	iSortButton->ShowButtonL();
  5663         iFolderListButton->ShowButtonL();
       
  5664         iSortButton->ShowButtonL();
       
  5665  	    }
  5252 	}
  5666 	}
  5253 
  5667 
  5254 // ---------------------------------------------------------------------------
  5668 // ---------------------------------------------------------------------------
  5255 //
  5669 //
  5256 //
  5670 //
  5515                 msgPtr.ResetFlag( EFSMsgFlag_Read );
  5929                 msgPtr.ResetFlag( EFSMsgFlag_Read );
  5516                 }
  5930                 }
  5517             msgPtr.SaveMessageL();  // Save flag
  5931             msgPtr.SaveMessageL();  // Save flag
  5518 
  5932 
  5519             // Switch icon to correct one if mail list is visible
  5933             // Switch icon to correct one if mail list is visible
  5520             // UpdateMsgIconAndBoldingL( aIndex );
  5934             UpdateMsgIconAndBoldingL( aIndex );
  5521 
  5935 
  5522             if ( iCurrentSortCriteria.iField == EFSMailSortByUnread )
  5936             if ( iCurrentSortCriteria.iField == EFSMailSortByUnread )
  5523                 {
  5937                 {
  5524                 // Attribute affecting the current sorting order has been changed.
  5938                 // Attribute affecting the current sorting order has been changed.
  5525                 // Thus, the list order may now be incorrect.
  5939                 // Thus, the list order may now be incorrect.
  5748     FUNC_LOG;
  6162     FUNC_LOG;
  5749 
  6163 
  5750     if ( aItemData && aItemVis && aMsgPtr )
  6164     if ( aItemData && aItemVis && aMsgPtr )
  5751         {
  6165         {
  5752         CAlfTexture* itemTexture = &TFsEmailUiUtility::GetMsgIcon( aMsgPtr, *iAppUi.FsTextureManager() );
  6166         CAlfTexture* itemTexture = &TFsEmailUiUtility::GetMsgIcon( aMsgPtr, *iAppUi.FsTextureManager() );
  5753 
       
  5754         aItemData->SetIcon( *itemTexture );
  6167         aItemData->SetIcon( *itemTexture );
  5755 
  6168         TInt variety( Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0 );
  5756         // Set font according the read status
  6169         CAlfTextStyle& textStyle =
  5757         if ( aMsgPtr->IsFlagSet( EFSMsgFlag_Read ) )
  6170             iAppUi.LayoutHandler()->FSTextStyleFromLayoutL(
  5758             {
  6171                 AknLayoutScalable_Apps::list_single_dyc_row_text_pane_t1( variety ) );
  5759             CAlfTextStyle* textStyle = iAppUi.LayoutHandler()->FSTextStyleFromIdL( EFSFontTypeSmall );
  6172         const TBool isNotRead( !aMsgPtr->IsFlagSet( EFSMsgFlag_Read ) );
  5760             aItemVis->SetTextStyleId ( textStyle->Id() );
  6173         textStyle.SetBold( isNotRead );
  5761             aItemVis->SetTextBold( EFalse );
  6174         aItemVis->SetTextBold( isNotRead );
  5762             }
  6175         aItemVis->SetTextStyleId ( textStyle.Id() );
  5763         else
       
  5764             {
       
  5765             CAlfTextStyle* textStyle = iAppUi.LayoutHandler()->FSTextStyleFromIdL( EFSFontTypeSmallBold );
       
  5766             aItemVis->SetTextStyleId ( textStyle->Id() );
       
  5767             aItemVis->SetTextBold( ETrue );
       
  5768             }
       
  5769 
       
  5770         // Set follow up flag icon
  6176         // Set follow up flag icon
  5771         if ( aMsgPtr->IsFlagSet( EFSMsgFlag_FollowUp ) )
  6177         if ( aMsgPtr->IsFlagSet( EFSMsgFlag_FollowUp ) )
  5772             {
  6178             {
  5773             aItemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagList ) );
  6179             aItemData->SetFlagIcon( iAppUi.FsTextureManager()->TextureByIndex( EFollowUpFlagList ) );
  5774             aItemVis->SetFlagIconVisible( ETrue );
  6180             aItemVis->SetFlagIconVisible( ETrue );
  5791 // ---------------------------------------------------------------------------
  6197 // ---------------------------------------------------------------------------
  5792 //
  6198 //
  5793 void CFSEmailUiMailListVisualiser::RemoveMsgItemsFromListIfFoundL( const RArray<TFSMailMsgId>& aEntryIds )
  6199 void CFSEmailUiMailListVisualiser::RemoveMsgItemsFromListIfFoundL( const RArray<TFSMailMsgId>& aEntryIds )
  5794 	{
  6200 	{
  5795     FUNC_LOG;
  6201     FUNC_LOG;
  5796 	for ( TInt i=0 ; i<aEntryIds.Count() ; ++i )
  6202     
       
  6203 	TBool itemFound = EFalse;
       
  6204     for ( TInt i=0 ; i<aEntryIds.Count() ; ++i )
  5797 	    {
  6205 	    {
  5798 	    const TFSMailMsgId& entryId = aEntryIds[i];
  6206 	    const TFSMailMsgId& entryId = aEntryIds[i];
  5799     	if ( !entryId.IsNullId() )
  6207     	if ( !entryId.IsNullId() )
  5800     		{
  6208     		{
  5801         	TInt idx = ItemIndexFromMessageId( entryId );
  6209         	TInt idx = ItemIndexFromMessageId( entryId );
  5802         	if ( idx >= 0 )
  6210         	if ( idx >= 0 )
  5803         	    {
  6211         	    {
  5804     			iMailList->RemoveL( iTreeItemArray[idx].iListItemId ); // remove from list
  6212     			iMailList->RemoveL( iTreeItemArray[idx].iListItemId ); // remove from list
  5805     			iTreeItemArray.Remove( idx ); // remove from internal array.
  6213     			iTreeItemArray.Remove( idx ); // remove from internal array.
  5806     	 		iModel->RemoveAndDestroy( idx ); // Remove from model
  6214     	 		iModel->RemoveAndDestroy( idx ); // Remove from model
       
  6215     	 		itemFound = ETrue;
  5807         	    }
  6216         	    }
  5808     		}
  6217     		}
  5809 	    }
  6218 	    }
  5810 	if ( aEntryIds.Count() > 0  )
  6219 	
  5811 		{
  6220     if ( !itemFound )
  5812         if ( iMailListUpdater )
  6221         {
  5813             {
  6222         return;  // no items to be removed
  5814             if ( iMailListUpdater->IsActive() )
  6223         }
  5815                 {
  6224 		
  5816                 iMailListUpdater->Stop();
       
  5817                 }
       
  5818              iMailListUpdater->StartL();
       
  5819              }
       
  5820 		}
       
  5821 	if ( iNodesInUse )
  6225 	if ( iNodesInUse )
  5822 		{
  6226 		{
  5823 		RemoveUnnecessaryNodesL();
  6227 		RemoveUnnecessaryNodesL();
  5824 		}
  6228 		}
  5825 
  6229 
  5930     const RFsTreeItemIdList& entries(aTask->Entries());
  6334     const RFsTreeItemIdList& entries(aTask->Entries());
  5931     if (entries.Count())
  6335     if (entries.Count())
  5932         {
  6336         {
  5933         if (ConfirmDeleteL(entries.Count(), entries[0]))
  6337         if (ConfirmDeleteL(entries.Count(), entries[0]))
  5934             {
  6338             {
       
  6339             ExitMarkingModeL();
  5935             if (entries.Count() > KMsgDeletionWaitNoteAmount)
  6340             if (entries.Count() > KMsgDeletionWaitNoteAmount)
  5936                 {
  6341                 {
  5937                 TFsEmailUiUtility::ShowWaitNoteL(iDeletingWaitNote,
  6342                 TFsEmailUiUtility::ShowWaitNoteL(iDeletingWaitNote,
  5938                         R_FSE_WAIT_DELETING_TEXT, EFalse, ETrue);
  6343                         R_FSE_WAIT_DELETING_TEXT, EFalse, ETrue);
  5939                 }
  6344                 }
  6374 		{
  6779 		{
  6375 		iMoveToFolderOngoing = EFalse;
  6780 		iMoveToFolderOngoing = EFalse;
  6376 		switch ( aResponse )
  6781 		switch ( aResponse )
  6377 			{
  6782 			{
  6378 			case EFSEmailUiCtrlBarResponseCancel:
  6783 			case EFSEmailUiCtrlBarResponseCancel:
       
  6784 			    iMarkingModeWaitingToExit = EFalse;
  6379 			    SetMskL();
  6785 			    SetMskL();
  6380 				return;
  6786 				return;
  6381 			case EFSEmailUiCtrlBarResponseSelect:
  6787 			case EFSEmailUiCtrlBarResponseSelect:
  6382 			    {
  6788 			    {
  6383 				MoveMsgsToFolderL( aSelectedFolderId );
  6789 				MoveMsgsToFolderL( aSelectedFolderId );
  6414                     iAppUi.ShowSortListInPopupL( iCurrentSortCriteria, folderType, this, iSortButton );
  6820                     iAppUi.ShowSortListInPopupL( iCurrentSortCriteria, folderType, this, iSortButton );
  6415                     }
  6821                     }
  6416 				}
  6822 				}
  6417 				return;
  6823 				return;
  6418 			case EFSEmailUiCtrlBarResponseCancel:
  6824 			case EFSEmailUiCtrlBarResponseCancel:
       
  6825 			    iMarkingModeWaitingToExit = EFalse;
  6419 			    SetMskL();
  6826 			    SetMskL();
  6420 			    // <cmail> Touch
  6827 			    // <cmail> Touch
  6421                 //Set touchmanager back to active
  6828                 //Set touchmanager back to active
  6422                 DisableMailList(EFalse);
  6829                 DisableMailList(EFalse);
  6423                 // </cmail>
  6830                 // </cmail>
  6837 			iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdActionsMoveMessage, !supportsMoving );
  7244 			iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdActionsMoveMessage, !supportsMoving );
  6838 
  7245 
  6839 			// Hide / show follow up
  7246 			// Hide / show follow up
  6840 			TBool supportsFlag = TFsEmailUiUtility::IsFollowUpSupported( *iAppUi.GetActiveMailbox() );
  7247 			TBool supportsFlag = TFsEmailUiUtility::IsFollowUpSupported( *iAppUi.GetActiveMailbox() );
  6841 			iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdActionsFlag, !supportsFlag );
  7248 			iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdActionsFlag, !supportsFlag );
  6842 
       
  6843 			// Hide mark if applicable
       
  6844 			if ( iMailList->IsMarked( iMailList->FocusedItem() ) )
       
  6845 				{
       
  6846 				iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdMark, ETrue );
       
  6847 				}
       
  6848 
  7249 
  6849 			// Hide collapse / expand all
  7250 			// Hide collapse / expand all
  6850 			iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdActionsCollapseAll, ETrue );
  7251 			iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdActionsCollapseAll, ETrue );
  6851 			iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdActionsExpandAll, ETrue );
  7252 			iStylusPopUpMenu->SetItemDimmed( EFsEmailUiCmdActionsExpandAll, ETrue );
  6852 			}
  7253 			}
  7365 TBool CFSEmailUiMailListVisualiser::DoScrollMarkUnmarkL()
  7766 TBool CFSEmailUiMailListVisualiser::DoScrollMarkUnmarkL()
  7366     {
  7767     {
  7367     FUNC_LOG;
  7768     FUNC_LOG;
  7368     TBool ret = EFalse;
  7769     TBool ret = EFalse;
  7369 
  7770 
       
  7771     if ( !iMarkingMode )
       
  7772         {
       
  7773         EnterMarkingModeL();   
       
  7774         }
       
  7775 
  7370     // <cmail>
  7776     // <cmail>
  7371     if ( iFocusedControl == EMailListComponent && iModel->Count() )
  7777     if ( iFocusedControl == EMailListComponent && iModel->Count() )
  7372     // </cmail>
  7778     // </cmail>
  7373         {
  7779         {
  7374 		CFSEmailUiMailListModelItem* item =
  7780 		CFSEmailUiMailListModelItem* item =
  7417 				break;
  7823 				break;
  7418 				}
  7824 				}
  7419 			}
  7825 			}
  7420 		}
  7826 		}
  7421 	}
  7827 	}
       
  7828 
       
  7829 // Check if all items under current separator are marked
       
  7830 TBool CFSEmailUiMailListVisualiser::AreAllItemsMarkedUnderSeparatorL( TInt aSeparatorId )
       
  7831     {
       
  7832     FUNC_LOG;
       
  7833 
       
  7834     TBool ret(ETrue);
       
  7835     
       
  7836     if ( iTreeItemArray.Count() )
       
  7837         {
       
  7838         // Find all items under wanted separator.
       
  7839         for ( TInt i = aSeparatorId + 1; i < iTreeItemArray.Count(); i++ )
       
  7840             {
       
  7841             CFSEmailUiMailListModelItem* item =
       
  7842                         static_cast<CFSEmailUiMailListModelItem*>( iModel->Item( i ) );
       
  7843 
       
  7844             // Mark / unmark mail items.
       
  7845             if ( item &&
       
  7846                  item->ModelItemType() == ETypeMailItem &&
       
  7847                  !iMailList->IsNode( iTreeItemArray[i].iListItemId ) )
       
  7848                 {
       
  7849                 if ( !iMailList->IsMarked( iTreeItemArray[i].iListItemId ))
       
  7850                     {
       
  7851                     // Att least one unmarked item found
       
  7852                     ret = EFalse;
       
  7853                     break;
       
  7854                     }
       
  7855                 }
       
  7856             else
       
  7857                 {
       
  7858                 // Stop iteration since another iterator was reached.
       
  7859                 break;
       
  7860                 }
       
  7861             }
       
  7862         }
       
  7863     return ret;
       
  7864     }
       
  7865 
  7422 // Navigation functions, used mainly from viewer
  7866 // Navigation functions, used mainly from viewer
  7423 TBool CFSEmailUiMailListVisualiser::IsNextMsgAvailable( TFSMailMsgId aCurrentMsgId,
  7867 TBool CFSEmailUiMailListVisualiser::IsNextMsgAvailable( TFSMailMsgId aCurrentMsgId,
  7424 														TFSMailMsgId& aFoundNextMsgId,
  7868 														TFSMailMsgId& aFoundNextMsgId,
  7425 														TFSMailMsgId& aFoundNextMsgFolder ) const
  7869 														TFSMailMsgId& aFoundNextMsgFolder ) const
  7426 	{
  7870 	{