videditor/VideoEditorUiComponents/src/VeiEditVideoLabelNavi.cpp
author Mikael Laine <mikael.laine@ixonos.com>
Fri, 29 Jan 2010 14:08:33 +0200
changeset 0 951a5db380a0
permissions -rw-r--r--
Committing the Video Editor package under the Eclipse Public License

/*
* Copyright (c) 2010 Ixonos Plc.
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the "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:
* Ixonos Plc
*
* Description: 
*
*/


#include "VeiEditVideoLabelNavi.h"
#include <videoeditoruicomponents.mbg>
#include <videoeditoruicomponents.rsg>
#include <stringloader.h> 
#include <barsread.h>
#include <e32std.h>
#include <gulfont.h> 
#include <e32math.h> 
#include <aknsutils.h>
#include <data_caging_path_literals.hrh>
#include "VeiVideoEditorSettings.h"
#include "VideoEditorCommon.h"
#include "VideoEditorUtils.h"
#include "VideoEditorDebugUtils.h"

#include <AknFontAccess.h>
#include <AknFontSpecification.h>
#include <AknLayoutFont.h>

// CONSTANTS
_LIT(KResourceFile, "VideoEditorUiComponents.rsc");
const TReal KQvgaTextAndIconShrinkFactor = 0.8;

// ---------------------------------------------------------
// CVeiEditVideoLabelNavi::NewL()
// ---------------------------------------------------------
//
EXPORT_C CVeiEditVideoLabelNavi* CVeiEditVideoLabelNavi::NewL()
    {
    CVeiEditVideoLabelNavi* self = CVeiEditVideoLabelNavi::NewLC();
    CleanupStack::Pop( self );
    return self;
    }
// ---------------------------------------------------------
// CVeiEditVideoLabelNavi::NewLC()
// ---------------------------------------------------------
//
EXPORT_C CVeiEditVideoLabelNavi* CVeiEditVideoLabelNavi::NewLC()
    {
    CVeiEditVideoLabelNavi* self = new (ELeave) CVeiEditVideoLabelNavi;
    CleanupStack::PushL( self );
    self->ConstructL();
    return self;
    }
// ---------------------------------------------------------
// TUid CVeiEditVideoLabelNavi::ConstructL()
// ---------------------------------------------------------
//
void CVeiEditVideoLabelNavi::ConstructL()
    {
	LOG(KVideoEditorLogFile, "CVeiEditVideoLabelNavi::ConstructL: in");

	iState = /*EStateEditView*/EStateInitializing;

	iMmsMaxSize = 0;
	CVeiVideoEditorSettings::GetMaxMmsSizeL( iMmsMaxSize );

	LoadBitmapsL();

	// Open resource file
	TFileName resourceFile;
    Dll::FileName(resourceFile);
    TParse p;
    p.Set(KResourceFile, &KDC_RESOURCE_FILES_DIR, &resourceFile);
    resourceFile = p.FullName();
	iResLoader.OpenL( resourceFile );

	// The primary small font seems to be the smallest font available,
	// but it is still too large to fit all the texts in QVGA mode. 
	// We need to shrink it a little bit.
	TAknFontSpecification spec( KAknFontCategoryPrimarySmall );
	const CFont* myFont = AknLayoutUtils::FontFromId( EAknLogicalFontSecondaryFont );
	spec.SetTextPaneHeight( myFont->HeightInPixels() * KQvgaTextAndIconShrinkFactor );
	CWsScreenDevice* dev = ControlEnv()->ScreenDevice();
	iCustomFont = AknFontAccess::CreateLayoutFontFromSpecificationL( *dev, spec );

	LOG(KVideoEditorLogFile, "CVeiEditVideoLabelNavi::ConstructL: out");
    }
