--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/videditor/VideoEditorUiComponents/src/VeiEditVideoLabelNavi.cpp Fri Jan 29 14:08:33 2010 +0200
@@ -0,0 +1,625 @@
+/*
+* 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