emailuis/emailui/src/ncsattachmentfield.cpp
changeset 0 8466d47a6819
child 2 5253a20d2a1e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/emailuis/emailui/src/ncsattachmentfield.cpp	Thu Dec 17 08:39:21 2009 +0200
@@ -0,0 +1,703 @@
+/*
+* 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:  message editor
+*
+*/
+
+
+#include "emailtrace.h"
+#include <StringLoader.h>
+#include <AknUtils.h>
+#include <AknsUtils.h>
+#include <AknsSkinInstance.h>
+#include <FreestyleEmailUi.rsg>
+
+#include "FreestyleEmailUiLayoutData.h"
+#include "FreestyleEmailUiAppui.h"
+#include "FreestyleEmailUiTextureManager.h"
+#include "FreestyleEmailUiLayoutHandler.h"
+#include "ncsattachmentfield.h"
+#include "ncsutility.h"
+#include "ncsheadercontainer.h"
+
+
+CNcsAttachmentField* CNcsAttachmentField::NewL(
+    TInt aLabelTextId,
+    MNcsFieldSizeObserver* aSizeObserver,
+    CNcsHeaderContainer* aParentControl )
+    {
+    FUNC_LOG;
+    CNcsAttachmentField* self =
+        new ( ELeave ) CNcsAttachmentField( aSizeObserver, aParentControl );
+    CleanupStack::PushL( self );
+    self->ConstructL( aLabelTextId );
+    CleanupStack::Pop( self );
+    return self;
+    }
+
+CNcsAttachmentField::~CNcsAttachmentField()
+    {
+    FUNC_LOG;
+    delete iAttachmentLabel;
+
+    delete iAttachmentName;
+    delete iAttachmentSizeDesc;
+
+    delete iAttachmentBitmap;
+    delete iAttachmentMask;
+
+    delete iActionMenuBitmap;
+    delete iActionMenuMask;
+    }
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::CNcsAttachmentField()
+// -----------------------------------------------------------------------------
+//
+CNcsAttachmentField::CNcsAttachmentField( MNcsFieldSizeObserver* aSizeObserver,
+        CNcsHeaderContainer* aParentControl ):
+    MNcsControl( aSizeObserver ),
+    iParentControl( aParentControl )
+    {
+    FUNC_LOG;
+    }
+
+void CNcsAttachmentField::ConstructL( TInt aLabelTextId )
+    {
+    FUNC_LOG;
+    // create title label
+	HBufC* textBuf = StringLoader::LoadLC( aLabelTextId );
+
+	// create attachment label
+    iAttachmentLabel = new ( ELeave ) CNcsLabel( *this, NULL );
+    iAttachmentLabel->SetTextL( textBuf->Des() );
+
+	CleanupStack::PopAndDestroy( textBuf );
+
+    // <cmail> Platform layout change
+	CreateIconsL();
+	// </cmail> Platform layout change
+	
+	UpdateFontSize();
+    UpdateColors();
+    }
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::LineCount()
+// -----------------------------------------------------------------------------
+//
+TInt CNcsAttachmentField::LineCount() const
+    {
+    FUNC_LOG;
+    return 0;
+    }
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::ScrollableLines()
+// -----------------------------------------------------------------------------
+//
+TInt CNcsAttachmentField::ScrollableLines() const
+    {
+    FUNC_LOG;
+    return 0;
+    }
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::GetNumChars()
+// -----------------------------------------------------------------------------
+//
+TInt CNcsAttachmentField::GetNumChars() const
+    {
+    FUNC_LOG;
+    return 0;
+    }
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::CursorLineNumber()
+// -----------------------------------------------------------------------------
+//
+TInt CNcsAttachmentField::CursorLineNumber() const
+    {
+    FUNC_LOG;
+    return 0;
+    }
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::CursorPosition()
+// -----------------------------------------------------------------------------
+//
+TInt CNcsAttachmentField::CursorPosition() const
+    {
+    FUNC_LOG;
+    return 0;
+    }
+
+// <cmail> Platform layout change
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::Reposition()
+// -----------------------------------------------------------------------------
+//
+void CNcsAttachmentField::Reposition(TPoint& aPt, TInt /*aWidth*/ )
+    {
+    FUNC_LOG;
+    /*
+	TSize sz( aWidth, MinimumHeight() );
+	if ( Rect() != TRect( aPt, sz ) )
+	    {
+		SetExtent( aPt, sz );
+	    }
+    aPt.iY += Size().iHeight;
+    */
+    SetPosition( aPt );
+    }
+// </cmail> Platform layout change
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::GetLabelText()
+// -----------------------------------------------------------------------------
+//
+const TDesC& CNcsAttachmentField::GetLabelText() const
+    {
+    FUNC_LOG;
+	return KNullDesC;
+    }
+
+// <cmail> Platform layout change
+// ---------------------------------------------------------------------------
+// CNcsAttachmentField::LayoutLineCount
+// ---------------------------------------------------------------------------
+//
+TInt CNcsAttachmentField::LayoutLineCount() const
+    {
+    FUNC_LOG;
+    return ( IsVisible() ? 1 : 0 );
+    }
+// </cmail> Platform layout change
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::Draw()
+// -----------------------------------------------------------------------------
+//
+void CNcsAttachmentField::Draw( const TRect& /*aRect*/ ) const
+    {
+    FUNC_LOG;
+    CWindowGc& gc = SystemGc();
+
+    // Draw text box
+    // <cmail> Drawing removed </cmail>
+
+    if ( IsFocused() )
+    	{
+    	// highlight for label when focused
+	    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+	    TRgb imageColor;
+	    if( AknsUtils::GetCachedColor( skin, imageColor,
+	    		KAknsIIDFsHighlightColors, EAknsCIFsHighlightColorsCG4 ) != KErrNone )
+	        {
+		    if( AknsUtils::GetCachedColor( skin, imageColor,
+		    		KAknsIIDQsnHighlightColors, EAknsCIQsnHighlightColorsCG2 ) != KErrNone )
+		    	{
+		        imageColor = KRgbBlue;
+		    	}
+	        }
+	    
+	    gc.SetPenStyle( CGraphicsContext::ENullPen );
+	    gc.SetBrushStyle( CGraphicsContext::ESolidBrush );
+	    gc.SetBrushColor( imageColor );
+	    
+	    TRect highlightRect( iAttachmentLabel->Rect() );
+
+	    TInt sizeTextInPixels = iAttachmentLabel->Font()->TextWidthInPixels( 
+									*iAttachmentLabel->Text() );
+	    
+        highlightRect.SetWidth( sizeTextInPixels );
+        highlightRect.Grow( 0, 1 );
+	    
+	    if( AknLayoutUtils::LayoutMirrored() )
+	    	{
+	    	highlightRect.Move( Rect().Size().iWidth - 
+								highlightRect.Size().iWidth - 
+								highlightRect.iTl.iX - 2, 0 );
+	    	}
+	    
+	    gc.DrawRect( highlightRect );
+    	}
+    
+    // Draw icons
+    gc.SetBrushStyle( CGraphicsContext::ENullBrush );
+    // <cmail> Platform layout change
+
+    gc.BitBltMasked( iAttachmentIconPos, iAttachmentBitmap, 
+    		iAttachmentBitmap->SizeInPixels(), iAttachmentMask, ETrue );
+
+    if( IsFocused() )
+    	{
+        gc.BitBltMasked( iActionMenuIconPos, iActionMenuBitmap, 
+        		iActionMenuBitmap->SizeInPixels(), iActionMenuMask, ETrue );
+    	}
+    }
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::SizeChanged()
+// -----------------------------------------------------------------------------
+//
+void CNcsAttachmentField::SizeChanged()
+    {
+    FUNC_LOG;
+ 
+    LayoutControls();
+    // </cmail> Platform laytout change
+	UpdateFontSize();
+	UpdateColors();
+    // The attachment text needs to be updated when label size changes because it
+	// may now get truncated differently.
+	TRAP_IGNORE( UpdateAttachmentTextL() );
+    }
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::PositionChanged()
+// -----------------------------------------------------------------------------
+//
+void CNcsAttachmentField::PositionChanged()
+    {
+    FUNC_LOG;
+    // <cmail> Platform layout change
+    LayoutControls();
+    UpdateColors();
+   
+    // </cmail> Platform layout change
+    }
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::MinimumHeight()
+// -----------------------------------------------------------------------------
+//
+TInt CNcsAttachmentField::MinimumHeight() const
+    {
+    FUNC_LOG;
+    // <cmail> Platform laytout change
+    /*
+    TNcsMeasures m = NcsUtility::Measures();
+    return m.iAifHeight + m.iAttachmentExtraHeightBottom;*/
+    //return NcsUtility::MinimumHeaderSize( Rect(), 1 ).iHeight;
+    // </cmail> Platform laytout change
+    return 0;
+    }
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::SetMaxLabelLength()
+// -----------------------------------------------------------------------------
+//
+void CNcsAttachmentField::SetMaxLabelLength( TInt aMaxLength )
+    {
+    FUNC_LOG;
+	iMaximumLabelLength = aMaxLength;
+    }
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::GetMinLabelLength()
+// -----------------------------------------------------------------------------
+//
+TInt CNcsAttachmentField::GetMinLabelLength() const
+    {
+    FUNC_LOG;
+    return 0;
+    }
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::SetContainerWindowL() const
+// -----------------------------------------------------------------------------
+//
+void CNcsAttachmentField::SetContainerWindowL( const CCoeControl& aContainer )
+	{
+    FUNC_LOG;
+	CCoeControl::SetContainerWindowL( aContainer );
+
+	// Create the component array
+    InitComponentArrayL();
+	CCoeControlArray& controls = Components();
+	controls.SetControlsOwnedExternally( ETrue );
+	controls.AppendLC( iAttachmentLabel );
+    CleanupStack::Pop( iAttachmentLabel );
+
+    // set label properties
+	UpdateFontSize();
+
+    // Setup text alignment according the mirrored/normal layout.
+    if ( AknLayoutUtils::LayoutMirrored() )
+        {
+        iAttachmentLabel->SetAlignment( EHRightVCenter );
+        }
+    else
+        {
+        iAttachmentLabel->SetAlignment( EHLeftVCenter );
+        }
+	}
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::SetTextL()
+// -----------------------------------------------------------------------------
+//
+void CNcsAttachmentField::SetTextL( const TDesC& aText )
+    {
+    FUNC_LOG;
+    delete iAttachmentName;
+    iAttachmentName = NULL;
+    delete iAttachmentSizeDesc;
+    iAttachmentSizeDesc = NULL;
+
+    iAttachmentLabel->SetTextL( aText );
+    }
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::SetTextL()
+// -----------------------------------------------------------------------------
+//
+void CNcsAttachmentField::SetTextL( const TDesC& aAttachmentName, const TDesC& aAttachmentSizeDesc )
+    {
+    FUNC_LOG;
+    delete iAttachmentName;
+    iAttachmentName = NULL;
+    delete iAttachmentSizeDesc;
+    iAttachmentSizeDesc = NULL;
+
+    iAttachmentName = aAttachmentName.AllocL();
+    iAttachmentSizeDesc = aAttachmentSizeDesc.AllocL();
+    UpdateAttachmentTextL();
+    }
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::UpdateAttachmentTextL()
+// -----------------------------------------------------------------------------
+//
+void CNcsAttachmentField::UpdateAttachmentTextL()
+    {
+    FUNC_LOG;
+    if ( iAttachmentName && iAttachmentSizeDesc )
+        {
+        // create decorated size text including the preceeding space character
+        HBufC* decoratedSize = StringLoader::LoadLC( R_FSE_VIEWER_ATTACHMENTS_LIST_SIZE, 
+                                                     *iAttachmentSizeDesc );
+        HBufC* decoratedSizeWithSpace = HBufC::NewL( decoratedSize->Length() + 
+                                                     KSpace().Length() +
+                                                     KBidiRleStartChar().Length() +
+                                                     KBidiPdfChar().Length() );
+        decoratedSizeWithSpace->Des().Append( KSpace );
+        if ( AknLayoutUtils::LayoutMirrored() )
+            {
+            // Put size part into embedded right-to-left block to ensure correct rendering
+            // even when name part is written from left-to-right.
+            decoratedSizeWithSpace->Des().Append( KBidiRleStartChar );
+            decoratedSizeWithSpace->Des().Append( *decoratedSize );
+            decoratedSizeWithSpace->Des().Append( KBidiPdfChar );
+            }
+        else
+            {
+            decoratedSizeWithSpace->Des().Append( *decoratedSize );
+            }
+        CleanupStack::PopAndDestroy( decoratedSize );
+        CleanupStack::PushL( decoratedSizeWithSpace );
+
+        // clip attachment name to fit the field so that size information has enough space too.
+        const CFont& font = *iAttachmentLabel->Font();
+
+        TInt labelWidth = iAttachmentLabel->Size().iWidth;
+        TInt sizeTextInPixels = font.TextWidthInPixels( *decoratedSizeWithSpace );
+        TInt pixelsLeftForAttachmentName = labelWidth - sizeTextInPixels;
+
+        HBufC* attachmentText = NULL; // will contain the complete text
+        // safe check if the size information is too wide for some reason.
+        if ( pixelsLeftForAttachmentName < 0 )
+            {
+            attachmentText = HBufC::NewLC( iAttachmentName->Length() + decoratedSizeWithSpace->Length() );
+            attachmentText->Des().Append( *iAttachmentName );
+            attachmentText->Des().Append( *decoratedSizeWithSpace );
+            TPtr attachmentTextBufferModDes = attachmentText->Des();
+            AknTextUtils::ClipToFit( attachmentTextBufferModDes, font, labelWidth );
+            }
+        else
+            { // normal case
+            HBufC* attacmentNameBuffer = iAttachmentName->AllocLC();
+            TPtr attachmentNameBufferModDes = attacmentNameBuffer->Des();
+            AknTextUtils::ClipToFit( attachmentNameBufferModDes, font, pixelsLeftForAttachmentName );
+
+            attachmentText = HBufC::NewL( attacmentNameBuffer->Length() + decoratedSizeWithSpace->Length() );
+            attachmentText->Des().Append( *attacmentNameBuffer );
+            attachmentText->Des().Append( *decoratedSizeWithSpace );
+            CleanupStack::PopAndDestroy( attacmentNameBuffer );
+            CleanupStack::PushL( attachmentText );
+            }
+
+        iAttachmentLabel->SetTextL( *attachmentText );
+
+        CleanupStack::PopAndDestroy( attachmentText );
+        CleanupStack::PopAndDestroy( decoratedSizeWithSpace );
+        }
+    }
+
+// <cmail> Platform layout change
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::ResizeIcons()
+// -----------------------------------------------------------------------------
+//
+void CNcsAttachmentField::ResizeIcons()
+    {
+    FUNC_LOG;
+    const TSize frontIconSize( NcsUtility::HeaderDetailIconRect( Rect(), 1, NcsUtility::EIconFront ).Size() );
+    if ( frontIconSize != iAttachmentBitmap->SizeInPixels() )
+        {
+        AknIconUtils::SetSize( iAttachmentBitmap, frontIconSize, EAspectRatioPreservedAndUnusedSpaceRemoved );
+        AknIconUtils::SetSize( iAttachmentMask, frontIconSize, EAspectRatioPreservedAndUnusedSpaceRemoved );
+        }
+    const TSize backIconSize( NcsUtility::HeaderDetailIconRect( Rect(), 1, NcsUtility::EIconBack ).Size() );
+    if ( backIconSize != iActionMenuBitmap->SizeInPixels() )
+        {
+        AknIconUtils::SetSize( iActionMenuBitmap, backIconSize, EAspectRatioNotPreserved  );
+        AknIconUtils::SetSize( iActionMenuMask, backIconSize, EAspectRatioNotPreserved  );
+        }
+    }
+// </cmail> Platform layout change
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::FocusChanged()
+// -----------------------------------------------------------------------------
+//
+void CNcsAttachmentField::FocusChanged( TDrawNow aDrawNow )
+	{
+    FUNC_LOG;
+	if ( IsFocused() )
+		{
+		iAttachmentLabel->SetFocus( ETrue );
+
+        // make sure that control is visible on screen
+		if ( Rect().iTl.iY < 0 )
+			{
+			TPoint pt = TPoint( 0, 0 );
+			Reposition( pt,Rect().Width() );
+            iSizeObserver->UpdateFieldPosition( this );
+			}
+		else
+		    {
+		    TPoint pos = PositionRelativeToScreen();
+		    pos.iY += Size().iHeight;
+    	    CWsScreenDevice* screenDev = ControlEnv()->ScreenDevice();
+    	    TPixelsAndRotation pix;
+    		screenDev->GetDefaultScreenSizeAndRotation( pix );
+    		const TInt h = pix.iPixelSize.iHeight;
+    		if ( pos.iY >= h - h / 3 )
+    		    {
+    			TPoint pt = TPoint( 0, h / 3 );
+    			Reposition( pt,Rect().Width() );
+                iSizeObserver->UpdateFieldPosition( this );
+    		    }
+		    }
+
+        if ( iParentControl )
+            {
+            TRAP_IGNORE( iParentControl->SetMskL() );
+            }
+		}
+	else
+		{
+		iAttachmentLabel->SetFocus( EFalse );
+		}
+
+    iAttachmentLabel->SetUnderlining( IsFocused() );
+    UpdateColors();
+    
+	if ( aDrawNow )
+		{
+		DrawNow();
+		}
+	else
+	    {
+	    DrawDeferred();
+	    }
+	}
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::UpdateColors()
+// -----------------------------------------------------------------------------
+//
+void CNcsAttachmentField::UpdateColors()
+    {
+    // <cmail> Platform layout change
+    MAknsSkinInstance* skin = AknsUtils::SkinInstance();
+    TRgb textColor = KRgbBlack;
+
+    if( IsFocused() )
+    	{
+        AknsUtils::GetCachedColor(
+            skin,
+            textColor,
+            KAknsIIDQsnTextColors,
+            EAknsCIQsnTextColorsCG24 );
+    	}
+    else
+    	{
+		AknsUtils::GetCachedColor(
+			skin,
+			textColor,
+			KAknsIIDQsnTextColors,
+			EAknsCIQsnTextColorsCG6 );
+    	}
+    TRAP_IGNORE( iAttachmentLabel->OverrideColorL( 
+            EColorLabelText, textColor ) );
+
+    textColor = KRgbBlack;
+
+    TInt err = AknsUtils::GetCachedColor(
+        skin,
+        textColor,
+        KAknsIIDQsnHighlightColors,
+        EAknsCIQsnHighlightColorsCG3 );
+
+    TRAP_IGNORE( iAttachmentLabel->OverrideColorL(
+        EColorLabelTextEmphasis, textColor ) );
+
+    textColor = KRgbBlack;
+
+    err = AknsUtils::GetCachedColor(
+        skin,
+        textColor,
+        KAknsIIDQsnHighlightColors,
+        EAknsCIQsnHighlightColorsCG2 );
+
+    TRAP_IGNORE( iAttachmentLabel->OverrideColorL(
+        EColorLabelHighlightFullEmphasis, textColor ) );
+    // </cmail> Platform layout change
+    CFreestyleEmailUiAppUi* appUi =
+        static_cast<CFreestyleEmailUiAppUi*>( ControlEnv()->AppUi() );
+    iBorderColor = appUi->LayoutHandler()->ComposerFieldBorderColor();
+    iBgColor = appUi->LayoutHandler()->ComposerFieldBackgroundColor();
+    }
+
+// <cmail> Platform layout change
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::UpdateFontSize()
+// -----------------------------------------------------------------------------
+//
+void CNcsAttachmentField::UpdateFontSize()
+	{
+    FUNC_LOG;
+    /*if ( iLabelFont )
+        {
+        ControlEnv()->ScreenDevice()->ReleaseFont( iLabelFont );
+        iLabelFont = NULL;
+        }
+
+    if ( iEditorFont )
+        {
+        ControlEnv()->ScreenDevice()->ReleaseFont( iEditorFont );
+        iEditorFont = NULL;
+        }
+
+    // set label properties
+	TNcsMeasures m = NcsUtility::Measures();
+	if ( !iLabelFont )
+	    {
+	    TRAP_IGNORE( iLabelFont = NcsUtility::GetNearestFontL(EAknLogicalFontPrimarySmallFont,
+	    	m.iLabelFontHeightPx) );
+	    }
+
+	iTitleLabel->SetFont( iLabelFont );
+
+	if ( !iEditorFont )
+		{
+		TRAP_IGNORE( iEditorFont = NcsUtility::GetNearestFontL(EAknLogicalFontPrimarySmallFont,
+			m.iEditorFontHeightPx) );
+		}
+
+	iAttachmentLabel->SetFont( iEditorFont );*/
+    iEditorFont = NcsUtility::GetLayoutFont( iAttachmentLabel->Rect(), NcsUtility::ENcsHeaderDetailFont );
+	iAttachmentLabel->SetFont( iEditorFont );
+	}
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::LayoutControls()
+// -----------------------------------------------------------------------------
+//
+void CNcsAttachmentField::LayoutControls()
+    {
+    FUNC_LOG;
+    const TRect rect( Rect() );
+    NcsUtility::LayoutDetailLabel( iAttachmentLabel, rect );
+    UpdateIconPositions( rect );
+    }
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::UpdateIconPositions()
+// -----------------------------------------------------------------------------
+//
+void CNcsAttachmentField::UpdateIconPositions( const TRect& aRect )
+    {
+    FUNC_LOG;
+    iAttachmentIconPos = NcsUtility::HeaderDetailIconRect( aRect, 1, NcsUtility::EIconFront ).iTl;
+    iActionMenuIconPos = NcsUtility::HeaderDetailIconRect( aRect, 1, NcsUtility::EIconBack ).iTl;
+    }
+// </cmail> Platform layout change
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::HandleResourceChange()
+// -----------------------------------------------------------------------------
+//
+void CNcsAttachmentField::HandleResourceChange( TInt aType )
+    {
+    FUNC_LOG;
+    CCoeControl::HandleResourceChange( aType );
+    if ( aType == KAknsMessageSkinChange ||
+         aType == KEikMessageColorSchemeChange )
+        {
+        UpdateFontSize();
+        UpdateColors();
+        // <cmail> Platform layout change
+        CreateIcons();
+        // </cmail> Platform layout change
+        DrawDeferred();
+        }
+    }
+
+// <cmail> Platform layout change
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::CreateIcons()
+// -----------------------------------------------------------------------------
+//
+TInt CNcsAttachmentField::CreateIcons()
+    {
+    FUNC_LOG;
+    TRAPD( error, CreateIconsL() );
+    return error;
+    }
+
+// -----------------------------------------------------------------------------
+// CNcsAttachmentField::CreateIconsL()
+// -----------------------------------------------------------------------------
+//
+void CNcsAttachmentField::CreateIconsL()
+    {
+    FUNC_LOG;
+    CFreestyleEmailUiAppUi* fsAppUi = static_cast<CFreestyleEmailUiAppUi*>( ControlEnv()->AppUi() );
+    delete iAttachmentBitmap; 
+    iAttachmentBitmap = NULL;
+    delete iAttachmentMask; 
+    iAttachmentMask = NULL;
+    fsAppUi->FsTextureManager()->ProvideBitmapL( EAttachmentIcon, iAttachmentBitmap, iAttachmentMask );
+    delete iActionMenuBitmap; 
+    iActionMenuBitmap = NULL;
+    delete iActionMenuMask; 
+    iActionMenuMask = NULL;
+    fsAppUi->FsTextureManager()->ProvideBitmapL( EListControlMenuIcon, iActionMenuBitmap, iActionMenuMask );
+    ResizeIcons();
+    }
+// </cmail> Platform layout change