// ---------------------------------------------------------
// TUid CVeiEditVideoLabelNavi::LoadBitmapsL()
// ---------------------------------------------------------
//
void CVeiEditVideoLabelNavi::LoadBitmapsL()
    {
	LOG(KVideoEditorLogFile, "CVeiEditVideoLabelNavi::LoadBitmapsL: in");

	TFileName bitmapfile( VideoEditorUtils::IconFileNameAndPath(KVideoEditorUiComponentsIconFileId) );
	MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
/* Mms bitmap */
	AknsUtils::CreateColorIconL(
            skinInstance, KAknsIIDNone,KAknsIIDQsnIconColors,
			EAknsCIQsnIconColorsCG6,
            iMmsBitmap, iMmsBitmapMask,
            bitmapfile,
            EMbmVideoeditoruicomponentsQgn_indi_ve_mms_ok, EMbmVideoeditoruicomponentsQgn_indi_ve_mms_ok_mask,KRgbBlack);

/* No Mms bitmap */
	AknsUtils::CreateColorIconL(
            skinInstance, KAknsIIDNone,KAknsIIDQsnIconColors,
			EAknsCIQsnIconColorsCG6,
            iNoMmsBitmap, iNoMmsBitmapMask,
            bitmapfile,
            EMbmVideoeditoruicomponentsQgn_indi_ve_mms_non, EMbmVideoeditoruicomponentsQgn_indi_ve_mms_non_mask,KRgbBlack);

/* Phone memory bitmap */
	AknsUtils::CreateColorIconL(
            skinInstance, KAknsIIDNone,KAknsIIDQsnIconColors,
			EAknsCIQsnIconColorsCG6,
            iPhoneMemoryBitmap, iPhoneMemoryBitmapMask,
            bitmapfile,
            EMbmVideoeditoruicomponentsQgn_indi_ve_phone, EMbmVideoeditoruicomponentsQgn_indi_ve_phone_mask,KRgbBlack);

/* No phone memory bitmap */
	AknsUtils::CreateColorIconL(
            skinInstance, KAknsIIDNone,KAknsIIDQsnIconColors,
			EAknsCIQsnIconColorsCG6,
            iNoPhoneMemoryBitmap, iNoPhoneMemoryBitmapMask,
            bitmapfile,
            EMbmVideoeditoruicomponentsQgn_indi_ve_phone_non, EMbmVideoeditoruicomponentsQgn_indi_ve_phone_non_mask,KRgbBlack);

/* MMC bitmap */
	AknsUtils::CreateColorIconL(
            skinInstance, KAknsIIDNone,KAknsIIDQsnIconColors,
			EAknsCIQsnIconColorsCG6,
            iMMCBitmap, iMMCBitmapMask,
            bitmapfile,
            EMbmVideoeditoruicomponentsQgn_indi_ve_mmc, EMbmVideoeditoruicomponentsQgn_indi_ve_mmc_mask,KRgbBlack);

/* No MMC bitmap */
	AknsUtils::CreateColorIconL(
            skinInstance, KAknsIIDNone,KAknsIIDQsnIconColors,
			EAknsCIQsnIconColorsCG6,
            iNoMMCBitmap, iNoMMCBitmapMask,
            bitmapfile,
            EMbmVideoeditoruicomponentsQgn_indi_ve_mmc_non, EMbmVideoeditoruicomponentsQgn_indi_ve_mmc_non_mask,KRgbBlack);

/* Time bitmap */
	AknsUtils::CreateColorIconL(
            skinInstance, KAknsIIDNone,KAknsIIDQsnIconColors,
			EAknsCIQsnIconColorsCG6,
            iTimeBitmap, iTimeBitmapMask,
            bitmapfile,
            EMbmVideoeditoruicomponentsQgn_indi_ve_videolength, EMbmVideoeditoruicomponentsQgn_indi_ve_videolength_mask,KRgbBlack);

	LOG(KVideoEditorLogFile, "CVeiEditVideoLabelNavi::LoadBitmapsL: out");
	}

// ---------------------------------------------------------
// TUid CVeiEditVideoLabelNavi::~CVeiEditVideoLabelNavi()
// ---------------------------------------------------------
//
EXPORT_C CVeiEditVideoLabelNavi::~CVeiEditVideoLabelNavi()
	{
	DeleteBitmaps();
	iResLoader.Close();
	delete iCustomFont;
	}

void CVeiEditVideoLabelNavi::DeleteBitmaps()
	{
	delete iMmsBitmap;
	iMmsBitmap = NULL;

	delete iMmsBitmapMask;
	iMmsBitmapMask = NULL;

	delete iNoMmsBitmap;
	iNoMmsBitmap = NULL;

	delete iNoMmsBitmapMask;
	iNoMmsBitmapMask = NULL;

	delete iPhoneMemoryBitmap;
	iPhoneMemoryBitmap = NULL;

	delete iPhoneMemoryBitmapMask;
	iPhoneMemoryBitmapMask = NULL;

	delete iNoPhoneMemoryBitmap;
	iNoPhoneMemoryBitmap = NULL;

	delete iNoPhoneMemoryBitmapMask;
	iNoPhoneMemoryBitmapMask = NULL;

	delete iMMCBitmap;
	iMMCBitmap = NULL;

	delete iMMCBitmapMask;
	iMMCBitmapMask = NULL;

	delete iNoMMCBitmap;
	iNoMMCBitmap = NULL;

	delete iNoMMCBitmapMask;
	iNoMMCBitmapMask = NULL;

	delete iTimeBitmap;
	iTimeBitmap = NULL;

	delete iTimeBitmapMask;
	iTimeBitmapMask = NULL;
	}

