diff -r 000000000000 -r 8466d47a6819 emailuis/emailui/src/FreestyleEmailUiLayoutHandler.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/emailuis/emailui/src/FreestyleEmailUiLayoutHandler.cpp Thu Dec 17 08:39:21 2009 +0200 @@ -0,0 +1,2250 @@ +/* +* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: FreestyleEmailUi layout data handler implementation +* +*/ + + +// SYSTEM INCLUDE FILES +#include "emailtrace.h" +//#include +// SF +#include +#include +#include +#include + +// Platform layout change +#include +#include +#include +// + +// For generic treelist layout data setting +// +#include "fstreelist.h" +// + +// INTERNAL INCLUDE FILES +#include "FreestyleEmailUiLayoutHandler.h" +#include "FreestyleEmailUiLayoutData.h" + +// Platform layout change +template< typename T > +TUint32 GeneralHash( const T& aValue ) + { + return DefaultHash::Des8( TPckgC< T >( aValue ) ); + } + +template< typename T > +TBool GeneralPtrIdentity( const T& aP1, const T& aP2 ) + { + return TPckgC< T >( aP1 ) == TPckgC< T >( aP2 ); + } +// Platform layout change + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::CFSEmailUiLayoutHandler +// Base construction. May not leave. +// ----------------------------------------------------------------------------- +// +CFSEmailUiLayoutHandler::CFSEmailUiLayoutHandler( CAlfEnv& aEnv ) + : iEnv(aEnv), + iScreenResolution( EQvgaPortrait ), + iTextStyleMap( THashFunction32< TAknTextComponentLayout >( GeneralHash ), + TIdentityRelation< TAknTextComponentLayout >( GeneralPtrIdentity< TAknTextComponentLayout > ) ), + // + iNormalTextStyle( KErrNotFound ), + iLargeTextStyle( KErrNotFound ), + iSmallTextStyle( KErrNotFound ) + // + { + FUNC_LOG; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::NewL +// First phase construction function. +// ----------------------------------------------------------------------------- +// +CFSEmailUiLayoutHandler* CFSEmailUiLayoutHandler::NewL( CAlfEnv& aEnv ) + { + FUNC_LOG; + CFSEmailUiLayoutHandler* self = new ( ELeave ) CFSEmailUiLayoutHandler( aEnv ); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ConstructL +// Symbian second phase construction. May leave. +// ----------------------------------------------------------------------------- +// +void CFSEmailUiLayoutHandler::ConstructL() + { + FUNC_LOG; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::~CFSEmailUiLayoutHandler +// D'tor +// ----------------------------------------------------------------------------- +// +CFSEmailUiLayoutHandler::~CFSEmailUiLayoutHandler() + { + FUNC_LOG; +// Platform layout change + DeleteTextStyles(); +// Platform layout change + // + if ( iNormalTextStyle != KErrNotFound ) + { + CAlfStatic::Env().TextStyleManager().DeleteTextStyle( + iNormalTextStyle ); + } + if( iLargeTextStyle != KErrNotFound ) + { + CAlfStatic::Env().TextStyleManager().DeleteTextStyle( + iLargeTextStyle ); + } + if( iSmallTextStyle != KErrNotFound ) + { + CAlfStatic::Env().TextStyleManager().DeleteTextStyle( + iSmallTextStyle ); + } + // + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ScreenResolution +// Function can be used to fetch currently active screen resolution +// ----------------------------------------------------------------------------- +// +TScreenResolution CFSEmailUiLayoutHandler::ScreenResolution() const + { + FUNC_LOG; + return iScreenResolution; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ScreenOrientation +// Function can be used to fetch orientation of the current screen resolution +// ----------------------------------------------------------------------------- +// +TScreenOrientation CFSEmailUiLayoutHandler::ScreenOrientation() const + { + FUNC_LOG; + /* + TScreenOrientation orientation = EPortrait; + switch ( iScreenResolution ) + { + case ELowResLandscape: + case EQvgaLandscape: + case EDrLandscape: + case EVgaLandscape: + case EHvgaLandscape: + case EWideLandscape: + orientation = ELandscape; + break; + case ELowResPortrait: + case EQvgaPortrait: + case EDrPortrait: + case EVgaPortrait: + case EHvgaPortrait: + default: + orientation = EPortrait; + break; + } + + return orientation;*/ + return Layout_Meta_Data::IsLandscapeOrientation() ? ELandscape : EPortrait; + } + +// ----------------------------------------------------------------------------- +// CTeamUiAppLayoutHandler::ScreenResolutionChanged +// Function can be used to update internal resolution value. Typically called +// by UI in startup and when dynamic layout variant switch has occured +// ----------------------------------------------------------------------------- +// +void CFSEmailUiLayoutHandler::ScreenResolutionChanged() + { + FUNC_LOG; + TRect screenRect; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EScreen, screenRect ); + switch ( screenRect.Width() ) + { + case KLowResPortraitWidth: + iScreenResolution = ELowResPortrait; + break; + case KLowResLandscapeWidth: + iScreenResolution = ELowResLandscape; + break; + case KQvgaPortraitWidth: + iScreenResolution = EQvgaPortrait; + break; + case KQvgaLandscapeWidth: // Also KHvgaPortraitWidth + { + if ( screenRect.Height() == KQvgaLandscapeHeight ) + { + iScreenResolution = EQvgaLandscape; + } + else + { + iScreenResolution = EHvgaPortrait; + } + } + break; + case KDrPortraitWidth: + iScreenResolution = EDrPortrait; + break; + case KDrLandscapeWidth: + iScreenResolution = EDrLandscape; + break; + case KVgaPortraitWidth: // Also KHvgaLandscapeWidth + { + if ( screenRect.Height() == KHvgaLandscapeHeight ) + { + iScreenResolution = EHvgaLandscape; + } + else + { + iScreenResolution = EVgaPortrait; + } + } + break; + case KVgaLandscapeWidth: + iScreenResolution = EVgaLandscape; + break; + case KWideLandscapeWidth: + iScreenResolution = EWideLandscape; + break; + default: + break; + } + } + + +TInt CFSEmailUiLayoutHandler::GridRowsInThisResolution() const + { + FUNC_LOG; + TInt rowCount(0); + switch ( iScreenResolution ) + { + case ELowResPortrait: + case EQvgaPortrait: + case EVgaPortrait: + case EHvgaPortrait: + case EDrPortrait: + + case ELowResLandscape: + case EQvgaLandscape: + case EVgaLandscape: + case EHvgaLandscape: + case EDrLandscape: + rowCount = 3; + break; + + case EWideLandscape: + rowCount = 2; + break; + + default: + rowCount = 3; + break; + } + return rowCount; + } + + +TInt CFSEmailUiLayoutHandler::GridColumnsInThisResolution() const + { + FUNC_LOG; + TInt columnCount(0); + switch ( iScreenResolution ) + { + case ELowResPortrait: + case EQvgaPortrait: + case EVgaPortrait: + case EHvgaPortrait: + case EDrPortrait: + columnCount = 3; + break; + + case ELowResLandscape: + case EQvgaLandscape: + case EVgaLandscape: + case EHvgaLandscape: + case EDrLandscape: + columnCount = 4; + break; + + case EWideLandscape: + columnCount = 5; + break; + + default: + columnCount = 3; + break; + } + return columnCount; + } + + +// Grid normal state text color, same as focused +TRgb CFSEmailUiLayoutHandler::GridNormalStateTextSkinColor() const + { + FUNC_LOG; + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TRgb textColor; + // Should use EAknsCIFsTextColorsCG3 if background is white + if ( AknsUtils::GetCachedColor( skin, textColor, + KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ) != KErrNone ) + { + textColor = KRgbBlack; + } + /* + // Should use EAknsCIFsTextColorsCG3 if background is white + if ( AknsUtils::GetCachedColor( skin, textColor, + KAknsIIDFsTextColors, EAknsCIFsTextColorsCG3 ) != KErrNone ) + { + textColor = KRgbBlack; + } +*/ + return textColor; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::GridIconSize +// +// ----------------------------------------------------------------------------- +// +TSize CFSEmailUiLayoutHandler::GridIconSize() const + { + FUNC_LOG; +// Use layout data instead of hard-coded values + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect); + + TAknLayoutRect scrollBarRect; + scrollBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::aid_size_touch_scroll_bar()); + TRect gridRect = mainPaneRect; + gridRect.iBr.iX -= scrollBarRect.Rect().Width(); + + TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0; + TAknLayoutRect itemRect; + itemRect.LayoutRect(gridRect, AknLayoutScalable_Apps::cell_cmail_l_pane(var,0,0)); + + TAknLayoutRect gridIconLRect; + gridIconLRect.LayoutRect( itemRect.Rect(), AknLayoutScalable_Apps::cell_cmail_l_pane_g1( 0 ) ); + TSize iconSize = gridIconLRect.Rect().Size(); + return iconSize; +/* + TInt iconSize(0); + switch ( iScreenResolution ) + { + case EQvgaPortrait: + iconSize = KGridIconSizeInQvgaPort; + break; + case EQvgaLandscape: + iconSize = KGridIconSizeInQvgaLand; + break; + case EVgaPortrait: + iconSize = KGridIconSizeInVgaPort; + break; + case EVgaLandscape: + iconSize = KGridIconSizeInVgaLand; + break; + case EHvgaPortrait: + iconSize = KGridIconSizeInHvgaPort; + break; + case EHvgaLandscape: + iconSize = KGridIconSizeInHvgaLand; + break; + case EWideLandscape: + iconSize = KGridIconSizeInWideLand; + break; + case EDrPortrait: + iconSize = KGridIconSizeInDoubleResPort; + break; + case EDrLandscape: + default: + iconSize = KGridIconSizeInDoubleResLand; + break; + } + return iconSize;*/ +// + } + + +TSize CFSEmailUiLayoutHandler::MailIconSizeInThisResolution() const + { + FUNC_LOG; +// Use layout data instead of hard-coded values + TAknLayoutRect rect; + rect.LayoutRect( TRect( 0, 0, 0, 0 ), + AknLayoutScalable_Apps::list_single_dyc_row_pane_g1( 0 ).LayoutLine() ); + return rect.Rect().Size(); + /*TSize mailListIconSize(0,0); + switch ( iScreenResolution ) + { + case EQvgaPortrait: + mailListIconSize = KMailListIconSizeInQvgaPort; + break; + case EQvgaLandscape: + mailListIconSize = KMailListIconSizeInQvgaLand; + break; + case EVgaPortrait: + mailListIconSize = KMailListIconSizeInVgaPort; + break; + case EVgaLandscape: + mailListIconSize = KMailListIconSizeInVgaLand; + break; + case EHvgaPortrait: + mailListIconSize = KMailListIconSizeInHvgaPort; + break; + case EHvgaLandscape: + mailListIconSize = KMailListIconSizeInHvgaLand; + break; + case EWideLandscape: + mailListIconSize = KMailListIconSizeInWideLand; + break; + case EDrPortrait: + mailListIconSize = KMailListIconSizeInDoubleResPort; + break; + case EDrLandscape: + default: + mailListIconSize = KMailListIconSizeInDoubleResLand; + break; + } + TAknUiZoom zoomLevel(EAknUiZoomNormal); + CAknEnv::Static()->GetCurrentGlobalUiZoom( zoomLevel ); + switch ( zoomLevel ) + { + // Make icon a little bit smaller in small zoom + case EAknUiZoomSmall: + { + mailListIconSize.iHeight-=2; + mailListIconSize.iWidth-=2; + } + break; + case EAknUiZoomLarge: + case EAknUiZoomNormal: + default: + { + } + break; + } + return mailListIconSize;*/ +// Use layout data instead of hard-coded values + } + + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::SetListMarqueeBehaviour +// Function sets FS Email UI default values for marquee behavioutr for treelist object +// ----------------------------------------------------------------------------- +// +void CFSEmailUiLayoutHandler::SetListMarqueeBehaviour( CFsTreeList* aTreeList ) const + { + FUNC_LOG; + if ( aTreeList ) // Safety check + { + aTreeList->SetTextMarqueeType( KListTextMarqueeType ); + aTreeList->SetTextMarqueeSpeed ( KListTextMarqueeSpeed ); + aTreeList->SetTextMarqueeStartDelay ( KListTextMarqueeStartDelay ); + aTreeList->SetTextMarqueeRepetitions ( KListTextMarqueeSpeedRepeats ); + } + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::FolderListIconSizeInThisResolution +// Folder list icon size, calculated based on the item size +// ----------------------------------------------------------------------------- +// +TSize CFSEmailUiLayoutHandler::FolderListIconSize( const TBool aPopup ) const + { + FUNC_LOG; + if ( aPopup ) + { + TAknWindowComponentLayout g1Layout( TAknWindowComponentLayout::Compose( + AknLayoutScalable_Apps::list_single_dyc_row_pane( 0 ), + AknLayoutScalable_Apps::list_single_dyc_row_pane_g1( 0 ) ) ); + TAknLayoutRect paneG1; + paneG1.LayoutRect( DropDownMenuListRect( ELeft ), g1Layout.LayoutLine() ); + return paneG1.Rect().Size(); + } + else + { + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect); + + TAknLayoutRect scrollBarRect; + scrollBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::scroll_pane()); + TRect gridRect = mainPaneRect; + gridRect.iBr.iX -= scrollBarRect.Rect().Width(); + + TAknLayoutRect itemRect; + itemRect.LayoutRect( gridRect, AknLayoutScalable_Avkon::list_single_large_graphic_pane_g1( 0 ).LayoutLine() ); + + return itemRect.Rect().Size(); + } + } + +// +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::FolderListPaneRectInThisResolution +// Folder list pane rect, taken from Avkon layouts +// ----------------------------------------------------------------------------- +// +TRect CFSEmailUiLayoutHandler::FolderListPaneRectInThisResolution( const TRect& aParent) const + { + FUNC_LOG; + TAknLayoutRect itemRect; + itemRect.LayoutRect(aParent, AknLayoutScalable_Avkon::listscroll_gen_pane(0,0,0)); + return itemRect.Rect(); + } +// + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::FolderListIndentation +// Folder list pane indentation in pixels, taken from Avkon layouts +// ----------------------------------------------------------------------------- +// +TInt CFSEmailUiLayoutHandler::FolderListIndentation( const TRect& aParent ) const + { + FUNC_LOG; + TAknLayoutRect layoutRect; + layoutRect.LayoutRect( aParent, + AknLayoutScalable_Avkon::aid_indentation_list_msg().LayoutLine() ); + return layoutRect.Rect().Width(); + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::FolderListItemSizeInThisResolution +// Folder list item size, taken from Avkon layouts +// ----------------------------------------------------------------------------- +// +TSize CFSEmailUiLayoutHandler::FolderListItemSizeInThisResolution( const TRect& aParent ) const + { + FUNC_LOG; + TAknLayoutRect itemRect; + itemRect.LayoutRect( aParent, // Only zero variety with this one + AknLayoutScalable_Avkon::list_single_large_graphic_pane( 0, 0 ,0 ) ); + + return itemRect.Rect().Size(); + } + +// +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::DropDownMenuListRect +// Selector ring image visual size +// ----------------------------------------------------------------------------- +// +TRect CFSEmailUiLayoutHandler::DropDownMenuListRect( + const TDropDownMenuSide aSide ) const + { + FUNC_LOG; + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, + mainPaneRect ); + mainPaneRect.Move( 0, -mainPaneRect.iTl.iY ); + TInt variety( aSide == ELeft ? 0 : 1 ); + if ( Layout_Meta_Data::IsLandscapeOrientation() ) + { + // landscape orientation variety is portrait + 2 + variety += 2; + } + + TAknWindowComponentLayout ddMenuPane( + TAknWindowComponentLayout::Compose( + AknLayoutScalable_Apps::main_sp_fs_email_pane(), + AknLayoutScalable_Apps::popup_sp_fs_action_menu_pane_cp01( variety ) + ) ); + + TAknLayoutRect menuPane; + menuPane.LayoutRect( mainPaneRect, ddMenuPane.LayoutLine() ); + return menuPane.Rect(); + + } +// + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::SelectorVisualSizeInThisResolution +// Selector ring image visual size +// ----------------------------------------------------------------------------- +// +TSize CFSEmailUiLayoutHandler::SelectorVisualSizeInThisResolution() const + { + FUNC_LOG; + TSize selectorVisualSize(0,0); + switch ( iScreenResolution ) + { + case EQvgaPortrait: + selectorVisualSize = KSelectorVisualSizeInQvgaPort; + break; + case EQvgaLandscape: + selectorVisualSize = KSelectorVisualSizeInQvgaLand; + break; + case EVgaPortrait: + selectorVisualSize = KSelectorVisualSizeInVgaPort; + break; + case EVgaLandscape: + selectorVisualSize = KSelectorVisualSizeInVgaLand; + break; + case EHvgaPortrait: + selectorVisualSize = KSelectorVisualSizeInHvgaPort; + break; + case EHvgaLandscape: + selectorVisualSize = KSelectorVisualSizeInHvgaLand; + break; + case EWideLandscape: + selectorVisualSize = KSelectorVisualSizeInWideLand; + break; + case EDrPortrait: + selectorVisualSize = KSelectorVisualSizeInDoubleResPort; + break; + case EDrLandscape: + default: + selectorVisualSize = KSelectorVisualSizeInDoubleResLand; + break; + } + return selectorVisualSize; + } + + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::OneLineListNodeHeight +// List node item height +// ----------------------------------------------------------------------------- +// +TInt CFSEmailUiLayoutHandler::OneLineListNodeHeight() const + { + FUNC_LOG; + // + TRect mainPaneRect; + TAknLayoutRect listItem; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect ); + listItem.LayoutRect( mainPaneRect, AknLayoutScalable_Apps::list_single_dyc_row_pane( 0 ) ); + return listItem.Rect().Height(); + // + } + + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::OneLineListItemHeight +// List item height +// ----------------------------------------------------------------------------- +// +TInt CFSEmailUiLayoutHandler::OneLineListItemHeight() const + { + FUNC_LOG; + // + TRect mainPaneRect; + TAknLayoutRect listItem; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect ); + listItem.LayoutRect( mainPaneRect, AknLayoutScalable_Apps::list_single_dyc_row_pane( 0 ) ); + return listItem.Rect().Height(); + // + } + +// +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::FolderListOneLineItemHeight +// List item height for folder list +// ----------------------------------------------------------------------------- +// +TInt CFSEmailUiLayoutHandler::FolderListOneLineItemHeight( + const TBool& aFullscreen ) const + { + FUNC_LOG; + if ( aFullscreen ) + { + return OneLineListItemHeight(); + } +/* else + { + const TRect ddMenuRect( DropDownMenuListRect( ELeft ) ); + TAknLayoutRect ddMenuPane; + bg_sp_fs_ctrlbar_ddmenu_pane + return 0; + }*/ + return 0; + } +// + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ControlBarHeight +// Control bar height +// ----------------------------------------------------------------------------- +// +TInt CFSEmailUiLayoutHandler::ControlBarHeight() const + { + FUNC_LOG; + // + TRect mainPaneRect; + TAknLayoutRect ctrlBarRect; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect ); + ctrlBarRect.LayoutRect( mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane( 0 ) ); + return ctrlBarRect.Rect().Height(); + // + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ControlBarHeight +// Control bar text height in twips +// ----------------------------------------------------------------------------- +// +/* +TInt CFSEmailUiLayoutHandler::ControlBarTextHeight() const + { + TRect mainPaneRect; + TAknLayoutText ctrlBarText; + TInt orientation( Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0 ); + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect ); + ctrlBarText.LayoutText( mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_t1( orientation ) ); + return ctrlBarText.Font()->FontSpecInTwips().iHeight; + } +*/ +// Platform layout change + +// changes to avoid unnecessary creating new text styles objects. +CAlfTextStyle* CFSEmailUiLayoutHandler::FSTextStyleFromIdL( TFSEmailFont aFontId ) + { + FUNC_LOG; + CAlfTextStyle* style = NULL; + + switch ( aFontId ) + { + case EFSFontTypeNormal: + case EFSFontTypeNormalBold: + case EFSFontTypeNormalItalic: + if ( iNormalTextStyle == KErrNotFound ) + { + iNormalTextStyle = CAlfStatic::Env().TextStyleManager(). + CreatePlatformTextStyleL( + EAknLogicalFontPrimaryFont, + EAlfTextStyleNormal ); + } + style = CAlfStatic::Env().TextStyleManager().TextStyle( + iNormalTextStyle ); + break; + case EFSFontTypeLarge: + case EFSFontTypeLargeBold: + case EFSFontTypeLargeItalic: + if ( iLargeTextStyle == KErrNotFound ) + { + iLargeTextStyle = CAlfStatic::Env().TextStyleManager(). + CreatePlatformTextStyleL( + EAknLogicalFontTitleFont, + EAlfTextStyleNormal ); + } + style = CAlfStatic::Env().TextStyleManager().TextStyle( + iLargeTextStyle ); + break; + case EFSFontTypeSmallItalic: + case EFSFontTypeSmallBold: + case EFSFontTypeSmall: + default: + if ( iSmallTextStyle == KErrNotFound ) + { + iSmallTextStyle = CAlfStatic::Env().TextStyleManager(). + CreatePlatformTextStyleL( + EAknLogicalFontSecondaryFont, + EAlfTextStyleNormal ); + } + style = CAlfStatic::Env().TextStyleManager().TextStyle( + iSmallTextStyle ); + break; + } + + switch ( aFontId ) + { + case EFSFontTypeSmallBold: + style->SetBold( EStrokeWeightBold ); + break; + case EFSFontTypeSmallItalic: + style->SetBold( EStrokeWeightNormal ); + style->SetItalic( EPostureItalic ); + break; + case EFSFontTypeNormal: + style->SetBold( EStrokeWeightNormal ); + break; + case EFSFontTypeNormalBold: + style->SetBold( EStrokeWeightBold ); + break; + case EFSFontTypeNormalItalic: + style->SetBold( EStrokeWeightNormal ); + style->SetItalic( EPostureItalic ); + break; + case EFSFontTypeLarge: + style->SetBold( EStrokeWeightNormal ); + break; + case EFSFontTypeLargeBold: + style->SetBold( EStrokeWeightBold ); + break; + case EFSFontTypeLargeItalic: + style->SetBold( EStrokeWeightNormal ); + style->SetItalic( EPostureItalic ); + break; + case EFSFontTypeSmall: + default: + { + style->SetBold( EStrokeWeightNormal ); + } + break; + } + + return style; + } +// + +TPoint CFSEmailUiLayoutHandler::ControlBarListPadding() const + { + FUNC_LOG; + return KControlBarListPadding; + } + +TInt CFSEmailUiLayoutHandler::ControlBarListBorderRoundingSize() const + { + FUNC_LOG; + return KControlBarListBorderRoundingSize; + } + +TInt CFSEmailUiLayoutHandler::ControlBarButtonBgRoundingSize() const + { + FUNC_LOG; + return KControlBarbuttonBorderRoundingSize; + } + +TInt CFSEmailUiLayoutHandler::ListFadeInEffectTime() const + { + FUNC_LOG; + return KListFadeInEffectTime; + } + +TInt CFSEmailUiLayoutHandler::ListFadeOutEffectTime() const + { + FUNC_LOG; + return KListFadeOutEffectTime; + } + +TInt CFSEmailUiLayoutHandler::StatusIndicatorFadeEffectTime() const + { + FUNC_LOG; + return KStatusIndicatorFadeEffectTime; + } + +TInt CFSEmailUiLayoutHandler::CtrlBarListFadeEffectTime() const + { + FUNC_LOG; + return KCtrlBarListFadeEffectTime; + } + +TBool CFSEmailUiLayoutHandler::ViewSlideEffectActive() const + { + FUNC_LOG; + return KListSlideEffectActive; + } + +TBool CFSEmailUiLayoutHandler::ViewFadeEffectActive() const + { + FUNC_LOG; + return KListFadeEffectActive; + } + +TInt CFSEmailUiLayoutHandler::ViewSlideEffectTime() const + { + FUNC_LOG; + return KListSlideEffectTime; + } + +TInt CFSEmailUiLayoutHandler::ViewFadeInEffectTime() const + { + FUNC_LOG; + return KListFadeInEffectTime; + } + +TInt CFSEmailUiLayoutHandler::ViewFadeOutEffectTime() const + { + FUNC_LOG; + return KListFadeOutEffectTime; + } + +TInt CFSEmailUiLayoutHandler::ListScrollingTime() const + { + FUNC_LOG; + return KListScrollingTime; + } + +TInt CFSEmailUiLayoutHandler::ListItemExpansionDelay() const + { + FUNC_LOG; + return KListItemExpansionDelay; + } + +TInt CFSEmailUiLayoutHandler::ViewHidingDelay() const + { + FUNC_LOG; + return KViewChangeDelay; + } + +TRgb CFSEmailUiLayoutHandler::ListFocusedStateTextSkinColor() const + { + FUNC_LOG; + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TRgb textColor; + // Skin support + if( AknsUtils::GetCachedColor( skin, textColor, + KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG10 ) != KErrNone ) + { + textColor = KRgbBlack; + } + // + return textColor; + } + +TRgb CFSEmailUiLayoutHandler::ListNormalStateTextSkinColor() const + { + FUNC_LOG; + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TRgb textColor; + // S60 Skin support + if ( AknsUtils::GetCachedColor( skin, textColor, + KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ) != KErrNone ) + { + textColor = KRgbBlack; + } + // + return textColor; + } + +TRgb CFSEmailUiLayoutHandler::ListNodeBackgroundColor() const + { + FUNC_LOG; +// skin support + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TRgb nodeBgColor; + if ( AknsUtils::GetCachedColor( skin, nodeBgColor, + KAknsIIDFsOtherColors, EAknsCIFsOtherColorsCG19 ) != KErrNone ) + { + nodeBgColor = KRgbDarkGray; + } +// + return nodeBgColor; + } + +TRgb CFSEmailUiLayoutHandler::ListNodeTextColor() const + { + FUNC_LOG; + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + // S60 Skin support + TRgb nodeTextColor; + if ( AknsUtils::GetCachedColor( skin, nodeTextColor, + KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ) != KErrNone ) + { + nodeTextColor = KRgbWhite; + } + // + return nodeTextColor; + } + +TRgb CFSEmailUiLayoutHandler::ListHeaderBackgroundColor() const + { + FUNC_LOG; + // The header item bg color is gained by mixing 50/50 node bg color + // and list item bg color. + // + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TRgb listItemBgColor; + if ( AknsUtils::GetCachedColor( skin, listItemBgColor, + KAknsIIDQsnLineColors, EAknsCIFsTextColorsCG3 ) != KErrNone ) + //KAknsIIDQsnLineColors, EAknsCIFsTextColorsCG5 ) != KErrNone ) + { + listItemBgColor = KRgbWhite; + } + // + TRgb nodeItemBgColor = ListNodeBackgroundColor(); + TRgb headerBgColor; + headerBgColor.SetRed( (listItemBgColor.Red()+nodeItemBgColor.Red()) / 2 ); + headerBgColor.SetGreen( (listItemBgColor.Green()+nodeItemBgColor.Green()) / 2 ); + headerBgColor.SetBlue( (listItemBgColor.Blue()+nodeItemBgColor.Blue()) / 2 ); + return headerBgColor; + } + +TInt CFSEmailUiLayoutHandler::ListTextStyle() const + { + FUNC_LOG; + TInt listTextStyle( EAlfTextStyleSmall ); + TAknUiZoom zoomLevel(EAknUiZoomNormal); + CAknEnv::Static()->GetCurrentGlobalUiZoom( zoomLevel ); + switch ( zoomLevel ) + { + case EAknUiZoomSmall: + { + listTextStyle = EAlfTextStyleSmall; + } + break; + case EAknUiZoomLarge: + { + listTextStyle = EAlfTextStyleLarge; + } + break; + case EAknUiZoomNormal: + default: + { + listTextStyle = EAlfTextStyleNormal; + } + break; + } + return listTextStyle; + } + +TRgb CFSEmailUiLayoutHandler::DropdownMenuTextColor() const + { + FUNC_LOG; + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TRgb textColor; + + // S60 Skin support + if ( AknsUtils::GetCachedColor( skin, textColor, + KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ) != KErrNone ) + { + textColor = KRgbBlack; + } + // + + return textColor; + } + + +TInt CFSEmailUiLayoutHandler::ViewerFontHeightInTwips() const + { + FUNC_LOG; + TAknUiZoom zoomLevel(EAknUiZoomNormal); + CAknEnv::Static()->GetCurrentGlobalUiZoom( zoomLevel ); + TInt heightInTwips(0); + switch ( zoomLevel ) + { + case EAknUiZoomSmall: + { + heightInTwips = 130; + } + break; + case EAknUiZoomLarge: + { + heightInTwips = 190; + } + break; + case EAknUiZoomNormal: + default: + { + heightInTwips = 160; + } + break; + } + return heightInTwips; + } + +TInt CFSEmailUiLayoutHandler::ListItemFontHeightInTwips( const TBool aPopup ) const + { + FUNC_LOG; + if ( aPopup ) + { + TRect mainPaneRect; + TAknLayoutText itemText; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect ); + itemText.LayoutText( mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_ddmenu_pane_t1( 0 ) ); + return itemText.Font()->FontSpecInTwips().iHeight; + } + else + { + TRect mainPaneRect; + TAknLayoutText itemText; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect ); + itemText.LayoutText( mainPaneRect, AknLayoutScalable_Apps::list_single_dyc_row_text_pane_t1( 0 ) ); + return itemText.Font()->FontSpecInTwips().iHeight; + } + } + + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerTitleFontAknLogicalFontId +// ----------------------------------------------------------------------------- +TAknLogicalFontId CFSEmailUiLayoutHandler::ViewerTitleFontAknLogicalFontId() const + { + FUNC_LOG; + return KViewerLogicalTitleFontId; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerTextFontAknLogicalFontId +// ----------------------------------------------------------------------------- +TAknLogicalFontId CFSEmailUiLayoutHandler::ViewerTextFontAknLogicalFontId() const + { + FUNC_LOG; + return KViewerLogicalTextFontId; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerTitleFontHeight +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::ViewerTitleFontHeight() const + { + FUNC_LOG; + // Platform layout changes + /* + TAknUiZoom zoomLevel; + CAknEnv::Static()->GetCurrentGlobalUiZoom( zoomLevel ); + TInt heightInPixels = 0; + switch ( zoomLevel ) + { + case EAknUiZoomSmall: + { + heightInPixels = KViewerTitleFontSizeSmall; + } + break; + case EAknUiZoomLarge: + { + heightInPixels = KViewerTitleFontSizeLarge; + } + break; + case EAknUiZoomNormal: + default: + { + heightInPixels = KViewerTitleFontSizeNormal; + } + break; + } + return heightInPixels; + */ + TAknLayoutRect labelRect; + labelRect.LayoutRect( ListCmailPaneRect(), AknLayoutScalable_Apps::list_single_cmail_header_caption_pane() ); + TAknLayoutText layoutText; + layoutText.LayoutText( labelRect.Rect(), AknLayoutScalable_Apps::list_single_cmail_header_caption_pane_t1() ); + return layoutText.Font()->FontMaxHeight(); + // Platform layout changes + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerTextFontHeight +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::ViewerTextFontHeight() const + { + FUNC_LOG; + // Platform layout changes + /* + TAknUiZoom zoomLevel; + CAknEnv::Static()->GetCurrentGlobalUiZoom( zoomLevel ); + TInt heightInPixels = 0; + switch ( zoomLevel ) + { + case EAknUiZoomSmall: + { + heightInPixels = KViewerTextFontSizeSmall; + } + break; + case EAknUiZoomLarge: + { + heightInPixels = KViewerTextFontSizeLarge; + } + break; + case EAknUiZoomNormal: + default: + { + heightInPixels = KViewerTextFontSizeNormal; + } + break; + } + return heightInPixels; + */ + TAknLayoutRect labelRect; + labelRect.LayoutRect( ListCmailPaneRect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane( 0 ) ); + TAknLayoutText layoutText; + layoutText.LayoutText( labelRect.Rect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane_t1( 0 ) ); + return layoutText.Font()->FontMaxHeight(); + // Platform layout changes + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerTopMostSpaceHeight +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::ViewerTopMostSpaceHeight() const + { + FUNC_LOG; + // Platform layout changes + /* + TAknUiZoom zoomLevel; + CAknEnv::Static()->GetCurrentGlobalUiZoom( zoomLevel ); + TInt heightInPixels = 0; + switch ( zoomLevel ) + { + case EAknUiZoomSmall: + { + heightInPixels = KViewerTopMostSpaceSmall; + } + break; + case EAknUiZoomLarge: + { + heightInPixels = KViewerTopMostSpaceLarge; + } + break; + case EAknUiZoomNormal: + default: + { + heightInPixels = KViewerTopMostSpaceNormal; + } + break; + } + return heightInPixels; + */ + TAknLayoutRect labelRect; + labelRect.LayoutRect( ListCmailPaneRect(), AknLayoutScalable_Apps::list_single_cmail_header_caption_pane( 0 ) ); + return labelRect.Rect().Height(); + // Platform layout changes + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerRecipientSpaceHeight +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::ViewerRecipientSpaceHeight() const + { + FUNC_LOG; + // Platform layout changes + /* + TAknUiZoom zoomLevel; + CAknEnv::Static()->GetCurrentGlobalUiZoom( zoomLevel ); + TInt heightInPixels = 0; + switch ( zoomLevel ) + { + case EAknUiZoomSmall: + { + heightInPixels = KViewerRecipientSpaceSmall; + } + break; + case EAknUiZoomLarge: + { + heightInPixels = KViewerRecipientSpaceLarge; + } + break; + case EAknUiZoomNormal: + default: + { + heightInPixels = KViewerRecipientSpaceNormal; + } + break; + } + return heightInPixels; + */ + TAknLayoutRect labelRect; + labelRect.LayoutRect( ListCmailPaneRect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane( 0 ) ); + return labelRect.Rect().Height(); + // Platform layout changes + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerHeaderInfoSpaceHeight +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::ViewerHeaderInfoSpaceHeight() const + { + FUNC_LOG; + // Platform layout changes + /* + TAknUiZoom zoomLevel; + CAknEnv::Static()->GetCurrentGlobalUiZoom( zoomLevel ); + TInt heightInPixels = 0; + switch ( zoomLevel ) + { + case EAknUiZoomSmall: + { + heightInPixels = KViewerHeaderInfoSpaceSmall; + } + break; + case EAknUiZoomLarge: + { + heightInPixels = KViewerHeaderInfoSpaceLarge; + } + break; + case EAknUiZoomNormal: + default: + { + heightInPixels = KViewerHeaderInfoSpaceNormal; + } + break; + } + return heightInPixels; + */ + return ViewerTopMostSpaceHeight(); + // Platform layout changes + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerBottomMostSpaceHeight +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::ViewerBottomMostSpaceHeight() const + { + FUNC_LOG; + // Platform layout changes + /* + TAknUiZoom zoomLevel; + CAknEnv::Static()->GetCurrentGlobalUiZoom( zoomLevel ); + TInt heightInPixels = 0; + switch ( zoomLevel ) + { + case EAknUiZoomSmall: + { + heightInPixels = KViewerBottomMostSpaceSmall; + } + break; + case EAknUiZoomLarge: + { + heightInPixels = KViewerBottomMostSpaceLarge; + } + break; + case EAknUiZoomNormal: + default: + { + heightInPixels = KViewerBottomMostSpaceNormal; + } + break; + } + return heightInPixels; + */ + return ViewerRecipientSpaceHeight(); + // Platform layout changes + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerMaxRecipientLineCount +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::ViewerMaxRecipientLineCount() const + { + FUNC_LOG; + return KViewerMaxRecipientLineCount; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerMaxSubjectLineCount +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::ViewerMaxSubjectLineCount() const + { + FUNC_LOG; + return KViewerMaxSubjectLineCount; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerTitleTextColor +// ----------------------------------------------------------------------------- +TRgb CFSEmailUiLayoutHandler::ViewerTitleTextColor() const + { + FUNC_LOG; + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TRgb textColor; + // S60 Skin support + if (AknsUtils::GetCachedColor( skin, textColor, + KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ) != KErrNone ) + { + textColor = KBlackFallbackTextColor; + } + // + + return textColor; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerTextTextColor +// ----------------------------------------------------------------------------- +TRgb CFSEmailUiLayoutHandler::ViewerTextTextColor() const + { + FUNC_LOG; + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TRgb textColor; + // S60 Skin support + if (AknsUtils::GetCachedColor( skin, textColor, + KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ) != KErrNone ) + { + textColor = KBlackFallbackTextColor; + } + // + + return textColor; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerBodyTextColor +// ----------------------------------------------------------------------------- +TRgb CFSEmailUiLayoutHandler::ViewerBodyTextColor() const + { + FUNC_LOG; + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TRgb textColor; + if ( AknsUtils::GetCachedColor( skin, textColor, + //KAknsIIDFsTextColors, EAknsCIFsTextColorsCG3 ) != KErrNone ) + KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG13 ) != KErrNone ) // + { + textColor = KBlackFallbackTextColor; + } + return textColor; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerNormalHotspotTextColor +// ----------------------------------------------------------------------------- +TRgb CFSEmailUiLayoutHandler::ViewerNormalHotspotTextColor() const + { + FUNC_LOG; + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TRgb textColor; + // S60 Skin support + if ( AknsUtils::GetCachedColor( skin, textColor, + KAknsIIDQsnHighlightColors, + EAknsCIQsnHighlightColorsCG3 ) != KErrNone ) + { + textColor = KLightBlueFallbackTextColor; + } + // + + return textColor; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerHighlightedHotspotTextColor +// ----------------------------------------------------------------------------- +TRgb CFSEmailUiLayoutHandler::ViewerHighlightedHotspotTextColor() const + { + FUNC_LOG; + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TRgb textColor; + // S60 Skin support + if ( AknsUtils::GetCachedColor( skin, textColor, + KAknsIIDQsnHighlightColors, + EAknsCIQsnHighlightColorsCG3 ) != KErrNone ) + { + textColor = KLightBlueFallbackTextColor; + } + // + + return textColor; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerSentTextColor +// ----------------------------------------------------------------------------- +TRgb CFSEmailUiLayoutHandler::ViewerSentTextColor() const + { + FUNC_LOG; + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + TRgb textColor; + if ( AknsUtils::GetCachedColor( skin, textColor, + KAknsIIDFsTextColors, EAknsCIFsTextColorsCG8 ) != KErrNone ) + { + textColor = KBlackFallbackTextColor; + } + return textColor; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerPixelsBetweenMsgStatusIconAndSubject +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::ViewerPixelsBetweenMsgStatusIconAndSubject() const + { + FUNC_LOG; + // Platform layout changes + /* + return KViewerSpaceBetweenIconAndSubject; + */ + const TRect cmailPaneRect( ListCmailPaneRect() ); + TAknLayoutRect layoutRect; + layoutRect.LayoutRect( cmailPaneRect, AknLayoutScalable_Apps::list_single_cmail_header_detail_pane( 0 ) ); + TAknLayoutRect iconRect; + iconRect.LayoutRect( layoutRect.Rect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane_g1( 0 ) ); + if (AknLayoutUtils::LayoutMirrored()) + { + return cmailPaneRect.iBr.iX - iconRect.Rect().iBr.iX; + } + else + { + return Abs( cmailPaneRect.iTl.iX - iconRect.Rect().iTl.iX ); + } + + // Platform layout changes + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerIconSize +// ----------------------------------------------------------------------------- +TSize CFSEmailUiLayoutHandler::ViewerIconSize() const + { + FUNC_LOG; + // Platform layout changes + /* + return KViewerIconSize; + */ + TAknLayoutRect layoutRect; + layoutRect.LayoutRect( ListCmailPaneRect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane( 0 ) ); + layoutRect.LayoutRect( layoutRect.Rect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane_g1( 2 ) ); + return layoutRect.Rect().Size(); + // Platform layout changes + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerIndentationIconSize +// ----------------------------------------------------------------------------- +TSize CFSEmailUiLayoutHandler::ViewerIndentationIconSize() const + { + FUNC_LOG; + // Platform layout changes + /* + return KViewerTransparentIndentationIconSize; + */ + return ViewerIconSize(); + // Platform layout changes + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerActionMenuIconSize +// ----------------------------------------------------------------------------- +TSize CFSEmailUiLayoutHandler::ViewerActionMenuIconSize() const + { + FUNC_LOG; + // Platform layout changes + /* + return KViewerActionMenuIconSize; + */ + TAknLayoutRect layoutRect; + layoutRect.LayoutRect( ListCmailPaneRect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane( 0 ) ); + layoutRect.LayoutRect( layoutRect.Rect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane_g2( 0 ) ); + return layoutRect.Rect().Size(); + // Platform layout changes + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerActionMenuIconMargin +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::ViewerActionMenuIconMargin() const + { + FUNC_LOG; + // Platform layout changes + /* + return KViewerActionMenuIconMargin; + */ + if (AknLayoutUtils::LayoutMirrored()) + { + TAknLayoutRect layoutRect; + layoutRect.LayoutRect( ListCmailPaneRect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane( 0 ) ); + TInt x( layoutRect.Rect().iTl.iX ); + layoutRect.LayoutRect( layoutRect.Rect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane_g2( 0 ) ); + return Abs( layoutRect.Rect().iTl.iX - x ); + } + else + { + TAknLayoutRect layoutRect; + layoutRect.LayoutRect( ListCmailPaneRect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane( 0 ) ); + TInt x( layoutRect.Rect().iBr.iX ); + layoutRect.LayoutRect( layoutRect.Rect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane_g2( 0 ) ); + return Abs( x - layoutRect.Rect().iBr.iX ); + } + // Platform layout changes + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerSelectorOpacity +// ----------------------------------------------------------------------------- +TReal CFSEmailUiLayoutHandler::ViewerSelectorOpacity() const + { + FUNC_LOG; + return KViewerSelectorOpacity; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerRightMarginInPixels +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::ViewerRightMarginInPixels() const + { + FUNC_LOG; + // Platform layout changes + /* + if ( AknLayoutUtils::LayoutMirrored() ) + { + return KViewerLeftMarginWidthInPixels; + } + else + { + return KViewerRightMarginWidthInPixels; + } + */ + const TRect cmailPaneRect( ListCmailPaneRect() ); + TAknLayoutRect layoutRect; + layoutRect.LayoutRect( cmailPaneRect, AknLayoutScalable_Apps::list_single_cmail_header_caption_pane() ); + TAknLayoutText captionTextRect; + captionTextRect.LayoutText( layoutRect.Rect(), AknLayoutScalable_Apps::list_single_cmail_header_caption_pane_t1() ); + return Abs( cmailPaneRect.iBr.iX - captionTextRect.TextRect().iBr.iX ); + // Platform layout changes + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerLeftMarginInPixels +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::ViewerLeftMarginInPixels() const + { + FUNC_LOG; + // Platform layout changes + /* + if ( AknLayoutUtils::LayoutMirrored() ) + { + return KViewerRightMarginWidthInPixels; + } + else + { + return KViewerLeftMarginWidthInPixels; + } + */ + const TRect cmailPaneRect( ListCmailPaneRect() ); + TAknLayoutRect layoutRect; + layoutRect.LayoutRect( cmailPaneRect, AknLayoutScalable_Apps::list_single_cmail_header_caption_pane() ); + TAknLayoutText captionTextRect; + captionTextRect.LayoutText( layoutRect.Rect(), AknLayoutScalable_Apps::list_single_cmail_header_caption_pane_t1() ); + return Abs( cmailPaneRect.iTl.iX - captionTextRect.TextRect().iTl.iX ); + // Platform layout changes + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerWaterMarkSizeInThisResolution +// ----------------------------------------------------------------------------- +TSize CFSEmailUiLayoutHandler::ViewerWaterMarkSizeInThisResolution() const + { + FUNC_LOG; + TSize sizeWithCurrentResolution; + // For now, set same size with all resolutions + switch ( iScreenResolution ) + { + case ELowResPortrait: + case EQvgaPortrait: + case EVgaPortrait: + case EHvgaPortrait: + case EDrPortrait: + case ELowResLandscape: + case EQvgaLandscape: + case EVgaLandscape: + case EHvgaLandscape: + case EDrLandscape: + case EWideLandscape: + default: + sizeWithCurrentResolution = KViewerDefaultWaterMarkSizeInViewer; + break; + } + return sizeWithCurrentResolution; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerWaterMarkPositionFromBottomRightCornerInThisResolution +// ----------------------------------------------------------------------------- +TPoint CFSEmailUiLayoutHandler::ViewerWaterMarkPlaceFromBottomRightCornerInThisResolution() const + { + FUNC_LOG; + TPoint placeFromBottomRightCorner; + // For now, set place with all resolutions + switch ( iScreenResolution ) + { + case ELowResPortrait: + case EQvgaPortrait: + case EVgaPortrait: + case EHvgaPortrait: + case EDrPortrait: + case ELowResLandscape: + case EQvgaLandscape: + case EVgaLandscape: + case EHvgaLandscape: + case EDrLandscape: + case EWideLandscape: + default: + placeFromBottomRightCorner = KViewerWaterMarkPositionFromBottomRightCorner; + break; + } + return placeFromBottomRightCorner; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ComposerFieldBorderColor +// ----------------------------------------------------------------------------- +TRgb CFSEmailUiLayoutHandler::ComposerFieldBorderColor() const + { + FUNC_LOG; + return GetSkinColor( KAknsIIDFsOtherColors, EAknsCIFsOtherColorsCG14, KRgbBlack ); + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ComposerFieldBackgroundColor +// ----------------------------------------------------------------------------- +TRgb CFSEmailUiLayoutHandler::ComposerFieldBackgroundColor() const + { + FUNC_LOG; + return GetSkinColor( KAknsIIDFsOtherColors, EAknsCIFsOtherColorsCG12, KRgbWhite ); + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ComposerHeaderFieldTextColor +// ----------------------------------------------------------------------------- +TRgb CFSEmailUiLayoutHandler::ComposerHeaderFieldTextColor() const + { + FUNC_LOG; + return GetSkinColor( KAknsIIDFsTextColors, EAknsCIFsTextColorsCG4, KRgbBlack ); + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ComposerBodyFieldTextColor +// ----------------------------------------------------------------------------- +TRgb CFSEmailUiLayoutHandler::ComposerBodyFieldTextColor() const + { + FUNC_LOG; + return GetSkinColor( KAknsIIDFsTextColors, EAknsCIFsTextColorsCG3, KRgbBlack ); + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ComposerDimmedTextColor +// ----------------------------------------------------------------------------- +TRgb CFSEmailUiLayoutHandler::ComposerDimmedTextColor() const + { + FUNC_LOG; + return GetSkinColor( KAknsIIDFsTextColors, EAknsCIFsTextColorsCG18, KRgbGray ); + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::MaxPcsMatches +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::MaxPcsMatches() const + { + FUNC_LOG; + return KMaxPcsMatches; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::PcsPopupHighlightColor +// ----------------------------------------------------------------------------- +TRgb CFSEmailUiLayoutHandler::PcsPopupHighlightColor() const + { + FUNC_LOG; + return KPcsPopupHighlightColor; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::PcsPopupDimmedFontColor +// ----------------------------------------------------------------------------- +TRgb CFSEmailUiLayoutHandler::PcsPopupDimmedFontColor() const + { + FUNC_LOG; + return KPcsPopupDimmedFontColor; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ListTextureNodeExpandedSize +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::ListTextureNodeExpandedSize() const + { + FUNC_LOG; + // + TRect mainPaneRect; + TAknLayoutRect listItem; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect ); + listItem.LayoutRect( mainPaneRect, AknLayoutScalable_Apps::list_single_dyc_row_pane_g1( 0 ) ); + return listItem.Rect().Height(); + //return KListTextureNodeExpandedSize; + // + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::SearchLookingGlassIconSize +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::SearchLookingGlassIconSize() const + { + FUNC_LOG; + return KSearchLookingGlassIconSize; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::statusPaneIconSize +// ----------------------------------------------------------------------------- +TSize CFSEmailUiLayoutHandler::statusPaneIconSize() const + { + FUNC_LOG; + TRect titlePaneRect; + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::ETitlePane, titlePaneRect); + TAknLayoutRect iconRect; + iconRect.LayoutRect(titlePaneRect, AknLayoutScalable_Avkon::title_pane_g2(0)); + return iconRect.Rect().Size(); + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ListControlBarMailboxDefaultIconSize +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::ListControlBarMailboxDefaultIconSize() const + { + FUNC_LOG; + // Platform layout change + //return KListControlBarMailboxDefaultIconSize; + return GetControlBarMailboxIconSize().iWidth; + // Platform layout change + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::EMailListBarBgIconSize +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::EMailListBarBgIconSize() const + { + FUNC_LOG; + // Platform layout change + return GetControlBarRect().Size().iHeight; + //return KEMailListBarBgIconSize; + // + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ListTextureMailboxDefaultIconSize +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::ListTextureMailboxDefaultIconSize() const + { + FUNC_LOG; + return KListTextureMailboxDefaultIconSize; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::EListTextureSelectorSize +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::EListTextureSelectorSize() const + { + FUNC_LOG; + // Platform layout change + return OneLineListItemHeight(); + //return KEListTextureSelectorSize; + // + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ListControlMenuIconSize +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::ListControlMenuIconSize() const + { + FUNC_LOG; + // Platform layout change + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect); + mainPaneRect.Move(-mainPaneRect.iTl); + TAknLayoutRect controlBarRect; + controlBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane(0)); + TAknLayoutRect iconRect; + iconRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_g1(0)); + return iconRect.Rect().Height(); + //return KListControlMenuIconSize; + // + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::AttachmentIconSize +// ----------------------------------------------------------------------------- +// +TSize CFSEmailUiLayoutHandler::AttachmentIconSize() const + { + FUNC_LOG; + TAknLayoutRect rect; + rect.LayoutRect( TRect(0,0,0,0), + AknLayoutScalable_Apps::list_single_dyc_row_pane_g1( 0 ).LayoutLine() ); + return rect.Rect().Size(); + //return KAttachmentIconSize; +// + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ViewerHighlightTextureSize +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::ViewerHighlightTextureSize() const + { + FUNC_LOG; + return KViewerHighlightTextureSize; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ControlBarArrowTextureXSize +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::ControlBarArrowTextureXSize() const + { + FUNC_LOG; + return KControlBarArrowTextureXSize; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ControlBarArrowTextureYSize +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::ControlBarArrowTextureYSize() const + { + FUNC_LOG; + return KControlBarArrowTextureYSize; + } +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::GetSkinColor +// ----------------------------------------------------------------------------- +TRgb CFSEmailUiLayoutHandler::GetSkinColor( const TAknsItemID& aId, + TInt aIndex, const TRgb& aFallbackColor ) const + { + FUNC_LOG; + TRgb color; + MAknsSkinInstance* skin = AknsUtils::SkinInstance(); + + TInt err = AknsUtils::GetCachedColor( + skin, + color, + aId, + aIndex ); + if ( err != KErrNone ) + { + color = aFallbackColor; + } + + return color; + } + +// Use layout data instead of hardcoded values + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::GetControlBarMailboxIconRect +// ----------------------------------------------------------------------------- +TRect CFSEmailUiLayoutHandler::GetControlBarMailboxIconRect() const + { + FUNC_LOG; + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect); + mainPaneRect.Move(-mainPaneRect.iTl); + TAknLayoutRect controlBarRect; + controlBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane(0)); + TAknLayoutRect iconRect; + if ( AknLayoutUtils::LayoutMirrored() ) + { + iconRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_g2(0)); + } + else + { + iconRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_g1(0)); + } + return iconRect.Rect(); + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::GetControlBarMailboxIconPos +// ----------------------------------------------------------------------------- +TPoint CFSEmailUiLayoutHandler::GetControlBarMailboxIconPos() const + { + FUNC_LOG; + return GetControlBarMailboxIconRect().iTl; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::GetControlBarMailboxIconSize +// ----------------------------------------------------------------------------- +TSize CFSEmailUiLayoutHandler::GetControlBarMailboxIconSize() const + { + FUNC_LOG; + return GetControlBarMailboxIconRect().Size(); + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::GetControlBarFolderListButtonRect +// ----------------------------------------------------------------------------- +TRect CFSEmailUiLayoutHandler::GetControlBarFolderListButtonRect() const + { + FUNC_LOG; + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect); + mainPaneRect.Move(-mainPaneRect.iTl); + TAknLayoutRect controlBarRect; + controlBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane(0)); + TAknLayoutRect folderListButtonRect; + if ( AknLayoutUtils::LayoutMirrored() ) + { + folderListButtonRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_button_pane_cp01(0)); + } + else + { + folderListButtonRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_ddmenu_pane(0)); + } + return folderListButtonRect.Rect(); + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::GetControlBarFolderListButtonPos +// ----------------------------------------------------------------------------- +TPoint CFSEmailUiLayoutHandler::GetControlBarFolderListButtonPos() const + { + FUNC_LOG; + return GetControlBarFolderListButtonRect().iTl; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::GetControlBarFolderListButtonSize +// ----------------------------------------------------------------------------- +TSize CFSEmailUiLayoutHandler::GetControlBarFolderListButtonSize() const + { + FUNC_LOG; + return GetControlBarFolderListButtonRect().Size(); + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::GetControlBarSortButtonRect +// ----------------------------------------------------------------------------- +TRect CFSEmailUiLayoutHandler::GetControlBarSortButtonRect() const + { + FUNC_LOG; + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect); + mainPaneRect.Move(-mainPaneRect.iTl); + TAknLayoutRect controlBarRect; + controlBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane(0)); + TAknLayoutRect sortButtonRect; + if ( AknLayoutUtils::LayoutMirrored() ) + { + sortButtonRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_ddmenu_pane(0)); + } + else + { + sortButtonRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_button_pane_cp01(0)); + } + return sortButtonRect.Rect(); + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::GetControlBarSortButtonPos +// ----------------------------------------------------------------------------- +TPoint CFSEmailUiLayoutHandler::GetControlBarSortButtonPos() const + { + FUNC_LOG; + return GetControlBarSortButtonRect().iTl; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::GetControlBarSortButtonSize +// ----------------------------------------------------------------------------- +TSize CFSEmailUiLayoutHandler::GetControlBarSortButtonSize() const + { + FUNC_LOG; + return GetControlBarSortButtonRect().Size(); + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::GetControlBarConnectionIconRect +// ----------------------------------------------------------------------------- +TRect CFSEmailUiLayoutHandler::GetControlBarConnectionIconRect() const + { + FUNC_LOG; + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect); + mainPaneRect.Move(-mainPaneRect.iTl); + TAknLayoutRect controlBarRect; + controlBarRect.LayoutRect( mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane(0 ) ); + TAknLayoutRect iconRect; + // + if ( AknLayoutUtils::LayoutMirrored() ) + { + iconRect.LayoutRect( controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_g1( 0 ) ); + } + else + { + iconRect.LayoutRect( controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_g2( 0 ) ); + } + // + return iconRect.Rect(); + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::GetControlBarConnectionIconPos +// ----------------------------------------------------------------------------- +TPoint CFSEmailUiLayoutHandler::GetControlBarConnectionIconPos() const + { + FUNC_LOG; + return GetControlBarConnectionIconRect().iTl; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::GetControlBarConnectionIconSize +// ----------------------------------------------------------------------------- +TSize CFSEmailUiLayoutHandler::GetControlBarConnectionIconSize() const + { + FUNC_LOG; + return GetControlBarConnectionIconRect().Size(); + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::GetControlBarRect +// ----------------------------------------------------------------------------- +TRect CFSEmailUiLayoutHandler::GetControlBarRect() const + { + FUNC_LOG; + //TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0; // + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect); + mainPaneRect.Move(-mainPaneRect.iTl); + TAknLayoutRect controlBarRect; + controlBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane(0)); // + return controlBarRect.Rect(); + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::GetControlBarRect +// ----------------------------------------------------------------------------- +TRect CFSEmailUiLayoutHandler::GetListRect() const + { + FUNC_LOG; + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect); + mainPaneRect.Move(-mainPaneRect.iTl); + TAknLayoutRect listRect; + listRect.LayoutRect( mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_listscroll_pane_te_cp01( 0 ) ); + return listRect.Rect(); + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::GetSearchListHeaderTextLayout +// ----------------------------------------------------------------------------- +TAknLayoutText CFSEmailUiLayoutHandler::GetSearchListHeaderTextLayout() const + { + FUNC_LOG; + //TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0; + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect); + mainPaneRect.Move(-mainPaneRect.iTl); + TAknLayoutRect headerRect; + headerRect.LayoutRect(mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane()); + TAknLayoutText textLayout; + textLayout.LayoutText(headerRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_t1()); + return textLayout; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::FSTextStyleFromLayoutL +// ----------------------------------------------------------------------------- +CAlfTextStyle& CFSEmailUiLayoutHandler::FSTextStyleFromLayoutL( const TAknTextComponentLayout& aLayout ) + { + FUNC_LOG; + CAlfTextStyle** findResult = iTextStyleMap.Find( aLayout ); + CAlfTextStyle* style = NULL; + if( !findResult ) + { + TInt fontStyle(0); + fontStyle = CAlfStatic::Env().TextStyleManager().CreatePlatformTextStyleL( aLayout.Font(), EAlfTextStyleNormal ); + style = CAlfStatic::Env().TextStyleManager().TextStyle( fontStyle ); + TInt insertError( iTextStyleMap.Insert( aLayout, style ) ); + if( insertError ) + { + CAlfStatic::Env().TextStyleManager().DeleteTextStyle( style->Id() ); + User::Leave( insertError ); + } + TAknLayoutText textLayout; + textLayout.LayoutText(TRect(0,0,0,0), aLayout); + style->SetBold(textLayout.Font()->FontSpecInTwips().iFontStyle.StrokeWeight()); + style->SetItalic(textLayout.Font()->FontSpecInTwips().iFontStyle.Posture()); + } + else + { + style = *findResult; + } + return *style; + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::DeleteTextStyles +// ----------------------------------------------------------------------------- +void CFSEmailUiLayoutHandler::DeleteTextStyles() + { + FUNC_LOG; + THashMapIter< TAknTextComponentLayout, CAlfTextStyle* > + mapIterator( iTextStyleMap ); + CAlfTextStyle** value = mapIterator.CurrentValue(); + while( value ) + { + CAlfStatic::Env().TextStyleManager().DeleteTextStyle( ( *value )->Id() ); + mapIterator.RemoveCurrent(); + mapIterator.NextValue(); + value = mapIterator.CurrentValue(); + } + iTextStyleMap.Close(); + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::ListCmailPaneRect +// ----------------------------------------------------------------------------- +TRect CFSEmailUiLayoutHandler::ListCmailPaneRect() const + { + FUNC_LOG; + + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect ); + TAknLayoutRect layoutRect; + layoutRect.LayoutRect( mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_email_pane() ); + layoutRect.LayoutRect( layoutRect.Rect(), AknLayoutScalable_Apps::listscroll_cmail_pane() ); + layoutRect.LayoutRect( layoutRect.Rect(), AknLayoutScalable_Apps::list_cmail_pane() ); + return layoutRect.Rect(); + } + +// Platform layout change + +// new methods + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::TitleCaptionPadding +// +// Returns padding value for title caption visual +// ----------------------------------------------------------------------------- +TInt CFSEmailUiLayoutHandler::TitleCaptionPadding() const + { + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect ); + + TAknLayoutRect ctrlBarPane; + ctrlBarPane.LayoutRect( mainPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane( 0 ) ); + const TRect ctrlBarPaneRect( ctrlBarPane.Rect() ); + + TAknLayoutText ctrlBarPaneT1; + ctrlBarPaneT1.LayoutText( ctrlBarPaneRect, AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_t1( 0 ) ); + const TRect ctrlBarPaneT1Rect( ctrlBarPaneT1.TextRect() ); + + return Abs( ctrlBarPaneRect.iTl.iY - ctrlBarPaneT1Rect.iTl.iY ); + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::SeparatorGraphicSizeInThisResolution +// ----------------------------------------------------------------------------- +// +TSize CFSEmailUiLayoutHandler::SeparatorGraphicSizeInThisResolution() const + { + FUNC_LOG; + + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect); + + TAknLayoutRect listRect; + listRect.LayoutRect(mainPaneRect, AknLayoutScalable_Apps::list_cmail_pane()); + + TAknLayoutRect bodyRect; + bodyRect.LayoutRect(listRect.Rect(), AknLayoutScalable_Apps::list_cmail_body_pane()); + + TAknLayoutRect itemRect; + itemRect.LayoutRect(bodyRect.Rect(), AknLayoutScalable_Apps::list_cmail_body_pane_g1()); + + return itemRect.Rect().Size(); + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::SeparatorLineColor +// ----------------------------------------------------------------------------- +// +TRgb CFSEmailUiLayoutHandler::SeparatorLineColor() const + { + FUNC_LOG; + return ViewerNormalHotspotTextColor(); + } + +// ----------------------------------------------------------------------------- +// CFSEmailUiLayoutHandler::DropDownMenuListPadding +// ----------------------------------------------------------------------------- +// +TInt CFSEmailUiLayoutHandler::DropDownMenuListPadding() const + { + FUNC_LOG; + // main pane + TRect mainPaneRect; + AknLayoutUtils::LayoutMetricsRect( + AknLayoutUtils::EMainPane, mainPaneRect ); + + // menu pane + TAknLayoutRect menuPane; + menuPane.LayoutRect( mainPaneRect, + AknLayoutScalable_Apps::popup_sp_fs_action_menu_pane( 2 ) ); + const TRect menuPaneRect( menuPane.Rect() ); + + // Menu gene pane + TAknLayoutRect menuListPane; + menuListPane.LayoutRect( menuPaneRect, + AknLayoutScalable_Apps::sp_fs_action_menu_list_pane( 0 ) ); + const TRect menuListPaneRect( menuListPane.Rect() ); + + return Abs( menuListPaneRect.iTl.iY - menuPaneRect.iTl.iY ); + } + +// + +// End of file +