emailuis/emailui/src/FreestyleEmailUiLayoutHandler.cpp
changeset 0 8466d47a6819
child 1 12c456ceeff2
equal deleted inserted replaced
-1:000000000000 0:8466d47a6819
       
     1 /*
       
     2 * Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  FreestyleEmailUi layout data handler implementation
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // SYSTEM INCLUDE FILES
       
    20 #include "emailtrace.h"
       
    21 //#include <aknutils.h> <cmail>
       
    22 // <cmail> SF
       
    23 #include <alf/alftextstylemanager.h>
       
    24 #include <AknsUtils.h>
       
    25 #include <AknsSkinInstance.h>
       
    26 #include <alf/alfstatic.h>
       
    27 
       
    28 // <cmail> Platform layout change
       
    29 #include <aknlayoutscalable_apps.cdl.h>
       
    30 #include <aknlayoutscalable_avkon.cdl.h>
       
    31 #include <layoutmetadata.cdl.h>
       
    32 // </cmail>
       
    33 
       
    34 // For generic treelist layout data setting
       
    35 //<cmail>
       
    36 #include "fstreelist.h"
       
    37 //</cmail>
       
    38 
       
    39 // INTERNAL INCLUDE FILES
       
    40 #include "FreestyleEmailUiLayoutHandler.h"
       
    41 #include "FreestyleEmailUiLayoutData.h"
       
    42 
       
    43 // <cmail> Platform layout change
       
    44 template< typename T >
       
    45 TUint32 GeneralHash( const T& aValue )
       
    46     {
       
    47     return DefaultHash::Des8( TPckgC< T >( aValue ) );
       
    48     }
       
    49 
       
    50 template< typename T >
       
    51 TBool GeneralPtrIdentity( const T& aP1, const T& aP2 )
       
    52     {
       
    53     return TPckgC< T >( aP1 ) == TPckgC< T >( aP2 );
       
    54     }
       
    55 // </cmail> Platform layout change
       
    56 
       
    57 // -----------------------------------------------------------------------------
       
    58 // CFSEmailUiLayoutHandler::CFSEmailUiLayoutHandler
       
    59 // Base construction. May not leave.
       
    60 // -----------------------------------------------------------------------------
       
    61 //
       
    62 CFSEmailUiLayoutHandler::CFSEmailUiLayoutHandler( CAlfEnv& aEnv )
       
    63 	: iEnv(aEnv),
       
    64 	iScreenResolution( EQvgaPortrait ),
       
    65 	iTextStyleMap( THashFunction32< TAknTextComponentLayout >( GeneralHash ),
       
    66 	    TIdentityRelation< TAknTextComponentLayout >( GeneralPtrIdentity< TAknTextComponentLayout > ) ),
       
    67     // <cmail>
       
    68     iNormalTextStyle( KErrNotFound ),
       
    69     iLargeTextStyle( KErrNotFound ),
       
    70     iSmallTextStyle( KErrNotFound )
       
    71     // </cmail>
       
    72  	{
       
    73     FUNC_LOG;
       
    74 	}
       
    75 
       
    76 // -----------------------------------------------------------------------------
       
    77 // CFSEmailUiLayoutHandler::NewL
       
    78 // First phase construction function.
       
    79 // -----------------------------------------------------------------------------
       
    80 //	
       
    81 CFSEmailUiLayoutHandler* CFSEmailUiLayoutHandler::NewL( CAlfEnv& aEnv )
       
    82 	{
       
    83     FUNC_LOG;
       
    84 	CFSEmailUiLayoutHandler* self = new ( ELeave ) CFSEmailUiLayoutHandler( aEnv );
       
    85 	CleanupStack::PushL( self );
       
    86  	self->ConstructL();
       
    87 	CleanupStack::Pop( self );	
       
    88 	return self;
       
    89 	}
       
    90 
       
    91 // -----------------------------------------------------------------------------
       
    92 // CFSEmailUiLayoutHandler::ConstructL
       
    93 // Symbian second phase construction. May leave.
       
    94 // -----------------------------------------------------------------------------
       
    95 //	
       
    96 void CFSEmailUiLayoutHandler::ConstructL()
       
    97     {
       
    98     FUNC_LOG;
       
    99     }
       
   100 
       
   101 // -----------------------------------------------------------------------------
       
   102 // CFSEmailUiLayoutHandler::~CFSEmailUiLayoutHandler
       
   103 // D'tor
       
   104 // -----------------------------------------------------------------------------
       
   105 //
       
   106 CFSEmailUiLayoutHandler::~CFSEmailUiLayoutHandler()
       
   107     {
       
   108     FUNC_LOG;
       
   109 // <cmail> Platform layout change
       
   110     DeleteTextStyles();
       
   111 // </cmail> Platform layout change
       
   112     // <cmail>
       
   113     if ( iNormalTextStyle != KErrNotFound )
       
   114         {
       
   115         CAlfStatic::Env().TextStyleManager().DeleteTextStyle( 
       
   116                 iNormalTextStyle );
       
   117         }
       
   118     if( iLargeTextStyle != KErrNotFound )
       
   119         {
       
   120         CAlfStatic::Env().TextStyleManager().DeleteTextStyle( 
       
   121                 iLargeTextStyle );
       
   122         }
       
   123     if( iSmallTextStyle != KErrNotFound )
       
   124         {
       
   125         CAlfStatic::Env().TextStyleManager().DeleteTextStyle( 
       
   126                 iSmallTextStyle );
       
   127         }
       
   128     // </cmail>
       
   129     }
       
   130 
       
   131 // -----------------------------------------------------------------------------
       
   132 // CFSEmailUiLayoutHandler::ScreenResolution
       
   133 // Function can be used to fetch currently active screen resolution
       
   134 // -----------------------------------------------------------------------------
       
   135 //	
       
   136 TScreenResolution CFSEmailUiLayoutHandler::ScreenResolution() const
       
   137 	{
       
   138     FUNC_LOG;
       
   139 	return iScreenResolution;
       
   140 	}
       
   141 
       
   142 // -----------------------------------------------------------------------------
       
   143 // CFSEmailUiLayoutHandler::ScreenOrientation
       
   144 // Function can be used to fetch orientation of the current screen resolution
       
   145 // -----------------------------------------------------------------------------
       
   146 //  
       
   147 TScreenOrientation CFSEmailUiLayoutHandler::ScreenOrientation() const
       
   148     {
       
   149     FUNC_LOG;
       
   150     /*
       
   151     TScreenOrientation orientation = EPortrait;
       
   152     switch ( iScreenResolution )
       
   153         {
       
   154         case ELowResLandscape:
       
   155         case EQvgaLandscape:
       
   156         case EDrLandscape:
       
   157         case EVgaLandscape:
       
   158         case EHvgaLandscape:
       
   159         case EWideLandscape:
       
   160             orientation = ELandscape;
       
   161             break;
       
   162         case ELowResPortrait:
       
   163         case EQvgaPortrait:
       
   164         case EDrPortrait:
       
   165         case EVgaPortrait:
       
   166         case EHvgaPortrait:
       
   167         default:
       
   168             orientation = EPortrait;
       
   169             break;
       
   170         }
       
   171         
       
   172     return orientation;*/
       
   173     return Layout_Meta_Data::IsLandscapeOrientation() ? ELandscape : EPortrait;
       
   174     }
       
   175 
       
   176 // -----------------------------------------------------------------------------
       
   177 // CTeamUiAppLayoutHandler::ScreenResolutionChanged
       
   178 // Function can be used to update internal resolution value. Typically called
       
   179 // by UI in startup and when dynamic layout variant switch has occured 
       
   180 // -----------------------------------------------------------------------------
       
   181 //	
       
   182 void CFSEmailUiLayoutHandler::ScreenResolutionChanged()
       
   183 	{
       
   184     FUNC_LOG;
       
   185    	TRect screenRect;
       
   186  	AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect );
       
   187 	switch ( screenRect.Width() )
       
   188   		{
       
   189 		case KLowResPortraitWidth:
       
   190 			iScreenResolution = ELowResPortrait;
       
   191 			break;
       
   192 		case KLowResLandscapeWidth:
       
   193 			iScreenResolution =  ELowResLandscape;
       
   194 			break;
       
   195 		case KQvgaPortraitWidth:
       
   196 			iScreenResolution =  EQvgaPortrait;
       
   197 			break;
       
   198 		case KQvgaLandscapeWidth: // Also KHvgaPortraitWidth
       
   199 			{
       
   200 			if ( screenRect.Height() == KQvgaLandscapeHeight )
       
   201 				{
       
   202 				iScreenResolution =  EQvgaLandscape;					
       
   203 				}
       
   204 			else
       
   205 				{
       
   206 				iScreenResolution =  EHvgaPortrait;
       
   207 				}			
       
   208 			}
       
   209 			break;
       
   210 		case KDrPortraitWidth:
       
   211 			iScreenResolution =  EDrPortrait;
       
   212 			break;
       
   213 		case KDrLandscapeWidth:
       
   214 			iScreenResolution =  EDrLandscape;
       
   215 			break;
       
   216 		case KVgaPortraitWidth: // Also KHvgaLandscapeWidth
       
   217 			{
       
   218 			if ( screenRect.Height() == KHvgaLandscapeHeight )
       
   219 				{
       
   220 				iScreenResolution =  EHvgaLandscape;					
       
   221 				}
       
   222 			else
       
   223 				{
       
   224 				iScreenResolution =  EVgaPortrait;
       
   225 				}							
       
   226 			}
       
   227 			break;
       
   228 		case KVgaLandscapeWidth:
       
   229 			iScreenResolution =  EVgaLandscape;
       
   230 			break;
       
   231 		case KWideLandscapeWidth:
       
   232 			iScreenResolution =  EWideLandscape;
       
   233 			break;
       
   234 		default:
       
   235 			break;
       
   236  		}
       
   237 	}
       
   238 
       
   239 
       
   240 TInt CFSEmailUiLayoutHandler::GridRowsInThisResolution() const
       
   241 	{
       
   242     FUNC_LOG;
       
   243 	TInt rowCount(0);
       
   244 	switch ( iScreenResolution )
       
   245 		{
       
   246  		case ELowResPortrait:
       
   247 		case EQvgaPortrait:
       
   248  		case EVgaPortrait:
       
   249   		case EHvgaPortrait:
       
   250  		case EDrPortrait:
       
   251 
       
   252  		case ELowResLandscape:
       
   253  		case EQvgaLandscape:
       
   254 		case EVgaLandscape:	
       
   255 		case EHvgaLandscape:	
       
   256  		case EDrLandscape:
       
   257   		    rowCount = 3;
       
   258  		    break;
       
   259  		    
       
   260  		case EWideLandscape:
       
   261  		    rowCount = 2;
       
   262  		    break;
       
   263  		    
       
   264 		default:
       
   265 		    rowCount = 3;
       
   266 		    break;
       
   267 		}
       
   268 	return rowCount;
       
   269 	}
       
   270 
       
   271 
       
   272 TInt CFSEmailUiLayoutHandler::GridColumnsInThisResolution() const
       
   273 	{
       
   274     FUNC_LOG;
       
   275 	TInt columnCount(0);
       
   276 	switch ( iScreenResolution )
       
   277 		{
       
   278  		case ELowResPortrait:
       
   279 		case EQvgaPortrait:
       
   280  		case EVgaPortrait:
       
   281   		case EHvgaPortrait:
       
   282  		case EDrPortrait:
       
   283   		    columnCount = 3;
       
   284  		    break;
       
   285 
       
   286  		case ELowResLandscape:
       
   287  		case EQvgaLandscape:
       
   288 		case EVgaLandscape:	
       
   289 		case EHvgaLandscape:	
       
   290  		case EDrLandscape:
       
   291   		    columnCount = 4;
       
   292  		    break;
       
   293  		    
       
   294  		case EWideLandscape:
       
   295  		    columnCount = 5;
       
   296  		    break;
       
   297  		    
       
   298 		default:
       
   299 		    columnCount = 3;
       
   300 		    break;
       
   301 		}
       
   302 	return columnCount;
       
   303 	}
       
   304 
       
   305 
       
   306 // Grid normal state text color, same as focused
       
   307 TRgb CFSEmailUiLayoutHandler::GridNormalStateTextSkinColor() const
       
   308 	{
       
   309     FUNC_LOG;
       
   310     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
   311     TRgb textColor;
       
   312     // Should use EAknsCIFsTextColorsCG3 if background is white
       
   313      if ( AknsUtils::GetCachedColor( skin, textColor,
       
   314             KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ) != KErrNone )
       
   315         {
       
   316         textColor = KRgbBlack;
       
   317         }
       
   318  /*
       
   319     // Should use EAknsCIFsTextColorsCG3 if background is white
       
   320      if ( AknsUtils::GetCachedColor( skin, textColor,
       
   321             KAknsIIDFsTextColors, EAknsCIFsTextColorsCG3 ) != KErrNone )
       
   322         {
       
   323         textColor = KRgbBlack;
       
   324         }
       
   325 */
       
   326     return textColor;	
       
   327 	}
       
   328 
       
   329 // -----------------------------------------------------------------------------
       
   330 // CFSEmailUiLayoutHandler::GridIconSize
       
   331 // 
       
   332 // -----------------------------------------------------------------------------
       
   333 //
       
   334 TSize CFSEmailUiLayoutHandler::GridIconSize() const
       
   335 	{
       
   336     FUNC_LOG;
       
   337 // <cmail> Use layout data instead of hard-coded values
       
   338     TRect mainPaneRect;
       
   339     AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
       
   340 
       
   341     TAknLayoutRect scrollBarRect;
       
   342     scrollBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::aid_size_touch_scroll_bar());
       
   343     TRect gridRect = mainPaneRect;
       
   344     gridRect.iBr.iX -= scrollBarRect.Rect().Width();
       
   345 
       
   346     TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
       
   347     TAknLayoutRect itemRect;
       
   348     itemRect.LayoutRect(gridRect, AknLayoutScalable_Apps::cell_cmail_l_pane(var,0,0));
       
   349 
       
   350     TAknLayoutRect gridIconLRect;
       
   351     gridIconLRect.LayoutRect( itemRect.Rect(), AknLayoutScalable_Apps::cell_cmail_l_pane_g1( 0 ) );
       
   352     TSize iconSize = gridIconLRect.Rect().Size();
       
   353     return iconSize;
       
   354 /*    
       
   355 	TInt iconSize(0);
       
   356 	switch ( iScreenResolution )
       
   357 		{
       
   358 		case EQvgaPortrait:
       
   359 			iconSize = KGridIconSizeInQvgaPort;
       
   360 	 		break;
       
   361  		case EQvgaLandscape:
       
   362 			iconSize = KGridIconSizeInQvgaLand;
       
   363 		 	break;
       
   364  		case EVgaPortrait:
       
   365  			iconSize = KGridIconSizeInVgaPort;
       
   366  			break;
       
   367 		case EVgaLandscape:
       
   368 			iconSize = KGridIconSizeInVgaLand;
       
   369 			break;
       
   370   		case EHvgaPortrait:
       
   371  			iconSize = KGridIconSizeInHvgaPort;
       
   372  			break;
       
   373 		case EHvgaLandscape:
       
   374 			iconSize = KGridIconSizeInHvgaLand;
       
   375 			break;
       
   376  		case EWideLandscape:
       
   377 			iconSize = KGridIconSizeInWideLand;
       
   378  			break;
       
   379  		case EDrPortrait:
       
   380 			iconSize = KGridIconSizeInDoubleResPort;
       
   381  			break;
       
   382  		case EDrLandscape:
       
   383 		default:
       
   384 			iconSize = KGridIconSizeInDoubleResLand;
       
   385 			break;
       
   386 		}
       
   387 	return iconSize;*/
       
   388 // </cmail>    
       
   389 	}
       
   390 
       
   391 	
       
   392 TSize CFSEmailUiLayoutHandler::MailIconSizeInThisResolution() const
       
   393 	{
       
   394     FUNC_LOG;
       
   395 // <cmail> Use layout data instead of hard-coded values
       
   396 	TAknLayoutRect rect;
       
   397 	rect.LayoutRect( TRect( 0, 0, 0, 0 ),
       
   398 	                AknLayoutScalable_Apps::list_single_dyc_row_pane_g1( 0 ).LayoutLine() );
       
   399 	return rect.Rect().Size();
       
   400 	/*TSize mailListIconSize(0,0);
       
   401 	switch ( iScreenResolution )
       
   402 		{
       
   403 		case EQvgaPortrait:
       
   404 			mailListIconSize = KMailListIconSizeInQvgaPort;
       
   405 	 		break;
       
   406  		case EQvgaLandscape:
       
   407 			mailListIconSize = KMailListIconSizeInQvgaLand;
       
   408 		 	break;
       
   409  		case EVgaPortrait:
       
   410  			mailListIconSize = KMailListIconSizeInVgaPort;
       
   411  			break;
       
   412 		case EVgaLandscape:
       
   413 			mailListIconSize = KMailListIconSizeInVgaLand;
       
   414 			break;
       
   415   		case EHvgaPortrait:
       
   416  			mailListIconSize = KMailListIconSizeInHvgaPort;
       
   417  			break;
       
   418 		case EHvgaLandscape:
       
   419 			mailListIconSize = KMailListIconSizeInHvgaLand;
       
   420 			break;
       
   421  		case EWideLandscape:
       
   422 			mailListIconSize = KMailListIconSizeInWideLand;
       
   423  			break;
       
   424  		case EDrPortrait:
       
   425 			mailListIconSize = KMailListIconSizeInDoubleResPort;
       
   426  			break;
       
   427  		case EDrLandscape:
       
   428 		default:
       
   429 			mailListIconSize = KMailListIconSizeInDoubleResLand;
       
   430 			break;
       
   431 		}
       
   432 	TAknUiZoom zoomLevel(EAknUiZoomNormal);
       
   433     CAknEnv::Static()->GetCurrentGlobalUiZoom( zoomLevel );
       
   434  	switch ( zoomLevel )
       
   435 		{
       
   436 		// Make icon a little bit smaller in small zoom
       
   437 		case EAknUiZoomSmall:
       
   438 			{
       
   439 			mailListIconSize.iHeight-=2;
       
   440 			mailListIconSize.iWidth-=2;
       
   441 			}
       
   442 			break;
       
   443 		case EAknUiZoomLarge:
       
   444 		case EAknUiZoomNormal:
       
   445 		default:
       
   446 			{
       
   447 			}
       
   448 			break;
       
   449 		}
       
   450 	return mailListIconSize;*/
       
   451 // </cmail> Use layout data instead of hard-coded values
       
   452 	}
       
   453 
       
   454 
       
   455 // -----------------------------------------------------------------------------
       
   456 // CFSEmailUiLayoutHandler::SetListMarqueeBehaviour
       
   457 // Function sets FS Email UI default values for marquee behavioutr for treelist object
       
   458 // -----------------------------------------------------------------------------
       
   459 //
       
   460 void CFSEmailUiLayoutHandler::SetListMarqueeBehaviour( CFsTreeList* aTreeList ) const
       
   461 	{
       
   462     FUNC_LOG;
       
   463 	if ( aTreeList ) // Safety check
       
   464 		{
       
   465 		aTreeList->SetTextMarqueeType( KListTextMarqueeType );					
       
   466 		aTreeList->SetTextMarqueeSpeed ( KListTextMarqueeSpeed );
       
   467 		aTreeList->SetTextMarqueeStartDelay ( KListTextMarqueeStartDelay );
       
   468 		aTreeList->SetTextMarqueeRepetitions ( KListTextMarqueeSpeedRepeats );  
       
   469 		}	
       
   470 	}
       
   471 
       
   472 // -----------------------------------------------------------------------------
       
   473 // CFSEmailUiLayoutHandler::FolderListIconSizeInThisResolution
       
   474 // Folder list icon size, calculated based on the item size
       
   475 // -----------------------------------------------------------------------------
       
   476 //
       
   477 TSize CFSEmailUiLayoutHandler::FolderListIconSize( const TBool aPopup ) const
       
   478     {
       
   479     FUNC_LOG;
       
   480     if ( aPopup )
       
   481         {
       
   482         TAknWindowComponentLayout g1Layout( TAknWindowComponentLayout::Compose(
       
   483                 AknLayoutScalable_Apps::list_single_dyc_row_pane( 0 ),
       
   484                 AknLayoutScalable_Apps::list_single_dyc_row_pane_g1( 0 ) ) );
       
   485         TAknLayoutRect paneG1;
       
   486         paneG1.LayoutRect( DropDownMenuListRect( ELeft ), g1Layout.LayoutLine() );
       
   487         return paneG1.Rect().Size();        
       
   488         }
       
   489     else
       
   490         {
       
   491         TRect mainPaneRect;
       
   492         AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
       
   493         
       
   494         TAknLayoutRect scrollBarRect;
       
   495         scrollBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::scroll_pane());
       
   496         TRect gridRect = mainPaneRect;
       
   497         gridRect.iBr.iX -= scrollBarRect.Rect().Width();
       
   498 
       
   499         TAknLayoutRect itemRect;
       
   500         itemRect.LayoutRect( gridRect, AknLayoutScalable_Avkon::list_single_large_graphic_pane_g1( 0 ).LayoutLine() );
       
   501 
       
   502         return itemRect.Rect().Size();
       
   503         }
       
   504     }      
       
   505 
       
   506 // <cmail>
       
   507 // -----------------------------------------------------------------------------
       
   508 // CFSEmailUiLayoutHandler::FolderListPaneRectInThisResolution
       
   509 // Folder list pane rect, taken from Avkon layouts
       
   510 // -----------------------------------------------------------------------------
       
   511 //
       
   512 TRect CFSEmailUiLayoutHandler::FolderListPaneRectInThisResolution( const TRect& aParent) const
       
   513     {
       
   514     FUNC_LOG;
       
   515     TAknLayoutRect itemRect;
       
   516     itemRect.LayoutRect(aParent, AknLayoutScalable_Avkon::listscroll_gen_pane(0,0,0));
       
   517     return itemRect.Rect();
       
   518     }
       
   519 // </cmail>
       
   520 
       
   521 // -----------------------------------------------------------------------------
       
   522 // CFSEmailUiLayoutHandler::FolderListIndentation
       
   523 // Folder list pane indentation in pixels, taken from Avkon layouts
       
   524 // -----------------------------------------------------------------------------
       
   525 //
       
   526 TInt CFSEmailUiLayoutHandler::FolderListIndentation( const TRect& aParent ) const
       
   527     {
       
   528     FUNC_LOG;
       
   529     TAknLayoutRect layoutRect;
       
   530     layoutRect.LayoutRect( aParent,
       
   531         AknLayoutScalable_Avkon::aid_indentation_list_msg().LayoutLine() );
       
   532     return layoutRect.Rect().Width();
       
   533     }
       
   534 
       
   535 // -----------------------------------------------------------------------------
       
   536 // CFSEmailUiLayoutHandler::FolderListItemSizeInThisResolution
       
   537 // Folder list item size, taken from Avkon layouts
       
   538 // -----------------------------------------------------------------------------
       
   539 //
       
   540 TSize CFSEmailUiLayoutHandler::FolderListItemSizeInThisResolution( const TRect& aParent ) const
       
   541 	{
       
   542     FUNC_LOG;
       
   543     TAknLayoutRect itemRect;
       
   544      itemRect.LayoutRect( aParent, // Only zero variety with this one
       
   545      	AknLayoutScalable_Avkon::list_single_large_graphic_pane( 0, 0 ,0 ) );
       
   546 
       
   547     return itemRect.Rect().Size();
       
   548 	}
       
   549 
       
   550 // <cmail>
       
   551 // -----------------------------------------------------------------------------
       
   552 // CFSEmailUiLayoutHandler::DropDownMenuListRect
       
   553 // Selector ring image visual size
       
   554 // -----------------------------------------------------------------------------
       
   555 //
       
   556 TRect CFSEmailUiLayoutHandler::DropDownMenuListRect(
       
   557         const TDropDownMenuSide aSide ) const
       
   558     {
       
   559     FUNC_LOG;
       
   560     TRect mainPaneRect;
       
   561     AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,
       
   562             mainPaneRect );
       
   563     mainPaneRect.Move( 0, -mainPaneRect.iTl.iY );
       
   564     TInt variety( aSide == ELeft ? 0 : 1 );
       
   565     if ( Layout_Meta_Data::IsLandscapeOrientation() )
       
   566         {
       
   567         // landscape orientation variety is portrait + 2
       
   568         variety += 2;
       
   569         }
       
   570     
       
   571     TAknWindowComponentLayout ddMenuPane( 
       
   572             TAknWindowComponentLayout::Compose(
       
   573                 AknLayoutScalable_Apps::main_sp_fs_email_pane(),
       
   574                 AknLayoutScalable_Apps::popup_sp_fs_action_menu_pane_cp01( variety ) 
       
   575                 ) );
       
   576     
       
   577     TAknLayoutRect menuPane;
       
   578     menuPane.LayoutRect( mainPaneRect, ddMenuPane.LayoutLine() );
       
   579     return menuPane.Rect();
       
   580     
       
   581     }
       
   582 // </cmail>
       
   583 
       
   584 // -----------------------------------------------------------------------------
       
   585 // CFSEmailUiLayoutHandler::SelectorVisualSizeInThisResolution
       
   586 // Selector ring image visual size
       
   587 // -----------------------------------------------------------------------------
       
   588 //
       
   589 TSize CFSEmailUiLayoutHandler::SelectorVisualSizeInThisResolution() const
       
   590 	{
       
   591     FUNC_LOG;
       
   592 	TSize selectorVisualSize(0,0);
       
   593 	switch ( iScreenResolution )
       
   594 		{
       
   595 		case EQvgaPortrait:
       
   596 			selectorVisualSize = KSelectorVisualSizeInQvgaPort;
       
   597 	 		break;
       
   598  		case EQvgaLandscape:
       
   599 			selectorVisualSize = KSelectorVisualSizeInQvgaLand;
       
   600 		 	break;
       
   601  		case EVgaPortrait:
       
   602  			selectorVisualSize = KSelectorVisualSizeInVgaPort;
       
   603  			break;
       
   604 		case EVgaLandscape:	
       
   605 			selectorVisualSize = KSelectorVisualSizeInVgaLand;
       
   606 			break; 
       
   607   		case EHvgaPortrait:
       
   608  			selectorVisualSize = KSelectorVisualSizeInHvgaPort;
       
   609  			break;
       
   610 		case EHvgaLandscape:	
       
   611 			selectorVisualSize = KSelectorVisualSizeInHvgaLand;
       
   612 			break; 
       
   613  		case EWideLandscape:
       
   614 			selectorVisualSize = KSelectorVisualSizeInWideLand;
       
   615  			break;
       
   616  		case EDrPortrait:
       
   617 			selectorVisualSize = KSelectorVisualSizeInDoubleResPort;
       
   618  			break;
       
   619  		case EDrLandscape:
       
   620 		default:
       
   621 			selectorVisualSize = KSelectorVisualSizeInDoubleResLand;
       
   622 			break;
       
   623 		}
       
   624 	return selectorVisualSize;	
       
   625 	}
       
   626 
       
   627 
       
   628 // -----------------------------------------------------------------------------
       
   629 // CFSEmailUiLayoutHandler::OneLineListNodeHeight
       
   630 // List node item height 
       
   631 // -----------------------------------------------------------------------------
       
   632 //	
       
   633 TInt CFSEmailUiLayoutHandler::OneLineListNodeHeight() const
       
   634 	{
       
   635     FUNC_LOG;
       
   636 	//<cmail>
       
   637     TRect mainPaneRect;
       
   638     TAknLayoutRect listItem;
       
   639     AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect );
       
   640     listItem.LayoutRect( mainPaneRect, AknLayoutScalable_Apps::list_single_dyc_row_pane( 0 ) );
       
   641     return listItem.Rect().Height();
       
   642     //</cmail>
       
   643 	}
       
   644 	
       
   645 	
       
   646 // -----------------------------------------------------------------------------
       
   647 // CFSEmailUiLayoutHandler::OneLineListItemHeight
       
   648 // List item height
       
   649 // -----------------------------------------------------------------------------
       
   650 //
       
   651 TInt CFSEmailUiLayoutHandler::OneLineListItemHeight() const
       
   652 	{
       
   653     FUNC_LOG;
       
   654 	//<cmail>
       
   655     TRect mainPaneRect;
       
   656     TAknLayoutRect listItem;
       
   657     AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect );
       
   658     listItem.LayoutRect( mainPaneRect, AknLayoutScalable_Apps::list_single_dyc_row_pane( 0 ) );
       
   659     return listItem.Rect().Height();
       
   660     //</cmail>
       
   661 	}
       
   662 
       
   663 //<cmail>
       
   664 // -----------------------------------------------------------------------------
       
   665 // CFSEmailUiLayoutHandler::FolderListOneLineItemHeight
       
   666 // List item height for folder list
       
   667 // -----------------------------------------------------------------------------
       
   668 //
       
   669 TInt CFSEmailUiLayoutHandler::FolderListOneLineItemHeight( 
       
   670         const TBool& aFullscreen ) const
       
   671     {
       
   672     FUNC_LOG;
       
   673     if ( aFullscreen )
       
   674         {        
       
   675         return OneLineListItemHeight();
       
   676         }
       
   677 /*    else
       
   678         {
       
   679         const TRect ddMenuRect( DropDownMenuListRect( ELeft ) );
       
   680         TAknLayoutRect ddMenuPane;
       
   681         bg_sp_fs_ctrlbar_ddmenu_pane
       
   682         return 0;
       
   683         }*/
       
   684     return 0;
       
   685     }
       
   686 //</cmail>
       
   687 
       
   688 // -----------------------------------------------------------------------------
       
   689 // CFSEmailUiLayoutHandler::ControlBarHeight
       
   690 // Control bar height
       
   691 // -----------------------------------------------------------------------------
       
   692 //
       
   693 TInt CFSEmailUiLayoutHandler::ControlBarHeight() const
       
   694 	{
       
   695     FUNC_LOG;
       
   696 	//<cmail>
       
   697 	TRect mainPaneRect;
       
   698     TAknLayoutRect ctrlBarRect;
       
   699     AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect );
       
   700     ctrlBarRect.LayoutRect( mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane( 0 ) );
       
   701     return ctrlBarRect.Rect().Height();
       
   702 	//</cmail>
       
   703 	}
       
   704 
       
   705 // -----------------------------------------------------------------------------
       
   706 // CFSEmailUiLayoutHandler::ControlBarHeight
       
   707 // Control bar text height in twips
       
   708 // -----------------------------------------------------------------------------
       
   709 //
       
   710 /*
       
   711 TInt CFSEmailUiLayoutHandler::ControlBarTextHeight() const
       
   712 	{
       
   713     TRect mainPaneRect;
       
   714     TAknLayoutText ctrlBarText;
       
   715     TInt orientation( Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0 );
       
   716     AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect );
       
   717     ctrlBarText.LayoutText( mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_t1( orientation ) );
       
   718     return ctrlBarText.Font()->FontSpecInTwips().iHeight;
       
   719 	}
       
   720 */
       
   721 //</cmail>  Platform layout change
       
   722 
       
   723 // <cmail> changes to avoid unnecessary creating new text styles objects.
       
   724 CAlfTextStyle* CFSEmailUiLayoutHandler::FSTextStyleFromIdL( TFSEmailFont aFontId )
       
   725     {
       
   726     FUNC_LOG;
       
   727     CAlfTextStyle* style = NULL;
       
   728     
       
   729     switch ( aFontId )
       
   730         {
       
   731         case EFSFontTypeNormal:
       
   732         case EFSFontTypeNormalBold:
       
   733         case EFSFontTypeNormalItalic:
       
   734             if ( iNormalTextStyle == KErrNotFound ) 
       
   735                 {
       
   736                 iNormalTextStyle = CAlfStatic::Env().TextStyleManager().
       
   737                     CreatePlatformTextStyleL( 
       
   738                             EAknLogicalFontPrimaryFont, 
       
   739                             EAlfTextStyleNormal );
       
   740                 }
       
   741             style = CAlfStatic::Env().TextStyleManager().TextStyle( 
       
   742                         iNormalTextStyle );
       
   743             break;
       
   744         case EFSFontTypeLarge:
       
   745         case EFSFontTypeLargeBold:
       
   746         case EFSFontTypeLargeItalic:
       
   747             if ( iLargeTextStyle == KErrNotFound ) 
       
   748                 {
       
   749                 iLargeTextStyle = CAlfStatic::Env().TextStyleManager().
       
   750                     CreatePlatformTextStyleL( 
       
   751                             EAknLogicalFontTitleFont, 
       
   752                             EAlfTextStyleNormal );
       
   753                 }
       
   754             style = CAlfStatic::Env().TextStyleManager().TextStyle( 
       
   755                         iLargeTextStyle );
       
   756             break;
       
   757         case EFSFontTypeSmallItalic:
       
   758         case EFSFontTypeSmallBold:
       
   759         case EFSFontTypeSmall:
       
   760         default:
       
   761             if ( iSmallTextStyle == KErrNotFound ) 
       
   762                 {
       
   763                 iSmallTextStyle = CAlfStatic::Env().TextStyleManager().
       
   764                     CreatePlatformTextStyleL( 
       
   765                             EAknLogicalFontSecondaryFont, 
       
   766                             EAlfTextStyleNormal );
       
   767                 }
       
   768             style = CAlfStatic::Env().TextStyleManager().TextStyle( 
       
   769                     iSmallTextStyle );
       
   770             break;
       
   771         }
       
   772         
       
   773     switch ( aFontId )
       
   774         {
       
   775         case EFSFontTypeSmallBold:
       
   776             style->SetBold( EStrokeWeightBold );
       
   777             break;
       
   778         case EFSFontTypeSmallItalic:
       
   779             style->SetBold( EStrokeWeightNormal );
       
   780             style->SetItalic( EPostureItalic );    
       
   781             break;
       
   782         case EFSFontTypeNormal:
       
   783             style->SetBold( EStrokeWeightNormal );
       
   784             break;
       
   785         case EFSFontTypeNormalBold:
       
   786             style->SetBold( EStrokeWeightBold );
       
   787             break;
       
   788         case EFSFontTypeNormalItalic:
       
   789             style->SetBold( EStrokeWeightNormal );
       
   790             style->SetItalic( EPostureItalic );
       
   791             break;
       
   792         case EFSFontTypeLarge:
       
   793             style->SetBold( EStrokeWeightNormal );
       
   794             break;
       
   795         case EFSFontTypeLargeBold:
       
   796             style->SetBold( EStrokeWeightBold );
       
   797             break;
       
   798         case EFSFontTypeLargeItalic:
       
   799             style->SetBold( EStrokeWeightNormal );
       
   800             style->SetItalic( EPostureItalic ); 
       
   801             break;
       
   802         case EFSFontTypeSmall:
       
   803         default:
       
   804             {
       
   805             style->SetBold( EStrokeWeightNormal );
       
   806             }
       
   807             break;
       
   808         }
       
   809     
       
   810     return style;
       
   811     }
       
   812 // </cmail>
       
   813 
       
   814 TPoint CFSEmailUiLayoutHandler::ControlBarListPadding() const
       
   815 	{
       
   816     FUNC_LOG;
       
   817 	return KControlBarListPadding;
       
   818 	}
       
   819 
       
   820 TInt CFSEmailUiLayoutHandler::ControlBarListBorderRoundingSize() const
       
   821 	{
       
   822     FUNC_LOG;
       
   823 	return KControlBarListBorderRoundingSize;
       
   824 	}
       
   825 
       
   826 TInt CFSEmailUiLayoutHandler::ControlBarButtonBgRoundingSize() const
       
   827 	{
       
   828     FUNC_LOG;
       
   829 	return KControlBarbuttonBorderRoundingSize;	
       
   830 	}
       
   831 
       
   832 TInt CFSEmailUiLayoutHandler::ListFadeInEffectTime() const
       
   833 	{
       
   834     FUNC_LOG;
       
   835 	return KListFadeInEffectTime;
       
   836 	}
       
   837 
       
   838 TInt CFSEmailUiLayoutHandler::ListFadeOutEffectTime() const
       
   839     {
       
   840     FUNC_LOG;
       
   841     return KListFadeOutEffectTime;
       
   842     }
       
   843 
       
   844 TInt CFSEmailUiLayoutHandler::StatusIndicatorFadeEffectTime() const
       
   845 	{
       
   846     FUNC_LOG;
       
   847 	return KStatusIndicatorFadeEffectTime;
       
   848 	}
       
   849 
       
   850 TInt CFSEmailUiLayoutHandler::CtrlBarListFadeEffectTime() const
       
   851 	{
       
   852     FUNC_LOG;
       
   853 	return KCtrlBarListFadeEffectTime;
       
   854 	}
       
   855 
       
   856 TBool CFSEmailUiLayoutHandler::ViewSlideEffectActive() const
       
   857 	{
       
   858     FUNC_LOG;
       
   859 	return KListSlideEffectActive;
       
   860 	}
       
   861 
       
   862 TBool CFSEmailUiLayoutHandler::ViewFadeEffectActive() const
       
   863 	{
       
   864     FUNC_LOG;
       
   865 	return KListFadeEffectActive;
       
   866 	}
       
   867 
       
   868 TInt CFSEmailUiLayoutHandler::ViewSlideEffectTime() const
       
   869 	{
       
   870     FUNC_LOG;
       
   871 	return KListSlideEffectTime;
       
   872 	}
       
   873 
       
   874 TInt CFSEmailUiLayoutHandler::ViewFadeInEffectTime() const
       
   875     {
       
   876     FUNC_LOG;
       
   877     return KListFadeInEffectTime;
       
   878     }
       
   879 
       
   880 TInt CFSEmailUiLayoutHandler::ViewFadeOutEffectTime() const
       
   881     {
       
   882     FUNC_LOG;
       
   883     return KListFadeOutEffectTime;
       
   884     }
       
   885 
       
   886 TInt CFSEmailUiLayoutHandler::ListScrollingTime() const
       
   887 	{
       
   888     FUNC_LOG;
       
   889 	return KListScrollingTime;
       
   890 	}
       
   891 
       
   892 TInt CFSEmailUiLayoutHandler::ListItemExpansionDelay() const
       
   893 	{
       
   894     FUNC_LOG;
       
   895 	return KListItemExpansionDelay;
       
   896 	}
       
   897 
       
   898 TInt CFSEmailUiLayoutHandler::ViewHidingDelay() const
       
   899 	{
       
   900     FUNC_LOG;
       
   901 	return KViewChangeDelay;
       
   902 	}
       
   903 	
       
   904 TRgb CFSEmailUiLayoutHandler::ListFocusedStateTextSkinColor() const
       
   905     {
       
   906     FUNC_LOG;
       
   907     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
   908     TRgb textColor;
       
   909     // <cmail> Skin support
       
   910     if( AknsUtils::GetCachedColor( skin, textColor,
       
   911     		KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG10 ) != KErrNone )
       
   912     	{
       
   913         textColor = KRgbBlack;
       
   914     	}
       
   915     // </cmail>
       
   916     return textColor;
       
   917     }
       
   918 
       
   919 TRgb CFSEmailUiLayoutHandler::ListNormalStateTextSkinColor() const
       
   920     {
       
   921     FUNC_LOG;
       
   922     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
   923     TRgb textColor;
       
   924 	// <cmail> S60 Skin support
       
   925     if ( AknsUtils::GetCachedColor( skin, textColor,
       
   926     	KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ) != KErrNone )
       
   927     	{
       
   928         textColor = KRgbBlack;
       
   929     	}
       
   930 	// </cmail>        
       
   931     return textColor;
       
   932     }
       
   933 	
       
   934 TRgb CFSEmailUiLayoutHandler::ListNodeBackgroundColor() const
       
   935 	{
       
   936     FUNC_LOG;
       
   937 //<cmail> skin support
       
   938     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
   939     TRgb nodeBgColor;
       
   940     if ( AknsUtils::GetCachedColor( skin, nodeBgColor,
       
   941             KAknsIIDFsOtherColors, EAknsCIFsOtherColorsCG19 ) != KErrNone )
       
   942         {
       
   943         nodeBgColor = KRgbDarkGray;
       
   944         }
       
   945 //</cmail>
       
   946     return nodeBgColor;
       
   947 	}
       
   948 
       
   949 TRgb CFSEmailUiLayoutHandler::ListNodeTextColor() const
       
   950 	{
       
   951     FUNC_LOG;
       
   952    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
   953     // <cmail> S60 Skin support
       
   954    TRgb nodeTextColor;
       
   955     if ( AknsUtils::GetCachedColor( skin, nodeTextColor,
       
   956             KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ) != KErrNone )
       
   957     	{
       
   958         nodeTextColor = KRgbWhite;
       
   959         }
       
   960     // </cmail>
       
   961     return nodeTextColor;	
       
   962 	}
       
   963 
       
   964 TRgb CFSEmailUiLayoutHandler::ListHeaderBackgroundColor() const
       
   965     {
       
   966     FUNC_LOG;
       
   967     // The header item bg color is gained by mixing 50/50 node bg color
       
   968     // and list item bg color.
       
   969     // <cmail>
       
   970     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
   971     TRgb listItemBgColor;
       
   972     if ( AknsUtils::GetCachedColor( skin, listItemBgColor,
       
   973         KAknsIIDQsnLineColors, EAknsCIFsTextColorsCG3 ) != KErrNone )
       
   974         //KAknsIIDQsnLineColors, EAknsCIFsTextColorsCG5 ) != KErrNone )            
       
   975         {
       
   976         listItemBgColor = KRgbWhite;
       
   977         }
       
   978     // </cmail>
       
   979     TRgb nodeItemBgColor = ListNodeBackgroundColor(); 
       
   980     TRgb headerBgColor;
       
   981     headerBgColor.SetRed( (listItemBgColor.Red()+nodeItemBgColor.Red()) / 2 );
       
   982     headerBgColor.SetGreen( (listItemBgColor.Green()+nodeItemBgColor.Green()) / 2 );
       
   983     headerBgColor.SetBlue( (listItemBgColor.Blue()+nodeItemBgColor.Blue()) / 2 );
       
   984     return headerBgColor;
       
   985     }
       
   986 
       
   987 TInt CFSEmailUiLayoutHandler::ListTextStyle() const
       
   988 	{
       
   989     FUNC_LOG;
       
   990 	TInt listTextStyle( EAlfTextStyleSmall );
       
   991 	TAknUiZoom zoomLevel(EAknUiZoomNormal);
       
   992     CAknEnv::Static()->GetCurrentGlobalUiZoom( zoomLevel );
       
   993  	switch ( zoomLevel ) 
       
   994 		{
       
   995 		case EAknUiZoomSmall:
       
   996 			{
       
   997 		    listTextStyle = EAlfTextStyleSmall;
       
   998 			}
       
   999 			break;
       
  1000 		case EAknUiZoomLarge:
       
  1001 			{
       
  1002 		    listTextStyle = EAlfTextStyleLarge;
       
  1003 			}
       
  1004 			break;
       
  1005 		case EAknUiZoomNormal:
       
  1006 		default:
       
  1007 			{
       
  1008 		    listTextStyle = EAlfTextStyleNormal;
       
  1009 			}
       
  1010 			break;
       
  1011 		}
       
  1012 	return listTextStyle;
       
  1013 	}
       
  1014 
       
  1015 TRgb CFSEmailUiLayoutHandler::DropdownMenuTextColor() const
       
  1016     {
       
  1017     FUNC_LOG;
       
  1018     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
  1019     TRgb textColor;
       
  1020 
       
  1021     // <cmail> S60 Skin support
       
  1022     if ( AknsUtils::GetCachedColor( skin, textColor,
       
  1023             KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ) != KErrNone )
       
  1024         {
       
  1025          textColor = KRgbBlack;
       
  1026         }
       
  1027 	// </cmail>        
       
  1028 
       
  1029     return textColor;
       
  1030     }
       
  1031 
       
  1032 
       
  1033 TInt CFSEmailUiLayoutHandler::ViewerFontHeightInTwips() const
       
  1034 	{
       
  1035     FUNC_LOG;
       
  1036 	TAknUiZoom zoomLevel(EAknUiZoomNormal);
       
  1037     CAknEnv::Static()->GetCurrentGlobalUiZoom( zoomLevel );
       
  1038 	TInt heightInTwips(0);
       
  1039   	switch ( zoomLevel ) 
       
  1040 		{
       
  1041 		case EAknUiZoomSmall:
       
  1042 			{
       
  1043 		    heightInTwips = 130;
       
  1044 			}
       
  1045 			break;
       
  1046 		case EAknUiZoomLarge:
       
  1047 			{
       
  1048 		    heightInTwips = 190;
       
  1049 			}
       
  1050 			break;
       
  1051 		case EAknUiZoomNormal:
       
  1052 		default:
       
  1053 			{
       
  1054 		    heightInTwips = 160;
       
  1055 			}
       
  1056 			break;
       
  1057 		}
       
  1058 	return heightInTwips;
       
  1059 	}
       
  1060 
       
  1061 TInt CFSEmailUiLayoutHandler::ListItemFontHeightInTwips( const TBool aPopup ) const
       
  1062 	{
       
  1063     FUNC_LOG;
       
  1064     if ( aPopup )
       
  1065         {
       
  1066         TRect mainPaneRect;
       
  1067         TAknLayoutText itemText;
       
  1068         AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect );
       
  1069         itemText.LayoutText( mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_ddmenu_pane_t1( 0 ) );
       
  1070         return itemText.Font()->FontSpecInTwips().iHeight;        
       
  1071         }
       
  1072     else
       
  1073         {
       
  1074         TRect mainPaneRect;
       
  1075         TAknLayoutText itemText;
       
  1076         AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect );
       
  1077         itemText.LayoutText( mainPaneRect, AknLayoutScalable_Apps::list_single_dyc_row_text_pane_t1( 0 ) );
       
  1078         return itemText.Font()->FontSpecInTwips().iHeight;
       
  1079         }
       
  1080 	}
       
  1081 
       
  1082 
       
  1083 // -----------------------------------------------------------------------------
       
  1084 // CFSEmailUiLayoutHandler::ViewerTitleFontAknLogicalFontId
       
  1085 // -----------------------------------------------------------------------------
       
  1086 TAknLogicalFontId CFSEmailUiLayoutHandler::ViewerTitleFontAknLogicalFontId() const
       
  1087 	{
       
  1088     FUNC_LOG;
       
  1089 	return KViewerLogicalTitleFontId;
       
  1090 	}
       
  1091 // -----------------------------------------------------------------------------
       
  1092 // CFSEmailUiLayoutHandler::ViewerTextFontAknLogicalFontId
       
  1093 // -----------------------------------------------------------------------------
       
  1094 TAknLogicalFontId CFSEmailUiLayoutHandler::ViewerTextFontAknLogicalFontId() const
       
  1095 	{
       
  1096     FUNC_LOG;
       
  1097 	return KViewerLogicalTextFontId;
       
  1098 	}
       
  1099 // -----------------------------------------------------------------------------
       
  1100 // CFSEmailUiLayoutHandler::ViewerTitleFontHeight
       
  1101 // -----------------------------------------------------------------------------
       
  1102 TInt CFSEmailUiLayoutHandler::ViewerTitleFontHeight() const
       
  1103 	{
       
  1104 	FUNC_LOG;
       
  1105     // <cmail> Platform layout changes
       
  1106     /*
       
  1107     TAknUiZoom zoomLevel;
       
  1108     CAknEnv::Static()->GetCurrentGlobalUiZoom( zoomLevel );
       
  1109     TInt heightInPixels = 0;
       
  1110     switch ( zoomLevel )
       
  1111         {
       
  1112         case EAknUiZoomSmall:
       
  1113             {
       
  1114             heightInPixels = KViewerTitleFontSizeSmall;
       
  1115             }
       
  1116             break;
       
  1117         case EAknUiZoomLarge:
       
  1118             {
       
  1119             heightInPixels = KViewerTitleFontSizeLarge;
       
  1120             }
       
  1121             break;
       
  1122         case EAknUiZoomNormal:
       
  1123         default:
       
  1124             {
       
  1125             heightInPixels = KViewerTitleFontSizeNormal;
       
  1126             }
       
  1127             break;
       
  1128         }
       
  1129     return heightInPixels;
       
  1130     */
       
  1131     TAknLayoutRect labelRect;
       
  1132     labelRect.LayoutRect( ListCmailPaneRect(), AknLayoutScalable_Apps::list_single_cmail_header_caption_pane() );
       
  1133     TAknLayoutText layoutText;
       
  1134     layoutText.LayoutText( labelRect.Rect(), AknLayoutScalable_Apps::list_single_cmail_header_caption_pane_t1() );
       
  1135     return layoutText.Font()->FontMaxHeight();
       
  1136     // </cmail> Platform layout changes
       
  1137 	}
       
  1138 
       
  1139 // -----------------------------------------------------------------------------
       
  1140 // CFSEmailUiLayoutHandler::ViewerTextFontHeight
       
  1141 // -----------------------------------------------------------------------------
       
  1142 TInt CFSEmailUiLayoutHandler::ViewerTextFontHeight() const
       
  1143 	{
       
  1144 	FUNC_LOG;
       
  1145     // <cmail> Platform layout changes
       
  1146     /*
       
  1147     TAknUiZoom zoomLevel;
       
  1148     CAknEnv::Static()->GetCurrentGlobalUiZoom( zoomLevel );
       
  1149     TInt heightInPixels = 0;
       
  1150     switch ( zoomLevel )
       
  1151         {
       
  1152         case EAknUiZoomSmall:
       
  1153             {
       
  1154             heightInPixels = KViewerTextFontSizeSmall;
       
  1155             }
       
  1156             break;
       
  1157         case EAknUiZoomLarge:
       
  1158             {
       
  1159             heightInPixels = KViewerTextFontSizeLarge;
       
  1160             }
       
  1161             break;
       
  1162         case EAknUiZoomNormal:
       
  1163         default:
       
  1164             {
       
  1165             heightInPixels = KViewerTextFontSizeNormal;
       
  1166             }
       
  1167             break;
       
  1168         }
       
  1169     return heightInPixels;
       
  1170     */
       
  1171     TAknLayoutRect labelRect;
       
  1172     labelRect.LayoutRect( ListCmailPaneRect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane( 0 ) );
       
  1173     TAknLayoutText layoutText;
       
  1174     layoutText.LayoutText( labelRect.Rect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane_t1( 0 ) );
       
  1175     return layoutText.Font()->FontMaxHeight();
       
  1176     // </cmail> Platform layout changes
       
  1177 	}
       
  1178 
       
  1179 // -----------------------------------------------------------------------------
       
  1180 // CFSEmailUiLayoutHandler::ViewerTopMostSpaceHeight
       
  1181 // -----------------------------------------------------------------------------
       
  1182 TInt CFSEmailUiLayoutHandler::ViewerTopMostSpaceHeight() const
       
  1183 	{
       
  1184 	FUNC_LOG;
       
  1185     // <cmail> Platform layout changes
       
  1186     /*
       
  1187 	TAknUiZoom zoomLevel;
       
  1188     CAknEnv::Static()->GetCurrentGlobalUiZoom( zoomLevel );
       
  1189 	TInt heightInPixels = 0;
       
  1190   	switch ( zoomLevel )
       
  1191 		{
       
  1192 		case EAknUiZoomSmall:
       
  1193 			{
       
  1194 			heightInPixels = KViewerTopMostSpaceSmall;
       
  1195 			}
       
  1196 			break;
       
  1197 		case EAknUiZoomLarge:
       
  1198 			{
       
  1199 			heightInPixels = KViewerTopMostSpaceLarge;
       
  1200 			}
       
  1201 			break;
       
  1202 		case EAknUiZoomNormal:
       
  1203 		default:
       
  1204 			{
       
  1205 			heightInPixels = KViewerTopMostSpaceNormal;
       
  1206 			}
       
  1207 			break;
       
  1208 		}
       
  1209 	return heightInPixels;
       
  1210 	*/
       
  1211     TAknLayoutRect labelRect;
       
  1212     labelRect.LayoutRect( ListCmailPaneRect(), AknLayoutScalable_Apps::list_single_cmail_header_caption_pane( 0 ) );
       
  1213     return labelRect.Rect().Height();
       
  1214     // </cmail> Platform layout changes
       
  1215 	}
       
  1216 // -----------------------------------------------------------------------------
       
  1217 // CFSEmailUiLayoutHandler::ViewerRecipientSpaceHeight
       
  1218 // -----------------------------------------------------------------------------
       
  1219 TInt CFSEmailUiLayoutHandler::ViewerRecipientSpaceHeight() const
       
  1220 	{
       
  1221 	FUNC_LOG;
       
  1222     // <cmail> Platform layout changes
       
  1223     /*
       
  1224 	TAknUiZoom zoomLevel;
       
  1225     CAknEnv::Static()->GetCurrentGlobalUiZoom( zoomLevel );
       
  1226 	TInt heightInPixels = 0;
       
  1227   	switch ( zoomLevel )
       
  1228 		{
       
  1229 		case EAknUiZoomSmall:
       
  1230 			{
       
  1231 			heightInPixels = KViewerRecipientSpaceSmall;
       
  1232 			}
       
  1233 			break;
       
  1234 		case EAknUiZoomLarge:
       
  1235 			{
       
  1236 			heightInPixels = KViewerRecipientSpaceLarge;
       
  1237 			}
       
  1238 			break;
       
  1239 		case EAknUiZoomNormal:
       
  1240 		default:
       
  1241 			{
       
  1242 			heightInPixels = KViewerRecipientSpaceNormal;
       
  1243 			}
       
  1244 			break;
       
  1245 		}
       
  1246 	return heightInPixels;
       
  1247 	*/
       
  1248     TAknLayoutRect labelRect;
       
  1249     labelRect.LayoutRect( ListCmailPaneRect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane( 0 ) );
       
  1250     return labelRect.Rect().Height();
       
  1251     // </cmail> Platform layout changes
       
  1252 	}
       
  1253 
       
  1254 // -----------------------------------------------------------------------------
       
  1255 // CFSEmailUiLayoutHandler::ViewerHeaderInfoSpaceHeight
       
  1256 // -----------------------------------------------------------------------------
       
  1257 TInt CFSEmailUiLayoutHandler::ViewerHeaderInfoSpaceHeight() const
       
  1258 	{
       
  1259 	FUNC_LOG;
       
  1260     // <cmail> Platform layout changes
       
  1261     /*
       
  1262 	TAknUiZoom zoomLevel;
       
  1263     CAknEnv::Static()->GetCurrentGlobalUiZoom( zoomLevel );
       
  1264 	TInt heightInPixels = 0;
       
  1265   	switch ( zoomLevel )
       
  1266 		{
       
  1267 		case EAknUiZoomSmall:
       
  1268 			{
       
  1269 			heightInPixels = KViewerHeaderInfoSpaceSmall;
       
  1270 			}
       
  1271 			break;
       
  1272 		case EAknUiZoomLarge:
       
  1273 			{
       
  1274 			heightInPixels = KViewerHeaderInfoSpaceLarge;
       
  1275 			}
       
  1276 			break;
       
  1277 		case EAknUiZoomNormal:
       
  1278 		default:
       
  1279 			{
       
  1280 			heightInPixels = KViewerHeaderInfoSpaceNormal;
       
  1281 			}
       
  1282 			break;
       
  1283 		}
       
  1284 	return heightInPixels;
       
  1285 	*/
       
  1286 	return ViewerTopMostSpaceHeight();
       
  1287     // </cmail> Platform layout changes
       
  1288 	}
       
  1289 
       
  1290 // -----------------------------------------------------------------------------
       
  1291 // CFSEmailUiLayoutHandler::ViewerBottomMostSpaceHeight
       
  1292 // -----------------------------------------------------------------------------
       
  1293 TInt CFSEmailUiLayoutHandler::ViewerBottomMostSpaceHeight() const
       
  1294 	{
       
  1295 	FUNC_LOG;
       
  1296     // <cmail> Platform layout changes
       
  1297 	/*
       
  1298 	TAknUiZoom zoomLevel;
       
  1299     CAknEnv::Static()->GetCurrentGlobalUiZoom( zoomLevel );
       
  1300 	TInt heightInPixels = 0;
       
  1301   	switch ( zoomLevel )
       
  1302 		{
       
  1303 		case EAknUiZoomSmall:
       
  1304 			{
       
  1305 			heightInPixels = KViewerBottomMostSpaceSmall;
       
  1306 			}
       
  1307 			break;
       
  1308 		case EAknUiZoomLarge:
       
  1309 			{
       
  1310 			heightInPixels = KViewerBottomMostSpaceLarge;
       
  1311 			}
       
  1312 			break;
       
  1313 		case EAknUiZoomNormal:
       
  1314 		default:
       
  1315 			{
       
  1316 			heightInPixels = KViewerBottomMostSpaceNormal;
       
  1317 			}
       
  1318 			break;
       
  1319 		}
       
  1320 	return heightInPixels;
       
  1321 	*/
       
  1322 	return ViewerRecipientSpaceHeight();
       
  1323     // </cmail> Platform layout changes
       
  1324 	}
       
  1325 // -----------------------------------------------------------------------------
       
  1326 // CFSEmailUiLayoutHandler::ViewerMaxRecipientLineCount
       
  1327 // -----------------------------------------------------------------------------
       
  1328 TInt CFSEmailUiLayoutHandler::ViewerMaxRecipientLineCount() const
       
  1329     {
       
  1330     FUNC_LOG;
       
  1331     return KViewerMaxRecipientLineCount;
       
  1332     }
       
  1333 // -----------------------------------------------------------------------------
       
  1334 // CFSEmailUiLayoutHandler::ViewerMaxSubjectLineCount
       
  1335 // -----------------------------------------------------------------------------
       
  1336 TInt CFSEmailUiLayoutHandler::ViewerMaxSubjectLineCount() const
       
  1337     {
       
  1338     FUNC_LOG;
       
  1339     return KViewerMaxSubjectLineCount;
       
  1340     }
       
  1341 // -----------------------------------------------------------------------------
       
  1342 // CFSEmailUiLayoutHandler::ViewerTitleTextColor
       
  1343 // -----------------------------------------------------------------------------
       
  1344 TRgb CFSEmailUiLayoutHandler::ViewerTitleTextColor() const
       
  1345 	{
       
  1346     FUNC_LOG;
       
  1347     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
  1348     TRgb textColor;
       
  1349     // <cmail> S60 Skin support
       
  1350     if (AknsUtils::GetCachedColor( skin, textColor,
       
  1351 		KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ) != KErrNone )
       
  1352         {
       
  1353         textColor = KBlackFallbackTextColor;
       
  1354         }
       
  1355     // </cmail>
       
  1356 
       
  1357     return textColor;
       
  1358 	}
       
  1359 // -----------------------------------------------------------------------------
       
  1360 // CFSEmailUiLayoutHandler::ViewerTextTextColor
       
  1361 // -----------------------------------------------------------------------------
       
  1362 TRgb CFSEmailUiLayoutHandler::ViewerTextTextColor() const
       
  1363 	{
       
  1364     FUNC_LOG;
       
  1365     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
  1366     TRgb textColor;
       
  1367     // <cmail> S60 Skin support
       
  1368     if (AknsUtils::GetCachedColor( skin, textColor,
       
  1369 		KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ) != KErrNone )
       
  1370     	{
       
  1371         textColor = KBlackFallbackTextColor;
       
  1372         }
       
  1373 	// </cmail>
       
  1374 
       
  1375     return textColor;
       
  1376 	}
       
  1377 // -----------------------------------------------------------------------------
       
  1378 // CFSEmailUiLayoutHandler::ViewerBodyTextColor
       
  1379 // -----------------------------------------------------------------------------
       
  1380 TRgb CFSEmailUiLayoutHandler::ViewerBodyTextColor() const
       
  1381 	{
       
  1382     FUNC_LOG;
       
  1383     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
  1384     TRgb textColor;
       
  1385     if ( AknsUtils::GetCachedColor( skin, textColor,
       
  1386             //KAknsIIDFsTextColors, EAknsCIFsTextColorsCG3 ) != KErrNone )
       
  1387             KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG13 ) != KErrNone ) // <cmail>
       
  1388         {
       
  1389         textColor = KBlackFallbackTextColor;
       
  1390         }
       
  1391     return textColor;
       
  1392 	}
       
  1393 // -----------------------------------------------------------------------------
       
  1394 // CFSEmailUiLayoutHandler::ViewerNormalHotspotTextColor
       
  1395 // -----------------------------------------------------------------------------
       
  1396 TRgb CFSEmailUiLayoutHandler::ViewerNormalHotspotTextColor() const
       
  1397 	{
       
  1398     FUNC_LOG;
       
  1399     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
  1400     TRgb textColor;
       
  1401     // <cmail> S60 Skin support
       
  1402 	if ( AknsUtils::GetCachedColor( skin, textColor,
       
  1403             KAknsIIDQsnHighlightColors,
       
  1404 		EAknsCIQsnHighlightColorsCG3 ) != KErrNone )
       
  1405 		{
       
  1406         textColor = KLightBlueFallbackTextColor;
       
  1407         }
       
  1408 	// </cmail>
       
  1409 
       
  1410     return textColor;
       
  1411 	}
       
  1412 // -----------------------------------------------------------------------------
       
  1413 // CFSEmailUiLayoutHandler::ViewerHighlightedHotspotTextColor
       
  1414 // -----------------------------------------------------------------------------
       
  1415 TRgb CFSEmailUiLayoutHandler::ViewerHighlightedHotspotTextColor() const
       
  1416 	{
       
  1417     FUNC_LOG;
       
  1418     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
  1419     TRgb textColor;
       
  1420     // <cmail> S60 Skin support
       
  1421 	if ( AknsUtils::GetCachedColor( skin, textColor,
       
  1422 			KAknsIIDQsnHighlightColors,
       
  1423 			EAknsCIQsnHighlightColorsCG3 ) != KErrNone )
       
  1424 		{
       
  1425         textColor = KLightBlueFallbackTextColor;
       
  1426         }
       
  1427 	// </cmail>
       
  1428 
       
  1429     return textColor;
       
  1430 	}
       
  1431 // -----------------------------------------------------------------------------
       
  1432 // CFSEmailUiLayoutHandler::ViewerSentTextColor
       
  1433 // -----------------------------------------------------------------------------
       
  1434 TRgb CFSEmailUiLayoutHandler::ViewerSentTextColor() const
       
  1435 	{
       
  1436     FUNC_LOG;
       
  1437     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
  1438     TRgb textColor;
       
  1439     if ( AknsUtils::GetCachedColor( skin, textColor,
       
  1440             KAknsIIDFsTextColors, EAknsCIFsTextColorsCG8 ) != KErrNone )
       
  1441         {
       
  1442         textColor = KBlackFallbackTextColor;
       
  1443         }
       
  1444     return textColor;
       
  1445 	}
       
  1446 // -----------------------------------------------------------------------------
       
  1447 // CFSEmailUiLayoutHandler::ViewerPixelsBetweenMsgStatusIconAndSubject
       
  1448 // -----------------------------------------------------------------------------
       
  1449 TInt CFSEmailUiLayoutHandler::ViewerPixelsBetweenMsgStatusIconAndSubject() const
       
  1450 	{
       
  1451 	FUNC_LOG;
       
  1452     // <cmail> Platform layout changes
       
  1453     /*
       
  1454     return KViewerSpaceBetweenIconAndSubject;
       
  1455     */
       
  1456     const TRect cmailPaneRect( ListCmailPaneRect() );
       
  1457     TAknLayoutRect layoutRect;
       
  1458     layoutRect.LayoutRect( cmailPaneRect, AknLayoutScalable_Apps::list_single_cmail_header_detail_pane( 0 ) );
       
  1459     TAknLayoutRect iconRect;
       
  1460     iconRect.LayoutRect( layoutRect.Rect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane_g1( 0 ) );
       
  1461     if (AknLayoutUtils::LayoutMirrored())
       
  1462         {
       
  1463         return cmailPaneRect.iBr.iX - iconRect.Rect().iBr.iX;
       
  1464         }
       
  1465     else
       
  1466         {
       
  1467         return Abs( cmailPaneRect.iTl.iX - iconRect.Rect().iTl.iX );
       
  1468         }
       
  1469         
       
  1470     // </cmail> Platform layout changes
       
  1471 	}
       
  1472 
       
  1473 // -----------------------------------------------------------------------------
       
  1474 // CFSEmailUiLayoutHandler::ViewerIconSize
       
  1475 // -----------------------------------------------------------------------------
       
  1476 TSize CFSEmailUiLayoutHandler::ViewerIconSize() const
       
  1477 	{
       
  1478 	FUNC_LOG;
       
  1479 	// <cmail> Platform layout changes
       
  1480 	/*
       
  1481 	return KViewerIconSize;
       
  1482 	*/
       
  1483     TAknLayoutRect layoutRect;
       
  1484     layoutRect.LayoutRect( ListCmailPaneRect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane( 0 ) );
       
  1485     layoutRect.LayoutRect( layoutRect.Rect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane_g1( 2 ) );
       
  1486     return layoutRect.Rect().Size();
       
  1487 	// </cmail> Platform layout changes
       
  1488 	}
       
  1489 // -----------------------------------------------------------------------------
       
  1490 // CFSEmailUiLayoutHandler::ViewerIndentationIconSize
       
  1491 // -----------------------------------------------------------------------------
       
  1492 TSize CFSEmailUiLayoutHandler::ViewerIndentationIconSize() const
       
  1493 	{
       
  1494 	FUNC_LOG;
       
  1495     // <cmail> Platform layout changes
       
  1496     /*
       
  1497     return KViewerTransparentIndentationIconSize;
       
  1498     */
       
  1499 	return ViewerIconSize();
       
  1500     // </cmail> Platform layout changes
       
  1501 	}
       
  1502 // -----------------------------------------------------------------------------
       
  1503 // CFSEmailUiLayoutHandler::ViewerActionMenuIconSize
       
  1504 // -----------------------------------------------------------------------------
       
  1505 TSize CFSEmailUiLayoutHandler::ViewerActionMenuIconSize() const
       
  1506     {
       
  1507 	FUNC_LOG;
       
  1508     // <cmail> Platform layout changes
       
  1509     /*
       
  1510     return KViewerActionMenuIconSize;
       
  1511     */
       
  1512     TAknLayoutRect layoutRect;
       
  1513     layoutRect.LayoutRect( ListCmailPaneRect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane( 0 ) );
       
  1514     layoutRect.LayoutRect( layoutRect.Rect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane_g2( 0 ) );
       
  1515     return layoutRect.Rect().Size();
       
  1516     // </cmail> Platform layout changes
       
  1517     }
       
  1518 // -----------------------------------------------------------------------------
       
  1519 // CFSEmailUiLayoutHandler::ViewerActionMenuIconMargin
       
  1520 // -----------------------------------------------------------------------------
       
  1521 TInt CFSEmailUiLayoutHandler::ViewerActionMenuIconMargin() const
       
  1522     {
       
  1523 	FUNC_LOG;
       
  1524     // <cmail> Platform layout changes
       
  1525     /*
       
  1526     return KViewerActionMenuIconMargin;
       
  1527     */
       
  1528 	if (AknLayoutUtils::LayoutMirrored())
       
  1529 	    {
       
  1530 	    TAknLayoutRect layoutRect;
       
  1531         layoutRect.LayoutRect( ListCmailPaneRect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane( 0 ) );
       
  1532         TInt x( layoutRect.Rect().iTl.iX );
       
  1533         layoutRect.LayoutRect( layoutRect.Rect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane_g2( 0 ) );
       
  1534         return Abs( layoutRect.Rect().iTl.iX - x );
       
  1535 	    }
       
  1536 	else
       
  1537 	    {
       
  1538         TAknLayoutRect layoutRect;
       
  1539         layoutRect.LayoutRect( ListCmailPaneRect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane( 0 ) );
       
  1540         TInt x( layoutRect.Rect().iBr.iX );
       
  1541         layoutRect.LayoutRect( layoutRect.Rect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane_g2( 0 ) );
       
  1542         return Abs( x - layoutRect.Rect().iBr.iX );
       
  1543 	    }
       
  1544     // </cmail> Platform layout changes
       
  1545     }
       
  1546 // -----------------------------------------------------------------------------
       
  1547 // CFSEmailUiLayoutHandler::ViewerSelectorOpacity
       
  1548 // -----------------------------------------------------------------------------
       
  1549 TReal CFSEmailUiLayoutHandler::ViewerSelectorOpacity() const
       
  1550     {
       
  1551     FUNC_LOG;
       
  1552     return KViewerSelectorOpacity;
       
  1553     }
       
  1554 // -----------------------------------------------------------------------------
       
  1555 // CFSEmailUiLayoutHandler::ViewerRightMarginInPixels
       
  1556 // -----------------------------------------------------------------------------
       
  1557 TInt CFSEmailUiLayoutHandler::ViewerRightMarginInPixels() const
       
  1558 	{
       
  1559 	FUNC_LOG;
       
  1560     // <cmail> Platform layout changes
       
  1561     /*
       
  1562     if ( AknLayoutUtils::LayoutMirrored() )
       
  1563         {
       
  1564         return KViewerLeftMarginWidthInPixels;
       
  1565         }
       
  1566     else
       
  1567         {
       
  1568         return KViewerRightMarginWidthInPixels;
       
  1569         }
       
  1570     */
       
  1571     const TRect cmailPaneRect( ListCmailPaneRect() );
       
  1572     TAknLayoutRect layoutRect;
       
  1573     layoutRect.LayoutRect( cmailPaneRect, AknLayoutScalable_Apps::list_single_cmail_header_caption_pane() );
       
  1574     TAknLayoutText captionTextRect;
       
  1575     captionTextRect.LayoutText( layoutRect.Rect(), AknLayoutScalable_Apps::list_single_cmail_header_caption_pane_t1() );
       
  1576     return Abs( cmailPaneRect.iBr.iX - captionTextRect.TextRect().iBr.iX );
       
  1577     // </cmail> Platform layout changes
       
  1578     }
       
  1579 
       
  1580 // -----------------------------------------------------------------------------
       
  1581 // CFSEmailUiLayoutHandler::ViewerLeftMarginInPixels
       
  1582 // -----------------------------------------------------------------------------
       
  1583 TInt CFSEmailUiLayoutHandler::ViewerLeftMarginInPixels() const
       
  1584 	{
       
  1585 	FUNC_LOG;
       
  1586     // <cmail> Platform layout changes
       
  1587     /*
       
  1588     if ( AknLayoutUtils::LayoutMirrored() )
       
  1589         {
       
  1590         return KViewerRightMarginWidthInPixels;
       
  1591         }
       
  1592     else
       
  1593         {
       
  1594         return KViewerLeftMarginWidthInPixels;
       
  1595         }
       
  1596     */
       
  1597     const TRect cmailPaneRect( ListCmailPaneRect() );
       
  1598     TAknLayoutRect layoutRect;
       
  1599     layoutRect.LayoutRect( cmailPaneRect, AknLayoutScalable_Apps::list_single_cmail_header_caption_pane() );
       
  1600     TAknLayoutText captionTextRect;
       
  1601     captionTextRect.LayoutText( layoutRect.Rect(), AknLayoutScalable_Apps::list_single_cmail_header_caption_pane_t1() );
       
  1602     return Abs( cmailPaneRect.iTl.iX - captionTextRect.TextRect().iTl.iX );
       
  1603     // </cmail> Platform layout changes
       
  1604     }
       
  1605 
       
  1606 // -----------------------------------------------------------------------------
       
  1607 // CFSEmailUiLayoutHandler::ViewerWaterMarkSizeInThisResolution
       
  1608 // -----------------------------------------------------------------------------
       
  1609 TSize CFSEmailUiLayoutHandler::ViewerWaterMarkSizeInThisResolution() const
       
  1610 	{
       
  1611     FUNC_LOG;
       
  1612 	TSize sizeWithCurrentResolution;
       
  1613 	// For now, set same size with all resolutions
       
  1614 	switch ( iScreenResolution )
       
  1615 		{
       
  1616  		case ELowResPortrait:
       
  1617 		case EQvgaPortrait:
       
  1618  		case EVgaPortrait:
       
  1619   		case EHvgaPortrait:
       
  1620  		case EDrPortrait:
       
  1621  		case ELowResLandscape:
       
  1622  		case EQvgaLandscape:
       
  1623 		case EVgaLandscape:	
       
  1624 		case EHvgaLandscape:	
       
  1625  		case EDrLandscape:
       
  1626  		case EWideLandscape:
       
  1627 		default:
       
  1628 		    sizeWithCurrentResolution = KViewerDefaultWaterMarkSizeInViewer;
       
  1629 		    break;
       
  1630 		}
       
  1631 	return sizeWithCurrentResolution;
       
  1632 	}
       
  1633 // -----------------------------------------------------------------------------
       
  1634 // CFSEmailUiLayoutHandler::ViewerWaterMarkPositionFromBottomRightCornerInThisResolution
       
  1635 // -----------------------------------------------------------------------------
       
  1636 TPoint CFSEmailUiLayoutHandler::ViewerWaterMarkPlaceFromBottomRightCornerInThisResolution() const
       
  1637 	{
       
  1638     FUNC_LOG;
       
  1639 	TPoint placeFromBottomRightCorner;
       
  1640 	// For now, set place with all resolutions
       
  1641 	switch ( iScreenResolution )
       
  1642 		{
       
  1643  		case ELowResPortrait:
       
  1644 		case EQvgaPortrait:
       
  1645  		case EVgaPortrait:
       
  1646   		case EHvgaPortrait:
       
  1647  		case EDrPortrait:
       
  1648  		case ELowResLandscape:
       
  1649  		case EQvgaLandscape:
       
  1650 		case EVgaLandscape:	
       
  1651 		case EHvgaLandscape:	
       
  1652  		case EDrLandscape:
       
  1653  		case EWideLandscape:
       
  1654 		default:
       
  1655 		    placeFromBottomRightCorner = KViewerWaterMarkPositionFromBottomRightCorner;
       
  1656 		    break;
       
  1657 		}
       
  1658 	return placeFromBottomRightCorner;
       
  1659 	}
       
  1660 // -----------------------------------------------------------------------------
       
  1661 // CFSEmailUiLayoutHandler::ComposerFieldBorderColor
       
  1662 // -----------------------------------------------------------------------------
       
  1663 TRgb CFSEmailUiLayoutHandler::ComposerFieldBorderColor() const
       
  1664     {
       
  1665     FUNC_LOG;
       
  1666     return GetSkinColor( KAknsIIDFsOtherColors, EAknsCIFsOtherColorsCG14, KRgbBlack );
       
  1667     }
       
  1668 // -----------------------------------------------------------------------------
       
  1669 // CFSEmailUiLayoutHandler::ComposerFieldBackgroundColor
       
  1670 // -----------------------------------------------------------------------------
       
  1671 TRgb CFSEmailUiLayoutHandler::ComposerFieldBackgroundColor() const
       
  1672     {
       
  1673     FUNC_LOG;
       
  1674     return GetSkinColor( KAknsIIDFsOtherColors, EAknsCIFsOtherColorsCG12, KRgbWhite );
       
  1675     }
       
  1676 // -----------------------------------------------------------------------------
       
  1677 // CFSEmailUiLayoutHandler::ComposerHeaderFieldTextColor
       
  1678 // -----------------------------------------------------------------------------
       
  1679 TRgb CFSEmailUiLayoutHandler::ComposerHeaderFieldTextColor() const
       
  1680         {
       
  1681     FUNC_LOG;
       
  1682     return GetSkinColor( KAknsIIDFsTextColors, EAknsCIFsTextColorsCG4, KRgbBlack );
       
  1683         }
       
  1684 // -----------------------------------------------------------------------------
       
  1685 // CFSEmailUiLayoutHandler::ComposerBodyFieldTextColor
       
  1686 // -----------------------------------------------------------------------------
       
  1687 TRgb CFSEmailUiLayoutHandler::ComposerBodyFieldTextColor() const
       
  1688     {
       
  1689     FUNC_LOG;
       
  1690     return GetSkinColor( KAknsIIDFsTextColors, EAknsCIFsTextColorsCG3, KRgbBlack );
       
  1691     }
       
  1692 // -----------------------------------------------------------------------------
       
  1693 // CFSEmailUiLayoutHandler::ComposerDimmedTextColor
       
  1694 // -----------------------------------------------------------------------------
       
  1695 TRgb CFSEmailUiLayoutHandler::ComposerDimmedTextColor() const
       
  1696     {
       
  1697     FUNC_LOG;
       
  1698     return GetSkinColor( KAknsIIDFsTextColors, EAknsCIFsTextColorsCG18, KRgbGray );
       
  1699     }
       
  1700 // -----------------------------------------------------------------------------
       
  1701 // CFSEmailUiLayoutHandler::MaxPcsMatches
       
  1702 // -----------------------------------------------------------------------------
       
  1703 TInt CFSEmailUiLayoutHandler::MaxPcsMatches() const
       
  1704     {
       
  1705     FUNC_LOG;
       
  1706     return KMaxPcsMatches;
       
  1707     }
       
  1708 // -----------------------------------------------------------------------------
       
  1709 // CFSEmailUiLayoutHandler::PcsPopupHighlightColor
       
  1710 // -----------------------------------------------------------------------------
       
  1711 TRgb CFSEmailUiLayoutHandler::PcsPopupHighlightColor() const
       
  1712     {
       
  1713     FUNC_LOG;
       
  1714     return KPcsPopupHighlightColor;
       
  1715     }
       
  1716 // -----------------------------------------------------------------------------
       
  1717 // CFSEmailUiLayoutHandler::PcsPopupDimmedFontColor
       
  1718 // -----------------------------------------------------------------------------
       
  1719 TRgb CFSEmailUiLayoutHandler::PcsPopupDimmedFontColor() const
       
  1720     {
       
  1721     FUNC_LOG;
       
  1722     return KPcsPopupDimmedFontColor;
       
  1723     }
       
  1724 // -----------------------------------------------------------------------------
       
  1725 // CFSEmailUiLayoutHandler::ListTextureNodeExpandedSize
       
  1726 // -----------------------------------------------------------------------------
       
  1727 TInt CFSEmailUiLayoutHandler::ListTextureNodeExpandedSize() const
       
  1728     {
       
  1729     FUNC_LOG;
       
  1730     //<cmail>
       
  1731     TRect mainPaneRect;
       
  1732     TAknLayoutRect listItem;
       
  1733     AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect );
       
  1734     listItem.LayoutRect( mainPaneRect, AknLayoutScalable_Apps::list_single_dyc_row_pane_g1( 0 ) );
       
  1735     return listItem.Rect().Height();
       
  1736     //return KListTextureNodeExpandedSize;
       
  1737     //</cmail>
       
  1738     }
       
  1739 
       
  1740 // -----------------------------------------------------------------------------
       
  1741 // CFSEmailUiLayoutHandler::SearchLookingGlassIconSize
       
  1742 // -----------------------------------------------------------------------------
       
  1743 TInt CFSEmailUiLayoutHandler::SearchLookingGlassIconSize() const
       
  1744     {
       
  1745     FUNC_LOG;
       
  1746     return KSearchLookingGlassIconSize;
       
  1747     }
       
  1748 
       
  1749 // -----------------------------------------------------------------------------
       
  1750 // CFSEmailUiLayoutHandler::statusPaneIconSize
       
  1751 // -----------------------------------------------------------------------------
       
  1752 TSize CFSEmailUiLayoutHandler::statusPaneIconSize() const
       
  1753 	{
       
  1754     FUNC_LOG;
       
  1755     TRect titlePaneRect;
       
  1756     AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::ETitlePane, titlePaneRect);
       
  1757     TAknLayoutRect iconRect;
       
  1758     iconRect.LayoutRect(titlePaneRect, AknLayoutScalable_Avkon::title_pane_g2(0));
       
  1759     return iconRect.Rect().Size();
       
  1760 	}
       
  1761 
       
  1762 // -----------------------------------------------------------------------------
       
  1763 // CFSEmailUiLayoutHandler::ListControlBarMailboxDefaultIconSize
       
  1764 // -----------------------------------------------------------------------------
       
  1765 TInt CFSEmailUiLayoutHandler::ListControlBarMailboxDefaultIconSize() const
       
  1766     {
       
  1767     FUNC_LOG;
       
  1768     // <cmail> Platform layout change
       
  1769     //return KListControlBarMailboxDefaultIconSize;
       
  1770     return GetControlBarMailboxIconSize().iWidth;
       
  1771     // </cmail> Platform layout change
       
  1772     }
       
  1773 // -----------------------------------------------------------------------------
       
  1774 // CFSEmailUiLayoutHandler::EMailListBarBgIconSize
       
  1775 // -----------------------------------------------------------------------------
       
  1776 TInt CFSEmailUiLayoutHandler::EMailListBarBgIconSize() const
       
  1777     {
       
  1778     FUNC_LOG;
       
  1779     // <cmail> Platform layout change
       
  1780     return GetControlBarRect().Size().iHeight;
       
  1781     //return KEMailListBarBgIconSize;
       
  1782     // </cmail>
       
  1783     }
       
  1784 // -----------------------------------------------------------------------------
       
  1785 // CFSEmailUiLayoutHandler::ListTextureMailboxDefaultIconSize
       
  1786 // -----------------------------------------------------------------------------
       
  1787 TInt CFSEmailUiLayoutHandler::ListTextureMailboxDefaultIconSize() const
       
  1788     {
       
  1789     FUNC_LOG;
       
  1790     return KListTextureMailboxDefaultIconSize;
       
  1791     }
       
  1792 // -----------------------------------------------------------------------------
       
  1793 // CFSEmailUiLayoutHandler::EListTextureSelectorSize
       
  1794 // -----------------------------------------------------------------------------
       
  1795 TInt CFSEmailUiLayoutHandler::EListTextureSelectorSize() const
       
  1796     {
       
  1797     FUNC_LOG;
       
  1798     // <cmail> Platform layout change
       
  1799     return OneLineListItemHeight();
       
  1800     //return KEListTextureSelectorSize;
       
  1801     // </cmail>
       
  1802     }
       
  1803 // -----------------------------------------------------------------------------
       
  1804 // CFSEmailUiLayoutHandler::ListControlMenuIconSize
       
  1805 // -----------------------------------------------------------------------------
       
  1806 TInt CFSEmailUiLayoutHandler::ListControlMenuIconSize() const
       
  1807     {
       
  1808     FUNC_LOG;
       
  1809     // <cmail> Platform layout change
       
  1810     TRect mainPaneRect;
       
  1811     AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
       
  1812     mainPaneRect.Move(-mainPaneRect.iTl);
       
  1813     TAknLayoutRect controlBarRect;
       
  1814     controlBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane(0));
       
  1815     TAknLayoutRect iconRect;
       
  1816     iconRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_g1(0));
       
  1817     return iconRect.Rect().Height();
       
  1818     //return KListControlMenuIconSize;
       
  1819     // </cmail>
       
  1820     }
       
  1821 // -----------------------------------------------------------------------------
       
  1822 // CFSEmailUiLayoutHandler::AttachmentIconSize
       
  1823 // -----------------------------------------------------------------------------
       
  1824 // <cmail>
       
  1825 TSize CFSEmailUiLayoutHandler::AttachmentIconSize() const
       
  1826     {
       
  1827     FUNC_LOG;
       
  1828     TAknLayoutRect rect;
       
  1829     rect.LayoutRect( TRect(0,0,0,0),
       
  1830                     AknLayoutScalable_Apps::list_single_dyc_row_pane_g1( 0 ).LayoutLine() );
       
  1831     return rect.Rect().Size();
       
  1832     //return KAttachmentIconSize;
       
  1833 // </cmail>    
       
  1834     }
       
  1835 // -----------------------------------------------------------------------------
       
  1836 // CFSEmailUiLayoutHandler::ViewerHighlightTextureSize
       
  1837 // -----------------------------------------------------------------------------
       
  1838 TInt CFSEmailUiLayoutHandler::ViewerHighlightTextureSize() const
       
  1839     {
       
  1840     FUNC_LOG;
       
  1841     return KViewerHighlightTextureSize;
       
  1842     }
       
  1843 // -----------------------------------------------------------------------------
       
  1844 // CFSEmailUiLayoutHandler::ControlBarArrowTextureXSize
       
  1845 // -----------------------------------------------------------------------------
       
  1846 TInt CFSEmailUiLayoutHandler::ControlBarArrowTextureXSize() const
       
  1847     {
       
  1848     FUNC_LOG;
       
  1849     return KControlBarArrowTextureXSize;
       
  1850     }
       
  1851 // -----------------------------------------------------------------------------
       
  1852 // CFSEmailUiLayoutHandler::ControlBarArrowTextureYSize
       
  1853 // -----------------------------------------------------------------------------
       
  1854 TInt CFSEmailUiLayoutHandler::ControlBarArrowTextureYSize() const
       
  1855     {
       
  1856     FUNC_LOG;
       
  1857     return KControlBarArrowTextureYSize;
       
  1858     }
       
  1859 // -----------------------------------------------------------------------------
       
  1860 // CFSEmailUiLayoutHandler::GetSkinColor
       
  1861 // -----------------------------------------------------------------------------
       
  1862 TRgb CFSEmailUiLayoutHandler::GetSkinColor( const TAknsItemID& aId, 
       
  1863         TInt aIndex, const TRgb& aFallbackColor ) const
       
  1864     {
       
  1865     FUNC_LOG;
       
  1866     TRgb color;
       
  1867     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
  1868 
       
  1869     TInt err = AknsUtils::GetCachedColor(
       
  1870         skin,
       
  1871         color,
       
  1872         aId,
       
  1873         aIndex );
       
  1874     if ( err != KErrNone )
       
  1875         {
       
  1876         color = aFallbackColor;
       
  1877         }
       
  1878     
       
  1879     return color;    
       
  1880     }
       
  1881 
       
  1882 // <cmail> Use layout data instead of hardcoded values
       
  1883 
       
  1884 // -----------------------------------------------------------------------------
       
  1885 // CFSEmailUiLayoutHandler::GetControlBarMailboxIconRect
       
  1886 // -----------------------------------------------------------------------------
       
  1887 TRect CFSEmailUiLayoutHandler::GetControlBarMailboxIconRect() const
       
  1888     {
       
  1889     FUNC_LOG;
       
  1890     TRect mainPaneRect;
       
  1891     AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
       
  1892     mainPaneRect.Move(-mainPaneRect.iTl);
       
  1893     TAknLayoutRect controlBarRect;
       
  1894     controlBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane(0));
       
  1895     TAknLayoutRect iconRect;
       
  1896     if ( AknLayoutUtils::LayoutMirrored() )
       
  1897         {
       
  1898         iconRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_g2(0));        
       
  1899         }
       
  1900     else
       
  1901         {
       
  1902         iconRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_g1(0));
       
  1903         }
       
  1904     return iconRect.Rect();
       
  1905     }
       
  1906 
       
  1907 // -----------------------------------------------------------------------------
       
  1908 // CFSEmailUiLayoutHandler::GetControlBarMailboxIconPos
       
  1909 // -----------------------------------------------------------------------------
       
  1910 TPoint CFSEmailUiLayoutHandler::GetControlBarMailboxIconPos() const
       
  1911     {
       
  1912     FUNC_LOG;
       
  1913     return GetControlBarMailboxIconRect().iTl;
       
  1914     }
       
  1915 
       
  1916 // -----------------------------------------------------------------------------
       
  1917 // CFSEmailUiLayoutHandler::GetControlBarMailboxIconSize
       
  1918 // -----------------------------------------------------------------------------
       
  1919 TSize CFSEmailUiLayoutHandler::GetControlBarMailboxIconSize() const
       
  1920     {
       
  1921     FUNC_LOG;
       
  1922     return GetControlBarMailboxIconRect().Size();
       
  1923     }
       
  1924 
       
  1925 // -----------------------------------------------------------------------------
       
  1926 // CFSEmailUiLayoutHandler::GetControlBarFolderListButtonRect
       
  1927 // -----------------------------------------------------------------------------
       
  1928 TRect CFSEmailUiLayoutHandler::GetControlBarFolderListButtonRect() const
       
  1929     {
       
  1930     FUNC_LOG;
       
  1931     TRect mainPaneRect;
       
  1932     AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
       
  1933     mainPaneRect.Move(-mainPaneRect.iTl);
       
  1934     TAknLayoutRect controlBarRect;
       
  1935     controlBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane(0));
       
  1936     TAknLayoutRect folderListButtonRect;
       
  1937     if ( AknLayoutUtils::LayoutMirrored() )
       
  1938         {
       
  1939         folderListButtonRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_button_pane_cp01(0));        
       
  1940         }
       
  1941     else
       
  1942         {
       
  1943         folderListButtonRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_ddmenu_pane(0));
       
  1944         }
       
  1945     return folderListButtonRect.Rect();
       
  1946     }
       
  1947 
       
  1948 // -----------------------------------------------------------------------------
       
  1949 // CFSEmailUiLayoutHandler::GetControlBarFolderListButtonPos
       
  1950 // -----------------------------------------------------------------------------
       
  1951 TPoint CFSEmailUiLayoutHandler::GetControlBarFolderListButtonPos() const
       
  1952     {
       
  1953     FUNC_LOG;
       
  1954     return GetControlBarFolderListButtonRect().iTl;
       
  1955     }
       
  1956 
       
  1957 // -----------------------------------------------------------------------------
       
  1958 // CFSEmailUiLayoutHandler::GetControlBarFolderListButtonSize
       
  1959 // -----------------------------------------------------------------------------
       
  1960 TSize CFSEmailUiLayoutHandler::GetControlBarFolderListButtonSize() const
       
  1961     {
       
  1962     FUNC_LOG;
       
  1963     return GetControlBarFolderListButtonRect().Size();
       
  1964     }
       
  1965 
       
  1966 // -----------------------------------------------------------------------------
       
  1967 // CFSEmailUiLayoutHandler::GetControlBarSortButtonRect
       
  1968 // -----------------------------------------------------------------------------
       
  1969 TRect CFSEmailUiLayoutHandler::GetControlBarSortButtonRect() const
       
  1970     {
       
  1971     FUNC_LOG;
       
  1972     TRect mainPaneRect;
       
  1973     AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
       
  1974     mainPaneRect.Move(-mainPaneRect.iTl);
       
  1975     TAknLayoutRect controlBarRect;
       
  1976     controlBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane(0));
       
  1977     TAknLayoutRect sortButtonRect;
       
  1978     if ( AknLayoutUtils::LayoutMirrored() )
       
  1979         {
       
  1980         sortButtonRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_ddmenu_pane(0));        
       
  1981         }
       
  1982     else
       
  1983         {
       
  1984         sortButtonRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_button_pane_cp01(0));
       
  1985         }    
       
  1986     return sortButtonRect.Rect();
       
  1987     }
       
  1988 
       
  1989 // -----------------------------------------------------------------------------
       
  1990 // CFSEmailUiLayoutHandler::GetControlBarSortButtonPos
       
  1991 // -----------------------------------------------------------------------------
       
  1992 TPoint CFSEmailUiLayoutHandler::GetControlBarSortButtonPos() const
       
  1993     {
       
  1994     FUNC_LOG;
       
  1995     return GetControlBarSortButtonRect().iTl;
       
  1996     }
       
  1997 
       
  1998 // -----------------------------------------------------------------------------
       
  1999 // CFSEmailUiLayoutHandler::GetControlBarSortButtonSize
       
  2000 // -----------------------------------------------------------------------------
       
  2001 TSize CFSEmailUiLayoutHandler::GetControlBarSortButtonSize() const
       
  2002     {
       
  2003     FUNC_LOG;
       
  2004     return GetControlBarSortButtonRect().Size();
       
  2005     }
       
  2006 
       
  2007 // -----------------------------------------------------------------------------
       
  2008 // CFSEmailUiLayoutHandler::GetControlBarConnectionIconRect
       
  2009 // -----------------------------------------------------------------------------
       
  2010 TRect CFSEmailUiLayoutHandler::GetControlBarConnectionIconRect() const
       
  2011     {
       
  2012     FUNC_LOG;
       
  2013     TRect mainPaneRect;
       
  2014     AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
       
  2015     mainPaneRect.Move(-mainPaneRect.iTl);
       
  2016     TAknLayoutRect controlBarRect;
       
  2017     controlBarRect.LayoutRect( mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane(0 ) );
       
  2018     TAknLayoutRect iconRect;
       
  2019     // <cmail>
       
  2020     if ( AknLayoutUtils::LayoutMirrored() )
       
  2021         {        
       
  2022         iconRect.LayoutRect( controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_g1( 0 ) );
       
  2023         }
       
  2024     else
       
  2025         {
       
  2026         iconRect.LayoutRect( controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_g2( 0 ) );
       
  2027         }
       
  2028     // </cmail>
       
  2029     return iconRect.Rect();
       
  2030     }
       
  2031 
       
  2032 // -----------------------------------------------------------------------------
       
  2033 // CFSEmailUiLayoutHandler::GetControlBarConnectionIconPos
       
  2034 // -----------------------------------------------------------------------------
       
  2035 TPoint CFSEmailUiLayoutHandler::GetControlBarConnectionIconPos() const
       
  2036     {
       
  2037     FUNC_LOG;
       
  2038     return GetControlBarConnectionIconRect().iTl;
       
  2039     }
       
  2040 
       
  2041 // -----------------------------------------------------------------------------
       
  2042 // CFSEmailUiLayoutHandler::GetControlBarConnectionIconSize
       
  2043 // -----------------------------------------------------------------------------
       
  2044 TSize CFSEmailUiLayoutHandler::GetControlBarConnectionIconSize() const
       
  2045     {
       
  2046     FUNC_LOG;
       
  2047     return GetControlBarConnectionIconRect().Size();
       
  2048     }
       
  2049 
       
  2050 // -----------------------------------------------------------------------------
       
  2051 // CFSEmailUiLayoutHandler::GetControlBarRect
       
  2052 // -----------------------------------------------------------------------------
       
  2053 TRect CFSEmailUiLayoutHandler::GetControlBarRect() const
       
  2054     {
       
  2055     FUNC_LOG;
       
  2056     //TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0; //<cmail>
       
  2057     TRect mainPaneRect;
       
  2058     AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
       
  2059     mainPaneRect.Move(-mainPaneRect.iTl);
       
  2060     TAknLayoutRect controlBarRect;
       
  2061     controlBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane(0)); //<cmail>
       
  2062     return controlBarRect.Rect();
       
  2063     }
       
  2064 
       
  2065 // -----------------------------------------------------------------------------
       
  2066 // CFSEmailUiLayoutHandler::GetControlBarRect
       
  2067 // -----------------------------------------------------------------------------
       
  2068 TRect CFSEmailUiLayoutHandler::GetListRect() const
       
  2069     {
       
  2070     FUNC_LOG;
       
  2071     TRect mainPaneRect;
       
  2072     AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
       
  2073     mainPaneRect.Move(-mainPaneRect.iTl);
       
  2074     TAknLayoutRect listRect;
       
  2075     listRect.LayoutRect( mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_listscroll_pane_te_cp01( 0 ) );
       
  2076     return listRect.Rect();
       
  2077     }
       
  2078 
       
  2079 // -----------------------------------------------------------------------------
       
  2080 // CFSEmailUiLayoutHandler::GetSearchListHeaderTextLayout
       
  2081 // -----------------------------------------------------------------------------
       
  2082 TAknLayoutText CFSEmailUiLayoutHandler::GetSearchListHeaderTextLayout() const
       
  2083     {
       
  2084     FUNC_LOG;
       
  2085     //TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
       
  2086     TRect mainPaneRect;
       
  2087     AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
       
  2088     mainPaneRect.Move(-mainPaneRect.iTl);
       
  2089     TAknLayoutRect headerRect;
       
  2090     headerRect.LayoutRect(mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane());
       
  2091     TAknLayoutText textLayout;
       
  2092     textLayout.LayoutText(headerRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_t1());
       
  2093     return textLayout;
       
  2094     }
       
  2095 
       
  2096 // -----------------------------------------------------------------------------
       
  2097 // CFSEmailUiLayoutHandler::FSTextStyleFromLayoutL
       
  2098 // -----------------------------------------------------------------------------
       
  2099 CAlfTextStyle& CFSEmailUiLayoutHandler::FSTextStyleFromLayoutL( const TAknTextComponentLayout& aLayout  )
       
  2100     {
       
  2101     FUNC_LOG;
       
  2102     CAlfTextStyle** findResult = iTextStyleMap.Find( aLayout );
       
  2103     CAlfTextStyle* style = NULL;
       
  2104     if( !findResult )
       
  2105         {
       
  2106         TInt fontStyle(0);
       
  2107         fontStyle = CAlfStatic::Env().TextStyleManager().CreatePlatformTextStyleL( aLayout.Font(), EAlfTextStyleNormal );
       
  2108         style = CAlfStatic::Env().TextStyleManager().TextStyle( fontStyle );
       
  2109         TInt insertError( iTextStyleMap.Insert( aLayout, style ) );
       
  2110         if( insertError )
       
  2111             {
       
  2112             CAlfStatic::Env().TextStyleManager().DeleteTextStyle( style->Id() );
       
  2113             User::Leave( insertError );
       
  2114             }
       
  2115         TAknLayoutText textLayout;
       
  2116         textLayout.LayoutText(TRect(0,0,0,0), aLayout);
       
  2117         style->SetBold(textLayout.Font()->FontSpecInTwips().iFontStyle.StrokeWeight());
       
  2118         style->SetItalic(textLayout.Font()->FontSpecInTwips().iFontStyle.Posture());
       
  2119         }
       
  2120     else
       
  2121         {
       
  2122         style = *findResult;
       
  2123         }
       
  2124     return *style;
       
  2125     }
       
  2126 
       
  2127 // -----------------------------------------------------------------------------
       
  2128 // CFSEmailUiLayoutHandler::DeleteTextStyles
       
  2129 // -----------------------------------------------------------------------------
       
  2130 void CFSEmailUiLayoutHandler::DeleteTextStyles()
       
  2131     {
       
  2132     FUNC_LOG;
       
  2133     THashMapIter< TAknTextComponentLayout, CAlfTextStyle* >
       
  2134         mapIterator( iTextStyleMap );
       
  2135     CAlfTextStyle** value = mapIterator.CurrentValue();
       
  2136     while( value )
       
  2137         {
       
  2138         CAlfStatic::Env().TextStyleManager().DeleteTextStyle( ( *value )->Id() );
       
  2139         mapIterator.RemoveCurrent();
       
  2140         mapIterator.NextValue();
       
  2141         value = mapIterator.CurrentValue();
       
  2142         }
       
  2143     iTextStyleMap.Close();
       
  2144     }
       
  2145 
       
  2146 // -----------------------------------------------------------------------------
       
  2147 // CFSEmailUiLayoutHandler::ListCmailPaneRect
       
  2148 // -----------------------------------------------------------------------------
       
  2149 TRect CFSEmailUiLayoutHandler::ListCmailPaneRect() const
       
  2150     {
       
  2151     FUNC_LOG; 
       
  2152     
       
  2153     TRect mainPaneRect;
       
  2154     AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect );
       
  2155     TAknLayoutRect layoutRect;
       
  2156     layoutRect.LayoutRect( mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_email_pane() );
       
  2157     layoutRect.LayoutRect( layoutRect.Rect(), AknLayoutScalable_Apps::listscroll_cmail_pane() );
       
  2158     layoutRect.LayoutRect( layoutRect.Rect(), AknLayoutScalable_Apps::list_cmail_pane() );
       
  2159     return layoutRect.Rect();
       
  2160     }
       
  2161 
       
  2162 // </cmail> Platform layout change
       
  2163 
       
  2164 // <cmail> new methods
       
  2165 
       
  2166 // -----------------------------------------------------------------------------
       
  2167 // CFSEmailUiLayoutHandler::TitleCaptionPadding
       
  2168 // 
       
  2169 // Returns padding value for title caption visual
       
  2170 // -----------------------------------------------------------------------------
       
  2171 TInt CFSEmailUiLayoutHandler::TitleCaptionPadding() const
       
  2172     {   
       
  2173     TRect mainPaneRect;
       
  2174     AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect );
       
  2175     
       
  2176     TAknLayoutRect ctrlBarPane;
       
  2177     ctrlBarPane.LayoutRect( mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane( 0 ) );
       
  2178     const TRect ctrlBarPaneRect( ctrlBarPane.Rect() );
       
  2179     
       
  2180     TAknLayoutText ctrlBarPaneT1;
       
  2181     ctrlBarPaneT1.LayoutText( ctrlBarPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_t1( 0 ) );
       
  2182     const TRect ctrlBarPaneT1Rect( ctrlBarPaneT1.TextRect() );
       
  2183     
       
  2184     return Abs( ctrlBarPaneRect.iTl.iY - ctrlBarPaneT1Rect.iTl.iY );
       
  2185     }
       
  2186 
       
  2187 // -----------------------------------------------------------------------------
       
  2188 // CFSEmailUiLayoutHandler::SeparatorGraphicSizeInThisResolution
       
  2189 // -----------------------------------------------------------------------------
       
  2190 //
       
  2191 TSize CFSEmailUiLayoutHandler::SeparatorGraphicSizeInThisResolution() const
       
  2192     {   
       
  2193     FUNC_LOG;
       
  2194     
       
  2195     TRect mainPaneRect;
       
  2196     AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);    
       
  2197     
       
  2198     TAknLayoutRect listRect;
       
  2199     listRect.LayoutRect(mainPaneRect, AknLayoutScalable_Apps::list_cmail_pane());         
       
  2200 
       
  2201     TAknLayoutRect bodyRect;  
       
  2202     bodyRect.LayoutRect(listRect.Rect(), AknLayoutScalable_Apps::list_cmail_body_pane());   
       
  2203     
       
  2204     TAknLayoutRect itemRect;  
       
  2205     itemRect.LayoutRect(bodyRect.Rect(), AknLayoutScalable_Apps::list_cmail_body_pane_g1());       
       
  2206     
       
  2207     return itemRect.Rect().Size();      
       
  2208     }
       
  2209 
       
  2210 // -----------------------------------------------------------------------------
       
  2211 // CFSEmailUiLayoutHandler::SeparatorLineColor
       
  2212 // -----------------------------------------------------------------------------
       
  2213 //
       
  2214 TRgb CFSEmailUiLayoutHandler::SeparatorLineColor() const
       
  2215     {
       
  2216     FUNC_LOG;    
       
  2217     return ViewerNormalHotspotTextColor();
       
  2218     }
       
  2219 
       
  2220 // -----------------------------------------------------------------------------
       
  2221 // CFSEmailUiLayoutHandler::DropDownMenuListPadding
       
  2222 // -----------------------------------------------------------------------------
       
  2223 //
       
  2224 TInt CFSEmailUiLayoutHandler::DropDownMenuListPadding() const
       
  2225     {   
       
  2226     FUNC_LOG;   
       
  2227     // main pane
       
  2228     TRect mainPaneRect;
       
  2229     AknLayoutUtils::LayoutMetricsRect( 
       
  2230             AknLayoutUtils::EMainPane, mainPaneRect );
       
  2231     
       
  2232     // menu pane
       
  2233     TAknLayoutRect menuPane;
       
  2234     menuPane.LayoutRect( mainPaneRect, 
       
  2235             AknLayoutScalable_Apps::popup_sp_fs_action_menu_pane( 2 ) );
       
  2236     const TRect menuPaneRect( menuPane.Rect() );
       
  2237     
       
  2238     // Menu gene pane
       
  2239     TAknLayoutRect menuListPane;
       
  2240     menuListPane.LayoutRect( menuPaneRect, 
       
  2241             AknLayoutScalable_Apps::sp_fs_action_menu_list_pane( 0 ) );
       
  2242     const TRect menuListPaneRect( menuListPane.Rect() );
       
  2243            
       
  2244     return Abs( menuListPaneRect.iTl.iY - menuPaneRect.iTl.iY );
       
  2245     }
       
  2246 
       
  2247 // </cmail> 
       
  2248 
       
  2249 // End of file
       
  2250