// ---------------------------------------------------------
// CVeiEditVideoLabelNavi::CVeiEditVideoLabelNavi()
// ---------------------------------------------------------
//
CVeiEditVideoLabelNavi::CVeiEditVideoLabelNavi() : iResLoader(*CEikonEnv::Static())
	{
	iStoryboardDuration = 0;
	iStoryboardSize = 0;
	}

// ---------------------------------------------------------
// CVeiEditVideoLabelNavi::Draw(const TRect& aRect) const
// ---------------------------------------------------------
//
void CVeiEditVideoLabelNavi::Draw(const TRect& aRect) const
    {
    if ( iState == EStateInitializing )
        {
        return;
        }
	CWindowGc& gc=SystemGc();

	// Get navi pane text color from skin
	TRgb textColor( KRgbBlack );
	MAknsSkinInstance* skinInstance = AknsUtils::SkinInstance();
	AknsUtils::GetCachedColor(skinInstance, textColor, KAknsIIDQsnTextColors, EAknsCIQsnTextColorsCG2 );

	TBuf<25> layoutTime;
	//minutes and seconds "120:13"
	TBuf<15> minsec;  
	TInt64 duration = 0; 
	TTimeIntervalHours hours;
	TTimeIntervalMinutes minutes; 
	TTimeIntervalMicroSeconds seconds; 
	duration = static_cast<TInt64>( iStoryboardDuration / 1000 ); 

	TChar timeSeparator = TLocale().TimeSeparator(2);

	//over 1 hour
	if( duration >= 3600000 )
		{
		hours = TTimeIntervalHours( (TInt)(duration / 3600000) );
		minsec.AppendNum( hours.Int() );
		minsec.Append( timeSeparator );

		duration = duration - TInt64(hours.Int()) * TInt64(3600000); 
		}
	//over 1 minute
	if( duration >= 60000 )
		{
		minutes = TTimeIntervalMinutes( (TInt)(duration / 60000) );
		minsec.AppendNum( minutes.Int() );

		duration = duration - TInt64(minutes.Int()) * TInt64(60000); 
		}
	else
		{
		minsec.Append( _L( "00" ) );
		}

	if( duration >= 1000 ) 
		{ 
		seconds = TTimeIntervalMicroSeconds( duration / 1000 );

		if( seconds.Int64() >= 60 ) 
			{
			minsec.Append( timeSeparator );
			minsec.AppendNum( seconds.Int64() - 60 );
			} 
		else 
			{
			minsec.Append( timeSeparator );
			if ( seconds.Int64() < 10 ) 
				{ 
				minsec.Append( _L("0") ); 
				}

			minsec.AppendNum( seconds.Int64() ); 
			}
		}
	else 
		{
		minsec.Append( timeSeparator );
		minsec.Append( _L("00") ); 
		}
	layoutTime.Append( minsec );
	AknTextUtils::DisplayTextLanguageSpecificNumberConversion( layoutTime );

    //text MMS
	TBuf<25> layoutTextMMS;
	HBufC* stringholder = StringLoader::LoadLC( R_VEI_NAVI_PANE_MMS, iEikonEnv );
	layoutTextMMS.Append( *stringholder );
	AknTextUtils::DisplayTextLanguageSpecificNumberConversion( layoutTextMMS );
	CleanupStack::PopAndDestroy( stringholder );

    //size of the movie in KB, MB or GB
	TBuf<25> layoutSize;

	if ( iStoryboardSize < 1000 )
		{
		HBufC* stringholder = StringLoader::LoadLC( R_VEI_SIZE_KB, iStoryboardSize, iEikonEnv );
		layoutSize.Append( *stringholder );
		AknTextUtils::DisplayTextLanguageSpecificNumberConversion( layoutSize );
		CleanupStack::PopAndDestroy( stringholder );
		}
	else 
		{
		TReal size = (TReal)iStoryboardSize / 1024;
		if ( size >= 1000 )
			{
			// Gigabytes are handled differently from megabytes, because we don't have 
			// appropriate localized string (i.e. with %U param) for gigabytes.
			TInt gigaSize = (TInt) (size/1024 + 0.5);
			stringholder = StringLoader::LoadLC( R_VEI_SIZE_GB, gigaSize, iEikonEnv );
			layoutSize.Append( *stringholder );
			AknTextUtils::DisplayTextLanguageSpecificNumberConversion( layoutSize );
			CleanupStack::PopAndDestroy( stringholder );
			}
		else
			{
			// for megabytes, drop the decimals if the value has 3 or more digits
			TBuf16<256> sizeValue;
			if (size < 100)
				{
				_LIT16( KFormat,"%3.1f" );
				sizeValue.Format( KFormat,size );
				}
			else
				{
				_LIT16( KFormat,"%3.0f" );
				sizeValue.Format( KFormat,size );
				}
			stringholder = StringLoader::LoadLC( R_VEI_SIZE_MB, sizeValue, iCoeEnv );
			layoutSize.Append( *stringholder );
			AknTextUtils::DisplayTextLanguageSpecificNumberConversion( layoutSize );
			CleanupStack::PopAndDestroy( stringholder );
			}
		}


	if ( iState == EStateEditView ) //EditView owns the navipane
		{
		if ( iMmsAvailable )
			{
			iBitmapLayout[0].DrawImage( gc, iMmsBitmap, iMmsBitmapMask );
			}
		else
			{
			iBitmapLayout[0].DrawImage( gc, iNoMmsBitmap, iNoMmsBitmapMask );
			}

		if ( aRect.iBr.iX >= 148 ) // QVGA or bigger
			{

			if ( iPhoneMemory ) //phone memory in use.
				{
				if ( iMemoryAvailable )
					{
					iBitmapLayout[1].DrawImage( gc, iPhoneMemoryBitmap, iPhoneMemoryBitmapMask );
					}
				else
					{
					iBitmapLayout[1].DrawImage( gc, iNoPhoneMemoryBitmap, iNoPhoneMemoryBitmapMask );
					}
				}
			else		//mmc-memory in use.
				{
				if ( iMemoryAvailable )
					{
					iBitmapLayout[1].DrawImage( gc, iMMCBitmap, iMMCBitmapMask );
					}
				else
					{
					iBitmapLayout[1].DrawImage( gc, iNoMMCBitmap, iNoMMCBitmapMask );
					}
				}
			iTextLayout[1].DrawText( gc, layoutSize, ETrue, textColor );	
			}

		iBitmapLayout[2].DrawImage( gc, iTimeBitmap, iTimeBitmapMask );


		iTextLayout[0].DrawText( gc, layoutTextMMS, ETrue, textColor );
		iTextLayout[2].DrawText( gc, layoutTime, ETrue, textColor );

		}
	else if ( iState == EStateTrimForMmsView ) //TrimForMmsView owns the navi pane.
		{
		if ( iMmsAvailable )
		    {
		    iBitmapLayout[0].DrawImage( gc, iMmsBitmap, iMmsBitmapMask );
			}
		else
			{
			iBitmapLayout[0].DrawImage( gc, iNoMmsBitmap, iNoMmsBitmapMask );
			}
		iTextLayout[0].DrawText( gc, layoutSize, ETrue, textColor );
        iBitmapLayout[2].DrawImage( gc, iTimeBitmap, iTimeBitmapMask );
		iTextLayout[2].DrawText( gc, layoutTime, ETrue, textColor );
		}

	// TEST
/*	gc.SetPenColor( KRgbRed );
	iBitmapLayout[0].DrawOutLineRect(gc);
	iBitmapLayout[1].DrawOutLineRect(gc);
	iBitmapLayout[2].DrawOutLineRect(gc);

	gc.SetBrushStyle( CGraphicsContext::ENullBrush );
	gc.DrawRect( iTextLayout[0].TextRect() );
	gc.DrawRect( iTextLayout[1].TextRect() );
	gc.DrawRect( iTextLayout[2].TextRect() );

	gc.DrawRect( Rect() );*/
	// END TEST

	}

