--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/emailui/src/FreestyleEmailUiLayoutHandler.cpp Wed Sep 01 12:28:57 2010 +0100
@@ -0,0 +1,1592 @@
+/*
+* 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 <alf/alftextstylemanager.h>
+#include <AknsUtils.h>
+#include <AknsSkinInstance.h>
+#include <alf/alfstatic.h>
+
+#include <aknlayoutscalable_apps.cdl.h>
+#include <aknlayoutscalable_avkon.cdl.h>
+#include <layoutmetadata.cdl.h>
+#include <fslayoutmanager.h>
+
+// For generic treelist layout data setting
+#include "fstreelist.h"
+
+// INTERNAL INCLUDE FILES
+#include "FreestyleEmailUiLayoutHandler.h"
+#include "FreestyleEmailUiLayoutData.h"
+
+const TInt KPopupMargin = 8;
+
+// -----------------------------------------------------------------------------
+// GeneralHash
+// -----------------------------------------------------------------------------
+//
+template< typename T >
+TUint32 GeneralHash( const T& aValue )
+ {
+ return DefaultHash::Des8( TPckgC< T >( aValue ) );
+ }
+
+// -----------------------------------------------------------------------------
+// GeneralPtrIdentity
+// -----------------------------------------------------------------------------
+//
+template< typename T >
+TBool GeneralPtrIdentity( const T& aP1, const T& aP2 )
+ {
+ return TPckgC< T >( aP1 ) == TPckgC< T >( aP2 );
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::CFSEmailUiLayoutHandler
+// Base construction. May not leave.
+// -----------------------------------------------------------------------------
+//
+CFSEmailUiLayoutHandler::CFSEmailUiLayoutHandler( CAlfEnv& aEnv )
+ : iEnv(aEnv),
+ iTextStyleMap( THashFunction32< TAknTextComponentLayout >( GeneralHash ),
+ TIdentityRelation< TAknTextComponentLayout >( GeneralPtrIdentity< TAknTextComponentLayout > ) )
+ {
+ 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;
+ DeleteTextStyles();
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ScreenOrientation
+// Function can be used to fetch orientation of the current screen resolution
+// -----------------------------------------------------------------------------
+//
+TScreenOrientation CFSEmailUiLayoutHandler::ScreenOrientation() const
+ {
+ FUNC_LOG;
+ return Layout_Meta_Data::IsLandscapeOrientation() ? ELandscape : EPortrait;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::GridRowsInThisResolution
+// -----------------------------------------------------------------------------
+//
+TInt CFSEmailUiLayoutHandler::GridRowsInThisResolution() const
+ {
+ FUNC_LOG;
+ const TInt var( Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0 );
+ return AknLayoutScalable_Apps::cell_cmail_l_pane_ParamLimits( var ).LastRow() + 1;
+ }
+
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::GridColumnsInThisResolution
+// -----------------------------------------------------------------------------
+//
+TInt CFSEmailUiLayoutHandler::GridColumnsInThisResolution() const
+ {
+ FUNC_LOG;
+ const TInt var( Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0 );
+ return AknLayoutScalable_Apps::cell_cmail_l_pane_ParamLimits( var ).LastColumn() + 1;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::GridIconSize
+// -----------------------------------------------------------------------------
+//
+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;
+ }
+ return textColor;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::GridIconSize
+// -----------------------------------------------------------------------------
+//
+TSize CFSEmailUiLayoutHandler::GridIconSize() const
+ {
+ FUNC_LOG;
+// <cmail> Use layout data instead of hard-coded values
+ TRect mainPaneRect;
+ AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
+
+ TAknLayoutRect scrollBarRect;
+ scrollBarRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::aid_size_touch_scroll_bar());
+ TRect gridRect = mainPaneRect;
+ gridRect.iBr.iX -= scrollBarRect.Rect().Width();
+
+ TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 1 : 0;
+ TAknLayoutRect itemRect;
+ itemRect.LayoutRect(gridRect, AknLayoutScalable_Apps::cell_cmail_l_pane(var,0,0));
+
+ TAknLayoutRect gridIconLRect;
+ gridIconLRect.LayoutRect( itemRect.Rect(), AknLayoutScalable_Apps::cell_cmail_l_pane_g1( 0 ) );
+ TSize iconSize = gridIconLRect.Rect().Size();
+ return iconSize;
+ }
+
+
+TSize CFSEmailUiLayoutHandler::MailIconSizeInThisResolution() 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();
+ }
+
+
+// -----------------------------------------------------------------------------
+// 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, EFalse ), 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, TBool aStretch ) const
+ {
+ FUNC_LOG;
+ TRect mainPaneRect;
+ AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane,
+ mainPaneRect );
+ mainPaneRect.Move( 0, -mainPaneRect.iTl.iY );
+ TInt variety( aSide == ELeft ? 0 : 1 );
+ TBool landscape = Layout_Meta_Data::IsLandscapeOrientation();
+ if ( landscape )
+ {
+ // 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() );
+ TRect rect = menuPane.Rect();
+ if ( aStretch )
+ {
+ rect.iBr.iY = mainPaneRect.iBr.iY;
+
+ if( !landscape ) // landscape layout occupy the right side of the display
+ {
+ rect.iBr.iY -= ControlBarHeight();
+ }
+ }
+
+ // Calculate the placement next to the button (below or left side)
+ TRect buttonRect;
+ TRect cbr = GetControlBarRect();
+ if( aSide == ELeft )
+ {
+ buttonRect = GetControlBarFolderListButtonRect();
+ }
+ else
+ {
+ buttonRect = GetControlBarSortButtonRect();
+ }
+ buttonRect.Move( cbr.iTl ); // relative to control bar
+
+ if( landscape )
+ {
+ TSize menuSize = rect.Size();
+ if ( !CFsLayoutManager::IsMirrored() )
+ {
+ // position left from the button
+ rect.SetRect( TPoint( buttonRect.iTl.iX - menuSize.iWidth,
+ buttonRect.Center().iY - menuSize.iHeight / 2 ), menuSize );
+ }
+ else
+ {
+ // position right from the button
+ rect.SetRect( TPoint( buttonRect.Width(),
+ buttonRect.Center().iY - menuSize.iHeight / 2 ), menuSize );
+ }
+ }
+ else
+ {
+ // position below the button
+ rect.Move( 0, buttonRect.iBr.iY - rect.iTl.iY );
+ }
+
+ // keep the popup menu inside the screen area
+ if( landscape )
+ {
+ if( rect.iTl.iX < KPopupMargin )
+ {
+ rect.Move( KPopupMargin - rect.iTl.iX , 0 );
+ }
+ if( rect.iBr.iY > mainPaneRect.iBr.iY - KPopupMargin )
+ {
+ rect.Move( 0, mainPaneRect.iBr.iY - rect.iBr.iY - KPopupMargin );
+ }
+ }
+ if( rect.iTl.iY < KPopupMargin )
+ {
+ rect.iTl.iY = KPopupMargin;
+ }
+ return rect;
+ }
+
+// -----------------------------------------------------------------------------
+// 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_fs_dyc_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_fs_dyc_pane( 0 ) );
+ return listItem.Rect().Height();
+ }
+
+TInt CFSEmailUiLayoutHandler::TwoLineListItemHeight() const
+ {
+ TRect mainPaneRect;
+ TAknLayoutRect listItem;
+ AknLayoutUtils::LayoutMetricsRect( AknLayoutUtils::EMainPane, mainPaneRect );
+ listItem.LayoutRect( mainPaneRect, AknLayoutScalable_Apps::list_single_fs_dyc_pane( 1 ) );
+ 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();
+ }
+ 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::ControlBarListPadding
+// -----------------------------------------------------------------------------
+TPoint CFSEmailUiLayoutHandler::ControlBarListPadding() const
+ {
+ FUNC_LOG;
+ return KControlBarListPadding;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ControlBarListBorderRoundingSize
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::ControlBarListBorderRoundingSize() const
+ {
+ FUNC_LOG;
+ return KControlBarListBorderRoundingSize;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ControlBarButtonBgRoundingSize
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::ControlBarButtonBgRoundingSize() const
+ {
+ FUNC_LOG;
+ return KControlBarbuttonBorderRoundingSize;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ListFadeInEffectTime
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::ListFadeInEffectTime() const
+ {
+ FUNC_LOG;
+ return KListFadeInEffectTime;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ListFadeOutEffectTime
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::ListFadeOutEffectTime() const
+ {
+ FUNC_LOG;
+ return KListFadeOutEffectTime;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::StatusIndicatorFadeEffectTime
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::StatusIndicatorFadeEffectTime() const
+ {
+ FUNC_LOG;
+ return KStatusIndicatorFadeEffectTime;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::CtrlBarListFadeEffectTime
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::CtrlBarListFadeEffectTime() const
+ {
+ FUNC_LOG;
+ return KCtrlBarListFadeEffectTime;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ViewSlideEffectActive
+// -----------------------------------------------------------------------------
+TBool CFSEmailUiLayoutHandler::ViewSlideEffectActive() const
+ {
+ FUNC_LOG;
+ return KListSlideEffectActive;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ViewFadeEffectActive
+// -----------------------------------------------------------------------------
+TBool CFSEmailUiLayoutHandler::ViewFadeEffectActive() const
+ {
+ FUNC_LOG;
+ return KListFadeEffectActive;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ViewSlideEffectTime
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::ViewSlideEffectTime() const
+ {
+ FUNC_LOG;
+ return KListSlideEffectTime;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ViewFadeInEffectTime
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::ViewFadeInEffectTime() const
+ {
+ FUNC_LOG;
+ return KListFadeInEffectTime;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ViewFadeOutEffectTime
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::ViewFadeOutEffectTime() const
+ {
+ FUNC_LOG;
+ return KListFadeOutEffectTime;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ListScrollingTime
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::ListScrollingTime() const
+ {
+ FUNC_LOG;
+ return KListScrollingTime;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ListItemExpansionDelay
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::ListItemExpansionDelay() const
+ {
+ FUNC_LOG;
+ return KListItemExpansionDelay;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ListFocusedStateTextSkinColor
+// -----------------------------------------------------------------------------
+TRgb CFSEmailUiLayoutHandler::ListFocusedStateTextSkinColor() const
+ {
+ FUNC_LOG;
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+ TRgb textColor;
+ if( AknsUtils::GetCachedColor( skin, textColor,
+ KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG10 ) != KErrNone )
+ {
+ textColor = KRgbBlack;
+ }
+ return textColor;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ListNormalStateTextSkinColor
+// -----------------------------------------------------------------------------
+TRgb CFSEmailUiLayoutHandler::ListNormalStateTextSkinColor() const
+ {
+ FUNC_LOG;
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+ TRgb textColor;
+ if ( AknsUtils::GetCachedColor( skin, textColor,
+ KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ) != KErrNone )
+ {
+ textColor = KRgbBlack;
+ }
+ return textColor;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ListNodeBackgroundColor
+// -----------------------------------------------------------------------------
+TRgb CFSEmailUiLayoutHandler::ListNodeBackgroundColor() const
+ {
+ FUNC_LOG;
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+ TRgb nodeBgColor;
+ if ( AknsUtils::GetCachedColor( skin, nodeBgColor,
+ KAknsIIDFsOtherColors, EAknsCIFsOtherColorsCG19 ) != KErrNone )
+ {
+ nodeBgColor = KRgbDarkGray;
+ }
+ return nodeBgColor;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ListNodeTextColor
+// -----------------------------------------------------------------------------
+TRgb CFSEmailUiLayoutHandler::ListNodeTextColor() const
+ {
+ FUNC_LOG;
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+ TRgb nodeTextColor;
+ if ( AknsUtils::GetCachedColor( skin, nodeTextColor,
+ KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ) != KErrNone )
+ {
+ nodeTextColor = KRgbWhite;
+ }
+ return nodeTextColor;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ListHeaderBackgroundColor
+// -----------------------------------------------------------------------------
+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 )
+ {
+ 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;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::DropdownMenuTextColor
+// -----------------------------------------------------------------------------
+TRgb CFSEmailUiLayoutHandler::DropdownMenuTextColor() const
+ {
+ FUNC_LOG;
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+ TRgb textColor;
+ if ( AknsUtils::GetCachedColor( skin, textColor,
+ KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG6 ) != KErrNone )
+ {
+ textColor = KRgbBlack;
+ }
+ return textColor;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ListItemFontHeightInTwips
+// -----------------------------------------------------------------------------
+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;
+ 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();
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ViewerTextFontHeight
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::ViewerTextFontHeight() const
+ {
+ FUNC_LOG;
+ 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();
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ViewerTopMostSpaceHeight
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::ViewerTopMostSpaceHeight() const
+ {
+ FUNC_LOG;
+ TAknLayoutRect labelRect;
+ labelRect.LayoutRect( ListCmailPaneRect(), AknLayoutScalable_Apps::list_single_cmail_header_caption_pane( 0 ) );
+ return labelRect.Rect().Height();
+ }
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ViewerRecipientSpaceHeight
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::ViewerRecipientSpaceHeight() const
+ {
+ FUNC_LOG;
+ TAknLayoutRect labelRect;
+ labelRect.LayoutRect( ListCmailPaneRect(), AknLayoutScalable_Apps::list_single_cmail_header_detail_pane( 0 ) );
+ return labelRect.Rect().Height();
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ViewerHeaderInfoSpaceHeight
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::ViewerHeaderInfoSpaceHeight() const
+ {
+ FUNC_LOG;
+ return ViewerTopMostSpaceHeight();
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ViewerBottomMostSpaceHeight
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::ViewerBottomMostSpaceHeight() const
+ {
+ FUNC_LOG;
+ return ViewerRecipientSpaceHeight();
+ }
+
+// -----------------------------------------------------------------------------
+// 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;
+ 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;
+ 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,
+ KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG13 ) != KErrNone )
+ {
+ textColor = KBlackFallbackTextColor;
+ }
+ return textColor;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ViewerNormalHotspotTextColor
+// -----------------------------------------------------------------------------
+TRgb CFSEmailUiLayoutHandler::ViewerNormalHotspotTextColor() const
+ {
+ FUNC_LOG;
+ MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+ TRgb textColor;
+ 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;
+ 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;
+ 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 );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ViewerIconSize
+// -----------------------------------------------------------------------------
+TSize CFSEmailUiLayoutHandler::ViewerIconSize() const
+ {
+ FUNC_LOG;
+ 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();
+ }
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ViewerIndentationIconSize
+// -----------------------------------------------------------------------------
+TSize CFSEmailUiLayoutHandler::ViewerIndentationIconSize() const
+ {
+ FUNC_LOG;
+ return ViewerIconSize();
+ }
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ViewerActionMenuIconSize
+// -----------------------------------------------------------------------------
+TSize CFSEmailUiLayoutHandler::ViewerActionMenuIconSize() const
+ {
+ FUNC_LOG;
+ 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();
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ViewerActionMenuIconMargin
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::ViewerActionMenuIconMargin() const
+ {
+ FUNC_LOG;
+ 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 );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ViewerSelectorOpacity
+// -----------------------------------------------------------------------------
+TReal CFSEmailUiLayoutHandler::ViewerSelectorOpacity() const
+ {
+ FUNC_LOG;
+ return KViewerSelectorOpacity;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ViewerRightMarginInPixels
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::ViewerRightMarginInPixels() const
+ {
+ FUNC_LOG;
+ 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 );
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ViewerLeftMarginInPixels
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::ViewerLeftMarginInPixels() const
+ {
+ FUNC_LOG;
+ 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 );
+ }
+
+// -----------------------------------------------------------------------------
+// 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::PcsPopupDimmedFontTransparency
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::PcsPopupDimmedFontTransparency() const
+ {
+ FUNC_LOG;
+ return KPcsPopupDimmedFontTransparency;
+ }
+
+// -----------------------------------------------------------------------------
+// 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();
+ }
+
+// -----------------------------------------------------------------------------
+// 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;
+ return GetControlBarMailboxIconRect().Size().iWidth;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::EMailListBarBgIconSize
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::EMailListBarBgIconSize() const
+ {
+ FUNC_LOG;
+ return GetControlBarRect().Size().iHeight;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ListTextureMailboxDefaultIconSize
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::ListTextureMailboxDefaultIconSize() const
+ {
+ FUNC_LOG;
+ return KListTextureMailboxDefaultIconSize;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::EListTextureSelectorSize
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::EListTextureSelectorSize() const
+ {
+ FUNC_LOG;
+ return OneLineListItemHeight();
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::ListControlMenuIconSize
+// -----------------------------------------------------------------------------
+TInt CFSEmailUiLayoutHandler::ListControlMenuIconSize() 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;
+ iconRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane_g1(0));
+ return iconRect.Rect().Height();
+ }
+
+// -----------------------------------------------------------------------------
+// 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();
+ }
+
+// -----------------------------------------------------------------------------
+// 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;
+ }
+
+// -----------------------------------------------------------------------------
+// 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 ( Layout_Meta_Data::IsLandscapeOrientation() )
+ {
+ iconRect.LayoutRect(controlBarRect.Rect(), AknLayoutScalable_Apps::cmail_ddmenu_btn02_pane_g2(0));
+ }
+ else
+ {
+ 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();
+ }
+
+// -----------------------------------------------------------------------------
+TRect CFSEmailUiLayoutHandler::GetControlBarNewEmailButtonRect() const
+ {
+ FUNC_LOG;
+ TAknLayoutRect iconRect;
+ TRect cbr = GetControlBarRect();
+ if( Layout_Meta_Data::IsLandscapeOrientation() )
+ {
+ iconRect.LayoutRect( cbr,
+ AknLayoutScalable_Apps::cmail_ddmenu_btn02_pane(3) );
+ }
+ else
+ {
+ if ( AknLayoutUtils::LayoutMirrored() )
+ {
+ iconRect.LayoutRect( cbr,
+ AknLayoutScalable_Apps::cmail_ddmenu_btn03_pane(2) );
+ }
+ else
+ {
+ iconRect.LayoutRect( cbr,
+ AknLayoutScalable_Apps::cmail_ddmenu_btn01_pane(2) );
+ }
+ }
+
+ TRect rect = iconRect.Rect();
+ rect.Move( -cbr.iTl );
+ return rect;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::GetControlBarFolderListButtonRect
+// -----------------------------------------------------------------------------
+TRect CFSEmailUiLayoutHandler::GetControlBarFolderListButtonRect() const
+ {
+ FUNC_LOG;
+
+ TAknLayoutRect folderListButtonRect;
+ TRect cbr = GetControlBarRect();
+ if( Layout_Meta_Data::IsLandscapeOrientation() )
+ {
+ folderListButtonRect.LayoutRect( cbr,
+ AknLayoutScalable_Apps::cmail_ddmenu_btn02_pane_cp1(3) );
+ }
+ else
+ {
+ folderListButtonRect.LayoutRect( cbr,
+ AknLayoutScalable_Apps::cmail_ddmenu_btn02_pane(2) );
+ }
+
+ TRect rect = folderListButtonRect.Rect();
+ rect.Move( -cbr.iTl );
+ return rect;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::GetControlBarSortButtonRect
+// -----------------------------------------------------------------------------
+TRect CFSEmailUiLayoutHandler::GetControlBarSortButtonRect() const
+ {
+ FUNC_LOG;
+
+ TAknLayoutRect sortButtonRect;
+ TRect cbr = GetControlBarRect();
+ if( Layout_Meta_Data::IsLandscapeOrientation() )
+ {
+ sortButtonRect.LayoutRect( cbr,
+ AknLayoutScalable_Apps::cmail_ddmenu_btn02_pane_cp2(3) );
+ }
+ else
+ {
+ if ( AknLayoutUtils::LayoutMirrored() )
+ {
+ sortButtonRect.LayoutRect( cbr,
+ AknLayoutScalable_Apps::cmail_ddmenu_btn01_pane(2) );
+ }
+ else
+ {
+ sortButtonRect.LayoutRect( cbr,
+ AknLayoutScalable_Apps::cmail_ddmenu_btn03_pane(2) );
+ }
+ }
+
+ TRect r = sortButtonRect.Rect();
+ r.Move( -cbr.iTl );
+ return r;
+ }
+
+// -----------------------------------------------------------------------------
+// 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::GetControlBarRect
+// -----------------------------------------------------------------------------
+TRect CFSEmailUiLayoutHandler::GetControlBarRect() const
+ {
+ FUNC_LOG;
+ TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 3 : 2;
+
+ TRect mainPaneRect;
+ AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, mainPaneRect);
+ mainPaneRect.Move(-mainPaneRect.iTl);
+
+ TRect emailRect = mainPaneRect;
+ TAknLayoutRect emailPaneRect;
+ emailPaneRect.LayoutRect(mainPaneRect,
+ AknLayoutScalable_Apps::main_sp_fs_email_pane());
+ emailRect = emailPaneRect.Rect();
+
+ TAknLayoutRect controlBarRect;
+ controlBarRect.LayoutRect( emailRect,
+ AknLayoutScalable_Apps::main_sp_fs_ctrlbar_pane(var));
+ TRect rect = controlBarRect.Rect();
+
+ return rect;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::GetListRect
+// -----------------------------------------------------------------------------
+TRect CFSEmailUiLayoutHandler::GetListRect( TBool aControlsOnTop ) const
+ {
+ FUNC_LOG;
+ TBool landscape = Layout_Meta_Data::IsLandscapeOrientation();
+ TInt var = Layout_Meta_Data::IsLandscapeOrientation() ? 3 : 2;
+
+ 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( var ));
+ TRect rect = listRect.Rect();
+
+ // if control bar is required, reserve space on top of the listbox
+ if( aControlsOnTop && landscape )
+ {
+ listRect.LayoutRect( mainPaneRect,
+ AknLayoutScalable_Apps::main_sp_fs_listscroll_pane_te_cp01( 0 ));
+ rect = listRect.Rect();
+ }
+
+ return rect;
+ }
+
+// -----------------------------------------------------------------------------
+// CFSEmailUiLayoutHandler::GetSearchListHeaderTextLayout
+// -----------------------------------------------------------------------------
+TAknLayoutText CFSEmailUiLayoutHandler::GetSearchListHeaderTextLayout() const
+ {
+ FUNC_LOG;
+ 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();
+ }
+
+// -----------------------------------------------------------------------------
+// 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
+