// ---------------------------------------------------------
// CVeiEditVideoLabelNavi::HandleResourceChange(TInt aType)
// ---------------------------------------------------------
//
void CVeiEditVideoLabelNavi::HandleResourceChange(TInt aType)
	{
	LOGFMT(KVideoEditorLogFile, "CVeiEditVideoLabelNavi::HandleResourceChange() In, aType:%d", aType);

	if (KAknsMessageSkinChange == aType)
		{
		// Reload the icon bitmaps with the current skin color
		DeleteBitmaps();
		TRAP_IGNORE( LoadBitmapsL() );
		}
	CCoeControl::HandleResourceChange(aType);

	LOG(KVideoEditorLogFile, "CVeiEditVideoLabelNavi::HandleResourceChange() Out");
	}
 
// --------------------------------------------------------
// CVeiEditVideoLabelNavi::SetMmsAvailableL( TBool aIsAvailable )
// Set MMS envelope without red line or with it.
// ---------------------------------------------------------
//
EXPORT_C void CVeiEditVideoLabelNavi::SetMmsAvailableL( TBool aIsAvailable )
	{
	iMmsAvailable = aIsAvailable;
	ReportEventL( MCoeControlObserver::EEventStateChanged );	
	}
EXPORT_C TBool CVeiEditVideoLabelNavi::IsMMSAvailable() const
	{
	return iMmsAvailable;
	}

// --------------------------------------------------------
// CVeiEditVideoLabelNavi::SetMemoryInUseL( TBool aPhoneMemory )
// Set memory in use Phone/MMC.
// ---------------------------------------------------------
//
EXPORT_C void CVeiEditVideoLabelNavi::SetMemoryInUseL( TBool aPhoneMemory )
	{
	iPhoneMemory = aPhoneMemory;
	ReportEventL( MCoeControlObserver::EEventStateChanged );
	}
// --------------------------------------------------------
// CVeiEditVideoLabelNavi::SetMemoryAvailableL( TBool aIsAvailable )
// ?implementation_description
// ---------------------------------------------------------
//
EXPORT_C void CVeiEditVideoLabelNavi::SetMemoryAvailableL( TBool aIsAvailable )
	{
	iMemoryAvailable = aIsAvailable;
	ReportEventL( MCoeControlObserver::EEventStateChanged );
	}
// ---------------------------------------------------------
// CVeiEditVideoLabelNavi::SetDurationLabelL( const TUint& aDuration )
// Set movie duration.
// ---------------------------------------------------------
//
EXPORT_C void CVeiEditVideoLabelNavi::SetDurationLabelL( const TInt64& aDuration )
	{
	iStoryboardDuration = aDuration;
	ReportEventL( MCoeControlObserver::EEventStateChanged );	
	}

// ---------------------------------------------------------
// CVeiEditVideoLabelNavi::SetSizeLabelL( const TUint& aSize )
// Set movie size.
// ---------------------------------------------------------
//
EXPORT_C void CVeiEditVideoLabelNavi::SetSizeLabelL( const TUint& aSize )
	{
	iStoryboardSize = aSize;
	ReportEventL( MCoeControlObserver::EEventStateChanged );	
	}
// ---------------------------------------------------------
// CVeiEditVideoLabelNavi::SetState( CVeiEditVideoLabelNavi::TLabelNaviState aState )
//  Set whether editview or trimformms-view 
// ---------------------------------------------------------
//
EXPORT_C void CVeiEditVideoLabelNavi::SetState( CVeiEditVideoLabelNavi::TLabelNaviState aState )
	{
	iState = aState;
	}

// ---------------------------------------------------------
// CVeiEditVideoLabelNavi::SizeChanged()
// ---------------------------------------------------------
//
void CVeiEditVideoLabelNavi::SizeChanged()
	{
	TRect parentRect = Rect();
    parentRect.iTl.iY = parentRect.iTl.iY +2;
	TInt adjustLeftMemoryIcon(0);
	TInt adjustLeftTimeIcon(0);

	TInt adjustLeftMMSIcon = 0; 
	TInt adjustWidth =  parentRect.Height();
	TInt adjustHeight = parentRect.Height();

	const CFont* myFont = AknLayoutUtils::FontFromId( EAknLogicalFontSecondaryFont );

	// For high resolution(352x416) use different font
	if ( parentRect.iBr.iX >= 216 ) // high resolution(352x416)
		{
		adjustLeftMemoryIcon = STATIC_CAST( TInt, parentRect.Width() * 0.28 );
		adjustLeftTimeIcon = STATIC_CAST( TInt, parentRect.Width() * 0.67 );
		myFont = AknLayoutUtils::FontFromId( ELatinBold12 );
		}
	else if ( parentRect.iBr.iX >= 148 ) // QVGA (240x320)
		{
		adjustLeftMemoryIcon = STATIC_CAST( TInt, parentRect.Width() * 0.27 );
		adjustLeftTimeIcon = STATIC_CAST( TInt, parentRect.Width() * 0.64 );

		// Reduce the relative size of the icons a little bit.
		adjustWidth *= KQvgaTextAndIconShrinkFactor;
		adjustHeight *= KQvgaTextAndIconShrinkFactor;

		// use the extra small font
		myFont = (const CFont*)iCustomFont;
		}
	else
		{
		// in the small resolution (176x208) the memory icon and text are dropped out
		adjustLeftMemoryIcon = STATIC_CAST( TInt, parentRect.Width() * 0.4138 );
		adjustLeftTimeIcon = STATIC_CAST( TInt, parentRect.Width() * 0.42 + 15);
		}

	AknIconUtils::SetSize( iMmsBitmap, TSize( adjustWidth,adjustHeight) );
	AknIconUtils::SetSize( iNoMmsBitmap, TSize(adjustWidth,adjustHeight) );
	AknIconUtils::SetSize( iPhoneMemoryBitmap, TSize(adjustWidth,adjustHeight) );
	AknIconUtils::SetSize( iNoPhoneMemoryBitmap, TSize(adjustWidth,adjustHeight) );
	AknIconUtils::SetSize( iMMCBitmap, TSize(adjustWidth,adjustHeight) );
	AknIconUtils::SetSize( iNoMMCBitmap, TSize(adjustWidth,adjustHeight) );
	AknIconUtils::SetSize( iTimeBitmap, TSize(adjustWidth,adjustHeight) );

	//LayoutRect(const TRect &aParent, TInt C, TInt left, TInt top, TInt right, TInt bottom, TInt Width, TInt Height);
	iBitmapLayout[0].LayoutRect( parentRect, ELayoutEmpty, adjustLeftMMSIcon, 0, ELayoutEmpty, ELayoutEmpty, adjustWidth, adjustHeight );
	iBitmapLayout[1].LayoutRect( parentRect, ELayoutEmpty, adjustLeftMemoryIcon, 0, ELayoutEmpty, ELayoutEmpty, adjustWidth, adjustHeight );
	iBitmapLayout[2].LayoutRect( parentRect, ELayoutEmpty, adjustLeftTimeIcon, 0, ELayoutEmpty, ELayoutEmpty, adjustWidth, adjustHeight );
	
	//layout for MMS-text
	TInt tX = adjustLeftMMSIcon + adjustWidth;
	TInt tY = 2;

	TInt bX = adjustLeftTimeIcon;
	TInt bY = parentRect.Height();
	TRect mmsTextArea( tX, tY, bX, bY ); 

	TInt baseline = ( mmsTextArea.Height() / 2 ) + ( myFont->AscentInPixels() / 2 );
	if (myFont == iCustomFont)
		{
		// It seems that even if the font size is scaled down, AscentInPixels()
		// returns the original fon't ascent. We have to scale it down as well.
		baseline = ( mmsTextArea.Height() / 2 ) + ( myFont->AscentInPixels() / 2 * KQvgaTextAndIconShrinkFactor );
		}
	TInt margin=1; 
	TInt width = mmsTextArea.Width();
	iTextLayout[0].LayoutText( mmsTextArea,0,0,margin,margin,baseline,width,ELayoutAlignLeft,myFont );
	
	//layout for size-text
	tX = adjustLeftMemoryIcon + adjustWidth;
	bX = adjustLeftTimeIcon;
	TRect sizeTextArea( tX, tY, bX, bY ); 
	width = sizeTextArea.Width();
    //LayoutText(const TRect& aParent, TInt fontid, TInt C, TInt l, TInt r, TInt B, TInt W, TInt J, const CFont* aCustomFont=0);
	iTextLayout[1].LayoutText( sizeTextArea, 0, 0, margin, margin, baseline, width, ELayoutAlignLeft, myFont );
	
	//layout for time-text
	tX = adjustLeftTimeIcon + adjustWidth;
	bX = parentRect.Width();
	TRect timeTextArea( tX, tY, bX, bY ); 
	width = timeTextArea.Width();
	iTextLayout[2].LayoutText( timeTextArea, 0, 0, margin, margin, baseline, width, ELayoutAlignLeft, myFont );
	}


//-------------------------------------------------------------------------------
//CVeiEditVideoLabelNavi::GetMaxMmsSize()
// available max size of the MMS.
//-------------------------------------------------------------------------------
EXPORT_C TInt CVeiEditVideoLabelNavi::GetMaxMmsSize() const
	{
	return iMmsMaxSize/1024;
	}
// End of File